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 <noreply@anthropic.com>
This commit is contained in:
2026-03-12 23:03:21 +01:00
parent ae29136063
commit 246417313e
10 changed files with 164 additions and 29 deletions

77
CLAUDE.md Normal file
View File

@@ -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.<name>` | host-specific variant |
## Template data (`chezmoi.toml`)
Config lives at `~/.config/chezmoi/chezmoi.toml` (not tracked). Access tags via `.chezmoi.config.data.tags.<tag>`.
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.<name>`.
- **`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.

View File

@@ -7,6 +7,9 @@ monitorv2 {
{{- if index . "vrr" }}
vrr = {{ .vrr }}
{{- end }}
{{- if index . "transform" }}
transform = {{ .transform }}
{{- end }}
}
{{- end }}
{{- if not .monitors }}

View File

@@ -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

View File

@@ -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 },

View File

@@ -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 },

View File

@@ -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,

View File

@@ -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",

View File

@@ -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"

View File

@@ -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)
# -----------------------------------------------------------------------------

View File

@@ -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)
# -----------------------------------------------------------------------------