diff --git a/install.sh b/install.sh index 8fbda7a..b2df98f 100755 --- a/install.sh +++ b/install.sh @@ -495,6 +495,17 @@ if command -v crontab >/dev/null 2>&1 \ fi fi +# ── Default terminal for "Terminal=true" apps ── +# Opening a text file from Thunar picks an editor through GIO; when that is +# a terminal app (nvim), GIO needs a terminal and only knows a fixed list +# that has no kitty — hence "Unable to find terminal required for +# application". GIO asks xdg-terminal-exec first, and this file tells it to +# use kitty. Left alone when it already exists. +if [ ! -f "${CONFIG_DIR}/xdg-terminals.list" ]; then + echo "kitty.desktop" > "${CONFIG_DIR}/xdg-terminals.list" + echo -e " ${O}[+] xdg-terminals.list (kitty)${R}" +fi + # ── XDG MIME defaults ── MIME_DIR="${HOME}/.local/share/applications" mkdir -p "$MIME_DIR" diff --git a/setup/post-install.sh b/setup/post-install.sh index b46dba4..552a0dd 100755 --- a/setup/post-install.sh +++ b/setup/post-install.sh @@ -184,7 +184,7 @@ FIREWALL_PKGS="nftables" BLUETOOTH_PKGS="bluez bluez-utils" # XDG + hardware utils -XDG_PKGS="xdg-utils v4l-utils" +XDG_PKGS="xdg-utils xdg-terminal-exec v4l-utils" # Night light (blue light filter — Wayland) NIGHTLIGHT_PKGS="gammastep" @@ -212,7 +212,7 @@ DEV_PKGS="github-cli gnupg" # Shell and extras — zsh is the Stoa default login shell; bash stays available # as a fallback (and is already pulled in by `base`, but listed here for intent). -SHELL_PKGS="zsh bash git base-devel" +SHELL_PKGS="zsh zsh-autosuggestions zsh-syntax-highlighting zsh-history-substring-search zsh-completions bash git base-devel" ALL_PKGS="$WAYLAND_PKGS $UI_PKGS $SETTINGS_APP_PKGS $APP_PKGS $STOA_APPS $GAMING_PKGS $SCREENSHOT_PKGS $STOATOOLS_PKGS $GESTURE_PKGS $MOUSE_PKGS $RGB_PKGS $CLOUD_PKGS $STORE_PKGS $LOCK_PKGS $CLIPBOARD_PKGS $FIREWALL_PKGS $BLUETOOTH_PKGS $XDG_PKGS $NIGHTLIGHT_PKGS $POWER_MGMT_PKGS $PRINT_PKGS $EQUALIZER_PKGS $WINAPPS_PKGS $DFM_PKGS $FONT_PKGS $THEME_PKGS $UTIL_PKGS $DEV_PKGS $SHELL_PKGS $SHELL_PKGS_QS" diff --git a/shell/.zshrc b/shell/.zshrc index fb0fa8f..fb6bb79 100644 --- a/shell/.zshrc +++ b/shell/.zshrc @@ -42,6 +42,43 @@ zstyle ':completion:*:options' description 'yes' bindkey -v export KEYTIMEOUT=1 +# ── Fish-style helpers ── +# What fish does out of the box: suggestions from history as you type +# (→ / End accepts), commands coloured as valid/invalid while typing, and +# ↑/↓ searching history for what is already typed. Arch packages, sourced +# only when installed (post-install.sh installs them); syntax-highlighting +# must come after every other widget and history-substring-search after it. +_stoa_zsh_plugins=/usr/share/zsh/plugins +if [ -r "$_stoa_zsh_plugins/zsh-autosuggestions/zsh-autosuggestions.zsh" ]; then + ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE='fg=#6e6a62' + ZSH_AUTOSUGGEST_STRATEGY=(history completion) + source "$_stoa_zsh_plugins/zsh-autosuggestions/zsh-autosuggestions.zsh" +fi +if [ -r "$_stoa_zsh_plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh" ]; then + source "$_stoa_zsh_plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh" + # Stoic palette: valid = olive, unknown = terracotta, paths underlined. + typeset -gA ZSH_HIGHLIGHT_STYLES + ZSH_HIGHLIGHT_STYLES[command]='fg=#8a9a6c' + ZSH_HIGHLIGHT_STYLES[builtin]='fg=#8a9a6c' + ZSH_HIGHLIGHT_STYLES[alias]='fg=#8a9a6c' + ZSH_HIGHLIGHT_STYLES[function]='fg=#8a9a6c' + ZSH_HIGHLIGHT_STYLES[unknown-token]='fg=#b36b5a' + ZSH_HIGHLIGHT_STYLES[path]='underline' + ZSH_HIGHLIGHT_STYLES[single-quoted-argument]='fg=#c4b08a' + ZSH_HIGHLIGHT_STYLES[double-quoted-argument]='fg=#c4b08a' +fi +if [ -r "$_stoa_zsh_plugins/zsh-history-substring-search/zsh-history-substring-search.zsh" ]; then + source "$_stoa_zsh_plugins/zsh-history-substring-search/zsh-history-substring-search.zsh" + HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_FOUND='fg=#c49a5c,bold' + bindkey '^[[A' history-substring-search-up # ↑ + bindkey '^[[B' history-substring-search-down # ↓ + bindkey '^[OA' history-substring-search-up + bindkey '^[OB' history-substring-search-down + bindkey -M vicmd 'k' history-substring-search-up + bindkey -M vicmd 'j' history-substring-search-down +fi +unset _stoa_zsh_plugins + # ── Stoic Prompt ── # Symbol: Greek column (Ι) in bronze autoload -Uz vcs_info @@ -80,7 +117,7 @@ alias sync-stoa='stoa-sync' # ── Functions ── commit-all() { - git pull --autostash + git pull --rebase --autostash git add -A git commit -m "$(printf 'chore: sync %s\n\nChanges:\n%s' "$(date '+%Y-%m-%d %H:%M')" "$(git diff --cached --name-status)")" git push