Skip to content

OneNoted/taskers

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

taskers

taskers is an agent-first terminal workspace app scaffolded around a Linux-first Rust shell, a flexible terminal backend boundary, and a Niri-like tiling model for terminal workspaces.

It keeps per-agent status visible in the workspace strip, routes attention-worthy transitions into a dedicated sidebar, and lets terminal work stay organized as movable workspace windows instead of one giant split tree.

Screenshots

Agent-aware workspace navigation and attention handling:

Taskers demo showing workspace status chips and attention cards

Split workspace layout with grouped panes inside a top-level workspace window:

Taskers demo showing a multi-window terminal layout

Tiling model

  • Each workspace is a scrollable canvas of top-level terminal windows rather than one monolithic fullscreen split tree.
  • Creating a new terminal window places it next to the active one in a cardinal direction, producing the same "keep moving through the workspace" feel as Niri-style tiling.
  • Each top-level window owns its own split tree, so related panes stay grouped locally without flattening the whole workspace into one layout.
  • Directional focus prefers neighboring top-level windows first, then falls back to pane-to-pane movement inside the active window.
  • Workspace viewport position is persisted, and overview mode zooms the current workspace out to fit the full arrangement on screen.

Workspace layout

  • taskers-domain: UI-agnostic workspace, pane, layout, signal, and persistence model
  • taskers-control: local control protocol, JSON framing, in-memory controller, and Unix socket server/client
  • taskers-runtime: PTY/session foundation and explicit OSC signal parser
  • taskers-ghostty: terminal backend abstraction and libghostty probe/fallback surface
  • taskers-cli: CLI for querying and mutating the app over the local control socket
  • taskers-app: GTK4/libadwaita shell that owns controller state, session persistence, and the local control socket

Install from crates.io

cargo install taskers --locked

On Linux, the first launch bootstraps the version-matched Ghostty runtime bundle into your local XDG data directory when needed.

taskers --demo

Quick start

cargo run -p taskers
cargo run -p taskers -- --demo
cargo run -p taskers-cli -- query status --socket /tmp/taskers.sock
cargo run -p taskers-cli -- pane new-window --workspace <workspace-id> --direction right
cargo run -p taskers-cli -- pane split --workspace <workspace-id> --axis vertical

Repository setup

If you use jj in this repository, run the repo setup script once per clone:

./scripts/setup-jj.sh

The vendored Ghostty tree includes approved upstream assets larger than Jujutsu's default 1 MiB snapshot limit. The setup script raises the repo-local limit just enough to snapshot the current vendored tree without changing your global jj behavior.

When refreshing vendor/ghostty, run the large-file check before pushing:

./scripts/check_ghostty_vendor_large_files.sh

This fails if new files over 1 MiB appear outside the approved Ghostty allowlist, or if an approved file grows past the repo-local jj limit.

UI smoke test

Run the GTK/Ghostty smoke harness with:

./scripts/smoke_taskers_ui.sh

This builds the local debug binaries, launches taskers-app under Xvfb, and verifies that the app stays up long enough to accept a control-socket command.

Install locally

cargo run -p taskers-cli -- install

This installs the taskers binary into Cargo's bin directory and writes a desktop entry plus icon into your local XDG application directories so it shows up in Linux app launchers.

Current status

This foundation now includes:

  • domain model for scrollable workspaces, top-level workspace windows, nested pane layout trees, attention state, and persistence snapshots
  • explicit control protocol and Unix socket transport for workspace, window, pane, and viewport updates
  • PTY spawning foundation and explicit OSC marker parsing
  • GTK shell with live workspace switching, overview mode, directional workspace-window focus, split actions, autosave, agent-aware sidebars, and an app-hosted control server
  • real shell sessions per terminal pane, with live output streaming and input-on-enter in the pane UI
  • session load/save support with configurable session and socket paths, including persisted workspace viewport state
  • registry installs that bootstrap the matching Ghostty runtime assets on first launch

The actual libghostty embedding work is intentionally isolated behind taskers-ghostty so the app shell and domain logic stay stable if the integration strategy changes.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors