From 31b2f35e3c24c65d05da61198d9fc6ce3c6d1807 Mon Sep 17 00:00:00 2001 From: Ed Heltzel <402910+edheltzel@users.noreply.github.com> Date: Fri, 9 Oct 2026 17:23:10 -0400 Subject: [PATCH 1/7] tuxedo added --- packages/Brewfile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/Brewfile b/packages/Brewfile index 40eddf7e..8cc03412 100755 --- a/packages/Brewfile +++ b/packages/Brewfile @@ -109,6 +109,8 @@ brew 'procs' # better ps - Rust # CLI Productivity Apps brew 'rclone' # Manage cloud storage brew 'mole' # Deep clean and optimize +brew 'tuxedo' # TUI for todo.txt +brew 'todo-txt' # CLI Development Suits brew 'lazydocker' # Full Docker management app - Go From 8e8c6c781872d2e21efbd3250628b9e327b1a3cf Mon Sep 17 00:00:00 2001 From: Ed Heltzel <402910+edheltzel@users.noreply.github.com> Date: Mon, 12 Oct 2026 09:06:12 -0400 Subject: [PATCH 2/7] feat(theme): readable Eldritch Dusk across all switcher apps Official Dusk accents are decorative-only on light surfaces (SPEC.md), so text roles use per-hue darkened variants (normal >= 4.5:1, bright >= 3:1). ANSI slots follow upstream's Dusk alacritty port with color0 as ink. - recolor kitty, ghostty, wezterm, starship, lazygit, gh-dash, claude, yazi, bat, btop, fish autosuggestion - add Dusk for neovim (local eldritch.nvim palette), pi, superfile - theme-switcher sets mdterm light/dark; yazi preview drops -T dark --- README.md | 2 +- .../.config/bat/themes/eldritch-dusk.tmTheme | 126 +++++++++--------- .../.config/btop/themes/eldritch-dusk.theme | 13 +- config/.config/ghostty/themes/eldritch-dusk | 36 ++--- .../.config/kitty/themes/eldritch-dusk.conf | 44 +++--- config/.config/starship.toml | 20 +-- .../superfile/theme/eldritch-dusk.toml | 74 ++++++++++ config/.config/theme-switcher/README.md | 8 +- .../theme-switcher/claude/eldritch-dusk.json | 46 +++---- .../theme-switcher/gh-dash/eldritch-dusk.yml | 8 +- .../theme-switcher/lazygit/eldritch-dusk.yml | 4 +- .../theme-switcher/pi/eldritch-dusk.json | 82 ++++++++++++ .../.config/theme-switcher/theme-preview.sh | 7 +- .../.config/theme-switcher/theme-switcher.sh | 27 +++- .../.config/wezterm/colors/eldritch-dusk.toml | 34 ++--- config/.config/wezterm/theme.lua | 28 ++-- .../flavors/eldritch-dusk.yazi/flavor.toml | 103 +++++++------- .../flavors/eldritch-dusk.yazi/tmtheme.xml | 126 +++++++++--------- config/.config/yazi/yazi.toml | 2 +- config/AGENTS.md | 2 +- fish/.config/fish/conf.d/theme_colors.fish | 4 +- neovim/.config/nvim/colors/eldritch-dusk.lua | 59 ++++++++ .../nvim/lua/plugins/ui/lualine/eldritch.lua | 15 +++ .../nvim/lua/plugins/ui/lualine/neoed.lua | 4 +- 24 files changed, 573 insertions(+), 301 deletions(-) create mode 100644 config/.config/superfile/theme/eldritch-dusk.toml create mode 100644 config/.config/theme-switcher/pi/eldritch-dusk.json create mode 100644 neovim/.config/nvim/colors/eldritch-dusk.lua diff --git a/README.md b/README.md index 52a96037..e9e15dc3 100755 --- a/README.md +++ b/README.md @@ -249,7 +249,7 @@ The package list is `stow_packages` in the `justfile`: `dots git fish zsh config - **config** (`config/`) - `~/.config` for 20+ applications, so they don't clutter the repo root. Currently: bat, borders, btop, fastfetch, gh, gh-changelog, gh-dash, ghostty, herdr, jj, karabiner, kitty, lazygit, leaderkey, markdownlint-cli2, raycast, starship, superfile, theme-switcher, topgrade, wezterm, yazi, zed. - **Terminals**: WezTerm (primary, modular Lua, see [its README](./config/.config/wezterm/README.md)), Kitty, Ghostty. - - **Theme switcher**: run `theme` for an fzf picker with preview, `theme ` to switch directly, `theme --list` / `--current`. Thirteen themes (Eldritch, Eldritch Dusk, Tokyo Night, Rosé Pine x3, Vesper, Catppuccin x4, Dracula, Gruvbox) applied across Ghostty, Kitty, WezTerm, Neovim, bat, btop, starship, lazygit, Claude Code, herdr, gh-dash, Superfile, and Yazi. Neovim skips Eldritch Dusk. Yazi has a flavor for every switcher theme. Details in [theme-switcher/README.md](./config/.config/theme-switcher/README.md). + - **Theme switcher**: run `theme` for an fzf picker with preview, `theme ` to switch directly, `theme --list` / `--current`. Thirteen themes (Eldritch, Eldritch Dusk, Tokyo Night, Rosé Pine x3, Vesper, Catppuccin x4, Dracula, Gruvbox) applied across Ghostty, Kitty, WezTerm, Neovim, bat, btop, starship, lazygit, Claude Code, pi, omp, herdr, gh-dash, Superfile, Yazi, and mdterm (light/dark only). Yazi has a flavor for every switcher theme. Details in [theme-switcher/README.md](./config/.config/theme-switcher/README.md). - **Keyboard**: `leaderkey` (current) and `karabiner` (legacy TypeScript config, see [its README](./config/.config/karabiner/README.md)). - **Editors**: `zed` (Vim mode), kept for occasional use. diff --git a/config/.config/bat/themes/eldritch-dusk.tmTheme b/config/.config/bat/themes/eldritch-dusk.tmTheme index a35930c9..6a6327d3 100644 --- a/config/.config/bat/themes/eldritch-dusk.tmTheme +++ b/config/.config/bat/themes/eldritch-dusk.tmTheme @@ -66,7 +66,7 @@ settings foreground - #ffaf4d + #a75c00 @@ -77,7 +77,7 @@ settings foreground - #fb5b66 + #df0514 @@ -88,7 +88,7 @@ settings foreground - #0ad6ff + #007992 @@ -99,7 +99,7 @@ settings foreground - #ffaf4d + #a75c00 @@ -149,7 +149,7 @@ fontStyle italic foreground - #8a69f7 + #754ef6 @@ -160,7 +160,7 @@ settings foreground - #fb5b66 + #df0514 @@ -173,7 +173,7 @@ fontStyle foreground - #ffaf4d + #a75c00 @@ -186,7 +186,7 @@ fontStyle foreground - #ffaf4d + #a75c00 @@ -197,7 +197,7 @@ settings foreground - #fb5bb6 + #d5057c @@ -208,7 +208,7 @@ settings foreground - #fb5bb6 + #d5057c @@ -221,7 +221,7 @@ fontStyle foreground - #8a69f7 + #754ef6 @@ -234,7 +234,7 @@ fontStyle italic foreground - #8a69f7 + #754ef6 @@ -247,7 +247,7 @@ fontStyle italic foreground - #8a69f7 + #754ef6 @@ -260,7 +260,7 @@ fontStyle italic foreground - #8a69f7 + #754ef6 @@ -273,7 +273,7 @@ fontStyle underline foreground - #ffaf4d + #a75c00 @@ -286,7 +286,7 @@ fontStyle underline foreground - #0ad6ff + #007992 @@ -299,7 +299,7 @@ fontStyle italic underline foreground - #ffaf4d + #a75c00 @@ -312,7 +312,7 @@ fontStyle foreground - #fb5bb6 + #d5057c @@ -325,7 +325,7 @@ fontStyle foreground - #0ad6ff + #007992 @@ -338,7 +338,7 @@ fontStyle foreground - #8a69f7 + #754ef6 @@ -351,7 +351,7 @@ fontStyle foreground - #0ad6ff + #007992 @@ -364,7 +364,7 @@ fontStyle foreground - #8a69f7 + #754ef6 @@ -377,7 +377,7 @@ fontStyle italic foreground - #ffaf4d + #a75c00 @@ -390,7 +390,7 @@ fontStyle foreground - #0ad6ff + #007992 @@ -403,7 +403,7 @@ fontStyle italic foreground - #0ad6ff + #007992 @@ -418,7 +418,7 @@ fontStyle foreground - #f0f3f4 + #1e2029 @@ -431,7 +431,7 @@ background #0ad6ff foreground - #f0f3f4 + #1e2029 @@ -442,7 +442,7 @@ settings foreground - #ffaf4d + #a75c00 @@ -464,7 +464,7 @@ settings foreground - #fb5b66 + #df0514 @@ -475,7 +475,7 @@ settings foreground - #38ff9f + #007f42 @@ -495,7 +495,7 @@ settings foreground - #0ad6ff + #007992 @@ -504,7 +504,7 @@ settings foreground - #ffaf4d + #a75c00 @@ -513,7 +513,7 @@ settings foreground - #0ad6ff + #007992 @@ -524,7 +524,7 @@ settings foreground - #0ad6ff + #007992 @@ -535,7 +535,7 @@ settings foreground - #ffaf4d + #a75c00 @@ -546,7 +546,7 @@ settings foreground - #fb5bb6 + #d5057c @@ -557,7 +557,7 @@ settings foreground - #ffaf4d + #a75c00 @@ -568,7 +568,7 @@ settings foreground - #38ff9f + #007f42 @@ -579,7 +579,7 @@ settings foreground - #0ad6ff + #007992 @@ -590,7 +590,7 @@ settings foreground - #fb5bb6 + #d5057c @@ -601,7 +601,7 @@ settings foreground - #ffaf4d + #a75c00 @@ -615,7 +615,7 @@ fontStyle italic foreground - #ffaf4d + #a75c00 @@ -628,7 +628,7 @@ fontStyle bold foreground - #ffaf4d + #a75c00 @@ -641,7 +641,7 @@ fontStyle italic foreground - #ffaf4d + #a75c00 @@ -652,7 +652,7 @@ settings foreground - #8a69f7 + #754ef6 @@ -663,7 +663,7 @@ settings foreground - #0ad6ff + #007992 @@ -713,7 +713,7 @@ settings foreground - #fb5bb6 + #d5057c @@ -726,7 +726,7 @@ fontStyle underline foreground - #0ad6ff + #007992 @@ -737,7 +737,7 @@ settings foreground - #ffaf4d + #a75c00 @@ -748,7 +748,7 @@ settings foreground - #0ad6ff + #007992 @@ -785,7 +785,7 @@ settings foreground - #fb5bb6 + #d5057c @@ -796,7 +796,7 @@ settings foreground - #0ad6ff + #007992 @@ -807,7 +807,7 @@ settings foreground - #0ad6ff + #007992 @@ -818,7 +818,7 @@ settings foreground - #0ad6ff + #007992 @@ -829,7 +829,7 @@ settings foreground - #0ad6ff + #007992 @@ -840,7 +840,7 @@ settings foreground - #0ad6ff + #007992 @@ -851,7 +851,7 @@ settings foreground - #0ad6ff + #007992 @@ -862,7 +862,7 @@ settings foreground - #fb5bb6 + #d5057c @@ -873,7 +873,7 @@ settings foreground - #ffaf4d + #a75c00 @@ -884,7 +884,7 @@ settings foreground - #8a69f7 + #754ef6 @@ -895,7 +895,7 @@ settings foreground - #0ad6ff + #007992 fontStyle @@ -908,7 +908,7 @@ settings foreground - #8a69f7 + #754ef6 @@ -919,7 +919,7 @@ settings foreground - #ffaf4d + #a75c00 diff --git a/config/.config/btop/themes/eldritch-dusk.theme b/config/.config/btop/themes/eldritch-dusk.theme index 60c4d298..e358da2c 100644 --- a/config/.config/btop/themes/eldritch-dusk.theme +++ b/config/.config/btop/themes/eldritch-dusk.theme @@ -16,8 +16,8 @@ theme[selected_bg]="#0ad6ff" # Foreground color of selected item in processes box theme[selected_fg]="#1e2029" -# Color of inactive/disabled text -theme[inactive_fg]="#e2e6e8" +# Color of inactive/disabled text (dusk overlay hue darkened to 3:1; upstream #e2e6e8 is invisible) +theme[inactive_fg]="#888d91" # Color of text appearing on top of graphs, i.e uptime and current network graph scaling theme[graph_text]="#1e2029" @@ -26,7 +26,8 @@ theme[graph_text]="#1e2029" theme[meter_bg]="#e2e6e8" # Misc colors for processes box including mini cpu graphs, details memory graph and details status text -theme[proc_misc]="#38ff9f" +# Dusk text roles below are darkened to >= 4.5:1; graphs/meters/boxes keep upstream neons. +theme[proc_misc]="#007f42" # Cpu box outline color theme[cpu_box]="#38ff9f" @@ -84,6 +85,6 @@ theme[upload_mid]="#0ad6ff" theme[upload_end]="#fb5bb6" # Process box color gradient for threads, mem and cpu usage -theme[process_start]="#8a69f7" -theme[process_mid]="#38ff9f" -theme[process_end]="#5b73dc" +theme[process_start]="#754ef6" +theme[process_mid]="#007f42" +theme[process_end]="#4b65d9" diff --git a/config/.config/ghostty/themes/eldritch-dusk b/config/.config/ghostty/themes/eldritch-dusk index 8f368794..0fb8ed11 100644 --- a/config/.config/ghostty/themes/eldritch-dusk +++ b/config/.config/ghostty/themes/eldritch-dusk @@ -1,32 +1,34 @@ background = #f0f3f4 foreground = #1e2029 -cursor-color = #38ff9f +cursor-color = #ffaf4d selection-background = #e2e6e8 selection-foreground = #1e2029 +# Slots follow upstream eldritch-dusk (alacritty port / SPEC.md); accents +# darkened for Pale Shore: normal >= 4.5:1, bright >= 3:1. black = ink. # black -palette = 0=#c9cbcd +palette = 0=#1e2029 palette = 8=#5b73dc # red -palette = 9=#fb5b66 -palette = 1=#fb5b66 +palette = 1=#df0514 +palette = 9=#fb4c58 # green -palette = 2=#38ff9f -palette = 10=#38ff9f -# yellow -palette = 11=#ffaf4d -palette = 3=#fff952 +palette = 2=#007f42 +palette = 10=#00a153 +# yellow (Dusk: orange carries yellow text roles) +palette = 3=#a75c00 +palette = 11=#d37400 # blue -palette = 12=#8a69f7 -palette = 4=#8a69f7 +palette = 4=#4b65d9 +palette = 12=#5b73dc # fuchsia -palette = 13=#fb5bb6 -palette = 5=#fb5bb6 +palette = 5=#754ef6 +palette = 13=#8a69f7 # aqua -palette = 14=#0ad6ff -palette = 6=#0ad6ff +palette = 6=#007992 +palette = 14=#0099b7 # white -palette = 7=#1e2029 -palette = 15=#1e2029 +palette = 7=#353746 +palette = 15=#474852 diff --git a/config/.config/kitty/themes/eldritch-dusk.conf b/config/.config/kitty/themes/eldritch-dusk.conf index d009a848..4d3433e0 100644 --- a/config/.config/kitty/themes/eldritch-dusk.conf +++ b/config/.config/kitty/themes/eldritch-dusk.conf @@ -3,59 +3,61 @@ ## author: jacobrreed ## license: MIT ## upstream: https://github.com/eldritch-theme/eldritch -## blurb: Eldritch light (Dusk) variant +## blurb: Eldritch light (Dusk) variant. Slots follow upstream eldritch-dusk +## (alacritty port / SPEC.md); accents darkened so text stays readable on +## Pale Shore: normal >= 4.5:1, bright >= 3:1. black = ink, not background. foreground #1e2029 background #f0f3f4 selection_foreground #1e2029 selection_background #e2e6e8 -url_color #0ad6ff +url_color #007992 # black -color0 #c9cbcd +color0 #1e2029 color8 #5b73dc # red -color1 #fb5b66 -color9 #fb5b66 +color1 #df0514 +color9 #fb4c58 # green -color2 #38ff9f -color10 #38ff9f +color2 #007f42 +color10 #00a153 -# yellow -color3 #fff952 -color11 #ffaf4d +# yellow (Dusk: orange carries yellow text roles) +color3 #a75c00 +color11 #d37400 # blue -color4 #8a69f7 -color12 #8a69f7 +color4 #4b65d9 +color12 #5b73dc # magenta -color5 #fb5bb6 -color13 #fb5bb6 +color5 #754ef6 +color13 #8a69f7 # cyan -color6 #0ad6ff -color14 #0ad6ff +color6 #007992 +color14 #0099b7 # white -color7 #1e2029 -color15 #1e2029 +color7 #353746 +color15 #474852 # Cursor colors -cursor #38ff9f +cursor #ffaf4d cursor_text_color #f0f3f4 # Tab bar colors -active_tab_foreground #f0f3f4 +active_tab_foreground #1e2029 active_tab_background #38ff9f inactive_tab_foreground #5b73dc inactive_tab_background #e2e6e8 # Marks mark1_foreground #f0f3f4 -mark1_background #fb5b66 +mark1_background #df0514 # Splits/Windows active_border_color #8a69f7 diff --git a/config/.config/starship.toml b/config/.config/starship.toml index 202a9a84..f32809ba 100644 --- a/config/.config/starship.toml +++ b/config/.config/starship.toml @@ -25,7 +25,7 @@ command_timeout = 500 scan_timeout = 100 # Set by theme-switcher. Names match theme-switcher/current. -palette = "eldritch" +palette = "eldritch-dusk" [battery] disabled = true @@ -204,15 +204,17 @@ orange = "#f7c67f" comment = "#7081d0" foreground = "#ebfafa" +# Dusk neons fail on Pale Shore; text roles darkened to >= 4.5:1 per hue. +# Per eldritch SPEC.md, Dusk yellow text roles use orange. [palettes."eldritch-dusk"] -green = "#38ff9f" -red = "#fb5b66" -cyan = "#0ad6ff" -blue = "#0ad6ff" -pink = "#fb5bb6" -purple = "#8a69f7" -yellow = "#fff952" -orange = "#ffaf4d" +green = "#007f42" +red = "#df0514" +cyan = "#007992" +blue = "#4b65d9" +pink = "#d5057c" +purple = "#754ef6" +yellow = "#a75c00" +orange = "#d37400" comment = "#5b73dc" foreground = "#1e2029" diff --git a/config/.config/superfile/theme/eldritch-dusk.toml b/config/.config/superfile/theme/eldritch-dusk.toml new file mode 100644 index 00000000..004638f0 --- /dev/null +++ b/config/.config/superfile/theme/eldritch-dusk.toml @@ -0,0 +1,74 @@ +############################################## +# # +# Eldritch Dusk Theme # +# # +############################################## + +# Light recolor of eldritch.toml. Text accents are the Dusk palette darkened +# to >= 4.5:1 on #f0f3f4 (official neons are decorative-only per SPEC.md). +# https://superfile.dev/configure/custom-theme/ + +############################################################################### +# Code Syntax Highlighting # +############################################################################### + +# No Eldritch chroma style exists; closest light style. +code_syntax_highlight = "catppuccin-latte" + +############################################################################### +# Base Colors # +############################################################################### + +#-- Full Screen +full_screen_fg = "#1e2029" +full_screen_bg = "#f0f3f4" + +#-- Gradient +# Note: This currently only supports two colors. +gradient_color = ["#007f42", "#754ef6"] + +#-- File Panel +file_panel_fg = "#1e2029" +file_panel_bg = "#f0f3f4" +file_panel_border = "#5b73dc" +file_panel_border_active = "#007f42" +file_panel_top_directory_icon = "#007f42" +file_panel_top_path = "#007992" +file_panel_item_selected_fg = "#a75c00" +file_panel_item_selected_bg = "#e2e6e8" + +#-- Footer +footer_fg = "#1e2029" +footer_bg = "#f0f3f4" +footer_border = "#5b73dc" +footer_border_active = "#007f42" + +#-- Sidebar +sidebar_fg = "#1e2029" +sidebar_bg = "#f0f3f4" +sidebar_title = "#754ef6" +sidebar_border = "#e2e6e8" +sidebar_border_active = "#007f42" +sidebar_item_selected_fg = "#a75c00" +sidebar_item_selected_bg = "#e2e6e8" +sidebar_divider = "#5b73dc" + +#-- Modals +modal_fg = "#1e2029" +modal_bg = "#e2e6e8" +modal_border_active = "#007f42" +modal_cancel_fg = "#f0f3f4" +modal_cancel_bg = "#df0514" +modal_confirm_fg = "#f0f3f4" +modal_confirm_bg = "#007f42" + +#-- Help Menu +help_menu_hotkey = "#a75c00" +help_menu_title = "#754ef6" + +#-- Special +cursor = "#d5057c" +correct = "#007f42" +error = "#df0514" +hint = "#007992" +cancel = "#5b73dc" diff --git a/config/.config/theme-switcher/README.md b/config/.config/theme-switcher/README.md index f520ea89..5d10f5f3 100644 --- a/config/.config/theme-switcher/README.md +++ b/config/.config/theme-switcher/README.md @@ -7,7 +7,7 @@ Unified theme switching system for all applications in dotfiles. ## Supported Themes - `eldritch` - Eldritch -- `eldritch-dusk` - Eldritch Dusk (official light) +- `eldritch-dusk` - Eldritch Dusk (official light). ANSI slots follow upstream's Dusk alacritty port; accents used as text are darkened per hue (normal ≥4.5:1, bright ≥3:1 on `#f0f3f4`) because the official neons are decorative-only on light surfaces (SPEC.md). `color0` is ink, not background. bat and btop start from the upstream Dusk ports with only text foregrounds darkened (graphs, meters, borders keep the neons); re-diff against upstream before syncing. - `tokyonight` - Tokyo Night - `rose-pine` - Rosé Pine - `rose-pine-dawn` - Rosé Pine Dawn (light theme) @@ -37,15 +37,17 @@ Unified theme switching system for all applications in dotfiles. | starship | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | Superfile¶ | ✓ | | | | | | latte | ✓ | | | Yazi∥ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +| mdterm# | dark | dark | dark | light | dark | dark | latte light | dark | dark | † All four Catppuccin flavors (Latte, Frappé, Macchiato, Mocha) are supported identically. Terminals (Ghostty, WezTerm) and bat use built-in Catppuccin themes; Neovim uses the `catppuccin/nvim` plugin; Kitty and btop use the official port theme files; lazygit uses generated palettes from the official Catppuccin color spec. ‡ herdr switches `name` under `[theme]` in `herdr/config.toml` and reloads the running server live — themes without a herdr built-in (Eldritch, Rose Pine Moon, Catppuccin Frappé/Macchiato) use herdr's `terminal` theme, which follows the host terminal palette this switcher just set. § gh-dash (`gh dash`) has no external theme-file support — colors are an inline `theme.colors` key-value block in `gh-dash/config.yml`. Like lazygit, the switcher keeps a per-theme snippet in `gh-dash/[theme].yml` and injects it, replacing only `theme.colors` and leaving `theme.ui` and every other config section untouched. gh-dash validates strictly, so each snippet carries the full color set. Palettes are derived from the matching Kitty theme for cross-app consistency. -Starship follows `palette =` in `starship.toml` for every switcher theme, including `eldritch-dusk`. Neovim skips `eldritch-dusk` — `eldritch.nvim` has no light palette yet. -¶ Superfile uses local files in `superfile/theme/.toml`; missing file → skipped. Catppuccin Latte only. +Starship follows `palette =` in `starship.toml` for every switcher theme, including `eldritch-dusk`. Neovim's `eldritch-dusk` is local (`nvim/colors/eldritch-dusk.lua`): it registers a Dusk palette with `eldritch.nvim`, which ships none. +¶ Superfile uses local files in `superfile/theme/.toml`; missing file → skipped. New theme files need `just stow config` to link into `~/.config/superfile/theme/`. ∥ Yazi sets both `dark` and `light` in `yazi/theme.toml` to the same flavor, so the pick wins regardless of terminal luminance. `tokyonight` maps to `tokyo-night`. Gruvbox is the upstream dark port, stored as `gruvbox`. Eldritch Dusk is a local recolor of the Eldritch flavor from the kitty/ghostty palette. +\# mdterm only has `dark`/`light`. The switcher writes `theme` in `mdterm/config.toml`: `light` for Eldritch Dusk, Rosé Pine Dawn, and Catppuccin Latte; `dark` otherwise. The yazi markdown previewer reads that config (no `-T` flag). ## Usage diff --git a/config/.config/theme-switcher/claude/eldritch-dusk.json b/config/.config/theme-switcher/claude/eldritch-dusk.json index 17353011..81427507 100644 --- a/config/.config/theme-switcher/claude/eldritch-dusk.json +++ b/config/.config/theme-switcher/claude/eldritch-dusk.json @@ -9,29 +9,29 @@ "subtle": "#5b73dc", "background": "#38ff9f", - "claude": "#8a69f7", - "claudeShimmer": "#ffaf4d", - "claudeBlue_FOR_SYSTEM_SPINNER": "#0ad6ff", + "claude": "#754ef6", + "claudeShimmer": "#d37400", + "claudeBlue_FOR_SYSTEM_SPINNER": "#007992", "claudeBlueShimmer_FOR_SYSTEM_SPINNER": "#5b73dc", - "permission": "#0ad6ff", + "permission": "#007992", "permissionShimmer": "#5b73dc", - "suggestion": "#0ad6ff", - "remember": "#0ad6ff", + "suggestion": "#007992", + "remember": "#007992", - "autoAccept": "#fb5bb6", - "bashBorder": "#fb5bb6", - "planMode": "#0ad6ff", - "ide": "#8a69f7", + "autoAccept": "#d5057c", + "bashBorder": "#d5057c", + "planMode": "#007992", + "ide": "#754ef6", "promptBorder": "#5b73dc", "promptBorderShimmer": "#8a69f7", - "success": "#38ff9f", - "error": "#fb5b66", - "warning": "#ffaf4d", - "warningShimmer": "#fff952", - "merged": "#8a69f7", + "success": "#007f42", + "error": "#df0514", + "warning": "#a75c00", + "warningShimmer": "#d37400", + "merged": "#754ef6", "diffAdded": "#38ff9f", "diffRemoved": "#fb5b66", @@ -46,13 +46,13 @@ "messageActionsBackground": "#e2e6e8", "bashMessageBackgroundColor": "#e2e6e8", - "red_FOR_SUBAGENTS_ONLY": "#fb5b66", - "blue_FOR_SUBAGENTS_ONLY": "#0ad6ff", - "green_FOR_SUBAGENTS_ONLY": "#38ff9f", - "yellow_FOR_SUBAGENTS_ONLY": "#fff952", - "purple_FOR_SUBAGENTS_ONLY": "#8a69f7", - "orange_FOR_SUBAGENTS_ONLY": "#ffaf4d", - "pink_FOR_SUBAGENTS_ONLY": "#fb5bb6", - "cyan_FOR_SUBAGENTS_ONLY": "#0ad6ff" + "red_FOR_SUBAGENTS_ONLY": "#df0514", + "blue_FOR_SUBAGENTS_ONLY": "#4b65d9", + "green_FOR_SUBAGENTS_ONLY": "#007f42", + "yellow_FOR_SUBAGENTS_ONLY": "#767200", + "purple_FOR_SUBAGENTS_ONLY": "#754ef6", + "orange_FOR_SUBAGENTS_ONLY": "#a75c00", + "pink_FOR_SUBAGENTS_ONLY": "#d5057c", + "cyan_FOR_SUBAGENTS_ONLY": "#007992" } } diff --git a/config/.config/theme-switcher/gh-dash/eldritch-dusk.yml b/config/.config/theme-switcher/gh-dash/eldritch-dusk.yml index f76fce50..ac57cd9d 100644 --- a/config/.config/theme-switcher/gh-dash/eldritch-dusk.yml +++ b/config/.config/theme-switcher/gh-dash/eldritch-dusk.yml @@ -1,12 +1,12 @@ colors: text: primary: "#1e2029" - secondary: "#8a69f7" + secondary: "#754ef6" inverted: "#f0f3f4" faint: "#5b73dc" - warning: "#fff952" - success: "#38ff9f" - error: "#fb5b66" + warning: "#a75c00" + success: "#007f42" + error: "#df0514" background: selected: "#e2e6e8" border: diff --git a/config/.config/theme-switcher/lazygit/eldritch-dusk.yml b/config/.config/theme-switcher/lazygit/eldritch-dusk.yml index 91e4d7ec..257a2813 100644 --- a/config/.config/theme-switcher/lazygit/eldritch-dusk.yml +++ b/config/.config/theme-switcher/lazygit/eldritch-dusk.yml @@ -14,7 +14,7 @@ inactiveViewSelectedLineBgColor: - bold cherryPickedCommitFgColor: - - "#8a69f7" + - "#f0f3f4" cherryPickedCommitBgColor: - cyan markedBaseCommitFgColor: @@ -22,6 +22,6 @@ markedBaseCommitBgColor: - "#fff952" unstagedChangesColor: - - "#fb5b66" + - "#df0514" defaultFgColor: - "#1e2029" diff --git a/config/.config/theme-switcher/pi/eldritch-dusk.json b/config/.config/theme-switcher/pi/eldritch-dusk.json new file mode 100644 index 00000000..d66966f7 --- /dev/null +++ b/config/.config/theme-switcher/pi/eldritch-dusk.json @@ -0,0 +1,82 @@ +{ + "$schema": "https://raw.githubusercontent.com/earendil-works/pi/main/packages/coding-agent/src/modes/interactive/theme/theme-schema.json", + "name": "eldritch-dusk", + "vars": { + "abyss": "#e2e6e8", + "depths": "#d5d9db", + "background": "#f0f3f4", + "line": "#c9cbcd", + "foreground": "#1e2029", + "muted": "#5b73dc", + "dim": "#888d91", + "cyan": "#007992", + "green": "#007f42", + "purple": "#754ef6", + "orange": "#d37400", + "pink": "#d5057c", + "red": "#df0514", + "yellow": "#a75c00", + "toolPendingBg": "#e2e6e8", + "toolSuccessBg": "#d4f8e8", + "toolErrorBg": "#f8d4d6" + }, + "colors": { + "accent": "purple", + "border": "muted", + "borderAccent": "pink", + "borderMuted": "line", + "success": "green", + "error": "red", + "warning": "yellow", + "muted": "muted", + "dim": "dim", + "text": "foreground", + "thinkingText": "muted", + "selectedBg": "abyss", + "userMessageBg": "abyss", + "userMessageText": "foreground", + "customMessageBg": "depths", + "customMessageText": "foreground", + "customMessageLabel": "purple", + "toolPendingBg": "toolPendingBg", + "toolSuccessBg": "toolSuccessBg", + "toolErrorBg": "toolErrorBg", + "toolTitle": "cyan", + "toolOutput": "muted", + "mdHeading": "purple", + "mdLink": "cyan", + "mdLinkUrl": "muted", + "mdCode": "pink", + "mdCodeBlock": "green", + "mdCodeBlockBorder": "line", + "mdQuote": "muted", + "mdQuoteBorder": "line", + "mdHr": "line", + "mdListBullet": "pink", + "toolDiffAdded": "green", + "toolDiffRemoved": "red", + "toolDiffContext": "muted", + "syntaxComment": "purple", + "syntaxKeyword": "pink", + "syntaxFunction": "pink", + "syntaxVariable": "muted", + "syntaxString": "yellow", + "syntaxNumber": "red", + "syntaxType": "orange", + "syntaxOperator": "pink", + "syntaxPunctuation": "foreground", + "thinkingOff": "dim", + "thinkingMinimal": "muted", + "thinkingLow": "cyan", + "thinkingMedium": "purple", + "thinkingHigh": "pink", + "thinkingXhigh": "orange", + "thinkingMax": "red", + "bashMode": "pink" + }, + "export": { + "pageBg": "abyss", + "cardBg": "background", + "infoBg": "depths" + } +} diff --git a/config/.config/theme-switcher/theme-preview.sh b/config/.config/theme-switcher/theme-preview.sh index 8b0b2f1a..8d5b942c 100755 --- a/config/.config/theme-switcher/theme-preview.sh +++ b/config/.config/theme-switcher/theme-preview.sh @@ -210,11 +210,7 @@ show_support() { echo " ✓  ghostty" echo " ✓ 󰄛 kitty" echo " ✓  wezterm" - if [[ "$theme" == "eldritch-dusk" ]]; then - echo " ✗  neovim (no dusk palette)" - else - echo " ✓  neovim" - fi + echo " ✓  neovim" echo " ✓ 󰭟 bat" echo " ✓ 󰄧 btop" echo " ✓  starship" @@ -261,6 +257,7 @@ show_support() { else echo " ✗ 󰝰 yazi" fi + echo " ✓ 󰍔 mdterm ($([[ "$theme" =~ ^(eldritch-dusk|rose-pine-dawn|catppuccin-latte)$ ]] && echo light || echo dark))" } # Main diff --git a/config/.config/theme-switcher/theme-switcher.sh b/config/.config/theme-switcher/theme-switcher.sh index 93204387..cc8c26ba 100755 --- a/config/.config/theme-switcher/theme-switcher.sh +++ b/config/.config/theme-switcher/theme-switcher.sh @@ -117,7 +117,7 @@ get_wezterm_theme() { get_neovim_theme() { case "$1" in eldritch) echo "eldritch" ;; - eldritch-dusk) echo "" ;; # eldritch.nvim has no dusk palette yet + eldritch-dusk) echo "eldritch-dusk" ;; # local nvim/colors/eldritch-dusk.lua tokyonight) echo "tokyonight" ;; rose-pine) echo "rose-pine" ;; rose-pine-dawn) echo "rose-pine-dawn" ;; @@ -227,6 +227,14 @@ get_yazi_theme() { fi } +# mdterm has no custom themes, only dark/light. +get_mdterm_theme() { + case "$1" in + eldritch-dusk | rose-pine-dawn | catppuccin-latte) echo "light" ;; + *) echo "dark" ;; + esac +} + get_pi_theme() { local name="$1" if [[ -f "$THEMES_DIR/pi/${name}.json" ]] || [[ -f "$HOME/.pi/agent/themes/${name}.json" ]]; then @@ -665,6 +673,22 @@ update_yazi() { success "yazi → $yazi_theme" } +update_mdterm() { + local theme="$1" + + if ! is_installed mdterm; then + MISSING_APPS+=("mdterm") + info "mdterm → not installed, skipped" + return + fi + + local mdterm_theme + mdterm_theme=$(get_mdterm_theme "$theme") + sed -i '' -E "s/^theme = \"[a-z]+\"/theme = \"$mdterm_theme\"/" "$CONFIG/mdterm/config.toml" + UPDATED_APPS+=("mdterm → $mdterm_theme") + success "mdterm → $mdterm_theme" +} + update_pi() { local theme="$1" @@ -852,6 +876,7 @@ apply_theme() { update_ghdash "$theme" update_superfile "$theme" update_yazi "$theme" + update_mdterm "$theme" # Save current theme echo "$theme" >"$THEMES_DIR/current" diff --git a/config/.config/wezterm/colors/eldritch-dusk.toml b/config/.config/wezterm/colors/eldritch-dusk.toml index 061bdbdd..a57e1dd5 100644 --- a/config/.config/wezterm/colors/eldritch-dusk.toml +++ b/config/.config/wezterm/colors/eldritch-dusk.toml @@ -1,30 +1,32 @@ # Eldritch Dusk (official light) # https://github.com/eldritch-theme/eldritch +# Slots follow upstream eldritch-dusk (alacritty port / SPEC.md); accents +# darkened for Pale Shore: ansi >= 4.5:1, brights >= 3:1. black = ink. [colors] ansi = [ - '#c9cbcd', - '#fb5b66', - '#38ff9f', - '#fff952', - '#8a69f7', - '#fb5bb6', - '#0ad6ff', '#1e2029', + '#df0514', + '#007f42', + '#a75c00', + '#4b65d9', + '#754ef6', + '#007992', + '#353746', ] background = '#f0f3f4' brights = [ '#5b73dc', - '#fb5b66', - '#38ff9f', - '#ffaf4d', + '#fb4c58', + '#00a153', + '#d37400', + '#5b73dc', '#8a69f7', - '#fb5bb6', - '#0ad6ff', - '#1e2029', + '#0099b7', + '#474852', ] -compose_cursor = '#fff952' -cursor_bg = '#38ff9f' -cursor_border = '#0ad6ff' +compose_cursor = '#8a69f7' +cursor_bg = '#ffaf4d' +cursor_border = '#ffaf4d' cursor_fg = '#f0f3f4' foreground = '#1e2029' scrollbar_thumb = '#38ff9f' diff --git a/config/.config/wezterm/theme.lua b/config/.config/wezterm/theme.lua index cbd1cd22..0d6ab221 100644 --- a/config/.config/wezterm/theme.lua +++ b/config/.config/wezterm/theme.lua @@ -10,7 +10,7 @@ function M.basename(s) end -- Theme selection: set by theme-switcher, must match a WezTerm color_scheme name -M.name = "Eldritch" +M.name = "Eldritch Dusk" -- Theme data lookup table (colors + tab_bar per theme) local themes = { @@ -83,28 +83,30 @@ local themes = { }, }, ["Eldritch Dusk"] = { + -- Accents darkened to >= 4.5:1 on Pale Shore (official Dusk neons are + -- decorative-only per eldritch SPEC.md); active pill text uses background. colors = { - red = "#FB5B66", - red2 = "#E14A55", - red3 = "#C43A45", - purple = "#8A69F7", + red = "#DF0514", + red2 = "#B8040F", + red3 = "#93030C", + purple = "#754EF6", purple_alt = "#5B73DC", - cyan = "#0AD6FF", - yellow = "#FFF952", - pink = "#FB5BB6", + cyan = "#007992", + yellow = "#767200", + pink = "#D5057C", white = "#1E2029", - green = "#38FF9F", - orange = "#FFAF4D", + green = "#007F42", + orange = "#A75C00", dark = "#E2E6E8", black = "#F0F3F4", }, tab_bar = { bg = "#E2E6E8", - active_bg = "#38FF9F", - active_fg = "#1E2029", + active_bg = "#007F42", + active_fg = "#F0F3F4", inactive_bg = "#E2E6E8", inactive_fg = "#5B73DC", - agent_activity = "#FFAF4D", + agent_activity = "#A75C00", }, }, ["rose-pine"] = { diff --git a/config/.config/yazi/flavors/eldritch-dusk.yazi/flavor.toml b/config/.config/yazi/flavors/eldritch-dusk.yazi/flavor.toml index 8912134b..97534037 100644 --- a/config/.config/yazi/flavors/eldritch-dusk.yazi/flavor.toml +++ b/config/.config/yazi/flavors/eldritch-dusk.yazi/flavor.toml @@ -5,19 +5,26 @@ # # bg #f0f3f4 surface #e2e6e8 muted #c9cbcd # fg #1e2029 comment #5b73dc +# +# Official accents (backgrounds, markers, borders only): # cyan #0ad6ff green #38ff9f purple #8a69f7 # pink #fb5bb6 yellow #fff952 orange #ffaf4d # red #fb5b66 # +# Text accents, darkened to >= 4.5:1 on bg (SPEC.md: Dusk yellow text -> orange): +# cyan #007992 green #007f42 purple #754ef6 +# pink #d5057c orange #a75c00 red #df0514 +# orange-lt #d37400 (3:1, secondary orange) +# # : Manager {{{ [mgr] -cwd = { fg = "#0ad6ff" } +cwd = { fg = "#007992" } # Find -find_keyword = { fg = "#fb5b66", bold = true, italic = true, underline = true } -find_position = { fg = "#ffaf4d", bg = "reset", bold = true, italic = true } +find_keyword = { fg = "#df0514", bold = true, italic = true, underline = true } +find_position = { fg = "#a75c00", bg = "reset", bold = true, italic = true } # Marker marker_copied = { fg = "#38ff9f", bg = "#38ff9f" } @@ -41,7 +48,7 @@ border_style = { fg = "#5b73dc" } [tabs] active = { fg = "#1e2029", bg = "#0ad6ff", bold = true } -inactive = { fg = "#0ad6ff", bg = "#e2e6e8" } +inactive = { fg = "#007992", bg = "#e2e6e8" } # : }}} @@ -51,15 +58,15 @@ inactive = { fg = "#0ad6ff", bg = "#e2e6e8" } [mode] normal_main = { fg = "#1e2029", bg = "#0ad6ff", bold = true } -normal_alt = { fg = "#0ad6ff", bg = "#e2e6e8" } +normal_alt = { fg = "#007992", bg = "#e2e6e8" } # Select mode select_main = { fg = "#1e2029", bg = "#38ff9f", bold = true } -select_alt = { fg = "#38ff9f", bg = "#e2e6e8" } +select_alt = { fg = "#007f42", bg = "#e2e6e8" } # Unset mode unset_main = { fg = "#1e2029", bg = "#8a69f7", bold = true } -unset_alt = { fg = "#8a69f7", bg = "#e2e6e8" } +unset_alt = { fg = "#754ef6", bg = "#e2e6e8" } # : }}} @@ -67,21 +74,21 @@ unset_alt = { fg = "#8a69f7", bg = "#e2e6e8" } # : Status bar {{{ [status] -overall = { fg = "#0ad6ff" } +overall = { fg = "#007992" } sep_left = { open = "", close = "" } sep_right = { open = "", close = "" } # Progress progress_label = { fg = "#1e2029", bold = true } -progress_normal = { fg = "#0ad6ff", bg = "#e2e6e8" } -progress_error = { fg = "#fb5b66", bg = "#e2e6e8" } +progress_normal = { fg = "#007992", bg = "#e2e6e8" } +progress_error = { fg = "#df0514", bg = "#e2e6e8" } # Permissions perm_sep = { fg = "#5b73dc" } -perm_type = { fg = "#0ad6ff" } -perm_read = { fg = "#38ff9f" } -perm_write = { fg = "#fb5b66" } -perm_exec = { fg = "#ffaf4d" } +perm_type = { fg = "#007992" } +perm_read = { fg = "#007f42" } +perm_write = { fg = "#df0514" } +perm_exec = { fg = "#a75c00" } # : }}} @@ -90,7 +97,7 @@ perm_exec = { fg = "#ffaf4d" } [pick] border = { fg = "#0ad6ff" } -active = { fg = "#fb5bb6", bold = true } +active = { fg = "#d5057c", bold = true } inactive = {} # : }}} @@ -120,7 +127,7 @@ border = { fg = "#0ad6ff" } [tasks] border = { fg = "#0ad6ff" } title = {} -hovered = { fg = "#fb5bb6", underline = true } +hovered = { fg = "#d5057c", underline = true } # : }}} @@ -129,9 +136,9 @@ hovered = { fg = "#fb5bb6", underline = true } [which] mask = { bg = "#e2e6e8" } -cand = { fg = "#38ff9f" } +cand = { fg = "#007f42" } rest = { fg = "#5b73dc" } -desc = { fg = "#8a69f7" } +desc = { fg = "#754ef6" } separator = " " separator_style = { fg = "#5b73dc" } @@ -141,8 +148,8 @@ separator_style = { fg = "#5b73dc" } # : Help {{{ [help] -chord = { fg = "#38ff9f" } -action = { fg = "#8a69f7" } +chord = { fg = "#007f42" } +action = { fg = "#754ef6" } hovered = { reversed = true, bold = true } # : }}} @@ -152,9 +159,9 @@ hovered = { reversed = true, bold = true } [spot] border = { fg = "#0ad6ff" } -title = { fg = "#0ad6ff" } -tbl_col = { fg = "#38ff9f" } -tbl_cell = { fg = "#fb5bb6", bg = "#e2e6e8" } +title = { fg = "#007992" } +tbl_col = { fg = "#007f42" } +tbl_cell = { fg = "#d5057c", bg = "#e2e6e8" } # : }}} @@ -162,9 +169,9 @@ tbl_cell = { fg = "#fb5bb6", bg = "#e2e6e8" } # : Notify {{{ [notify] -title_info = { fg = "#38ff9f" } -title_warn = { fg = "#fff952" } -title_error = { fg = "#fb5b66" } +title_info = { fg = "#007f42" } +title_warn = { fg = "#a75c00" } +title_error = { fg = "#df0514" } # : }}} @@ -175,33 +182,33 @@ title_error = { fg = "#fb5b66" } rules = [ # Images - { mime = "image/*", fg = "#ffaf4d" }, + { mime = "image/*", fg = "#d37400" }, # Media - { mime = "video/*", fg = "#fb5b66" }, - { mime = "audio/*", fg = "#fb5b66" }, + { mime = "video/*", fg = "#df0514" }, + { mime = "audio/*", fg = "#df0514" }, # Archives - { mime = "application/zip", fg = "#fff952" }, - { mime = "application/x-tar", fg = "#fff952" }, - { mime = "application/x-bzip*", fg = "#fff952" }, - { mime = "application/x-bzip2", fg = "#fff952" }, - { mime = "application/x-7z-compressed", fg = "#fff952" }, - { mime = "application/x-rar", fg = "#fff952" }, - { mime = "application/x-xz", fg = "#fff952" }, + { mime = "application/zip", fg = "#a75c00" }, + { mime = "application/x-tar", fg = "#a75c00" }, + { mime = "application/x-bzip*", fg = "#a75c00" }, + { mime = "application/x-bzip2", fg = "#a75c00" }, + { mime = "application/x-7z-compressed", fg = "#a75c00" }, + { mime = "application/x-rar", fg = "#a75c00" }, + { mime = "application/x-xz", fg = "#a75c00" }, # Documents - { mime = "application/doc", fg = "#38ff9f" }, - { mime = "application/epub+zip", fg = "#38ff9f" }, - { mime = "application/pdf", fg = "#38ff9f" }, - { mime = "application/rtf", fg = "#38ff9f" }, - { mime = "application/vnd.*", fg = "#38ff9f" }, + { mime = "application/doc", fg = "#007f42" }, + { mime = "application/epub+zip", fg = "#007f42" }, + { mime = "application/pdf", fg = "#007f42" }, + { mime = "application/rtf", fg = "#007f42" }, + { mime = "application/vnd.*", fg = "#007f42" }, # Special files { mime = "*", is = "orphan", fg = "#1e2029", bg = "#fb5b66" }, - { mime = "application/*exec*", fg = "#fb5b66" }, + { mime = "application/*exec*", fg = "#df0514" }, - # Fallback — directories follow the terminal's blue (ANSI 4 → Eldritch #8a69f7), files use fg + # Fallback — directories follow the terminal's blue (ANSI 4 → Dusk #4b65d9), files use fg { url = "*", fg = "#1e2029" }, { url = "*/", fg = "blue" }, ] @@ -962,11 +969,11 @@ conds = [ # : Git status signs {{{ [git] -modified = { fg = "#0ad6ff", bold = true } -added = { fg = "#38ff9f", bold = true } -untracked = { fg = "#ffaf4d", bold = true } -deleted = { fg = "#fb5b66", bold = true } -updated = { fg = "#fff952", bold = true } +modified = { fg = "#007992", bold = true } +added = { fg = "#007f42", bold = true } +untracked = { fg = "#a75c00", bold = true } +deleted = { fg = "#df0514", bold = true } +updated = { fg = "#767200", bold = true } ignored = { fg = "#5b73dc" } # : }}} diff --git a/config/.config/yazi/flavors/eldritch-dusk.yazi/tmtheme.xml b/config/.config/yazi/flavors/eldritch-dusk.yazi/tmtheme.xml index a35930c9..6a6327d3 100644 --- a/config/.config/yazi/flavors/eldritch-dusk.yazi/tmtheme.xml +++ b/config/.config/yazi/flavors/eldritch-dusk.yazi/tmtheme.xml @@ -66,7 +66,7 @@ settings foreground - #ffaf4d + #a75c00 @@ -77,7 +77,7 @@ settings foreground - #fb5b66 + #df0514 @@ -88,7 +88,7 @@ settings foreground - #0ad6ff + #007992 @@ -99,7 +99,7 @@ settings foreground - #ffaf4d + #a75c00 @@ -149,7 +149,7 @@ fontStyle italic foreground - #8a69f7 + #754ef6 @@ -160,7 +160,7 @@ settings foreground - #fb5b66 + #df0514 @@ -173,7 +173,7 @@ fontStyle foreground - #ffaf4d + #a75c00 @@ -186,7 +186,7 @@ fontStyle foreground - #ffaf4d + #a75c00 @@ -197,7 +197,7 @@ settings foreground - #fb5bb6 + #d5057c @@ -208,7 +208,7 @@ settings foreground - #fb5bb6 + #d5057c @@ -221,7 +221,7 @@ fontStyle foreground - #8a69f7 + #754ef6 @@ -234,7 +234,7 @@ fontStyle italic foreground - #8a69f7 + #754ef6 @@ -247,7 +247,7 @@ fontStyle italic foreground - #8a69f7 + #754ef6 @@ -260,7 +260,7 @@ fontStyle italic foreground - #8a69f7 + #754ef6 @@ -273,7 +273,7 @@ fontStyle underline foreground - #ffaf4d + #a75c00 @@ -286,7 +286,7 @@ fontStyle underline foreground - #0ad6ff + #007992 @@ -299,7 +299,7 @@ fontStyle italic underline foreground - #ffaf4d + #a75c00 @@ -312,7 +312,7 @@ fontStyle foreground - #fb5bb6 + #d5057c @@ -325,7 +325,7 @@ fontStyle foreground - #0ad6ff + #007992 @@ -338,7 +338,7 @@ fontStyle foreground - #8a69f7 + #754ef6 @@ -351,7 +351,7 @@ fontStyle foreground - #0ad6ff + #007992 @@ -364,7 +364,7 @@ fontStyle foreground - #8a69f7 + #754ef6 @@ -377,7 +377,7 @@ fontStyle italic foreground - #ffaf4d + #a75c00 @@ -390,7 +390,7 @@ fontStyle foreground - #0ad6ff + #007992 @@ -403,7 +403,7 @@ fontStyle italic foreground - #0ad6ff + #007992 @@ -418,7 +418,7 @@ fontStyle foreground - #f0f3f4 + #1e2029 @@ -431,7 +431,7 @@ background #0ad6ff foreground - #f0f3f4 + #1e2029 @@ -442,7 +442,7 @@ settings foreground - #ffaf4d + #a75c00 @@ -464,7 +464,7 @@ settings foreground - #fb5b66 + #df0514 @@ -475,7 +475,7 @@ settings foreground - #38ff9f + #007f42 @@ -495,7 +495,7 @@ settings foreground - #0ad6ff + #007992 @@ -504,7 +504,7 @@ settings foreground - #ffaf4d + #a75c00 @@ -513,7 +513,7 @@ settings foreground - #0ad6ff + #007992 @@ -524,7 +524,7 @@ settings foreground - #0ad6ff + #007992 @@ -535,7 +535,7 @@ settings foreground - #ffaf4d + #a75c00 @@ -546,7 +546,7 @@ settings foreground - #fb5bb6 + #d5057c @@ -557,7 +557,7 @@ settings foreground - #ffaf4d + #a75c00 @@ -568,7 +568,7 @@ settings foreground - #38ff9f + #007f42 @@ -579,7 +579,7 @@ settings foreground - #0ad6ff + #007992 @@ -590,7 +590,7 @@ settings foreground - #fb5bb6 + #d5057c @@ -601,7 +601,7 @@ settings foreground - #ffaf4d + #a75c00 @@ -615,7 +615,7 @@ fontStyle italic foreground - #ffaf4d + #a75c00 @@ -628,7 +628,7 @@ fontStyle bold foreground - #ffaf4d + #a75c00 @@ -641,7 +641,7 @@ fontStyle italic foreground - #ffaf4d + #a75c00 @@ -652,7 +652,7 @@ settings foreground - #8a69f7 + #754ef6 @@ -663,7 +663,7 @@ settings foreground - #0ad6ff + #007992 @@ -713,7 +713,7 @@ settings foreground - #fb5bb6 + #d5057c @@ -726,7 +726,7 @@ fontStyle underline foreground - #0ad6ff + #007992 @@ -737,7 +737,7 @@ settings foreground - #ffaf4d + #a75c00 @@ -748,7 +748,7 @@ settings foreground - #0ad6ff + #007992 @@ -785,7 +785,7 @@ settings foreground - #fb5bb6 + #d5057c @@ -796,7 +796,7 @@ settings foreground - #0ad6ff + #007992 @@ -807,7 +807,7 @@ settings foreground - #0ad6ff + #007992 @@ -818,7 +818,7 @@ settings foreground - #0ad6ff + #007992 @@ -829,7 +829,7 @@ settings foreground - #0ad6ff + #007992 @@ -840,7 +840,7 @@ settings foreground - #0ad6ff + #007992 @@ -851,7 +851,7 @@ settings foreground - #0ad6ff + #007992 @@ -862,7 +862,7 @@ settings foreground - #fb5bb6 + #d5057c @@ -873,7 +873,7 @@ settings foreground - #ffaf4d + #a75c00 @@ -884,7 +884,7 @@ settings foreground - #8a69f7 + #754ef6 @@ -895,7 +895,7 @@ settings foreground - #0ad6ff + #007992 fontStyle @@ -908,7 +908,7 @@ settings foreground - #8a69f7 + #754ef6 @@ -919,7 +919,7 @@ settings foreground - #ffaf4d + #a75c00 diff --git a/config/.config/yazi/yazi.toml b/config/.config/yazi/yazi.toml index 1d0bbf9e..bda9662b 100644 --- a/config/.config/yazi/yazi.toml +++ b/config/.config/yazi/yazi.toml @@ -14,7 +14,7 @@ group = "git" [[plugin.prepend_previewers]] url = "*.{md,markdown}" -run = 'piper -- mdterm -T dark -w=$w "$1"' +run = 'piper -- mdterm -w=$w "$1"' [[plugin.prepend_previewers]] url = "*/" diff --git a/config/AGENTS.md b/config/AGENTS.md index b0891163..ecd38e96 100644 --- a/config/AGENTS.md +++ b/config/AGENTS.md @@ -14,7 +14,7 @@ Per-app config dirs under `.config/`: bat, borders, btop, fastfetch, gh, gh-chan - `AGENTS.md` files are excluded from stow by `.stow-local-ignore` — they stay repo-only and are never symlinked into `~`. - Never hardcode machine-specific or absolute home paths in app configs. - Add a new app: drop its config under `.config//`, then `just stow config`. -- `theme-switcher/`: `theme-switcher.sh` applies one of 13 themes across terminals, Neovim, bat, btop, starship, lazygit, Claude Code, herdr, gh-dash, and yazi; the fish/zsh `theme` function wraps it. Per-app snippets live in `theme-switcher//.yml`; `current` holds the active name. See `theme-switcher/README.md`. Neovim skips `eldritch-dusk` (plugin has no light palette). Yazi has a flavor for every switcher theme (`tokyonight` → `tokyo-night`) and writes both `dark` and `light`. +- `theme-switcher/`: `theme-switcher.sh` applies one of 13 themes across terminals, Neovim, bat, btop, starship, lazygit, Claude Code, herdr, gh-dash, yazi, and mdterm (`dark`/`light` only); the fish/zsh `theme` function wraps it. Per-app snippets live in `theme-switcher//.yml`; `current` holds the active name. See `theme-switcher/README.md`. Neovim's `eldritch-dusk` is a local colorscheme (`neovim/.config/nvim/colors/eldritch-dusk.lua`) on top of `eldritch.nvim`. Yazi has a flavor for every switcher theme (`tokyonight` → `tokyo-night`) and writes both `dark` and `light`. Eldritch Dusk text colors are darkened per hue (ANSI normal ≥4.5:1, bright ≥3:1); official neon Dusk accents stay for backgrounds/borders only, per upstream SPEC.md. - `karabiner/` is legacy (LeaderKey replaced it); keep it buildable but do not extend it. - `superfile`: `theme/eldritch.toml` and `hotkeys.toml` are tracked (stow symlinks them into superfile's real, app-owned dir). `hotkeys.toml` is the upstream vim preset (vim nav: `-` parent, `enter` confirm, `m` select, `p` paste, `ctrl+c` quit, `q` close-panel). The bundled themes and `config.toml` (mode 600, private) stay untracked; the active-theme line is set live in `~/.config/superfile/config.toml`. - Starship (`starship.toml` + `.config/starship/`): branch display is `${custom.gitbutler}` from vendored [starship-gitbutler](https://github.com/1stvamp/starship-gitbutler) (`gitbutler-branch.sh`, Apache-2.0). Keep `[git_branch]` disabled while that module is active, or `$all` will also print `gitbutler/workspace`. Local patches: `but status --json` (GitButler CLI 0.22 dropped `--format json`); butler glyph/stack names use the active Starship palette's `pink` (`format = "[$output](pink)"`). Keep that if you refresh the script from upstream. ` ↑N` is that applied branch's commit count, not upstream-ahead. ` +N` is extra applied stacks. `` is `upstreamState.behind` when nonzero. `` marks a conflicted applied commit or merge base. Status JSON has no ahead, diverged, or uncommitted-file conflict field. The same segment appends file counts (untracked ``, tracked ``, deleted ``) from `uncommittedChanges` plus stack `assignedChanges`, colored from the active palette. `$git_commit`, `$git_state`, `$git_metrics`, and `$git_status` stay disabled in the main prompt so `$all` cannot print workspace noise; `${custom.git_plain}` renders those four, and `${custom.git_ahead_behind}` restores ahead/behind, only when `.git/gitbutler` is absent. Theme switcher sets `palette =` in `starship.toml`. diff --git a/fish/.config/fish/conf.d/theme_colors.fish b/fish/.config/fish/conf.d/theme_colors.fish index e74e068d..5f1e55a8 100644 --- a/fish/.config/fish/conf.d/theme_colors.fish +++ b/fish/.config/fish/conf.d/theme_colors.fish @@ -20,8 +20,8 @@ if test -r $current_theme_file # Rose Pine Dawn `muted` — canonical "subdued" swatch on the cream base. set --global fish_color_autosuggestion 9893a5 case eldritch-dusk - # Dusk overlay — muted on Pale Shore without disappearing. - set --global fish_color_autosuggestion c9cbcd + # Dusk comment (SPEC secondary text) — overlay #c9cbcd was 1.5:1 on Pale Shore. + set --global fish_color_autosuggestion 5b73dc case catppuccin-latte # Fish highlights package names/arguments as params; keep them bold on Latte # so typed command text has enough contrast on the light background. diff --git a/neovim/.config/nvim/colors/eldritch-dusk.lua b/neovim/.config/nvim/colors/eldritch-dusk.lua new file mode 100644 index 00000000..d07fc9a6 --- /dev/null +++ b/neovim/.config/nvim/colors/eldritch-dusk.lua @@ -0,0 +1,59 @@ +-- Eldritch Dusk (light). eldritch.nvim ships no Dusk palette, so register one. +-- Text accents are the Dusk palette darkened to >= 4.5:1 on #f0f3f4; the +-- official neons are decorative-only on light surfaces (eldritch SPEC.md). +-- Plugin slots map to SPEC Dusk roles: `green` (keywords) -> pink, +-- `yellow` (strings) -> orange, `comment` -> purple. +-- ponytail: rides eldritch.nvim's palette table; drop when upstream ships Dusk. +local util = require("eldritch.util") +local colors = require("eldritch.colors") + +local git = { change = "#5b73dc", add = "#007f42", delete = "#df0514" } + +colors.dusk = { + none = "NONE", + bg_dark = "#e2e6e8", + bg = "#f0f3f4", + bg_highlight = "#e2e6e8", + terminal_black = "#888d91", + fg = "#1e2029", + fg_gutter = "#888d91", + fg_gutter_light = "#888d91", + dark3 = "#5b73dc", + comment = "#754ef6", + dark5 = "#888d91", + bright_cyan = "#0099b7", + visual = "#d5d9db", + bg_visual = "#d5d9db", + cyan = "#007992", + dark_cyan = "#007992", + magenta = "#754ef6", + magenta2 = "#d5057c", + magenta3 = "#f3c6dd", + pink = "#d5057c", + purple = "#754ef6", + orange = "#d37400", + yellow = "#a75c00", + dark_yellow = "#767200", + green = "#d5057c", + bright_green = "#00a153", + dark_green = "#007f42", + red = "#df0514", + bright_red = "#df0514", + git = git, + gitSigns = vim.deepcopy(git), +} + +vim.o.background = "light" +vim.g.colors_name = "eldritch-dusk" +require("eldritch").load({ + palette = "dusk", + -- Persists in eldritch's config across loads, so no-op for other palettes. + on_colors = function(c) + if require("eldritch.config").options.palette ~= "dusk" then + return + end + c.diff.add = util.darken(git.add, 0.15) + c.delta.add = util.darken(git.add, 0.45) + c.todo = c.purple + end, +}) diff --git a/neovim/.config/nvim/lua/plugins/ui/lualine/eldritch.lua b/neovim/.config/nvim/lua/plugins/ui/lualine/eldritch.lua index 177a5331..621fd4fa 100644 --- a/neovim/.config/nvim/lua/plugins/ui/lualine/eldritch.lua +++ b/neovim/.config/nvim/lua/plugins/ui/lualine/eldritch.lua @@ -27,6 +27,21 @@ M.palettes = { -- } -- end, }, + -- Dusk (light): text accents darkened to >= 4.5:1 on Pale Shore. + ["eldritch-dusk"] = { + colors = { + darker = "#E2E6E8", + bg = "#F0F3F4", + darkGray = "#D5D9DB", + fg = "#353746", + gray = "#888D91", + green = "#007F42", + blue = "#007992", + purple = "#754EF6", + red = "#DF0514", + magenta = "#D5057C", + }, + }, } function M.get_colors(variant) diff --git a/neovim/.config/nvim/lua/plugins/ui/lualine/neoed.lua b/neovim/.config/nvim/lua/plugins/ui/lualine/neoed.lua index f4415aca..0de79544 100644 --- a/neovim/.config/nvim/lua/plugins/ui/lualine/neoed.lua +++ b/neovim/.config/nvim/lua/plugins/ui/lualine/neoed.lua @@ -4,7 +4,7 @@ -- matching color palettes from separate palette files. -- -- SUPPORTED COLORSCHEMES: --- - eldritch +-- - eldritch, eldritch-dusk -- - tokyonight -- - rose-pine, rose-pine-moon, rose-pine-dawn -- - catppuccin-latte, catppuccin-frappe, catppuccin-macchiato, catppuccin-mocha @@ -82,7 +82,7 @@ local function get_colors(colorscheme) if colorscheme:match("^rose%-pine") then local rose_pine = require("plugins.ui.lualine.rose-pine") return rose_pine.get_colors(colorscheme) - elseif colorscheme == "eldritch" then + elseif colorscheme == "eldritch" or colorscheme == "eldritch-dusk" then local eldritch = require("plugins.ui.lualine.eldritch") return eldritch.get_colors(colorscheme) elseif colorscheme == "tokyonight" or colorscheme:match("^tokyonight") then From f4309102742fad0941d5bbf7cdc633070ba9b7fe Mon Sep 17 00:00:00 2001 From: Ed Heltzel <402910+edheltzel@users.noreply.github.com> Date: Mon, 12 Oct 2026 09:06:33 -0400 Subject: [PATCH 3/7] fix(nvim): restore fg_dark in Eldritch Dusk palette --- README.md | 21 +++---- config/.config/bat/config | 2 +- config/.config/btop/btop.conf | 2 +- config/.config/gh-dash/config.yml | 22 ++++---- config/.config/ghostty/config | 4 +- config/.config/kitty/kitty.conf | 2 +- config/.config/lazygit/config.yml | 16 +++--- config/.config/leaderkey/config.json | 56 +++++++++---------- config/.config/mdterm/config.toml | 2 +- config/.config/superfile/config.toml | 2 +- config/.config/theme-switcher/current | 2 +- config/.config/yazi/package.toml | 4 +- config/.config/yazi/theme.toml | 4 +- neovim/.config/nvim/colors/eldritch-dusk.lua | 1 + .../nvim/lua/plugins/ui/colorscheme.lua | 2 +- 15 files changed, 69 insertions(+), 73 deletions(-) diff --git a/README.md b/README.md index e9e15dc3..adaecb19 100755 --- a/README.md +++ b/README.md @@ -9,12 +9,9 @@ # E.Dots -> [!NOTE] -> EdHeltzel's Dotfiles - -### My personal setup for 🐠 Fish shell on macOS - `v3` +### My personal setup for 🐠 Fish shell on macOS - `v3` -Hey there 👋, I'm EdHeltzel and you've found my dotfiles setup for working with [fish shell](https://fishshell.com/) on macOS, managed with [GNU Stow](https://www.gnu.org/software/stow/). You'll also find the scripts I use to provision a new machine. [Neovim](https://neovim.io/) (via [NEO.ED](https://github.com/edheltzel/neoed)), [WezTerm](https://wezterm.org), [Herdr](https://herdr.dev/), and [Oh-My-Pi](https://omp.sh/) make up my ADE (AI/Agent Development Environment). The Zed config is kept for occasional use and is not part of the regular workflow. +Hey there 👋, I'm EdHeltzel and you've found my dotfiles setup for working with [fish shell](https://fishshell.com/) on macOS, managed with [GNU Stow](https://www.gnu.org/software/stow/). You'll also find the scripts I use to provision a new machine. [Neovim](https://neovim.io/) (via [NEO.ED](https://github.com/edheltzel/neoed)), [Term](https://wezterm.org), [Herdr](https://herdr.dev/), and [Oh-My-Pi](https://omp.sh/) make up my ADE (AI/Agent Development Environment). The Zed config is kept for occasional use and is not part of the regular workflow. > [!WARNING] > This is my personal setup and **changes often**. Don't blindly fork and run `install.sh` without reading it first. The script uses subcommands - see `./install.sh help`. @@ -24,13 +21,13 @@ But get **inspired**, take what you want, and leave the rest to make it your own - [NEO.ED - Neovim Config](https://github.com/edheltzel/neoed) - [E.Defy - Dygma Defy keyboard](https://github.com/edheltzel/DygmaDefy) -| Screenshots | Screenshots | -| --- | --- | -| ![1-aerospace+sketchbar](./local/.local/__repoImages/2026/1-aerospace+sketchbar.png) | ![2-bat](./local/.local/__repoImages/2026/2-bat.png) | -| ![3-btop](./local/.local/__repoImages/2026/3-btop.png) | ![4-fastfetch-fish](./local/.local/__repoImages/2026/4-fastfetch-fish.png) | -| ![5-lazygit](./local/.local/__repoImages/2026/5-lazygit.png) | ![6-nvim-neoed-picker](./local/.local/__repoImages/2026/6-nvim-neoed-picker.jpeg) | -| ![7-nvim-neoed-dash](./local/.local/__repoImages/2026/7-nvim-neoed-dash.png) | ![8-theme-switcher](./local/.local/__repoImages/2026/8-theme-switcher.png) | -| ![9-vscode](./local/.local/__repoImages/2026/9-vscode.png) | ![10-yazi](./local/.local/__repoImages/2026/10-yazi.png) | +| Screenshots | Screenshots | +| ------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------- | +| ![1-aerospace+sketchbar](./local/.local/__repoImages/2026/1-aerospace+sketchbar.png) | ![2-bat](./local/.local/__repoImages/2026/2-bat.png) | +| ![3-btop](./local/.local/__repoImages/2026/3-btop.png) | ![4-fastfetch-fish](./local/.local/__repoImages/2026/4-fastfetch-fish.png) | +| ![5-lazygit](./local/.local/__repoImages/2026/5-lazygit.png) | ![6-nvim-neoed-picker](./local/.local/__repoImages/2026/6-nvim-neoed-picker.jpeg) | +| ![7-nvim-neoed-dash](./local/.local/__repoImages/2026/7-nvim-neoed-dash.png) | ![8-theme-switcher](./local/.local/__repoImages/2026/8-theme-switcher.png) | +| ![9-vscode](./local/.local/__repoImages/2026/9-vscode.png) | ![10-yazi](./local/.local/__repoImages/2026/10-yazi.png) |
Different Versions diff --git a/config/.config/bat/config b/config/.config/bat/config index 797107e8..32d297b7 100644 --- a/config/.config/bat/config +++ b/config/.config/bat/config @@ -5,7 +5,7 @@ # Specify desired highlighting theme (e.g. "TwoDark"). Run `bat --list-themes` # for a list of all available themes # Dark theme ---theme="eldritch" +--theme="eldritch-dusk" # Enable this to use italic text on the terminal. This is not supported on all # terminal emulators (like tmux, by default): diff --git a/config/.config/btop/btop.conf b/config/.config/btop/btop.conf index aa1ab595..16de998d 100644 --- a/config/.config/btop/btop.conf +++ b/config/.config/btop/btop.conf @@ -2,7 +2,7 @@ #* Name of a btop++/bpytop/bashtop formatted ".theme" file, "Default" and "TTY" for builtin themes. #* Themes should be placed in "../share/btop/themes" relative to binary or "$HOME/.config/btop/themes" -color_theme = "eldritch" +color_theme = "eldritch-dusk" #* If the theme set background should be shown, set to False if you want terminal background transparency. theme_background = true diff --git a/config/.config/gh-dash/config.yml b/config/.config/gh-dash/config.yml index ac9b5b4f..12f8745f 100644 --- a/config/.config/gh-dash/config.yml +++ b/config/.config/gh-dash/config.yml @@ -96,19 +96,19 @@ keybindings: theme: colors: text: - primary: "#ebfafa" - secondary: "#a48cf2" - inverted: "#212337" - faint: "#7081d0" - warning: "#e9f941" - success: "#37f499" - error: "#f9515d" + primary: "#1e2029" + secondary: "#754ef6" + inverted: "#f0f3f4" + faint: "#5b73dc" + warning: "#a75c00" + success: "#007f42" + error: "#df0514" background: - selected: "#2a2c48" + selected: "#e2e6e8" border: - primary: "#a48cf2" - secondary: "#7081d0" - faint: "#2a2c48" + primary: "#8a69f7" + secondary: "#5b73dc" + faint: "#e2e6e8" ui: sectionsShowCount: true table: diff --git a/config/.config/ghostty/config b/config/.config/ghostty/config index 00e6b34a..7895ed8d 100644 --- a/config/.config/ghostty/config +++ b/config/.config/ghostty/config @@ -3,7 +3,7 @@ confirm-close-surface = false shell-integration-features = true alpha-blending = linear-corrected -#theme = Dracula +#theme = Rose Pine Dawn cursor-style = block term = xterm-256color unfocused-split-fill = "black" @@ -94,4 +94,4 @@ keybind = super+ctrl+r=text:\x12 keybind = super+ctrl+p=text:\x1b\x10 # variables keybind = super+ctrl+v=text:\x16 -config-file = "themes/eldritch" +config-file = "themes/eldritch-dusk" diff --git a/config/.config/kitty/kitty.conf b/config/.config/kitty/kitty.conf index c0f255e6..1eda4595 100644 --- a/config/.config/kitty/kitty.conf +++ b/config/.config/kitty/kitty.conf @@ -42,6 +42,6 @@ tab_bar_filter session:~ or session:^$ inactive_text_alpha 0.35 background_opacity 1.0 background_blur 25 -include ./themes/eldritch-neoed.conf +include ./themes/eldritch-dusk.conf #: include ./themes/rose-pine-moon.conf #: END_KITTY_THEME diff --git a/config/.config/lazygit/config.yml b/config/.config/lazygit/config.yml index f6237433..773c4d5c 100644 --- a/config/.config/lazygit/config.yml +++ b/config/.config/lazygit/config.yml @@ -7,28 +7,28 @@ git: gui: theme: activeBorderColor: - - "#37f499" + - "#38ff9f" - bold inactiveBorderColor: - - "#747BA2" + - "#c9cbcd" searchingActiveBorderColor: - - "#f265b5" + - "#fb5bb6" - bold optionsTextColor: - blue selectedLineBgColor: - - "#323449" + - "#e2e6e8" inactiveViewSelectedLineBgColor: - bold cherryPickedCommitFgColor: - - "#a48cf2" + - "#f0f3f4" cherryPickedCommitBgColor: - cyan markedBaseCommitFgColor: - blue markedBaseCommitBgColor: - - "#f1fc79" + - "#fff952" unstagedChangesColor: - - "#f16c75" + - "#df0514" defaultFgColor: - - "#ebfafa" + - "#1e2029" diff --git a/config/.config/leaderkey/config.json b/config/.config/leaderkey/config.json index 21415293..3bc28253 100644 --- a/config/.config/leaderkey/config.json +++ b/config/.config/leaderkey/config.json @@ -13,15 +13,36 @@ "value" : "/System/Applications/Passwords.app" }, { - "key" : "a", + "key" : "1", "type" : "application", - "value" : "/Applications/Affinity.app" + "value" : "/Applications/Bitwarden.app" }, { - "key" : "G", - "label" : "♭♭", - "type" : "application", - "value" : "/Applications/GIMP.app" + "actions" : [ + { + "key" : "i", + "type" : "application", + "value" : "/Applications/Inkscape.app" + }, + { + "key" : "G", + "label" : "♭♭", + "type" : "application", + "value" : "/Applications/GIMP.app" + }, + { + "key" : "f", + "type" : "application", + "value" : "/Applications/Figma.app" + }, + { + "key" : "a", + "type" : "application", + "value" : "/Applications/Affinity.app" + } + ], + "key" : "D", + "type" : "group" }, { "iconPath" : "/Applications/Cursor.app", @@ -30,34 +51,11 @@ "type" : "application", "value" : "/Applications/Cursor.app" }, - { - "key" : "v", - "label" : "Claude Desktop", - "type" : "application", - "value" : "/Applications/Claude.app" - }, - { - "key" : "f", - "type" : "application", - "value" : "/Applications/Figma.app" - }, - { - "iconPath" : "/Applications/Grok Bot.app", - "key" : "g", - "label" : "Grok Bot", - "type" : "application", - "value" : "/Applications/Grok Bot.app" - }, { "key" : "I", "type" : "application", "value" : "/Applications/Invoice Ninja.app" }, - { - "key" : "i", - "type" : "application", - "value" : "/Applications/Inkscape.app" - }, { "key" : "k", "label" : "Markdown Preview", diff --git a/config/.config/mdterm/config.toml b/config/.config/mdterm/config.toml index 0dbad19f..829c6312 100644 --- a/config/.config/mdterm/config.toml +++ b/config/.config/mdterm/config.toml @@ -1,3 +1,3 @@ -theme = "dark" # "dark" or "light" +theme = "light" # "dark" or "light" line_numbers = false # show line numbers in code blocks width = 0 # display width (0 = auto) diff --git a/config/.config/superfile/config.toml b/config/.config/superfile/config.toml index 2932e6ea..031b7977 100644 --- a/config/.config/superfile/config.toml +++ b/config/.config/superfile/config.toml @@ -94,7 +94,7 @@ file_panel_name_percent = 50 #-- Theme # Put your theme's name here! -theme = "eldritch" +theme = "eldritch-dusk" #-- Code Previewer # Whether to use the builtin syntax highlighting with chroma or use bat. Values: "" for builtin chroma, "bat" for bat diff --git a/config/.config/theme-switcher/current b/config/.config/theme-switcher/current index 94981301..ad05eeca 100644 --- a/config/.config/theme-switcher/current +++ b/config/.config/theme-switcher/current @@ -1 +1 @@ -eldritch +eldritch-dusk diff --git a/config/.config/yazi/package.toml b/config/.config/yazi/package.toml index 152f7b89..d43a37db 100644 --- a/config/.config/yazi/package.toml +++ b/config/.config/yazi/package.toml @@ -10,12 +10,12 @@ hash = "c2f4f4aca257dcceafa9e3b828dbf1c9" [[plugin.deps]] use = "yazi-rs/plugins:vcs-files" -rev = "6229767" +rev = "603fa36" hash = "4f2a05edce73aef2bceb2ee2c134c8f2" [[plugin.deps]] use = "yazi-rs/plugins:piper" -rev = "6229767" +rev = "603fa36" hash = "d1e0499cae5f3aeb628c267616d4b682" [[plugin.deps]] diff --git a/config/.config/yazi/theme.toml b/config/.config/yazi/theme.toml index 3937849f..af69fc1b 100644 --- a/config/.config/yazi/theme.toml +++ b/config/.config/yazi/theme.toml @@ -2,5 +2,5 @@ # Switcher owns both slots so a light theme still applies when the terminal reports dark. [flavor] -dark = "eldritch" -light = "eldritch" +dark = "eldritch-dusk" +light = "eldritch-dusk" diff --git a/neovim/.config/nvim/colors/eldritch-dusk.lua b/neovim/.config/nvim/colors/eldritch-dusk.lua index d07fc9a6..a8ed8ceb 100644 --- a/neovim/.config/nvim/colors/eldritch-dusk.lua +++ b/neovim/.config/nvim/colors/eldritch-dusk.lua @@ -16,6 +16,7 @@ colors.dusk = { bg_highlight = "#e2e6e8", terminal_black = "#888d91", fg = "#1e2029", + fg_dark = "#353746", fg_gutter = "#888d91", fg_gutter_light = "#888d91", dark3 = "#5b73dc", diff --git a/neovim/.config/nvim/lua/plugins/ui/colorscheme.lua b/neovim/.config/nvim/lua/plugins/ui/colorscheme.lua index ee2f4c2a..7aaa0512 100644 --- a/neovim/.config/nvim/lua/plugins/ui/colorscheme.lua +++ b/neovim/.config/nvim/lua/plugins/ui/colorscheme.lua @@ -102,7 +102,7 @@ return { { "LazyVim/LazyVim", opts = { - colorscheme = "eldritch", + colorscheme = "eldritch-dusk", }, }, } From a77a23ab41d3e1728fa82f10081e8e88c5e7c582 Mon Sep 17 00:00:00 2001 From: Ed Heltzel <402910+edheltzel@users.noreply.github.com> Date: Mon, 12 Oct 2026 09:48:11 -0400 Subject: [PATCH 4/7] neovim includes better Eldritch Dusk and also include no-mistakes to dotfiles --- .gitignore | 4 ++ dots/.no-mistakes/config.yaml | 107 ++++++++++++++++++++++++++++++++++ dots/AGENTS.md | 3 +- install.sh | 2 + justfile | 1 + 5 files changed, 116 insertions(+), 1 deletion(-) create mode 100644 dots/.no-mistakes/config.yaml diff --git a/.gitignore b/.gitignore index 9fd1b08b..d4773801 100644 --- a/.gitignore +++ b/.gitignore @@ -70,3 +70,7 @@ banks/ ### Merge backups ### *.orig .empryo + +### no-mistakes (config only; runtime state stays in ~/.no-mistakes) ### +dots/.no-mistakes/* +!dots/.no-mistakes/config.yaml diff --git a/dots/.no-mistakes/config.yaml b/dots/.no-mistakes/config.yaml new file mode 100644 index 00000000..c19deeac --- /dev/null +++ b/dots/.no-mistakes/config.yaml @@ -0,0 +1,107 @@ +# no-mistakes global configuration + +# Agent to use for code generation. This may also be an ordered fallback list, +# for example: agent: [codex, claude] +# Options: auto, claude, codex, rovodev, opencode, pi, copilot, acp: +# "auto" detects the first available native agent on your system +# Use acp: to run an optional user-installed acpx target, for example acp:gemini +agent: [codex, claude] + +# Per-identity GitHub routing. Recall's origin uses the github-atlas SSH alias so +# its PRs are opened as Atlas-Key; every other github.com repo keeps edheltzel. +forge_profiles: + github-atlas: + gh_config_dir: ~/.config/gh-atlas-key + expected_login: Atlas-Key + github.com: + gh_config_dir: ~/.config/gh + expected_login: edheltzel + +# Optional path to the user-installed acpx binary for acp: agents +# acpx_path: acpx + +# Optional ACP target command overrides for acp: agents +# acp_registry_overrides: +# local-gemini: node /opt/mock-acp-agent.mjs + +# Maximum time the CI monitor babysits an open PR with no base-branch movement +# before giving up. The monitor watches CI and auto-rebases when the base branch +# advances; each base advance re-arms this timer, so an actively-updated green PR +# keeps its monitor. Set to "unlimited", "none", "off", "never", or any +# non-positive duration to monitor until the PR is merged, closed, or the run is +# aborted with: no-mistakes axi abort --run +ci_timeout: "168h" + +# AXI status marks a running/fixing step as quiet when no step log or native +# agent lifecycle activity has appeared for this long. This is observability +# only; it never cancels work. +step_quiet_warning: "10m" + +# Maximum time a CLI client waits for an existing daemon socket to accept a +# connection before failing instead of hanging. +daemon_connect_timeout: "3s" + +# Reuse one durable agent session per run for the review loop: the reviewer +# keeps a single session across the initial review and every full rereview, +# and review fixes keep a separate fixer session. Roles never share a session. +# Supported for claude and codex; other agents run cold. Set false to force +# every agent invocation cold. +session_reuse: true + +# Log level for daemon output +# Options: debug, info, warn, error +log_level: info + +# Override native agent binary paths (optional) +# agent_path_override: +# claude: /usr/local/bin/claude +# codex: /opt/codex + +# Extra native agent CLI flags (optional, global only) +# Codex service_tier controls speed/priority; model_reasoning_effort controls reasoning depth. +# agent_args_override: +# codex: +# - -m +# - gpt-5.4 +# - -c +# - service_tier="priority" +# - -c +# - model_reasoning_effort="low" +# +agent_args_override: + codex: + - -m + - gpt-6.1-sol + - -c + - model_reasoning_effort="xhigh" + +# Maximum follow-up auto-fix attempts per step (0 = disabled after the initial pass) +# Document fixes are attempted during the initial document pass. +auto_fix: + rebase: 3 + lint: 3 + test: 3 + review: 0 + document: 3 + ci: 3 + +# User-intent extraction. When you push a branch, no-mistakes can read recent +# transcripts from your local agent (Claude Code, Codex, OpenCode, Rovo Dev, Pi, +# Copilot CLI), pick the session that produced the change, summarize the user +# intent, and feed it to review, test, document, lint, and PR agents so they +# understand what you were trying to do - not just the diff. +intent: + enabled: true + threshold: 0.2 + slack_days: 3 + # disabled_readers: [codex] + + # Test-step evidence artifacts (screenshots, recordings, logs the test step + # gathers to demonstrate the change works). By default they are kept in a + # temporary directory and referenced by local path. Opt in to store_in_repo to + # commit them into the repo under a readable, branch-named directory so they are + # pushed and render directly on the PR. + # test: + # evidence: + # store_in_repo: true + # dir: .no-mistakes/evidence diff --git a/dots/AGENTS.md b/dots/AGENTS.md index a7724809..55a725aa 100644 --- a/dots/AGENTS.md +++ b/dots/AGENTS.md @@ -6,12 +6,13 @@ Loose top-level dotfiles that live directly in `~`. Maps `dots/*` → `~`. ## Ownership -Tool rc/config files: `.npmrc`, `.curlrc`, `.wgetrc`, `.tmux.conf`, `.tigrc`, `.ackrc`, `.biome.json`, `.gemrc`, `.gitnow`, `.hushlogin`, `.maccleanerrc`, `.profile`, `.warp/`, and similar. Owns `dots/.stow-global-ignore`, which is symlinked to `~/.stow-global-ignore` and used by stow packages that have no local ignore. +Tool rc/config files: `.npmrc`, `.curlrc`, `.wgetrc`, `.tmux.conf`, `.tigrc`, `.ackrc`, `.biome.json`, `.gemrc`, `.gitnow`, `.hushlogin`, `.maccleanerrc`, `.no-mistakes/config.yaml`, `.profile`, `.warp/`, and similar. Owns `dots/.stow-global-ignore`, which is symlinked to `~/.stow-global-ignore` and used by stow packages that have no local ignore. ## Local Contracts - Files map straight into `~`; keep this package to genuinely home-rooted dotfiles. - `AGENTS.md` is excluded from stow via `.stow-global-ignore` (the shared global ignore). +- `.no-mistakes/` tracks only `config.yaml`; `install.sh` and `just update` pre-create `~/.no-mistakes` so stow never folds the runtime dir (repos, sqlite, logs) into this repo. ## Work Guidance diff --git a/install.sh b/install.sh index dd7b2949..c223e9bc 100755 --- a/install.sh +++ b/install.sh @@ -106,6 +106,8 @@ die() { _run_stow() { local mode="$1" shift + # Pre-create runtime dirs so stow links files inside, not the whole dir + mkdir -p "$HOME/.no-mistakes" info "Linking dotfiles with GNU Stow..." for pkg in "$@"; do if [ ! -d "$SCRIPT_DIR/$pkg" ]; then diff --git a/justfile b/justfile index 76c70d43..dd1fc820 100644 --- a/justfile +++ b/justfile @@ -54,6 +54,7 @@ unstow pkg: # Restow all dotfiles packages update: + @mkdir -p ~/.no-mistakes @for pkg in {{stow_packages}}; do \ if [ "$pkg" = "fish" ]; then \ rm -f ~/.config/fish/conf.d/brew.fish ~/.config/fish/conf.d/fish-ssh-agent.fish; \ From 649ecb109846ccf2feec9fae02c715f4e6baf21e Mon Sep 17 00:00:00 2001 From: Ed Heltzel <402910+edheltzel@users.noreply.github.com> Date: Tue, 13 Oct 2026 08:35:13 -0400 Subject: [PATCH 5/7] misc change --- config/.config/borders/bordersrc | 2 +- config/.config/flashspace/settings.json | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/config/.config/borders/bordersrc b/config/.config/borders/bordersrc index 5c2bd41e..253b6742 100755 --- a/config/.config/borders/bordersrc +++ b/config/.config/borders/bordersrc @@ -13,7 +13,7 @@ # 0xfff1fc79 = #f1fc79 # 0xffbd93f9 = #bd93f9 # 0xffE50A69 = #E50A69 - +# 0xff7200F3 = #7200F3 options=( style=round width=5.0 diff --git a/config/.config/flashspace/settings.json b/config/.config/flashspace/settings.json index 73b12019..09fc4724 100644 --- a/config/.config/flashspace/settings.json +++ b/config/.config/flashspace/settings.json @@ -44,8 +44,8 @@ ], "focusFrontmostWindow" : false, "focusNextWorkspaceApp" : "ctrl+opt+shift+a", - "focusNextWorkspaceWindow" : "ctrl+opt+shift+]", - "focusPreviousWorkspaceWindow" : "ctrl+opt+shift+[", + "focusNextWorkspaceWindow" : "cmd+ctrl+]", + "focusPreviousWorkspaceWindow" : "cmd+ctrl+[", "keepUnassignedAppsOnSwitch" : false, "loopWorkspaces" : true, "loopWorkspacesOnAllDisplays" : false, From d2b904b7957bb04abfd39896a5b7889eb9c8421f Mon Sep 17 00:00:00 2001 From: Ed Heltzel <402910+edheltzel@users.noreply.github.com> Date: Tue, 13 Oct 2026 10:57:53 -0400 Subject: [PATCH 6/7] theme switcher testing and update --- config/.config/bat/config | 2 +- config/.config/btop/btop.conf | 2 +- config/.config/flashspace/profiles.json | 5 + config/.config/gh-dash/config.yml | 22 +- config/.config/ghostty/config | 2 +- config/.config/herdr/config.toml | 2 +- .../config/vjeantet.palette/config.toml | 6 + config/.config/kitty/kitty.conf | 2 +- config/.config/lazygit/config.yml | 25 +- config/.config/starship.toml | 2 +- config/.config/superfile/config.toml | 2 +- config/.config/theme-switcher/current | 2 +- config/.config/wezterm/theme.lua | 2 +- config/.config/yazi/theme.toml | 4 +- fish/.config/fish/completions/cf.fish | 233 ++++++++++++++++++ .../nvim/lua/plugins/ui/colorscheme.lua | 2 +- 16 files changed, 279 insertions(+), 36 deletions(-) create mode 100644 fish/.config/fish/completions/cf.fish diff --git a/config/.config/bat/config b/config/.config/bat/config index 32d297b7..206d1da2 100644 --- a/config/.config/bat/config +++ b/config/.config/bat/config @@ -5,7 +5,7 @@ # Specify desired highlighting theme (e.g. "TwoDark"). Run `bat --list-themes` # for a list of all available themes # Dark theme ---theme="eldritch-dusk" +--theme="Catppuccin Latte" # Enable this to use italic text on the terminal. This is not supported on all # terminal emulators (like tmux, by default): diff --git a/config/.config/btop/btop.conf b/config/.config/btop/btop.conf index 16de998d..3fd45428 100644 --- a/config/.config/btop/btop.conf +++ b/config/.config/btop/btop.conf @@ -2,7 +2,7 @@ #* Name of a btop++/bpytop/bashtop formatted ".theme" file, "Default" and "TTY" for builtin themes. #* Themes should be placed in "../share/btop/themes" relative to binary or "$HOME/.config/btop/themes" -color_theme = "eldritch-dusk" +color_theme = "catppuccin-latte" #* If the theme set background should be shown, set to False if you want terminal background transparency. theme_background = true diff --git a/config/.config/flashspace/profiles.json b/config/.config/flashspace/profiles.json index e2a4c3e0..6b69f973 100644 --- a/config/.config/flashspace/profiles.json +++ b/config/.config/flashspace/profiles.json @@ -255,6 +255,11 @@ "bundleIdentifier" : "com.apple.AddressBook", "iconPath" : "/System/Applications/Contacts.app/Contents/Resources/Contacts.icns", "name" : "Contacts" + }, + { + "bundleIdentifier" : "com.clickup.desktop-app", + "iconPath" : "/Applications/ClickUp.app/Contents/Resources/icon.icns", + "name" : "ClickUp" } ], "display" : "PA278QV", diff --git a/config/.config/gh-dash/config.yml b/config/.config/gh-dash/config.yml index 12f8745f..ec3756b5 100644 --- a/config/.config/gh-dash/config.yml +++ b/config/.config/gh-dash/config.yml @@ -96,19 +96,19 @@ keybindings: theme: colors: text: - primary: "#1e2029" - secondary: "#754ef6" - inverted: "#f0f3f4" - faint: "#5b73dc" - warning: "#a75c00" - success: "#007f42" - error: "#df0514" + primary: "#4c4f69" + secondary: "#8839ef" + inverted: "#eff1f5" + faint: "#8c8fa1" + warning: "#df8e1d" + success: "#40a02b" + error: "#d20f39" background: - selected: "#e2e6e8" + selected: "#ccd0da" border: - primary: "#8a69f7" - secondary: "#5b73dc" - faint: "#e2e6e8" + primary: "#8839ef" + secondary: "#8c8fa1" + faint: "#dce0e8" ui: sectionsShowCount: true table: diff --git a/config/.config/ghostty/config b/config/.config/ghostty/config index 7895ed8d..14b6110a 100644 --- a/config/.config/ghostty/config +++ b/config/.config/ghostty/config @@ -94,4 +94,4 @@ keybind = super+ctrl+r=text:\x12 keybind = super+ctrl+p=text:\x1b\x10 # variables keybind = super+ctrl+v=text:\x16 -config-file = "themes/eldritch-dusk" +config-file = "themes/catppuccin-latte" diff --git a/config/.config/herdr/config.toml b/config/.config/herdr/config.toml index 1361f50c..283ff25c 100644 --- a/config/.config/herdr/config.toml +++ b/config/.config/herdr/config.toml @@ -69,7 +69,7 @@ delivery = "herdr" position = "top-right" [theme] -name = "terminal" +name = "catppuccin-latte" auto_switch = false ### keybindings ### diff --git a/config/.config/herdr/plugins/config/vjeantet.palette/config.toml b/config/.config/herdr/plugins/config/vjeantet.palette/config.toml index 9e05f998..85fef82e 100644 --- a/config/.config/herdr/plugins/config/vjeantet.palette/config.toml +++ b/config/.config/herdr/plugins/config/vjeantet.palette/config.toml @@ -46,6 +46,12 @@ title = "GH Project Board" argv = ["gh", "board", "--owner", "edheltzel"] placement = "split" +[[command]] +id = "theme" +title = "Theme Switcher" +argv = ["fish", "-c", "theme"] # fish function wraps theme-switcher.sh; no $HOME expansion in argv +placement = "split" + [[command]] id = "edit" title = "Edit a file" diff --git a/config/.config/kitty/kitty.conf b/config/.config/kitty/kitty.conf index 1eda4595..5a50495d 100644 --- a/config/.config/kitty/kitty.conf +++ b/config/.config/kitty/kitty.conf @@ -42,6 +42,6 @@ tab_bar_filter session:~ or session:^$ inactive_text_alpha 0.35 background_opacity 1.0 background_blur 25 -include ./themes/eldritch-dusk.conf +include ./themes/catppuccin-latte.conf #: include ./themes/rose-pine-moon.conf #: END_KITTY_THEME diff --git a/config/.config/lazygit/config.yml b/config/.config/lazygit/config.yml index 773c4d5c..748236b5 100644 --- a/config/.config/lazygit/config.yml +++ b/config/.config/lazygit/config.yml @@ -7,28 +7,27 @@ git: gui: theme: activeBorderColor: - - "#38ff9f" + - "#1e66f5" - bold inactiveBorderColor: - - "#c9cbcd" + - "#6c6f85" searchingActiveBorderColor: - - "#fb5bb6" - - bold + - "#df8e1d" optionsTextColor: - - blue + - "#1e66f5" selectedLineBgColor: - - "#e2e6e8" + - "#ccd0da" inactiveViewSelectedLineBgColor: - - bold + - "#9ca0b0" cherryPickedCommitFgColor: - - "#f0f3f4" + - "#1e66f5" cherryPickedCommitBgColor: - - cyan + - "#bcc0cc" markedBaseCommitFgColor: - - blue + - "#1e66f5" markedBaseCommitBgColor: - - "#fff952" + - "#df8e1d" unstagedChangesColor: - - "#df0514" + - "#d20f39" defaultFgColor: - - "#1e2029" + - "#4c4f69" diff --git a/config/.config/starship.toml b/config/.config/starship.toml index f32809ba..a0fa0aa8 100644 --- a/config/.config/starship.toml +++ b/config/.config/starship.toml @@ -25,7 +25,7 @@ command_timeout = 500 scan_timeout = 100 # Set by theme-switcher. Names match theme-switcher/current. -palette = "eldritch-dusk" +palette = "catppuccin-latte" [battery] disabled = true diff --git a/config/.config/superfile/config.toml b/config/.config/superfile/config.toml index 031b7977..2f1bd191 100644 --- a/config/.config/superfile/config.toml +++ b/config/.config/superfile/config.toml @@ -94,7 +94,7 @@ file_panel_name_percent = 50 #-- Theme # Put your theme's name here! -theme = "eldritch-dusk" +theme = "catppuccin-latte" #-- Code Previewer # Whether to use the builtin syntax highlighting with chroma or use bat. Values: "" for builtin chroma, "bat" for bat diff --git a/config/.config/theme-switcher/current b/config/.config/theme-switcher/current index ad05eeca..365670c7 100644 --- a/config/.config/theme-switcher/current +++ b/config/.config/theme-switcher/current @@ -1 +1 @@ -eldritch-dusk +catppuccin-latte diff --git a/config/.config/wezterm/theme.lua b/config/.config/wezterm/theme.lua index 0d6ab221..bb6b12d9 100644 --- a/config/.config/wezterm/theme.lua +++ b/config/.config/wezterm/theme.lua @@ -10,7 +10,7 @@ function M.basename(s) end -- Theme selection: set by theme-switcher, must match a WezTerm color_scheme name -M.name = "Eldritch Dusk" +M.name = "Catppuccin Latte" -- Theme data lookup table (colors + tab_bar per theme) local themes = { diff --git a/config/.config/yazi/theme.toml b/config/.config/yazi/theme.toml index af69fc1b..94c98b86 100644 --- a/config/.config/yazi/theme.toml +++ b/config/.config/yazi/theme.toml @@ -2,5 +2,5 @@ # Switcher owns both slots so a light theme still applies when the terminal reports dark. [flavor] -dark = "eldritch-dusk" -light = "eldritch-dusk" +dark = "catppuccin-latte" +light = "catppuccin-latte" diff --git a/fish/.config/fish/completions/cf.fish b/fish/.config/fish/completions/cf.fish new file mode 100644 index 00000000..688d21d5 --- /dev/null +++ b/fish/.config/fish/completions/cf.fish @@ -0,0 +1,233 @@ +# fish completion for cf -*- shell-script -*- + +function __cf_debug + set -l file "$BASH_COMP_DEBUG_FILE" + if test -n "$file" + echo "$argv" >> $file + end +end + +function __cf_perform_completion + __cf_debug "Starting __cf_perform_completion" + + # Extract all args except the last one + set -l args (commandline -opc) + # Extract the token currently being completed (may be empty on a trailing space) + set -l lastArg (commandline -ct) + + __cf_debug "args: $args" + __cf_debug "last arg: $lastArg" + + # Pass each arg as its own token (no string join/eval, which would collapse multi-segment paths); quote "$lastArg" so an empty trailing token is still sent. + __cf_debug "Calling cf complete -- $args[2..-1] $lastArg" + set -l results (cf complete -- $args[2..-1] "$lastArg" 2> /dev/null) + + # Some programs may output extra empty lines after the directive. + # Let's ignore them or else it will break completion. + # Ref: https://github.com/spf13/cobra/issues/1279 + for line in $results[-1..1] + if test (string trim -- $line) = "" + # Found an empty line, remove it + set results $results[1..-2] + else + # Found non-empty line, we have our proper output + break + end + end + + set -l comps $results[1..-2] + set -l directiveLine $results[-1] + + # For Fish, when completing a flag with an = (e.g., -n=) + # completions must be prefixed with the flag + set -l flagPrefix (string match -r -- '-.*=' "$lastArg") + + __cf_debug "Comps: $comps" + __cf_debug "DirectiveLine: $directiveLine" + __cf_debug "flagPrefix: $flagPrefix" + + for comp in $comps + printf "%s%s\n" "$flagPrefix" "$comp" + end + + printf "%s\n" "$directiveLine" +end + +# This function limits calls to __cf_perform_completion, by caching the result +function __cf_perform_completion_once + __cf_debug "Starting __cf_perform_completion_once" + + if test -n "$__cf_perform_completion_once_result" + __cf_debug "Seems like a valid result already exists, skipping __cf_perform_completion" + return 0 + end + + set --global __cf_perform_completion_once_result (__cf_perform_completion) + if test -z "$__cf_perform_completion_once_result" + __cf_debug "No completions, probably due to a failure" + return 1 + end + + __cf_debug "Performed completions and set __cf_perform_completion_once_result" + return 0 +end + +# This function is used to clear the cached result after completions are run +function __cf_clear_perform_completion_once_result + __cf_debug "" + __cf_debug "========= clearing previously set __cf_perform_completion_once_result variable ==========" + set --erase __cf_perform_completion_once_result + __cf_debug "Successfully erased the variable __cf_perform_completion_once_result" +end + +function __cf_requires_order_preservation + __cf_debug "" + __cf_debug "========= checking if order preservation is required ==========" + + __cf_perform_completion_once + if test -z "$__cf_perform_completion_once_result" + __cf_debug "Error determining if order preservation is required" + return 1 + end + + set -l directive (string sub --start 2 $__cf_perform_completion_once_result[-1]) + __cf_debug "Directive is: $directive" + + set -l shellCompDirectiveKeepOrder 32 + set -l keeporder (math (math --scale 0 $directive / $shellCompDirectiveKeepOrder) % 2) + __cf_debug "Keeporder is: $keeporder" + + if test $keeporder -ne 0 + __cf_debug "This does require order preservation" + return 0 + end + + __cf_debug "This doesn't require order preservation" + return 1 +end + +# This function does two things: +# - Obtain the completions and store them in the global __cf_comp_results +# - Return false if file completion should be performed +function __cf_prepare_completions + __cf_debug "" + __cf_debug "========= starting completion logic ==========" + + # Start fresh + set --erase __cf_comp_results + + __cf_perform_completion_once + __cf_debug "Completion results: $__cf_perform_completion_once_result" + + if test -z "$__cf_perform_completion_once_result" + __cf_debug "No completion, probably due to a failure" + # Might as well do file completion, in case it helps + return 1 + end + + set -l directive (string sub --start 2 $__cf_perform_completion_once_result[-1]) + set --global __cf_comp_results $__cf_perform_completion_once_result[1..-2] + + __cf_debug "Completions are: $__cf_comp_results" + __cf_debug "Directive is: $directive" + + set -l shellCompDirectiveError 1 + set -l shellCompDirectiveNoSpace 2 + set -l shellCompDirectiveNoFileComp 4 + set -l shellCompDirectiveFilterFileExt 8 + set -l shellCompDirectiveFilterDirs 16 + + if test -z "$directive" + set directive 0 + end + + set -l compErr (math (math --scale 0 $directive / $shellCompDirectiveError) % 2) + if test $compErr -eq 1 + __cf_debug "Received error directive: aborting." + # Might as well do file completion, in case it helps + return 1 + end + + set -l filefilter (math (math --scale 0 $directive / $shellCompDirectiveFilterFileExt) % 2) + set -l dirfilter (math (math --scale 0 $directive / $shellCompDirectiveFilterDirs) % 2) + if test $filefilter -eq 1; or test $dirfilter -eq 1 + __cf_debug "File extension filtering or directory filtering not supported" + # Do full file completion instead + return 1 + end + + set -l nospace (math (math --scale 0 $directive / $shellCompDirectiveNoSpace) % 2) + set -l nofiles (math (math --scale 0 $directive / $shellCompDirectiveNoFileComp) % 2) + + __cf_debug "nospace: $nospace, nofiles: $nofiles" + + # If we want to prevent a space, or if file completion is NOT disabled, + # we need to count the number of valid completions. + # To do so, we will filter on prefix as the completions we have received + # may not already be filtered so as to allow fish to match on different + # criteria than the prefix. + if test $nospace -ne 0; or test $nofiles -eq 0 + set -l prefix (commandline -t | string escape --style=regex) + __cf_debug "prefix: $prefix" + + set -l completions (string match -r -- "^$prefix.*" $__cf_comp_results) + set --global __cf_comp_results $completions + __cf_debug "Filtered completions are: $__cf_comp_results" + + # Important not to quote the variable for count to work + set -l numComps (count $__cf_comp_results) + __cf_debug "numComps: $numComps" + + if test $numComps -eq 1; and test $nospace -ne 0 + # We must first split on \t to get rid of the descriptions to be + # able to check what the actual completion will be. + # We don't need descriptions anyway since there is only a single + # real completion which the shell will expand immediately. + set -l split (string split --max 1 "\t" $__cf_comp_results[1]) + + # Fish won't add a space if the completion ends with any + # of the following characters: @=/:., + set -l lastChar (string sub -s -1 -- $split) + if not string match -r -q "[@=/:.,]" -- "$lastChar" + # In other cases, to support the "nospace" directive we trick the shell + # by outputting an extra, longer completion. + __cf_debug "Adding second completion to perform nospace directive" + set --global __cf_comp_results $split[1] $split[1]. + __cf_debug "Completions are now: $__cf_comp_results" + end + end + + if test $numComps -eq 0; and test $nofiles -eq 0 + # To be consistent with bash and zsh, we only trigger file + # completion when there are no other completions + __cf_debug "Requesting file completion" + return 1 + end + end + + return 0 +end + +# Since Fish completions are only loaded once the user triggers them, we trigger them ourselves +# so we can properly delete any completions provided by another script. +# Only do this if the program can be found, or else fish may print some errors; besides, +# the existing completions will only be loaded if the program can be found. +if type -q "cf" + # The space after the program name is essential to trigger completion for the program + # and not completion of the program name itself. + # Also, we use '> /dev/null 2>&1' since '&>' is not supported in older versions of fish. + complete --do-complete "cf " > /dev/null 2>&1 +end + +# Remove any pre-existing completions for the program since we will be handling all of them. +complete -c cf -e + +# This will get called after the two calls below and clear the cached result +complete -c cf -n '__cf_clear_perform_completion_once_result' +# The call to __cf_prepare_completions will setup __cf_comp_results +# which provides the program's completion choices. +# If this doesn't require order preservation, we don't use the -k flag +complete -c cf -n 'not __cf_requires_order_preservation && __cf_prepare_completions' -f -a '$__cf_comp_results' +# Otherwise we use the -k flag +complete -k -c cf -n '__cf_requires_order_preservation && __cf_prepare_completions' -f -a '$__cf_comp_results' + diff --git a/neovim/.config/nvim/lua/plugins/ui/colorscheme.lua b/neovim/.config/nvim/lua/plugins/ui/colorscheme.lua index 7aaa0512..eef1bf0e 100644 --- a/neovim/.config/nvim/lua/plugins/ui/colorscheme.lua +++ b/neovim/.config/nvim/lua/plugins/ui/colorscheme.lua @@ -102,7 +102,7 @@ return { { "LazyVim/LazyVim", opts = { - colorscheme = "eldritch-dusk", + colorscheme = "catppuccin-latte", }, }, } From 6c42c64c6cbdfb94d5470273624d2cdbe4e143f5 Mon Sep 17 00:00:00 2001 From: Ed Heltzel <402910+edheltzel@users.noreply.github.com> Date: Tue, 13 Oct 2026 15:15:28 -0400 Subject: [PATCH 7/7] adding some of those craft apps - broke up with Adobe and considering Figma --- config/.config/flashspace/profiles.json | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/config/.config/flashspace/profiles.json b/config/.config/flashspace/profiles.json index 6b69f973..256cf327 100644 --- a/config/.config/flashspace/profiles.json +++ b/config/.config/flashspace/profiles.json @@ -161,16 +161,26 @@ "iconPath" : "/Applications/DesignCraft.app/Contents/Resources/DesignCraft.icns", "name" : "DesignCraft" }, - { - "bundleIdentifier" : "ai.storyteller.printcraft", - "iconPath" : "/Applications/PrintCraft.app/Contents/Resources/PrintCraft.icns", - "name" : "PrintCraft" - }, { "bundleIdentifier" : "ai.storyteller.vectorcraft", "iconPath" : "/Applications/VectorCraft.app/Contents/Resources/VectorCraft.icns", "name" : "VectorCraft" }, + { + "bundleIdentifier" : "ai.storyteller.figcraft", + "iconPath" : "/Applications/FigCraft.app/Contents/Resources/FigCraft.icns", + "name" : "FigCraft" + }, + { + "bundleIdentifier" : "ai.storyteller.cadcraft", + "iconPath" : "/Applications/CADCraft.app/Contents/Resources/CADCraft.icns", + "name" : "CADCraft" + }, + { + "bundleIdentifier" : "ai.storyteller.pdfcraft", + "iconPath" : "/Applications/PdfCraft.app/Contents/Resources/PdfCraft.icns", + "name" : "PdfCraft" + }, { "bundleIdentifier" : "ai.storyteller.photocraft", "iconPath" : "/Applications/PhotoCraft.app/Contents/Resources/PhotoCraft.icns",