STATUS BARS · AUTOMATIONS · SMART HOME · DATA DASHBOARDS

Describe your workspace once.
tauler runs it live.

Unlike a dotfile manager, tauler doesn't just template config files — it holds live state across the programs it drives, and keeps them matching your layout on every change.

Linux · X11 or Wayland · Rust 1.95+ · MIT / Apache-2.0

layout.op.mdx
WORKSPACE BAR
const time = useStringStream("/usr/bin/bash",
  'while true; do date +"%H:%M"; sleep 1; done');

<panel anchor="top" height={24} width={ctx.screen_width}>
  <Module bin="~/.cargo/bin/tauler-i3">
    {(data, events) => (
      <div class="flex items-center gap-3">
        {/* ...surface styling */}
        <WorkspaceList workspaces={data?.workspaces} events={events} />
        <span class="ml-auto">{time}</span>
      </div>
    )}
  </Module>
</panel>
const kitchen = useHomeAssistant("light.kitchen");

<panel anchor="right" width={64} height={ctx.screen_height}>
  <div class="flex flex-col items-center gap-4">
    {/* ...surface styling */}
    <Toggle bind={kitchen.on} onChange={kitchen.set} />
    <span>{kitchen.on ? "ON" : "OFF"}</span>
  </div>
</panel>
const top = useJson(
  "https://hn.algolia.com/api/v1/search?tags=front_page");

<panel anchor="left" width={320} height={ctx.screen_height}>
  <div class="flex flex-col gap-2">
    {/* ...surface styling */}
    <List items={top.hits.slice(0, 5)} />
  </div>
</panel>