The repo was one machine's capture. It is now a set of profiles built from layers under profiles/: machines/ hp-laptop, macbook-air-m2, coder-desktop roles/ developer, devops, ai-agents features/ handoff (lan-mouse) shared base, personal, personal-desktop A profile resolves to its includes (depth first), any --roles, then itself; for a path several layers provide, the last wins. install.sh --show prints the layers and which one owns each file. Hyprland settings no longer share a file: base's hyprland.lua loads ~/.config/hypr/layers/*.lua with Omarchy's own require_all, and bindings.lua stays stock so nothing binds twice. Verified with Hyprland 0.56.2 --verify-config for all three profiles, plus a broken probe layer to prove the directory is loaded. packages.txt gains per-line arch (Arch Linux ARM lacks opencode, codex, mise, shellcheck) and cmd= (skip when dotfiles' ~/.local/bin already provides the command), and an [ignore] section that replaces capture.sh's hard-coded list. Tab-separated records would have collapsed empty fields under read, so package records use the unit separator. hp-laptop: re-captured. monitors.lua catch-all scale is now 1, shell.json has four new plugins, fix-stuck-displays has its connector-name fix, navbar-cat is gone, plugin-manager and omarchy-phone are pinned, the herdr-hud working tree is re-diffed and bin/herdr-web rides along. Its handoff peer is now the Air (192.168.1.49); the old default list was the HP's own addresses, written from the Air's side. macbook-air-m2: captured read-only over SSH as it is (no themes, plugins or bar changes). Its LAN_MOUSE_POINTER_SCALE=0.7 moves from the shared unit into a lan-mouse.service.d drop-in in its own layer. coder-desktop: the Omarchy settings covert-cloud's image used to patch in by hand (Virtual-1 at 1920x1080, no animations, stay-awake, Retro 82 once), for the image to apply at a pinned commit. Roles reach it per workspace via install.sh --roles ... --no-clobber. capture.sh writes each file back into the layer that owns it, and refuses to run before the first layered install unless --force, since the old file shapes would land in shared layers. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0153egowV1Xw2RNjZnSyZicc
97 lines
2.7 KiB
TOML
97 lines
2.7 KiB
TOML
onboarding = false
|
|
# Mirrors the Omarchy tmux config in config/tmux/tmux.conf
|
|
# tmux session -> herdr workspace, tmux window -> herdr tab, tmux pane -> herdr pane
|
|
|
|
[theme]
|
|
# tmux ran on the terminal's own palette (bg=default, fg=default, ANSI blue accents)
|
|
name = "terminal"
|
|
|
|
[theme.custom]
|
|
# The active tab is drawn as panel_bg text on an accent background, so panel_bg
|
|
# has to be dark for it to read - same colors as status-left's "#[fg=black,bg=blue]"
|
|
panel_bg = "black"
|
|
|
|
[terminal]
|
|
# Matches -c "#{pane_current_path}" on every split, window, and session
|
|
new_cwd = "follow"
|
|
|
|
[keys]
|
|
prefix = "ctrl+space"
|
|
|
|
# Config and help
|
|
reload_config = "prefix+q"
|
|
help = "prefix+?"
|
|
detach = "prefix+d"
|
|
|
|
# Copy mode
|
|
copy_mode = "prefix+["
|
|
|
|
# Panes
|
|
split_horizontal = ["prefix+h", "alt+enter"]
|
|
split_vertical = ["prefix+v", "alt+shift+enter"]
|
|
close_pane = ["prefix+x", "alt+esc"]
|
|
zoom = "prefix+z"
|
|
last_pane = "prefix+;"
|
|
|
|
focus_pane_left = "ctrl+alt+left"
|
|
focus_pane_down = "ctrl+alt+down"
|
|
focus_pane_up = "ctrl+alt+up"
|
|
focus_pane_right = "ctrl+alt+right"
|
|
|
|
resize_mode = ["prefix+ctrl+left", "prefix+ctrl+down", "prefix+ctrl+up", "prefix+ctrl+right"]
|
|
|
|
# Like resize-pane on C-M-S-arrows
|
|
resize_pane_left = "ctrl+alt+shift+left"
|
|
resize_pane_down = "ctrl+alt+shift+down"
|
|
resize_pane_up = "ctrl+alt+shift+up"
|
|
resize_pane_right = "ctrl+alt+shift+right"
|
|
|
|
# No tmux equivalent; herdr's default prefix+shift+p is taken by previous session
|
|
rename_pane = "prefix+shift+o"
|
|
|
|
# Windows -> tabs
|
|
new_tab = "prefix+c"
|
|
rename_tab = "prefix+r"
|
|
close_tab = "prefix+k"
|
|
switch_tab = ["prefix+1..9", "alt+1..9"]
|
|
previous_tab = ["prefix+p", "alt+left"]
|
|
next_tab = ["prefix+n", "alt+right"]
|
|
|
|
# Like swap-window -t -1/+1 on M-S-Left/Right
|
|
move_tab_previous = "alt+shift+left"
|
|
move_tab_next = "alt+shift+right"
|
|
|
|
# Sessions -> workspaces
|
|
new_workspace = "prefix+shift+c"
|
|
rename_workspace = "prefix+shift+r"
|
|
close_workspace = "prefix+shift+k"
|
|
previous_workspace = ["prefix+shift+p", "alt+up"]
|
|
next_workspace = ["prefix+shift+n", "alt+down"]
|
|
|
|
[ui]
|
|
accent = "blue"
|
|
|
|
# tmux drew single-line dividers between adjacent panes and no outer frame
|
|
pane_gaps = false
|
|
pane_outer_borders = false
|
|
|
|
# tmux had no scrollbar column beside its panes
|
|
pane_scrollbars = false
|
|
|
|
# kill-window and kill-session never asked
|
|
confirm_close = false
|
|
|
|
# automatic-rename gave windows a name without prompting
|
|
prompt_new_tab_name = false
|
|
|
|
# set -g mouse on
|
|
mouse_capture = true
|
|
|
|
# status-right had the zoom flag followed by #h
|
|
tab_bar_right = [{ type = "zoom" }, { type = "hostname" }]
|
|
|
|
# set -g set-titles on / set -g set-titles-string '#h:#W', where tmux's #W was
|
|
# the basename of the pane cwd. This is what Hyprland shows in the group bar,
|
|
# and it resolves on the server so remote sessions name the remote host.
|
|
window_title = "{hostname}: {workspace}"
|