- Relocate themes to assets/themes/ and update all references. - Implement custom SDDM theme and Plymouth theme enhancements. - Add themed templates for Alacritty, Hyprland, Waybar, and other apps. - Introduce Makima key remapper module and configuration. - Add Voxtype and Walker configurations. - Implement systemd power management and timeout optimizations. - Add Nautilus-python extensions for LocalSend. - Update branding assets and ASCII art integration.
98 lines
3.1 KiB
Plaintext
98 lines
3.1 KiB
Plaintext
# Create a Tmux Dev Layout with editor, ai, and terminal
|
|
# Usage: tdl <c|cx|codex|other_ai> [<second_ai>]
|
|
tdl() {
|
|
[[ -z $1 ]] && { echo "Usage: tdl <c|cx|codex|other_ai> [<second_ai>]"; return 1; }
|
|
[[ -z $TMUX ]] && { echo "You must start tmux to use tdl."; return 1; }
|
|
|
|
local current_dir="${PWD}"
|
|
local editor_pane ai_pane ai2_pane
|
|
local ai="$1"
|
|
local ai2="$2"
|
|
|
|
# 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}')
|
|
|
|
# If second AI provided, split the AI pane vertically
|
|
if [[ -n $ai2 ]]; then
|
|
ai2_pane=$(tmux split-window -v -t "$ai_pane" -c "$current_dir" -P -F '#{pane_id}')
|
|
tmux send-keys -t "$ai2_pane" "$ai2" C-m
|
|
fi
|
|
|
|
# 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 multiple tdl windows with one per subdirectory in the current directory
|
|
# Usage: tdlm <c|cx|codex|other_ai> [<second_ai>]
|
|
tdlm() {
|
|
[[ -z $1 ]] && { echo "Usage: tdlm <c|cx|codex|other_ai> [<second_ai>]"; return 1; }
|
|
[[ -z $TMUX ]] && { echo "You must start tmux to use tdlm."; return 1; }
|
|
|
|
local ai="$1"
|
|
local ai2="$2"
|
|
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' && tdl $ai $ai2" C-m
|
|
first=false
|
|
else
|
|
local pane_id=$(tmux new-window -c "$dirpath" -P -F '#{pane_id}')
|
|
tmux send-keys -t "$pane_id" "tdl $ai $ai2" C-m
|
|
fi
|
|
done
|
|
}
|
|
|
|
# Create a multi-pane swarm layout with the same command started in each pane (great for AI)
|
|
# Usage: tsl <pane_count> <command>
|
|
tsl() {
|
|
[[ -z $1 || -z $2 ]] && { echo "Usage: tsl <pane_count> <command>"; return 1; }
|
|
[[ -z $TMUX ]] && { echo "You must start tmux to use tsl."; return 1; }
|
|
|
|
local count="$1"
|
|
local cmd="$2"
|
|
local current_dir="${PWD}"
|
|
local -a panes
|
|
|
|
tmux rename-window -t "$TMUX_PANE" "$(basename "$current_dir")"
|
|
|
|
panes+=("$TMUX_PANE")
|
|
|
|
while (( ${#panes[@]} < count )); do
|
|
local new_pane
|
|
local split_target="${panes[-1]}"
|
|
new_pane=$(tmux split-window -h -t "$split_target" -c "$current_dir" -P -F '#{pane_id}')
|
|
panes+=("$new_pane")
|
|
tmux select-layout -t "${panes[0]}" tiled
|
|
done
|
|
|
|
for pane in "${panes[@]}"; do
|
|
tmux send-keys -t "$pane" "$cmd" C-m
|
|
done
|
|
|
|
tmux select-pane -t "${panes[0]}"
|
|
}
|