Skip to content

Coming from tmux-session-wizard

tmux-session-wizard answers "take me to a project". The popup answers that alongside "who needs me", so the two overlap. Nothing is shared between them: taw reads none of session-wizard's @session-wizard* options, and running both is fine: they are separate keys onto separate popups.

tmux-session-wizard Here
@session-wizard (the key) prefix + A, then n for the project picker, or / with [ui] projects_in_filter on to search sessions and projects at once; or taw open from a shell
@session-wizard-mode [sessions] name: same three modes, same names (directory, full-path, short-path)
@session-wizard-windows [ui] depth: sessions for headers only, all for every pane under them
@session-wizard-preview [ui] preview
@session-wizard-pre-create-session-hook / -post-create-session-hook [sessions] pre_create_hook / post_create_hook: the same command form, arguments, moments and answers; see "Create hooks"
@session-wizard-log-file taw config check for config problems; the watcher's own log under $TAW_STATE_DIR for detection
ctrl-x to kill a session from the list x on a session header
zoxide as the source of projects [sessions] zoxide, plus filesystem completion and [sessions] project_dirs
t <path or zoxide term> from the shell taw open <path or zoxide term>, and alias t='taw open' if you miss the name; see "Open a session from your shell". taw session open <path> is the same open for an agent or a script, and prints the envelope
t with nothing after it taw open with nothing after it opens the popup on its new-session picker (inside tmux)

The hooks behave the same. The value is a command that may carry its own flags, the pre-create hook runs on every open before a running session is looked for and can print a name and a directory, and the post-create hook runs only for a session that was just made. A script written for session-wizard's hooks runs here as it is, unless it reads standard input or prompts inside the popup (see "Create hooks"), and it is given taw's session name, which is the difference below. The one addition is a limit: taw stops a hook that runs longer than [sessions] hook_timeout_seconds (10 seconds unless you change it), where the wizard waits as long as the hook takes.

One deliberate difference: session names. tmux-session-wizard lowercases the name and replaces spaces, . and : with -. taw applies only tmux's own rule (. and : become _) and leaves case, spaces and / alone. Lowercasing merges directories that tmux would happily keep apart (~/work/API and ~/work/api become one name), and taw would rather show you two sessions than silently join them. When two paths really do produce the same name, the collision suffix disambiguates them instead (see "Naming").