diff --git a/docs/chezmoi/index.mdx b/docs/chezmoi/index.mdx index ceee10e..920ab7f 100644 --- a/docs/chezmoi/index.mdx +++ b/docs/chezmoi/index.mdx @@ -101,7 +101,7 @@ chezmoi encodes target names and attributes in source file names. These are the | `executable_` | Target gets the executable bit | 40 files: every script in `dot_local/bin/`, `dot_config/niri/scripts/`, `dot_config/tmux/executable_niri-title.sh` | | `exact_` | Directory is exact: entries in the target that are not in the source are deleted | `dot_config/niri/exact_config.d/` (numbered `10-…kdl` through `95-…kdl` fragments) | | `empty_` | File is kept even when empty | `dot_config/herdr/empty_dot_plugins.lock` | -| `symlink_` | Target is a symlink; file content is the link destination | `dot_config/kitty/symlink_current-theme.conf` (→ `themes/noctalia.conf`), `dot_config/symlink_television.tmpl` | +| `symlink_` | Target is a symlink; file content is the link destination | `dot_config/kitty/symlink_current-theme.conf` (→ `themes/cyberdream.conf`), `dot_config/symlink_television.tmpl` | | `.tmpl` | Rendered with Go templates and chezmoi data | `dot_gitconfig.tmpl`, `dot_config/shell/aliases.sh.tmpl`, `dot_config/yazi/yazi.toml.tmpl`, all scripts, the config and ignore files | | `run_once_` / `run_onchange_` + `before_` / `after_` | Script, with run frequency and phase | See [Apply scripts](/chezmoi/scripts) | diff --git a/docs/index.mdx b/docs/index.mdx index 34f8ceb..ae83222 100644 --- a/docs/index.mdx +++ b/docs/index.mdx @@ -50,4 +50,4 @@ The default is `mac` on macOS and `desktop` everywhere else. See [Configuration] ## Theme -The shared palette is **cyberdream**. bat, atuin, and yazi select it, and television selects `cyberdream-transparent`, a variant without a background. fish and omp ship a cyberdream theme but do not select it. kitty takes its colors from the active Omarchy theme. The noctalia, koda, and ii-auto variants are shipped for ghostty, kitty, and yazi. The font is **Victor Mono Nerd Font**. +The shared palette is **cyberdream**, fixed rather than tied to the Omarchy theme so it is identical on every machine. Ghostty, tmux, nvim, bat, atuin, and yazi select it, and television selects `cyberdream-transparent`, a variant without a background. fish and omp ship a cyberdream theme but do not select it. kitty takes its colors from the active Omarchy theme. The koda and ii-auto variants are also shipped for ghostty, kitty, and yazi. The font is **Victor Mono Nerd Font**. diff --git a/docs/terminal/ghostty.mdx b/docs/terminal/ghostty.mdx index a00a4c2..3fcbae9 100644 --- a/docs/terminal/ghostty.mdx +++ b/docs/terminal/ghostty.mdx @@ -11,7 +11,7 @@ Ghostty is only a [tmux](/terminal/tmux) client. tmux owns tabs (windows), split | Target | `~/.config/ghostty/` | | Install | Not listed in `.chezmoidata/packages.yaml`; install separately | -Ghostty reads both `config` and `config.ghostty`. `config` holds all settings; `config.ghostty` contains a single line, `theme = noctalia`, which selects the active theme. +Ghostty reads both `config` and `config.ghostty`. `config` holds all settings; `config.ghostty` contains a single line, `theme = cyberdream`, which selects the active theme. ## Options @@ -29,17 +29,24 @@ Ghostty reads both `config` and `config.ghostty`. `config` holds all settings; ` | `confirm-close-surface` | `false` | | `app-notifications` | `no-clipboard-copy,no-config-reload` | | `quit-after-last-window-closed` | `false`, delay `5m` | -| `command` | `tmux new-session -A -s main`: every window attaches to tmux session `main` and creates it if it is missing | +| `command` | `shell:$HOME/.local/bin/ghostty-tmux` (see [Sessions](#sessions)) | | `shell-integration` | `detect`, features `cursor,sudo,title,no-cursor` | | `gtk-single-instance` | `true` | -## Persistence +## Sessions -Closing Ghostty only detaches from tmux; the shells keep running in the tmux server. Across reboots, tmux-continuum saves the layout every 10 minutes. When the first Ghostty window starts a new tmux server, continuum restores the last save. See [tmux](/terminal/tmux#persistence). +Every Ghostty window gets its own tmux session; no two windows mirror the same one. `~/.local/bin/ghostty-tmux` (source `dot_local/bin/executable_ghostty-tmux`) runs for each new window: + +1. If a detached session exists (left by a closed window, or restored by continuum after a reboot), it attaches to the oldest one. +2. Otherwise it starts a new session. + +Ghostty's colors match tmux's tab bar because both use the fixed cyberdream palette: Ghostty's background `#16181a` is tmux's `@tab-bg`. + +Closing a window only detaches its session; the shells keep running in the tmux server. In tmux, `detach-on-destroy no-detached` means killing a session moves the window to a *detached* session, or closes the window if there is none, so it never lands on another window's session. Across reboots, tmux-continuum saves every 10 minutes. The first Ghostty window starts the server, and that triggers continuum's restore. See [tmux](/terminal/tmux#persistence). ## Keybindings -`keybind = clear` comes first and drops every Ghostty default: tabs, splits, `alt+N` goto_tab, and `ctrl+alt+arrow` goto_split. Those chords then reach tmux, which binds `alt+1…9` and `ctrl+alt+arrows` itself. Each `ctrl+shift` chord sends tmux's second prefix, `ctrl+b` (`\x02`), followed by a key. +`keybind = clear` comes first and drops every Ghostty default: tabs, splits, `alt+N` goto_tab, and `ctrl+alt+arrow` goto_split. Those chords then reach tmux, which binds `alt+1…9` and `ctrl+alt+arrows` itself. `ctrl+h/j/k/l` also pass straight through to tmux's vim-aware pane navigation, which hands off to and from nvim's splits (see [tmux](/terminal/tmux#keybindings)). Each `ctrl+shift` chord sends tmux's second prefix, `ctrl+b` (`\x02`), followed by a key. | Key | Ghostty action | | --- | --- | @@ -73,6 +80,6 @@ Closing Ghostty only detaches from tmux; the shells keep running in the tmux ser | Theme | Notes | | --- | --- | -| `noctalia` | Active. Palette matching the Noctalia shell. | +| `cyberdream` | Active. Upstream `extras/ghostty/cyberdream` from [cyberdream.nvim](https://github.com/scottmckendry/cyberdream.nvim), the palette shared with tmux, nvim, yazi, and television. | | `ii-auto` | Auto-generated by the ii wallpaper theming system; not meant to be edited. | | `koda-dark` / `koda-light` | Koda palettes with `bold-is-bright = true`. | diff --git a/docs/terminal/kitty.mdx b/docs/terminal/kitty.mdx index c9b37e7..16be222 100644 --- a/docs/terminal/kitty.mdx +++ b/docs/terminal/kitty.mdx @@ -30,7 +30,6 @@ GPU terminal emulator and the primary terminal on every role. - cyberdream.conf - koda-dark.conf - koda-light.conf - - noctalia.conf `__pycache__/` next to `tab_bar.py` is excluded in `.chezmoiignore.tmpl`. @@ -43,7 +42,7 @@ Every config ends with: include ~/.local/state/omarchy/current/theme/kitty.conf ``` -Colors come from the active Omarchy theme; it is included last so it wins. `symlink_current-theme.conf` creates `~/.config/kitty/current-theme.conf` as a symlink to `themes/noctalia.conf`. Only the legacy `dot_config/herdr/kitty.conf` includes `current-theme.conf`; the main config does not. `themes/` holds `cyberdream`, `koda-dark`, `koda-light` and `noctalia` color files. +Colors come from the active Omarchy theme; it is included last so it wins. `symlink_current-theme.conf` creates `~/.config/kitty/current-theme.conf` as a symlink to `themes/cyberdream.conf`. Only the legacy `dot_config/herdr/kitty.conf` includes `current-theme.conf`; the main config does not. `themes/` holds `cyberdream`, `koda-dark`, and `koda-light` color files. ## kitty.conf diff --git a/docs/terminal/tmux.mdx b/docs/terminal/tmux.mdx index 349a6f1..489ada5 100644 --- a/docs/terminal/tmux.mdx +++ b/docs/terminal/tmux.mdx @@ -7,8 +7,8 @@ Terminal multiplexer. [Ghostty](/terminal/ghostty) runs nothing but tmux, and Gh | | | | --- | --- | -| Source | `dot_config/tmux/tmux.conf`, `dot_config/tmux/tmux-nerd-font-window-name.yml`, `dot_config/tmux/executable_tab-label.sh`, `dot_config/tmux/executable_niri-title.sh`, `dot_config/omarchy/themed/tmux.conf.tpl`, `dot_config/omarchy/hooks/theme-set.d/executable_tmux-tabs` | -| Target | `~/.config/tmux/`, `~/.config/omarchy/` | +| Source | `dot_config/tmux/tmux.conf`, `dot_config/tmux/tmux-nerd-font-window-name.yml`, `dot_config/tmux/executable_tab-label.sh`, `dot_config/tmux/executable_niri-title.sh` | +| Target | `~/.config/tmux/` | | Install | `tmux` in `.chezmoidata/packages.yaml` (pacman, brew) | tpm is a `git-repo` external in `.chezmoiexternal.toml`, cloned to `~/.config/tmux/plugins/tpm` when missing. `tmux.conf` ends with `run '~/.config/tmux/plugins/tpm/tpm'`. Plugins installed by tpm (`prefix I`) land next to it and are ignored by chezmoi. @@ -29,13 +29,13 @@ The prefix is `ctrl+space`; `ctrl+b` is `prefix2` (the byte Ghostty sends). | `set-titles` | `on`, `#h:#W` | | `automatic-rename-format` | `#{window_icon}