Split out functions and add multi mode for tml
This commit is contained in:
@@ -0,0 +1,75 @@
|
||||
# Create a tmux layout for dev with editor, ai, and terminal
|
||||
tml() {
|
||||
[[ -z $TMUX ]] && { echo "You must start tmux to use tml."; return 1; }
|
||||
|
||||
local current_dir="${PWD}"
|
||||
local editor_pane ai_pane
|
||||
local ai="$1"
|
||||
|
||||
# Use TMUX_PANE for the pane we're running in (stable even if active window changes)
|
||||
editor_pane="$TMUX_PANE"
|
||||
|
||||
# Name the current window after the base directory name
|
||||
tmux rename-window -t "$editor_pane" "$(basename "$current_dir")"
|
||||
|
||||
# Split window vertically - top 85%, bottom 15% (target editor pane explicitly)
|
||||
tmux split-window -v -p 15 -t "$editor_pane" -c "$current_dir"
|
||||
|
||||
# Split editor pane horizontally - AI on right 30% (capture new pane ID directly)
|
||||
ai_pane=$(tmux split-window -h -p 30 -t "$editor_pane" -c "$current_dir" -P -F '#{pane_id}')
|
||||
|
||||
# Run ai in the right pane
|
||||
tmux send-keys -t "$ai_pane" "$ai" C-m
|
||||
|
||||
# Run nvim in the left pane
|
||||
tmux send-keys -t "$editor_pane" "$EDITOR ." C-m
|
||||
|
||||
# Select the nvim pane for focus
|
||||
tmux select-pane -t "$editor_pane"
|
||||
}
|
||||
|
||||
# Create a tml window per subdirectory in the current directory
|
||||
tmlm() {
|
||||
[[ -z $TMUX ]] && { echo "You must start tmux to use tmlm."; return 1; }
|
||||
|
||||
local ai="$1"
|
||||
local base_dir="$PWD"
|
||||
local first=true
|
||||
|
||||
# Rename the session to the current directory name (replace dots/colons which tmux disallows)
|
||||
tmux rename-session "$(basename "$base_dir" | tr '.:' '--')"
|
||||
|
||||
for dir in "$base_dir"/*/; do
|
||||
[[ -d $dir ]] || continue
|
||||
local dirpath="${dir%/}"
|
||||
|
||||
if $first; then
|
||||
# Reuse the current window for the first project
|
||||
tmux send-keys -t "$TMUX_PANE" "cd '$dirpath' && tml $ai" C-m
|
||||
first=false
|
||||
else
|
||||
local pane_id=$(tmux new-window -c "$dirpath" -P -F '#{pane_id}')
|
||||
tmux send-keys -t "$pane_id" "tml $ai" C-m
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
# Create a dev layout using tmux with editor, opencode, and terminal
|
||||
nic() {
|
||||
tml c
|
||||
}
|
||||
|
||||
# Create a dev layout using tmux with editor, claude, and terminal
|
||||
nicx() {
|
||||
tml cx
|
||||
}
|
||||
|
||||
# Create tml windows for each subdirectory using opencode
|
||||
nicm() {
|
||||
tmlm c
|
||||
}
|
||||
|
||||
# Create tml windows for each subdirectory using claude
|
||||
nicxm() {
|
||||
tmlm cx
|
||||
}
|
||||
Reference in New Issue
Block a user