#!/bin/bash # Ghostty's `command`: every Ghostty window gets its own tmux session, never # a mirror of another window's. Reclaim the oldest detached session (left by # a closed window, or restored by tmux-continuum after a reboot) so closed # windows don't pile up sessions; otherwise start a new one. The first window # after boot starts the server, which is what triggers continuum's restore. # ponytail: two windows opened in the same instant can claim the same detached # session; take a lock (flock) here if that ever bites. # # The session's @tab-bg is set to Ghostty's own background (its theme, not # Omarchy's), so the tab arrows tmux paints in that color match the window. oldest=$(tmux list-sessions -f '#{==:#{session_attached},0}' \ -F '#{session_created} #{session_name}' 2>/dev/null | sort -n | head -1 | cut -d' ' -f2-) bg=$(ghostty +show-config 2>/dev/null | sed -n 's/^background = //p') set_bg=() [[ -n $bg ]] && set_bg=(\; set-option @tab-bg "$bg") if [[ -n $oldest ]]; then exec tmux attach-session -t "=$oldest" "${set_bg[@]}" fi exec tmux new-session "${set_bg[@]}"