From 246417313eded6bba0c6e0c84940b745b7e88ee6 Mon Sep 17 00:00:00 2001 From: "s0wlz (Matthias Puchstein)" Date: Thu, 12 Mar 2026 23:03:21 +0100 Subject: [PATCH] chore: misc config updates across hypr, nvim, waybar, zed, zsh - hypr: add transform support to monitor template; tweak scrolling layout - nvim: refine apex theme token colors (operators, special, tags) - waybar: move bar to right border of secondary monitor (DP-2) - zed: add ssh connection, window/tab settings, adjust font sizes, rework theme token colors - zsh: add plugin highlight colors to apex themes - docs: add CLAUDE.md Co-Authored-By: Claude Sonnet 4.6 --- CLAUDE.md | 77 +++++++++++++++++++ .../hypr/hyprland.d/10-monitors.conf.tmpl | 3 + dot_config/hypr/hyprland.d/50-layout.conf | 5 +- dot_config/nvim/colors/apex-aeon.lua | 8 +- dot_config/nvim/colors/apex-neon.lua | 8 +- dot_config/waybar/config.tmpl | 7 +- dot_config/zed/private_settings.json | 33 +++++++- dot_config/zed/themes/apex.json | 32 ++++---- dot_config/zsh/apex-aeon.zsh | 10 +++ dot_config/zsh/apex-neon.zsh | 10 +++ 10 files changed, 164 insertions(+), 29 deletions(-) create mode 100644 CLAUDE.md diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..4c45cf0 --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,77 @@ +# CLAUDE.md — chezmoi dotfiles + +Chezmoi source tree for a Linux desktop (Hyprland + Neovim + Zsh/Zim). + +## Commands + +```bash +chezmoi diff # preview pending changes +chezmoi apply # render templates and apply to $HOME +chezmoi status # show managed file status +``` + +After applying, reload the affected tool: +- Hyprland: `hyprctl reload` +- Waybar: `pkill waybar && waybar &` +- Neovim: reopen or `:source` +- Zsh: `exec zsh` + +## Chezmoi file naming + +| Prefix/Suffix | Meaning | +|---|---| +| `dot_` | maps to `.` (e.g. `dot_config/` → `~/.config/`) | +| `executable_` | sets executable bit | +| `private_` | restricts permissions (600/700) | +| `symlink_` | creates a symlink | +| `.tmpl` | Go template rendered at apply time | +| `##hostname.` | host-specific variant | + +## Template data (`chezmoi.toml`) + +Config lives at `~/.config/chezmoi/chezmoi.toml` (not tracked). Access tags via `.chezmoi.config.data.tags.`. + +Current tags: `desktop`, `laptop`, `hyprland`, `waybar`, `pipewire`, `dev`, `entertainment`, `cs2`, `bluetooth` + +- `microphone` is only present when `pipewire = true` — guard with `{{- if (index $tags "pipewire") }}`. +- `data.monitors` is an array; number of entries varies by machine. + +## Architecture + +- **`dot_config/hypr/`** — Hyprland. Entry point: `hyprland.conf`. Modular includes in `hyprland.d/`. New settings go in the appropriate `hyprland.d/` file. +- **`dot_config/nvim/`** — Neovim (Lua + lazy.nvim). `init.lua` bootstraps lazy. Plugins: `lazy_setup.lua`. General settings: `polish.lua`. 2-space indents; see `dot_stylua.toml` + `selene.toml`. +- **`dot_config/waybar/`** — Waybar config and styles. Host-specific variants via `##hostname.`. +- **`dot_config/zsh/`** — Zsh + Zim + Powerlevel10k. Aliases: `aliases.zsh`. +- **`dot_local/bin/`** — User scripts (all `executable_` prefixed). +- **`.chezmoiscripts/`** — `run_onchange_*` hooks run on `chezmoi apply`. + +## Theming — apex-aeon / apex-neon + +Two custom themes (`apex-aeon` dark, `apex-neon` neon) are applied across nvim, zsh, waybar, alacritty, kitty, ghostty, btop, fuzzel, gtk4, spicetify, swaync, wezterm, zathura, zed. + +Theme files are **not edited by hand** — they are synced from `~/Dev/Themes/apex/dist` using: + +```bash +refresh-apex-themes +``` + +This copies built theme artifacts into the appropriate `dot_config/*/themes/` directories. + +## Local documentation + +| Topic | Path | +|---|---| +| chezmoi | `~/.local/share/docs/chezmoi-docs/` | +| Hyprland | `~/.local/share/docs/hyprland.wiki/` | +| Waybar | `~/.local/share/docs/waybar.wiki/` (also `man 5 waybar`) | +| Ghostty | `/usr/share/ghostty` | + +## Commit convention + +``` +scope: imperative subject +``` + +Examples: `hypr: adjust keybinds`, `waybar: tweak clock format`, `nvim: add plugin` + +For visual/UI changes include screenshots in the PR description, along with affected paths. diff --git a/dot_config/hypr/hyprland.d/10-monitors.conf.tmpl b/dot_config/hypr/hyprland.d/10-monitors.conf.tmpl index 75fc7e9..0b69cbf 100644 --- a/dot_config/hypr/hyprland.d/10-monitors.conf.tmpl +++ b/dot_config/hypr/hyprland.d/10-monitors.conf.tmpl @@ -7,6 +7,9 @@ monitorv2 { {{- if index . "vrr" }} vrr = {{ .vrr }} {{- end }} + {{- if index . "transform" }} + transform = {{ .transform }} + {{- end }} } {{- end }} {{- if not .monitors }} diff --git a/dot_config/hypr/hyprland.d/50-layout.conf b/dot_config/hypr/hyprland.d/50-layout.conf index 6f3ebe4..358f507 100644 --- a/dot_config/hypr/hyprland.d/50-layout.conf +++ b/dot_config/hypr/hyprland.d/50-layout.conf @@ -14,8 +14,11 @@ master { } scrolling { - fullscreen_on_one_column = false + fullscreen_on_one_column = true focus_fit_method = 0 + follow_focus = true + follow_min_visible = 0.1 + column_width = 0.7 } # https://wiki.hyprland.org/Configuring/Variables/#misc diff --git a/dot_config/nvim/colors/apex-aeon.lua b/dot_config/nvim/colors/apex-aeon.lua index 85aa102..f45ecbc 100644 --- a/dot_config/nvim/colors/apex-aeon.lua +++ b/dot_config/nvim/colors/apex-aeon.lua @@ -115,7 +115,7 @@ function M.load() Conditional = { fg = p.sacred }, Repeat = { fg = p.sacred }, Label = { fg = p.sacred }, - Operator = { fg = p.tech }, -- Cyan (Tech) + Operator = { fg = p.text }, -- White (Neutral) Keyword = { fg = p.sacred }, Exception = { fg = p.razor }, -- Red (Errors) @@ -130,9 +130,9 @@ function M.load() Structure = { fg = p.amber }, Typedef = { fg = p.amber }, - Special = { fg = p.tech }, - SpecialChar = { fg = p.tech }, - Tag = { fg = p.tech }, + Special = { fg = p.sacred }, -- Purple (special grammar tokens) + SpecialChar = { fg = p.amber }, -- Amber (escalated string variant: escapes, regex) + Tag = { fg = p.azure }, -- Blue (structural: HTML/XML tags) Delimiter = { fg = p.dim }, -- Subtle delimiters Debug = { fg = p.razor }, diff --git a/dot_config/nvim/colors/apex-neon.lua b/dot_config/nvim/colors/apex-neon.lua index 0d4c606..f171fb5 100644 --- a/dot_config/nvim/colors/apex-neon.lua +++ b/dot_config/nvim/colors/apex-neon.lua @@ -115,7 +115,7 @@ function M.load() Conditional = { fg = p.sacred }, Repeat = { fg = p.sacred }, Label = { fg = p.sacred }, - Operator = { fg = p.tech }, -- Cyan (Tech) + Operator = { fg = p.text }, -- White (Neutral) Keyword = { fg = p.sacred }, Exception = { fg = p.razor }, -- Red (Errors) @@ -130,9 +130,9 @@ function M.load() Structure = { fg = p.amber }, Typedef = { fg = p.amber }, - Special = { fg = p.tech }, - SpecialChar = { fg = p.tech }, - Tag = { fg = p.tech }, + Special = { fg = p.sacred }, -- Purple (special grammar tokens) + SpecialChar = { fg = p.amber }, -- Amber (escalated string variant: escapes, regex) + Tag = { fg = p.azure }, -- Blue (structural: HTML/XML tags) Delimiter = { fg = p.dim }, -- Subtle delimiters Debug = { fg = p.razor }, diff --git a/dot_config/waybar/config.tmpl b/dot_config/waybar/config.tmpl index 95f8a31..2dd36db 100644 --- a/dot_config/waybar/config.tmpl +++ b/dot_config/waybar/config.tmpl @@ -1,8 +1,11 @@ {{- $tags := .chezmoi.config.data.tags -}} {{- $primary_output := "eDP-1" -}} +{{- $secondary_output := "" -}} {{- range .monitors -}} {{- if index . "primary" -}} {{- $primary_output = .name -}} + {{- else -}} + {{- $secondary_output = .name -}} {{- end -}} {{- end -}} {{- $workspace_module := "" -}} @@ -13,8 +16,8 @@ {{- end -}} { "layer": "top", - "position": "left", - "output": "{{ $primary_output }}", + "position": "right", + "output": "{{ $secondary_output }}", "width": 54, "spacing": 4, "margin-top": 0, diff --git a/dot_config/zed/private_settings.json b/dot_config/zed/private_settings.json index 6aee7a0..d16e1d9 100644 --- a/dot_config/zed/private_settings.json +++ b/dot_config/zed/private_settings.json @@ -7,6 +7,35 @@ // custom settings, run `zed: open default settings` from the // command palette (cmd-shift-p / ctrl-shift-p) { + "ssh_connections": [ + { + "host": "192.168.122.168", + "username": "mpuchstein", + "args": [], + "projects": [ + { + "paths": [ + "C:\\Users\\mpuchstein\\Dev\\/IDEvelopAR_new" + ] + } + ], + "nickname": "VM" + } + ], + "project_panel": { + "dock": "left" + }, + "prettier": { + "allowed": true + }, + "window_decorations": "server", + "tabs": { + "file_icons": true, + "git_status": true + }, + "title_bar": { + "show_branch_icon": true + }, "ui_font_weight": 400.0, "ui_font_family": "GeistMono Nerd Font", "buffer_font_family": "GeistMono Nerd Font", @@ -17,8 +46,8 @@ }, "vim_mode": true, "base_keymap": "JetBrains", - "ui_font_size": 16.0, - "buffer_font_size": 12.0, + "ui_font_size": 14.0, + "buffer_font_size": 13.0, "theme": { "mode": "system", "light": "Apex Aeon", diff --git a/dot_config/zed/themes/apex.json b/dot_config/zed/themes/apex.json index 32c0ac3..0e2cb57 100644 --- a/dot_config/zed/themes/apex.json +++ b/dot_config/zed/themes/apex.json @@ -197,13 +197,13 @@ "font_style": "italic" }, "keyword": { - "color": "#00eaff" + "color": "#9d00ff" }, "keyword.import": { - "color": "#00eaff" + "color": "#9d00ff" }, "keyword.storage": { - "color": "#00eaff" + "color": "#9d00ff" }, "function": { "color": "#0088cc" @@ -215,10 +215,10 @@ "color": "#0088cc" }, "type": { - "color": "#9d00ff" + "color": "#ffb700" }, "type.builtin": { - "color": "#9d00ff" + "color": "#ffb700" }, "string": { "color": "#00ff99" @@ -230,13 +230,13 @@ "color": "#ffb700" }, "number": { - "color": "#ffb700" + "color": "#00eaff" }, "boolean": { - "color": "#ffb700" + "color": "#00eaff" }, "constant": { - "color": "#ededed" + "color": "#00eaff" }, "constant.builtin": { "color": "#9d00ff" @@ -509,13 +509,13 @@ "font_style": "italic" }, "keyword": { - "color": "#007a88" + "color": "#7a3cff" }, "keyword.import": { - "color": "#007a88" + "color": "#7a3cff" }, "keyword.storage": { - "color": "#007a88" + "color": "#7a3cff" }, "function": { "color": "#005577" @@ -527,10 +527,10 @@ "color": "#005577" }, "type": { - "color": "#7a3cff" + "color": "#d18f00" }, "type.builtin": { - "color": "#7a3cff" + "color": "#d18f00" }, "string": { "color": "#00b377" @@ -542,13 +542,13 @@ "color": "#d18f00" }, "number": { - "color": "#d18f00" + "color": "#007a88" }, "boolean": { - "color": "#d18f00" + "color": "#007a88" }, "constant": { - "color": "#0a0a0a" + "color": "#007a88" }, "constant.builtin": { "color": "#7a3cff" diff --git a/dot_config/zsh/apex-aeon.zsh b/dot_config/zsh/apex-aeon.zsh index 5b91d1a..479c6a0 100644 --- a/dot_config/zsh/apex-aeon.zsh +++ b/dot_config/zsh/apex-aeon.zsh @@ -23,6 +23,16 @@ C[OK]="#00b377" C[PURPLE]="#7a3cff" C[ALERT]="#ff4d6d" +# ----------------------------------------------------------------------------- +# 1b) PLUGIN COLORS +# ----------------------------------------------------------------------------- +# zsh-autosuggestions: ghost text from history (subtle, intentionally dim) +ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE="fg=#737373" + +# zsh-history-substring-search +HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_FOUND="fg=#007a88,bold" +HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_NOT_FOUND="fg=#ff4d6d,bold" + # ----------------------------------------------------------------------------- # 2) ICONS / GLYPHS (Nerd Font optional) # ----------------------------------------------------------------------------- diff --git a/dot_config/zsh/apex-neon.zsh b/dot_config/zsh/apex-neon.zsh index b7c4234..a6ea3ac 100644 --- a/dot_config/zsh/apex-neon.zsh +++ b/dot_config/zsh/apex-neon.zsh @@ -23,6 +23,16 @@ C[OK]="#00ff99" C[PURPLE]="#9d00ff" C[ALERT]="#ff8899" +# ----------------------------------------------------------------------------- +# 1b) PLUGIN COLORS +# ----------------------------------------------------------------------------- +# zsh-autosuggestions: ghost text from history (subtle, intentionally dim) +ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE="fg=#737373" + +# zsh-history-substring-search +HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_FOUND="fg=#00eaff,bold" +HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_NOT_FOUND="fg=#ff8899,bold" + # ----------------------------------------------------------------------------- # 2) ICONS / GLYPHS (Nerd Font optional) # -----------------------------------------------------------------------------