docs(docs): update terminal defaults and Umbriel package documentation

This commit is contained in:
Prad Nukala committed 2026-10-16 14:29:50 -04:00
1 parent 01c49ab76e
commit 965cdaa000
5 files changed
+28 -23

No files matched your search

+3 -3
View File
@@ -23,7 +23,7 @@ One manifest per platform, plus a `shared` block. Any edit to the file changes t
| Group | Packages |
| --- | --- |
| Shell and editors | `fish`, `neovim`, `helix`, `micro`, `tmux` |
| Terminal | `kitty` |
| Terminals | `ghostty` (default), `kitty` |
| TUI tools (tmux-palette, television cables) | `yazi`, `lazygit`, `lazydocker`, `docker`, `docker-compose`, `btop`, `fastfetch`, `onefetch`, `television`, `serie`, `tig`, `gitui`, `tldr`, `navi`, `mdfried` |
| VCS and forge | `git`, `github-cli`, `git-delta`, `diffnav`, `tea` |
| Search and files | `fzf`, `fd`, `ripgrep`, `zoxide`, `eza`, `bat`, `jq`, `duf` |
@@ -41,7 +41,7 @@ One manifest per platform, plus a `shared` block. Any edit to the file changes t
| pacman | `niri`, `noctalia`, `xwayland-satellite`, `polkit-gnome`, `uwsm`, `xdg-user-dirs`; Wayland utilities `wl-clipboard`, `cliphist`, `wtype`, `ydotool`, `grim`, `slurp`, `hyprpicker`, `pamixer`, `brightnessctl`, `libnotify`; apps `nautilus`, `imv`, `mpv`, `evince`, `chromium`, `obsidian`; strata runtime deps `bubblewrap`, `desktop-file-utils`, `fontconfig`, `gstreamer`, `gst-libav`, `gst-plugins-base`, `gst-plugins-good`, `gtk4`, `gtksourceview5`, `gvfs`, `poppler-glib`, `xdg-utils` |
| AUR (or a sync repo with the same name) | `vicinae-bin`, `tldraw-offline-bin`; desktop apps `beeper-bin`, `fastmail`, `1password`, `brave-origin-bin`, `claude-desktop`, `spotify` |
| `[omarchy]` repo (`packages.arch.desktop.omarchy`, only when `pacman-conf -l` lists that repo) | `herdr`, `flea`, `voxtype-bin`, `xdg-terminal-exec`, `hyprland-preview-share-picker` |
| `[cachyos]` repo (`packages.arch.desktop.cachyos`, only when `pacman-conf -l` lists that repo) | `umbriel` (the AUR `umbriel` is a placeholder and `umbriel-git` conflicts with the repo build) |
| `[cachyos]` repo (`packages.arch.desktop.cachyos`, only when `pacman-conf -l` lists that repo) | `umbriel`, `xdg-desktop-portal-umbriel` (the AUR `umbriel` is a placeholder and `umbriel-git` conflicts with the repo build) |
Hyprland, Waybar and the `omarchy-*` commands come with the Omarchy install and are not declared. `niri-dynamic-workspaces` (niri startup) has no package; install it by hand. strata (the folder handler) has no package either; [15-tools](/chezmoi/scripts#15-tools) runs its installer.
@@ -52,7 +52,7 @@ Hyprland, Waybar and the `omarchy-*` commands come with the Omarchy install and
`fish`, `neovim`, `helix`, `tmux`, `yazi`, `lazygit`, `lazydocker`, `btop`, `fastfetch`, `onefetch`, `television`, `serie`, `tig`, `gitui`, `tldr`, `navi`, `git`, `gh`, `git-delta`, `tea`, `fzf`, `fd`, `ripgrep`, `zoxide`, `eza`, `bat`, `jq`, `duf`, `ffmpeg`, `ffmpegthumbnailer`, `poppler`, `resvg`, `imagemagick`, `chafa`, `sevenzip`, `mosh`, `mise`, `gum`, `glow`, `atuin`, `starship`, `zsh-syntax-highlighting`, `topgrade`
`packages.darwin.cask`, installed with `brew install --cask`: `kitty`, `font-victor-mono-nerd-font`.
`packages.darwin.cask`, installed with `brew install --cask`: `ghostty`, `kitty`, `font-victor-mono-nerd-font`.
Compared with Arch, macOS has no `micro`, `diffnav`, `mdfried`, `docker`, `sshfs`, `tailscale`, `unzip`, or `wget`, and gets `topgrade` from Homebrew instead of the AUR. The role does not change the macOS list.
+1
View File
@@ -143,6 +143,7 @@ mise tool versions stay local to each machine and are not managed.
.config/fontconfig
.config/fontconfig/**
.config/mimeapps.list
.config/xdg-terminals.list
.config/systemd
.config/systemd/**
.local/bin/kitty-day-save
+2 -2
View File
@@ -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/umbriel`, `~/.config/uwsm`, `~/.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/umbriel-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/umbriel`, `~/.config/uwsm`, `~/.config/noctalia`, `~/.config/vicinae`, `~/.config/niri-dynamic-workspaces`, `~/.config/fontconfig`, `~/.config/mimeapps.list`, `~/.config/xdg-terminals.list`, `~/.config/systemd`, `~/.local/bin/kitty-day-save`, `~/.local/bin/niri-launch`, `~/.local/bin/umbriel-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.
:::
@@ -31,6 +31,6 @@ Three Wayland compositors are configured side by side. niri is the original setu
| pacman | `niri`, `noctalia` (the CachyOS build where that repo is configured, else `extra`), `xwayland-satellite`, `polkit-gnome`, `uwsm`, `xdg-user-dirs`, Wayland utilities (`wl-clipboard`, `cliphist`, `wtype`, `ydotool`, `grim`, `slurp`, `hyprpicker`, `pamixer`, `brightnessctl`, `libnotify`), the bound apps (`nautilus`, `imv`, `mpv`, `evince`, `chromium`, `obsidian`), and strata's runtime deps |
| AUR via `yay`/`paru` (a sync repo wins when it has the name) | `vicinae-bin`, `tldraw-offline-bin`, and the desktop apps `beeper-bin`, `fastmail`, `1password`, `brave-origin-bin`, `claude-desktop`, `spotify` |
| `[omarchy]` repo, when configured | `herdr`, `flea`, `voxtype-bin`, `xdg-terminal-exec`, `hyprland-preview-share-picker` |
| `[cachyos]` repo, when configured | `umbriel` |
| `[cachyos]` repo, when configured | `umbriel`, `xdg-desktop-portal-umbriel` |
AUR names that an installed package already provides are skipped; with no `yay` or `paru` the script bootstraps `yay` first. strata, the default file manager, comes from its own installer in [15-tools](/chezmoi/scripts#15-tools). 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 and [packages.yaml](/chezmoi/data#packagesyaml) for the complete lists.
+13 -12
View File
@@ -6,7 +6,7 @@ description: Umbriel scrolling compositor config — Noctalia-only session, niri
[Umbriel](https://docs.noctalia.dev/umbriel/) is a wlroots scrolling compositor from the Noctalia project. The config ports the [niri](/desktop/niri) layout, rules, springs, and binds, and adds the per-app scratch workspaces from [Hyprland](/desktop/hyprland) as Umbriel scratchpads. The session starts only `noctalia`: its launcher, clipboard history, polkit agent, notifications, and OSD replace vicinae, cliphist, and polkit-gnome.
:::note
Linux `desktop` and `laptop` roles only (`.chezmoiignore.tmpl`). The `umbriel` package comes from the `[cachyos]` repo (`packages.arch.desktop.cachyos`); the AUR `umbriel` is a placeholder and `umbriel-git` conflicts with the repo build, so other Arch machines install it by hand.
Linux `desktop` and `laptop` roles only (`.chezmoiignore.tmpl`). `umbriel` and its portal backend `xdg-desktop-portal-umbriel` (screenshots and screen sharing for portal clients) come from the `[cachyos]` repo (`packages.arch.desktop.cachyos`); the AUR `umbriel` is a placeholder and `umbriel-git` conflicts with the repo build, so other Arch machines install them by hand.
:::
## Files
@@ -32,12 +32,13 @@ Umbriel watches these files and applies a valid save immediately; `umbriel confi
| Keyboard | `us`, repeat delay 400 ms, rate 50, NumLock on | niri |
| Touchpad | natural scroll, tap, left-right-middle, sensitivity 1.0 | niri |
| Tablet, touch | mapped to `eDP-1` | niri |
| Cursor | `capitaine-cursors-light` 24, hidden while typing | niri |
| Layout | gap 8, presets 0.333 / 0.5 / 0.667, new columns 0.5, focus never centers, a lone column centers | niri |
| Appearance | corner radius 10, wallpaper-only blur on every window, tab bar hidden for one tab | niri |
| Cursor | `capitaine-cursors-light` 24, hidden while typing, follows keyboard focus (so scratchpads open on the output focus moved to) | niri, Umbriel |
| Layout | gap 8, presets 0.333 / 0.5 / 0.667, new columns 1/3 on every output, focus never centers, a lone column centers | niri |
| Appearance | corner radius 10, no shadows, wallpaper-only blur on every window, tab bar hidden for one tab | niri |
| Activation | apps may focus and reveal their windows (`focus_on_activate`), e.g. Noctalia notification actions | niri `honor-xdg-activation-with-invalid-serial` |
| Overview | zoom 0.4; no hot corner | niri |
| Animation | springs `0.82,1125` (open), `0.88,2025` (close), `0.85,1463` (move, overview, scratchpad), `0.78,1350` (workspaces) | niri |
| Environment | `ELECTRON_OZONE_PLATFORM_HINT=auto`, `QT_QPA_PLATFORM=wayland`, `QT_QPA_PLATFORMTHEME=kde`, `QT_STYLE_OVERRIDE=Darkly` | niri |
| Environment | `TERMINAL=ghostty` (default terminal), `ELECTRON_OZONE_PLATFORM_HINT=auto`, `QT_QPA_PLATFORM=wayland`, `QT_QPA_PLATFORMTHEME=kde`, `QT_STYLE_OVERRIDE=Darkly` | niri, plus `TERMINAL` |
Umbriel owns `XDG_CURRENT_DESKTOP`, so niri's override is not carried over. niri's `XDG_MENU_PREFIX`/`kbuildsycoca6` startup (Dolphin associations) and the `INIR_*` quickshell variables are dropped.
@@ -47,11 +48,11 @@ Matched by monitor identity (`umbriel outputs` → `Config name`). The external
| Display | Physical | Scale | Logical | Position | Other |
| --- | --- | --- | --- | --- | --- |
| Laptop (Tianma TL134ADXP03, `eDP-1`) | 2560x1600, 224 ppi | 1.5 | 1706x1066 | `0, 0` | VRR in fullscreen, cursor starts here, new columns full width |
| Apple Studio Display | 5120x2880, 218 ppi | 2 | 2560x1440 | `-2560, -374` | new columns 0.5 |
| Samsung S34CG50 ultrawide | 3440x1440@100, 110 ppi | 1 | 3440x1440 | `-3440, -374` | VRR in fullscreen, new columns 0.333 |
| Portable HDMI (AOP 16PM1QB) | 1920x1080, 141 ppi, rotated 90° | 1.25 | 864x1536 | `-864, -470` | new columns full width |
| Portable USB-C (ASUS MB16AC) | 1920x1080, 141 ppi | 1.25 | 1536x864 | `-1536, 202` | new columns full width |
| Laptop (Tianma TL134ADXP03, `eDP-1`) | 2560x1600, 224 ppi | 1.5 | 1706x1066 | `0, 0` | VRR in fullscreen, cursor starts here |
| Apple Studio Display | 5120x2880, 218 ppi | 2 | 2560x1440 | `-2560, -374` | |
| Samsung S34CG50 ultrawide | 3440x1440@100, 110 ppi | 1 | 3440x1440 | `-3440, -374` | VRR in fullscreen |
| Portable HDMI (AOP 16PM1QB) | 1920x1080, 141 ppi, rotated 90° | 1.25 | 864x1536 | `-864, -470` | |
| Portable USB-C (ASUS MB16AC) | 1920x1080, 141 ppi | 1.25 | 1536x864 | `-1536, 202` | |
The Studio Display's phantom 640x480 connector, which niri switched off as `DP-5`, needs no rule: Umbriel leaves connectors without a preferred mode or identity disabled.
@@ -115,7 +116,7 @@ Noctalia's bar, panels, notifications, dock, OSD, and desktop widgets get blur t
| Keys | Cycles | Launches |
| --- | --- | --- |
| `Super+Alt+Ctrl+J` | kitty, alacritty, Ghostty | `kitty` |
| `Super+Alt+Ctrl+J` | Ghostty, kitty, alacritty | `ghostty` |
| `Super+Alt+Ctrl+K` | Brave Origin | `brave-origin` |
| `Super+Alt+Ctrl+G` | Ghostty | `ghostty` |
| `Super+Alt+Ctrl+O` | Obsidian | `obsidian` |
@@ -131,7 +132,7 @@ Noctalia's bar, panels, notifications, dock, OSD, and desktop widgets get blur t
| Keys | Action |
| --- | --- |
| `Mod+H` / `Mod+L` | focus left / right |
| `Mod+H` / `Mod+L` | focus left / right, or the output on that side at the strip's edge |
| `Mod+J` / `Mod+K` | focus down / up, or the next / previous workspace at the edge |
| `Mod+BackSpace` | previously focused window |
| `Mod+WheelUp` / `Mod+WheelDown` | focus left / right |
+9 -6
View File
@@ -3,17 +3,19 @@ title: Ghostty
description: Ghostty as a tmux-only terminal — every window attaches to tmux, and ctrl+shift chords drive tmux.
---
Ghostty is only a [tmux](/terminal/tmux) client. tmux owns tabs (windows), splits (panes), sessions, and persistence. Ghostty draws the text and handles the clipboard and font size.
Ghostty is the default terminal and only a [tmux](/terminal/tmux) client. tmux owns tabs (windows), splits (panes), sessions, and persistence. Ghostty draws the text and handles the clipboard and font size.
It is the default everywhere a desktop picks a terminal: `$TERMINAL` in the [Umbriel](/desktop/umbriel) session (Noctalia runs `Terminal=true` launcher entries with it), and the first entry of `~/.config/xdg-terminals.list` (`dot_config/xdg-terminals.list`, desktop roles only) for `xdg-terminal-exec`, `niri-launch terminal`, and `omarchy-launch-terminal`.
| | |
| --- | --- |
| Source | [prdlk/ghostty](https://github.com/prdlk/ghostty) via `.chezmoiexternals/ghostty.toml`: `config`, `config.ghostty`, `themes/` |
| Source | [prdlk/ghostty](https://github.com/prdlk/ghostty) via `.chezmoiexternals/ghostty.toml`: `config`, `themes/` |
| Target | `~/.config/ghostty/` |
| Install | Not listed in `.chezmoidata/packages.yaml`; install separately |
| Install | `ghostty` in `packages.arch.pacman` and `packages.darwin.cask` |
`~/.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.
`config` holds every setting, ending in `theme = noctalia`.
## Options
@@ -44,7 +46,7 @@ Every Ghostty window gets its own tmux session; no two windows mirror the same o
Before starting tmux, the script puts mise's shims on `PATH`. A server started from a desktop-launched Ghostty therefore finds the tools tmux plugins shell out to: bun for the palette, fzf, and zoxide.
The window title is the tmux session name (`set-titles-string '#S'`), so the compositor's window groups list one entry per 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`.
The window title is the tmux session name (`set-titles-string '#S'`), so the compositor's window groups list one entry per session. tmux's tab bar keeps its own fixed cyberdream colors, so it no longer matches Ghostty's Noctalia background.
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).
@@ -88,6 +90,7 @@ Closing a window only detaches its session; the shells keep running in the tmux
| Theme | Notes |
| --- | --- |
| `cyberdream` | Active. Upstream `extras/ghostty/cyberdream` from [cyberdream.nvim](https://github.com/scottmckendry/cyberdream.nvim), the palette shared with tmux, nvim, yazi, and television. |
| `noctalia` | Active. Written by Noctalia's built-in `ghostty` template (enabled in `[theme.templates] builtin_ids` of `~/.local/state/noctalia/settings.toml`, which is runtime state, not managed) from the active shell palette, currently the Monochrome community palette with pure black: background `#000000`, foreground `#828282`, greys for the ANSI colors. Noctalia rewrites it and reloads Ghostty on every theme change; the repo's `.gitignore` excludes it. |
| `cyberdream` | 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`. |