From 59fe1e8b0e207d6858ccd6c92a02e53b6d103ab0 Mon Sep 17 00:00:00 2001 From: Tristan Tibbs Date: Wed, 21 Jan 2026 23:19:32 -0500 Subject: [PATCH 1/3] feat: add Ghostty terminal configuration Adds configuration for Ghostty terminal based on existing WezTerm setup: - FiraCode Nerd Font at 13pt - Catppuccin theme with auto light/dark switching - 8px window padding - Bar cursor style - Shell integration enabled - macOS unified titlebar and option-as-alt Closes #37 --- ghostty/config | 22 ++++++++++++++++++++++ ghostty/install.sh | 10 ++++++++++ setup.sh | 7 +++++++ 3 files changed, 39 insertions(+) create mode 100644 ghostty/config create mode 100755 ghostty/install.sh diff --git a/ghostty/config b/ghostty/config new file mode 100644 index 0000000..54af7c4 --- /dev/null +++ b/ghostty/config @@ -0,0 +1,22 @@ +# Ghostty configuration + +# Font +font-family = FiraCode Nerd Font +font-size = 13 + +# Theme - auto light/dark switching +theme = light:Catppuccin Latte,dark:Catppuccin Mocha + +# Window +window-padding-x = 8 +window-padding-y = 8 + +# Cursor +cursor-style = bar + +# Shell integration +shell-integration = true + +# macOS specific +macos-titlebar-style = unified +macos-option-as-alt = true diff --git a/ghostty/install.sh b/ghostty/install.sh new file mode 100755 index 0000000..5437c0b --- /dev/null +++ b/ghostty/install.sh @@ -0,0 +1,10 @@ +#!/bin/bash +# Symlink Ghostty config + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +CONFIG_DIR="$HOME/.config/ghostty" + +mkdir -p "$CONFIG_DIR" +ln -sf "$SCRIPT_DIR/config" "$CONFIG_DIR/config" + +echo "Ghostty config linked" diff --git a/setup.sh b/setup.sh index be9c153..9c4ab16 100755 --- a/setup.sh +++ b/setup.sh @@ -222,6 +222,13 @@ if [[ "$PROFILE" == "full" ]]; then fi fi +# Run ghostty setup (full profile only - requires GUI) +if [[ "$PROFILE" == "full" ]]; then + if [[ -f "$SCRIPT_DIR/ghostty/install.sh" ]]; then + bash "$SCRIPT_DIR/ghostty/install.sh" + fi +fi + # Run starship setup (skip for minimal) if [[ "$PROFILE" != "minimal" ]]; then echo "" From 947c118eb7997b4e8bcf8a0cc2729250e4594721 Mon Sep 17 00:00:00 2001 From: Tristan Tibbs Date: Wed, 21 Jan 2026 23:22:38 -0500 Subject: [PATCH 2/3] add keybindings, scrollback, and clarify macOS comment --- ghostty/config | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/ghostty/config b/ghostty/config index 54af7c4..224d031 100644 --- a/ghostty/config +++ b/ghostty/config @@ -10,6 +10,7 @@ theme = light:Catppuccin Latte,dark:Catppuccin Mocha # Window window-padding-x = 8 window-padding-y = 8 +scrollback-limit = 10000 # Cursor cursor-style = bar @@ -17,6 +18,14 @@ cursor-style = bar # Shell integration shell-integration = true -# macOS specific +# Keybindings +keybind = cmd+t=new_tab +keybind = cmd+w=close_surface +keybind = cmd+shift+enter=new_split:right +keybind = cmd+shift+minus=new_split:down +keybind = ctrl+shift+up=jump_to_prompt:-1 +keybind = ctrl+shift+down=jump_to_prompt:1 + +# macOS specific (ignored on Linux) macos-titlebar-style = unified macos-option-as-alt = true From be144f1f746eaaf99e7b358cce17f5e4eb135a09 Mon Sep 17 00:00:00 2001 From: Tristan Tibbs Date: Wed, 21 Jan 2026 23:30:22 -0500 Subject: [PATCH 3/3] fix: use bash 3.2 compatible syntax for tmux plugins macOS ships with bash 3.2 which doesn't support associative arrays (declare -A). Use simple string parsing instead. --- setup.sh | 34 ++++++++++++++++++++-------------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/setup.sh b/setup.sh index 9c4ab16..1ef6ab9 100755 --- a/setup.sh +++ b/setup.sh @@ -142,25 +142,31 @@ if [[ "$PROFILE" != "minimal" ]] && command -v tmux &>/dev/null; then fi # Install plugins directly (same plugins as configured in .tmux.conf) + # Using simple array format for bash 3.2 compatibility (macOS default) echo "Installing tmux plugins..." - declare -A PLUGINS=( - ["tmux-sensible"]="https://github.com/tmux-plugins/tmux-sensible" - ["tmux-resurrect"]="https://github.com/tmux-plugins/tmux-resurrect" - ["tmux-continuum"]="https://github.com/tmux-plugins/tmux-continuum" - ["tmux-yank"]="https://github.com/tmux-plugins/tmux-yank" - ["tmux-fzf"]="https://github.com/sainnhe/tmux-fzf" - ["tmux-battery"]="https://github.com/tmux-plugins/tmux-battery" - ["tmux-cpu"]="https://github.com/tmux-plugins/tmux-cpu" - ["tmux-prefix-highlight"]="https://github.com/tmux-plugins/tmux-prefix-highlight" - ["tmux-open"]="https://github.com/tmux-plugins/tmux-open" - ) - - for plugin in "${!PLUGINS[@]}"; do + PLUGINS=" + tmux-sensible|https://github.com/tmux-plugins/tmux-sensible + tmux-resurrect|https://github.com/tmux-plugins/tmux-resurrect + tmux-continuum|https://github.com/tmux-plugins/tmux-continuum + tmux-yank|https://github.com/tmux-plugins/tmux-yank + tmux-fzf|https://github.com/sainnhe/tmux-fzf + tmux-battery|https://github.com/tmux-plugins/tmux-battery + tmux-cpu|https://github.com/tmux-plugins/tmux-cpu + tmux-prefix-highlight|https://github.com/tmux-plugins/tmux-prefix-highlight + tmux-open|https://github.com/tmux-plugins/tmux-open + " + + echo "$PLUGINS" | while read -r line; do + [[ -z "$line" ]] && continue + plugin="${line%%|*}" + url="${line##*|}" + plugin=$(echo "$plugin" | xargs) # trim whitespace + url=$(echo "$url" | xargs) PLUGIN_DIR="$TMUX_PLUGINS_DIR/$plugin" if [ ! -d "$PLUGIN_DIR" ]; then echo " Installing $plugin..." - git clone --quiet "${PLUGINS[$plugin]}" "$PLUGIN_DIR" + git clone --quiet "$url" "$PLUGIN_DIR" else echo " $plugin already installed" fi