fix(cli): ghostty-tmux skips pj task sessions; confirm ctrl-c before stopping bg tasks

This commit is contained in:
Prad Nukala committed 2026-10-14 18:15:42 -04:00
1 parent 954e1e1ae0
commit 04ade162b4
5 files changed
+20 -16

No files matched your search

+8 -7
View File
@@ -25,10 +25,10 @@
# Long-running items (dev/start/serve/watch/preview tasks, compose up) run in a
# detached session named <session>:<tool-and-command> (leetcode:bun-run-dev),
# shown in a popup: q hides the popup and leaves the task running, ctrl-c
# stops the task and ends its session. Running ones are listed first, under
# Running, to bring them back. tmux.conf's prefix + a starts omp the same way
# (<session>:omp); omp needs q, so its popup hides with ctrl-c (or prefix + a)
# and ctrl-q quits it.
# asks for confirmation, then stops the task and ends its session. Running
# ones are listed first, under Running, to bring them back. tmux.conf's
# prefix + a starts omp the same way (<session>:omp); omp needs q, so its
# popup hides with ctrl-c (or prefix + a) and ctrl-q quits it.
set -uo pipefail
self=$(readlink -f "$0")
@@ -86,10 +86,11 @@ case ${1-} in
set -t "$id" detach-on-destroy on
# Each session gets a key table for its hide/quit keys; other keys
# reach the program. A task's output takes no input, so q hides and
# ctrl-c stops the task. Interactive programs (omp) need q and typing,
# so ctrl-c hides and ctrl-q kills the session.
# ctrl-c (after a y/n confirm) stops the task. Interactive programs
# (omp) need q and typing, so ctrl-c hides and ctrl-q kills the session.
if [ "$1" = "$self" ]; then
tmux set -t "$id" key-table pj-task \; bind -T pj-task q detach-client
tmux set -t "$id" key-table pj-task \; bind -T pj-task q detach-client \; \
bind -T pj-task C-c confirm-before -p 'Stop #{session_name}? (y/n)' 'send-keys C-c'
else
tmux set -t "$id" key-table pj-app \; bind -T pj-app C-c detach-client \; \
bind -T pj-app C-q kill-session