mirror of
https://github.com/prdlk/dotfiles.git
synced 2026-11-02 11:32:42 +00:00
docs(docs): add vicinae documentation and update references
This commit is contained in:
1 parent
958a7a8e45
commit
fd1e822450
15 files changed
+119
-34
No files matched your search
@@ -40,7 +40,7 @@ The `*Once` functions only prompt when the key is missing from the existing conf
|
||||
|
||||
### Machine roles
|
||||
|
||||
| Role | Intended platform | Linux desktop layer | Desktop packages (`niri`, `xdg-user-dirs`, `noctalia-shell`) |
|
||||
| Role | Intended platform | Linux desktop layer | Desktop packages (`niri`, `xdg-user-dirs`, `noctalia-shell`, `vicinae-bin`) |
|
||||
| --- | --- | --- | --- |
|
||||
| `desktop` | Arch Linux | Applied | Installed |
|
||||
| `laptop` | Arch Linux | Applied | Installed |
|
||||
|
||||
@@ -38,7 +38,7 @@ One manifest per platform, plus a `shared` block. Any edit to the file changes t
|
||||
| Source | Packages |
|
||||
| --- | --- |
|
||||
| pacman | `niri`, `xdg-user-dirs` |
|
||||
| AUR | `noctalia-shell` |
|
||||
| AUR | `noctalia-shell`, `vicinae-bin` |
|
||||
|
||||
</Tab>
|
||||
<Tab title="macOS">
|
||||
@@ -163,7 +163,7 @@ See [bash and zsh](/shell) for the rest of those files.
|
||||
| `e.d` | `cd ~/.config/dotstate/storage/Rogz/.config && yazi` | not defined |
|
||||
| `e.f` | `cd ~/.config/fish && yazi` | `cd ~/.local/share/chezmoi/dot_config/fish && yazi` |
|
||||
| `e.h` | not defined | `cd ~/.local/share/chezmoi/dot_config/hypr && yazi` |
|
||||
| `e.k` | `yazi ~/.config/kitty` | `yazi ~/.local/share/chezmoi/dot_config/kitty` |
|
||||
| `e.k` | `yazi ~/.config/kitty` | ✓ |
|
||||
| `e.n` | `yazi ~/.config/niri` | `yazi ~/.local/share/chezmoi/dot_config/niri` |
|
||||
| `e.y` | `yazi ~/.config/yazi` | ✓ |
|
||||
| `e.t` | `nvim ~/.config/tmux/tmux.conf` | ✓ |
|
||||
|
||||
@@ -58,6 +58,8 @@ Per-app config repos, one file each in `.chezmoiexternals/<app>.toml`. Each is a
|
||||
| `tmux-palette.toml` | `~/.config/tmux-palette` | [prdlk/tmux-palette](https://github.com/prdlk/tmux-palette) |
|
||||
| `television.toml` | `~/.config/television` | [prdlk/television](https://github.com/prdlk/television) |
|
||||
| `yazi.toml` | `~/.config/yazi` | [prdlk/yazi](https://github.com/prdlk/yazi) |
|
||||
| `kitty.toml` | `~/.config/kitty` | [prdlk/kitty](https://github.com/prdlk/kitty) |
|
||||
| `ghostty.toml` | `~/.config/ghostty` | [prdlk/ghostty](https://github.com/prdlk/ghostty) |
|
||||
|
||||
Edit these in place under `~/.config/<app>`, then commit and push from that checkout.
|
||||
|
||||
@@ -162,12 +164,3 @@ See [Desktop](/desktop/niri) for what the layer contains. Gaps in the gate: the
|
||||
```
|
||||
|
||||
noctalia writes plugin state containing embedded tokens here. These paths are ignored on every machine so tokens are never pulled into the repo.
|
||||
|
||||
### Python byte-cache
|
||||
|
||||
```txt
|
||||
.config/kitty/__pycache__
|
||||
.config/kitty/__pycache__/**
|
||||
```
|
||||
|
||||
kitty imports `tab_bar.py` and the other Python helpers in `~/.config/kitty`, and Python writes `__pycache__` next to them. In symlink mode that directory would otherwise appear in the source tree.
|
||||
@@ -107,7 +107,7 @@ chezmoi encodes target names and attributes in source file names. These are the
|
||||
| `executable_` | Target gets the executable bit | 44 files: every script in `dot_local/bin/` (including `executable_tmux-niri-title`) and `dot_config/niri/scripts/` |
|
||||
| `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/cyberdream.conf`) |
|
||||
| `symlink_` | Target is a symlink; file content is the link destination | None currently |
|
||||
| `.tmpl` | Rendered with Go templates and chezmoi data | `dot_gitconfig.tmpl`, `dot_config/shell/aliases.sh.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) |
|
||||
|
||||
@@ -119,7 +119,7 @@ Prefixes stack in chezmoi's fixed order, e.g. `private_dot_foo`, `executable_dot
|
||||
|
||||
What that means in practice:
|
||||
|
||||
- Editing a plain file in `$HOME` (for example `~/.config/kitty/kitty.conf`) edits `~/.local/share/chezmoi/dot_config/kitty/kitty.conf` directly. The change is live and shows up in `git status` of the repo with no `chezmoi add` step.
|
||||
- Editing a plain file in `$HOME` (for example `~/.config/niri/config.kdl`) edits `~/.local/share/chezmoi/dot_config/niri/config.kdl` directly. The change is live and shows up in `git status` of the repo with no `chezmoi add` step.
|
||||
- Templates are rendered copies. Editing `~/.gitconfig` or `~/.config/shell/aliases.sh` changes only the copy; the next `chezmoi apply` overwrites it. Edit the `.tmpl` source (`chezmoi edit ~/.gitconfig`) instead.
|
||||
- `private_` and `executable_` targets are real files too. After editing one in place, run `chezmoi re-add <path>` to copy it back into the source.
|
||||
- Tools that rewrite their own config write through the symlink into the repo. The runtime state that would otherwise pollute the source (plugin dirs, lock files, `fish_variables`, `__pycache__`) is excluded in `.chezmoiignore.tmpl` and `.gitignore`; see [Externals and ignore rules](/chezmoi/externals-and-ignore).
|
||||
|
||||
@@ -6,7 +6,7 @@ sidebar:
|
||||
---
|
||||
|
||||
:::note[Role gating]
|
||||
`.chezmoiignore.tmpl` skips the Linux desktop layer unless the machine runs Linux **and** its role is `desktop` or `laptop`. The gated targets are `~/.config/niri`, `~/.config/hypr`, `~/.config/noctalia`, `~/.config/niri-dynamic-workspaces`, `~/.config/fontconfig`, `~/.config/mimeapps.list`, `~/.config/systemd`, `~/.local/bin/kitty-day-save`, `~/.local/bin/niri-launch`, `~/.local/bin/cp-appid`, `~/.local/bin/projects-sync`, and `~/.config/fish/auto-Niri.fish`. On `mac` and `server` roles these are not applied.
|
||||
`.chezmoiignore.tmpl` skips the Linux desktop layer unless the machine runs Linux **and** its role is `desktop` or `laptop`. The gated targets are `~/.config/niri`, `~/.config/hypr`, `~/.config/noctalia`, `~/.config/vicinae`, `~/.config/niri-dynamic-workspaces`, `~/.config/fontconfig`, `~/.config/mimeapps.list`, `~/.config/systemd`, `~/.local/bin/kitty-day-save`, `~/.local/bin/niri-launch`, `~/.local/bin/cp-appid`, `~/.local/bin/projects-sync`, and `~/.config/fish/auto-Niri.fish`. On `mac` and `server` roles these are not applied.
|
||||
|
||||
`~/.config/waybar`, the `omarchy-*` scripts, the `niri-launch-ai` / `-browser` / `-terminal` / `-webapp` wrappers, and `~/.local/bin/tmux-niri-title` are **not** listed there, so chezmoi applies them on every role and OS. Only the exact path `.local/bin/niri-launch` is ignored, not the wrappers that call it.
|
||||
:::
|
||||
@@ -19,6 +19,7 @@ Two Wayland compositors are configured side by side. niri is the original setup,
|
||||
| [Hyprland](/desktop/hyprland) | `~/.config/hypr` Lua config on Omarchy: bindings, input, look and feel, monitors, hyprsunset, the portal; every `omarchy-*` script in `~/.local/bin` |
|
||||
| [Waybar](/desktop/waybar) | `~/.config/waybar`: module layout, stylesheet, the `window_pill.py` title module |
|
||||
| [Fonts and default apps](/desktop/fonts-and-apps) | `~/.config/fontconfig/fonts.conf`, `~/.config/mimeapps.list`, the Victor Mono Nerd Font packages |
|
||||
| [vicinae](/desktop/vicinae) | `~/.config/vicinae/settings.json`: launcher keybindings, font, extension shortcuts and aliases |
|
||||
|
||||
## Packages
|
||||
|
||||
@@ -27,6 +28,6 @@ Two Wayland compositors are configured side by side. niri is the original setup,
|
||||
| Source | Packages |
|
||||
| --- | --- |
|
||||
| pacman | `niri`, `xdg-user-dirs` |
|
||||
| AUR (via `paru`) | `noctalia-shell` |
|
||||
| AUR (via `paru`) | `noctalia-shell`, `vicinae-bin` |
|
||||
|
||||
The script skips AUR packages with a warning if `paru` is not installed. Hyprland, Waybar, and the `omarchy-*` commands that the scripts call (`omarchy-menu`, `omarchy-launch-or-focus`, and others) come from an Omarchy install. This repo does not install them. See [chezmoi scripts](/chezmoi/scripts) for the full install flow.
|
||||
@@ -3,5 +3,5 @@ import { defineMeta } from "blume";
|
||||
export default defineMeta({
|
||||
title: "Desktop",
|
||||
icon: "monitor",
|
||||
pages: ["index", "niri", "hyprland", "waybar", "fonts-and-apps"],
|
||||
pages: ["index", "niri", "hyprland", "waybar", "fonts-and-apps", "vicinae"],
|
||||
});
|
||||
@@ -55,9 +55,9 @@ Linux `desktop` and `laptop` roles only. `.chezmoiignore.tmpl` skips `~/.config/
|
||||
|
||||
## Installation
|
||||
|
||||
- `niri` and `xdg-user-dirs` from pacman, `noctalia-shell` from the AUR. Declared under `packages.arch.desktop` in `.chezmoidata/packages.yaml` and installed by `run_onchange_before_10-packages.sh.tmpl` for `desktop`/`laptop` roles. See [chezmoi scripts](/chezmoi/scripts).
|
||||
- `niri` and `xdg-user-dirs` from pacman, `noctalia-shell` and `vicinae-bin` from the AUR. Declared under `packages.arch.desktop` in `.chezmoidata/packages.yaml` and installed by `run_onchange_before_10-packages.sh.tmpl` for `desktop`/`laptop` roles. See [chezmoi scripts](/chezmoi/scripts).
|
||||
- `.chezmoiscripts/run_once_after_30-user-services.sh.tmpl` runs once on Linux. If `~/.config/systemd/user/nirinit.service` exists, it runs `systemctl --user daemon-reload` and `systemctl --user enable nirinit.service`. The script's comment says other personal units (brain-lens, omp-loop, rclone, hermes, voxtype) ship as files only and are enabled by hand. The repo does not currently contain `dot_config/systemd`, so the unit must come from elsewhere for the enable step to run.
|
||||
- Tools the config calls but does not install: `vicinae`, `cliphist`/`wl-paste`, `polkit-gnome`, `kbuildsycoca6`, `voxtype`, `niri-dynamic-workspaces`, `dot-screenshot`, `niri-smart-close`, `niri-smart-move`, and the `capitaine-cursors-light` cursor theme. `niri-smart-close`, `niri-smart-move`, and `dot-screenshot` are called by path or name but are not in this repo.
|
||||
- Tools the config calls but does not install: `cliphist`/`wl-paste`, `polkit-gnome`, `kbuildsycoca6`, `voxtype`, `niri-dynamic-workspaces`, `dot-screenshot`, `niri-smart-close`, `niri-smart-move`, and the `capitaine-cursors-light` cursor theme. `niri-smart-close`, `niri-smart-move`, and `dot-screenshot` are called by path or name but are not in this repo. [vicinae](/desktop/vicinae) is installed and configured here.
|
||||
|
||||
## Load order
|
||||
|
||||
|
||||
@@ -0,0 +1,59 @@
|
||||
---
|
||||
title: vicinae
|
||||
description: The vicinae launcher — global shortcuts, font, and per-extension aliases and shortcuts.
|
||||
---
|
||||
|
||||
[vicinae](https://vicinae.com) is the launcher under both niri and Hyprland: app search, emoji picker, clipboard history, window switcher, and store extensions.
|
||||
|
||||
| | |
|
||||
| --- | --- |
|
||||
| Source | `dot_config/vicinae/settings.json` |
|
||||
| Target | `~/.config/vicinae/settings.json` |
|
||||
| Install | `vicinae-bin` under `packages.arch.desktop.aur` in `.chezmoidata/packages.yaml` |
|
||||
|
||||
:::note
|
||||
Linux `desktop` and `laptop` roles only. `.chezmoiignore.tmpl` skips `~/.config/vicinae/**` on other roles.
|
||||
:::
|
||||
|
||||
`settings.json` is merged over `vicinae config default`. vicinae rewrites the file whenever a setting changes in its GUI, dropping comments and formatting; in symlink mode that write lands in the repo, so check `git status` after changing settings in the UI.
|
||||
|
||||
Runtime state (`~/.local/share/vicinae`: clipboard database, extension installs, search history, favicons) is not managed. Extensions referenced below are installed from the vicinae store on each machine.
|
||||
|
||||
## General
|
||||
|
||||
| Option | Value |
|
||||
| --- | --- |
|
||||
| `keybinding` | `vim` |
|
||||
| `close_on_focus_loss` / `pop_to_root_on_close` | `true` |
|
||||
| `font.normal` | `VictorMono NFP` 9.5, `rendering = native` |
|
||||
| `theme.dark.icon_theme` | `Yaru` |
|
||||
| `launcher_window` | compact mode off, no floating status bar |
|
||||
|
||||
## Shortcuts
|
||||
|
||||
Global and per-entrypoint shortcuts. The compositor bindings in [niri](/desktop/niri) / [Hyprland](/desktop/hyprland) call `vicinae toggle` and deeplinks for the same features; these are vicinae's own bindings.
|
||||
|
||||
| Key | Entrypoint |
|
||||
| --- | --- |
|
||||
| `super+SPACE` | `global_shortcuts.toggle` |
|
||||
| `super+shift+SPACE` | `core` / search-emojis |
|
||||
| `super+P` | `clipboard` / history |
|
||||
| `super+A` | `system` / browse-apps |
|
||||
| `alt+SPACE` | `@codingcodax/store.vicinae.omarchy-menu` |
|
||||
| `super+control+shift+O` | `@aurelleb/store.vicinae.chromium-bookmarks` / search-bookmarks |
|
||||
|
||||
## Aliases
|
||||
|
||||
| Alias | Entrypoint |
|
||||
| --- | --- |
|
||||
| `apps` | `system` / browse-apps |
|
||||
| `sh` | `system` / run |
|
||||
| `pass` | `applications` / 1password |
|
||||
| `photoshop`, `illustrator` | `applications` / photocraft, vectorcraft |
|
||||
| `nf` | `@fbosch/store.vicinae.nerdfont-search` |
|
||||
| `aur` | `@rithvikvibhu/store.vicinae.arch-packages` |
|
||||
| `cql` | `manage-shortcuts` / create |
|
||||
| `shut down`, `restart` | `power` / power-off, reboot |
|
||||
| `streams` | `shortcuts` / `sct-a5e51f1bbe34` (a user shortcut; the id is machine-specific) |
|
||||
|
||||
`system` / set-default-browser and set-default-terminal are disabled.
|
||||
@@ -23,7 +23,7 @@ The script checks the release tarball's SHA-256 before installing, as upstream d
|
||||
|
||||
<Steps>
|
||||
<Step title="Package manager">
|
||||
**Arch**: `sudo` for pacman. `paru` is needed for AUR packages (`topgrade`, and `noctalia-shell` on desktop roles); without it the package script prints a warning and skips them.
|
||||
**Arch**: `sudo` for pacman. `paru` is needed for AUR packages (`topgrade`, and `noctalia-shell` / `vicinae-bin` on desktop roles); without it the package script prints a warning and skips them.
|
||||
**macOS**: [Homebrew](https://brew.sh) is required; the package script exits with an error if `brew` is missing.
|
||||
</Step>
|
||||
<Step title="GitHub access">
|
||||
|
||||
@@ -38,7 +38,7 @@ A ✓ means the alias exists in that shell with the command shown. Where fish us
|
||||
| `e.d` | `cd ~/.config/dotstate/storage/Rogz/.config && yazi` | not defined |
|
||||
| `e.f` | `cd ~/.config/fish && yazi` | `cd ~/.local/share/chezmoi/dot_config/fish && yazi` |
|
||||
| `e.h` | not defined | `cd ~/.local/share/chezmoi/dot_config/hypr && yazi` |
|
||||
| `e.k` | `yazi ~/.config/kitty` | `yazi ~/.local/share/chezmoi/dot_config/kitty` |
|
||||
| `e.k` | `yazi ~/.config/kitty` | ✓ |
|
||||
| `e.n` | `yazi ~/.config/niri` | `yazi ~/.local/share/chezmoi/dot_config/niri` |
|
||||
| `e.v` | `yazi ~/.config/nvim/lua` | ✓ |
|
||||
| `e.y` | `yazi ~/.config/yazi` | ✓ |
|
||||
|
||||
@@ -52,6 +52,7 @@ Several scripts below also exist as fish functions of the same name (`ai`, `c2p`
|
||||
| [`pj`](#pj) | bash | Task runner across every project task source, on a tv cable |
|
||||
| [`projects-sync`](#projects-sync) | bash | Symlink every `~/Code` repo into `~/Projects` |
|
||||
| [`pj-palette`](#pj-palette) | bash | pj's tasks plus quick actions as a tmux-palette source |
|
||||
| [`tmux-sessions`](#tmux-sessions) | bash | Session/window/zoxide switcher as a tmux-palette source |
|
||||
| [`yazi-nvim-open`](#yazi-nvim-open) | sh | yazi opener that targets the host Neovim |
|
||||
|
||||
## ai
|
||||
@@ -404,6 +405,35 @@ The project root is the git toplevel, else the pane's directory.
|
||||
|
||||
**Needs:** `pj` and its dependencies, `jq`, tmux.
|
||||
|
||||
## tmux-sessions
|
||||
|
||||
```sh
|
||||
tmux-sessions
|
||||
tmux-sessions --new QUERY
|
||||
tmux-sessions --dir DIR
|
||||
```
|
||||
|
||||
The source of the **Sessions** [tmux command palette](/terminal/tmux#command-palette) (`palettes/sessions.json`), which replaced tmux-sessionx. Open it with tmux `prefix o`, Ghostty <kbd>ctrl+shift+o</kbd> or <kbd>super+enter</kbd>, or the "Sessions" item in the main palette.
|
||||
|
||||
With no arguments it prints palette items as JSON, grouped by category:
|
||||
|
||||
| Group | Items | Action |
|
||||
| --- | --- | --- |
|
||||
| Sessions | Every session but the current one, the client's last session first. Attached ones have a green icon | `switch-client` |
|
||||
| Windows | Every window of every session, as `<session>:<index> · <cwd>` | `switch-client` to that window |
|
||||
| Zoxide | `zoxide query -l` | `--dir` |
|
||||
| Config | Directories in `~/.config` that zoxide does not list | `--dir` |
|
||||
| Rename | One per session | `command-prompt` prefilled with the name |
|
||||
| Kill | One per session except the current one | `kill-session` |
|
||||
|
||||
pj-palette's background task sessions (`@pj_task`) are left out. Sessions are targeted by id, since names may contain `:`.
|
||||
|
||||
**`--new QUERY`** is the palette's `query` item, the typed text listed after the matches. It switches to the session named QUERY if there is one. Otherwise it starts a session named QUERY in QUERY itself if that is a directory (via `--dir`), else in `zoxide query QUERY`'s match (QUERY's words are separate keywords), else in tmux's default directory. Typed text that matches nothing therefore lands on the `query` item, the same as sessionx's zoxide mode.
|
||||
|
||||
**`--dir DIR`** switches to, or starts in DIR, the session named after DIR's basename with dots removed (sessionx's rule).
|
||||
|
||||
**Needs:** tmux, `jq`, `zoxide`.
|
||||
|
||||
## yazi-nvim-open
|
||||
|
||||
```sh
|
||||
|
||||
@@ -7,10 +7,12 @@ Ghostty is only a [tmux](/terminal/tmux) client. tmux owns tabs (windows), split
|
||||
|
||||
| | |
|
||||
| --- | --- |
|
||||
| Source | `dot_config/ghostty/config`, `dot_config/ghostty/config.ghostty`, `dot_config/ghostty/themes/` |
|
||||
| Source | [prdlk/ghostty](https://github.com/prdlk/ghostty) via `.chezmoiexternals/ghostty.toml`: `config`, `config.ghostty`, `themes/` |
|
||||
| Target | `~/.config/ghostty/` |
|
||||
| Install | Not listed in `.chezmoidata/packages.yaml`; install separately |
|
||||
|
||||
`~/.config/ghostty` is a `git-repo` external checkout, not chezmoi-managed contents; edit it in place and commit and push from there.
|
||||
|
||||
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
|
||||
@@ -72,7 +74,7 @@ Closing a window only detaches its session; the shells keep running in the tmux
|
||||
| `ctrl+shift+tab` / `ctrl+page_up` / `ctrl+shift+left` / `ctrl+shift+h` | `prefix p` | Previous window |
|
||||
| `ctrl+shift+l` | `prefix v` | Split right |
|
||||
| `ctrl+shift+j` | `prefix h` | Split below |
|
||||
| `ctrl+shift+o` | `prefix o` | Session picker (tmux-sessionx) |
|
||||
| `ctrl+shift+o` / `super+enter` | `prefix o` | Sessions palette: switch session or window, or create one through zoxide |
|
||||
| `ctrl+shift+x` | `prefix x` | Kill pane |
|
||||
| `ctrl+shift+enter` / `ctrl+shift+z` | `prefix z` | Zoom pane |
|
||||
| `ctrl+shift+page_up` | `prefix [` | Copy mode |
|
||||
|
||||
@@ -9,8 +9,8 @@ kitty is the primary terminal. It runs in three modes: plain kitty (kitty owns s
|
||||
|
||||
| Page | Source | What it covers |
|
||||
| --- | --- | --- |
|
||||
| [kitty](/terminal/kitty) | `dot_config/kitty/` | Main config, host configs (tmux, herdr, goliath), kittens, custom tab bar |
|
||||
| [Ghostty](/terminal/ghostty) | `dot_config/ghostty/` | tmux-only terminal: ctrl+shift chords → tmux, themes |
|
||||
| [kitty](/terminal/kitty) | external repo via `.chezmoiexternals/kitty.toml` | Main config, host configs (tmux, herdr, goliath), kittens, custom tab bar |
|
||||
| [Ghostty](/terminal/ghostty) | external repo via `.chezmoiexternals/ghostty.toml` | tmux-only terminal: ctrl+shift chords → tmux, themes |
|
||||
| [tmux](/terminal/tmux) | external repo via `.chezmoiexternals/tmux.toml` | Prefix, bindings, kitty-style tabs with Nerd Font icons, resurrect/continuum persistence, Niri titles |
|
||||
| [herdr](/terminal/herdr) | `dot_config/herdr/`, `dot_config/herdr-nvim/` | Agent-aware multiplexer: keys, theme, plugins, Claude hook |
|
||||
|
||||
|
||||
@@ -7,18 +7,18 @@ GPU terminal emulator and the primary terminal on every role.
|
||||
|
||||
| | |
|
||||
| --- | --- |
|
||||
| Source | `dot_config/kitty/` |
|
||||
| Source | [prdlk/kitty](https://github.com/prdlk/kitty) via `.chezmoiexternals/kitty.toml` |
|
||||
| Target | `~/.config/kitty/` |
|
||||
| Install | `kitty` in `.chezmoidata/packages.yaml` (pacman on Arch, cask on macOS, plus `font-victor-mono-nerd-font` cask) |
|
||||
|
||||
<FileTree>
|
||||
- dot_config/kitty/
|
||||
- ~/.config/kitty/
|
||||
- kitty.conf
|
||||
- tmux.conf
|
||||
- herdr.conf
|
||||
- goliath.conf
|
||||
- ssh.conf
|
||||
- symlink_current-theme.conf
|
||||
- current-theme.conf
|
||||
- tab_bar.py
|
||||
- pass_keys.py
|
||||
- day_session.py
|
||||
@@ -32,7 +32,7 @@ GPU terminal emulator and the primary terminal on every role.
|
||||
- koda-light.conf
|
||||
</FileTree>
|
||||
|
||||
`__pycache__/` next to `tab_bar.py` is excluded in `.chezmoiignore.tmpl`.
|
||||
`~/.config/kitty` is a `git-repo` external checkout, not chezmoi-managed contents; edit it in place and commit and push from there. The repo's `.gitignore` excludes `__pycache__/` next to `tab_bar.py`.
|
||||
|
||||
## Theme and colors
|
||||
|
||||
@@ -42,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/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.
|
||||
Colors come from the active Omarchy theme; it is included last so it wins. `current-theme.conf` is a symlink committed in the repo, pointing at `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
|
||||
|
||||
|
||||
@@ -41,7 +41,7 @@ These settings are what [yazi](/tools/yazi) needs inside tmux. `allow-passthroug
|
||||
| --- | --- |
|
||||
| `prefix q` | Reload config |
|
||||
| `prefix /` | Copy mode, then search upward |
|
||||
| `prefix o` | tmux-sessionx: fuzzy-find, switch to, create, rename (`ctrl-r`), or kill (`alt-backspace`) sessions, with a preview |
|
||||
| `prefix o` | Sessions palette ([`tmux-sessions`](/shell/scripts#tmux-sessions)): fuzzy-find the other sessions, every window of every session, zoxide's and `~/.config`'s directories, and Rename/Kill items per session. Typed text that is not a session starts one by that name in its zoxide match |
|
||||
| `prefix t` | Project Tasks palette ([`pj-palette`](/shell/scripts#pj-palette)): install/dev/sync/make/compose quick actions plus every `pj` task. One-off tasks run in a full-width bottom split (25% of the window); dev servers and `docker compose up` run in a background `<session>:<tool-and-command>` session shown in a popup (`q` hides, `ctrl-c` asks `y/n` then stops), listed under Running to reopen |
|
||||
| `prefix y` / `prefix e` | Yazi / Neovim in a new window in the pane cwd (Ghostty `ctrl+shift+f` / `ctrl+shift+e`) |
|
||||
| `prefix g` | Lazygit in a 90% popup in the pane cwd (Ghostty `ctrl+shift+g`) |
|
||||
@@ -87,8 +87,7 @@ Labels longer than 27 characters end in `…`. The icon comes from tmux-nerd-fon
|
||||
| `joshmedeski/tmux-nerd-font-window-name` | Fills `#{window_icon}` from `tmux-nerd-font-window-name.yml` |
|
||||
| `tmux-plugins/tmux-resurrect` | `@resurrect-capture-pane-contents on` |
|
||||
| `tmux-plugins/tmux-continuum` | `@continuum-save-interval 10`, `@continuum-restore on` |
|
||||
| `omerxx/tmux-sessionx` | `@sessionx-bind o`; `@sessionx-zoxide-mode on` (a query that matches no session is resolved through zoxide into a new session); `@sessionx-fzf-builtin-tmux on` (`fzf --tmux` popup; needs fzf ≥ 0.53, bat for previews) |
|
||||
| `eduwass/tmux-palette` | `@palette-key C-Space` (root table, no prefix). Needs [Bun](https://bun.sh); tpm runs `bun install` on first load |
|
||||
| `prdlk/tmux-palette-plugin` | Fork of [eduwass/tmux-palette](https://github.com/eduwass/tmux-palette) that adds a custom palette `query` item (an item for the typed text, listed after the matches). `@palette-key C-Space` (root table, no prefix). Needs [Bun](https://bun.sh); tpm runs `bun install` on first load |
|
||||
|
||||
### Command palette
|
||||
|
||||
@@ -96,9 +95,10 @@ Labels longer than 27 characters end in `…`. The icon comes from tmux-nerd-fon
|
||||
|
||||
| File | Contents |
|
||||
| --- | --- |
|
||||
| `commands.json` | The kitty launchers ported as palette items: **Lazygit** (90% popup in the pane's cwd; kitty `ctrl+shift+g`), **Yazi** (new window; kitty `ctrl+shift+f`), **Neovim Split** (nvim in a split to the left, 60% of the pane; alias `nv`; kitty `ctrl+shift+e`), **Shell History (atuin)** (`atuin-pick` in a 25% split below; kitty `ctrl+shift+p`). Also **btop** (80% popup; aliases `top`, `htop`), **Lazydocker** (90% popup in the pane's cwd; alias `dd`), **mandible** (80% popup running [`mandible-pick`](/shell/scripts#mandible-pick); alias `man`), **television** (`tv channels`, the [channel picker](/tools/television), in a new window in the pane's cwd; alias `tv`), **gitframe** (git diff viewer in a new window in the pane's cwd; alias `gf`), **omp** (opens the omp palette; aliases `agent`, `ai`), **Project Tasks** (opens the tasks palette), **Sessions (sessionx)**, **Save Sessions**, and **Restore Sessions** (resurrect). Programs are started with `exec`, so the tab icon is the program's, not the shell's |
|
||||
| `commands.json` | The kitty launchers ported as palette items: **Lazygit** (90% popup in the pane's cwd; kitty `ctrl+shift+g`), **Yazi** (new window; kitty `ctrl+shift+f`), **Neovim Split** (nvim in a split to the left, 60% of the pane; alias `nv`; kitty `ctrl+shift+e`), **Shell History (atuin)** (`atuin-pick` in a 25% split below; kitty `ctrl+shift+p`). Also **btop** (80% popup; aliases `top`, `htop`), **Lazydocker** (90% popup in the pane's cwd; alias `dd`), **mandible** (80% popup running [`mandible-pick`](/shell/scripts#mandible-pick); alias `man`), **television** (`tv channels`, the [channel picker](/tools/television), in a new window in the pane's cwd; alias `tv`), **gitframe** (git diff viewer in a new window in the pane's cwd; alias `gf`), **omp** (opens the omp palette; aliases `agent`, `ai`), **Project Tasks** (opens the tasks palette), **Sessions** (opens the sessions palette; aliases `sx`, `ss`), **Save Sessions**, and **Restore Sessions** (resurrect). Programs are started with `exec`, so the tab icon is the program's, not the shell's |
|
||||
| `palettes/tasks.json` | The **Project Tasks** palette (`prefix t`, Ghostty `ctrl+shift+p` / `ctrl+shift+space`), fed by [`pj-palette`](/shell/scripts#pj-palette): running background tasks under Running, then `bun install`, `bun run dev`, `uv sync`, `uv run python`, `make`, `go run .`, `cargo run`, `docker compose up` as Quick items when the project has them, then every task `pj` finds, grouped by tool. One-off tasks run in a full-width split along the bottom (25% of the window) in their directory; `ctrl-c` stops a running task, and once it has exited, `enter` or `ctrl-c` closes the pane. Dev servers (`dev`/`start`/`serve`/`watch`/`preview` tasks) and `docker compose up` run in a background session `<session>:<tool-and-command>` shown in a popup: `q` hides it with the task still running, `ctrl-c` asks `Stop <session>? (y/n)` and on `y` stops the task and closes it |
|
||||
| `palettes/omp.json` | The **omp** palette, fed by [`pj-palette --omp`](/shell/scripts#pj-palette): this tmux session's `<session>:omp` (open it, or start it when not running), every other tmux session's running omp, and a Quit item per session. Running agents have a green icon and show `open` or `hidden` |
|
||||
| `palettes/sessions.json` | The **Sessions** palette (`prefix o`, Ghostty `ctrl+shift+o`), fed by [`tmux-sessions`](/shell/scripts#tmux-sessions): Sessions (the last one first, attached ones green), Windows, Zoxide, Config, Rename, Kill. Its `query` item lists the typed text last; `enter` on it runs `tmux-sessions --new <text>` |
|
||||
| `hidden.json` | Hides the built-in **Switch Theme...** item, and with it the Appearance section: the palette stays on the fixed cyberdream `theme.json` |
|
||||
| `shortcuts.json` | Ghostty `ctrl+shift` chords shown next to the built-in items they trigger (New Window → `Ctrl+Shift+T`, …) |
|
||||
| `theme.json` | Cyberdream: bg `#16181a`, panel `#1e2124`, selected `#243348` (the active-tab plate), muted `#7b8496`, accent `#5ea1ff` |
|
||||
|
||||
Reference in new issue
Block a user