refactor(hyprland): replace kitty-herdr with tern and adjust keybindings

- Replaced `kitty-herdr` with `tern` as the default scratchpad terminal
  across configs, scripts, and docs.
- Remapped window resize controls to `SUPER + CTRL + HJKL` and monitor
  navigation to `ALT` modifiers.
- Removed the `scrolloverview` plugin configuration and cleaned up
  obsolete menu bindings.
This commit is contained in:
Prad Nukala committed 2026-10-06 11:38:28 -04:00
1 parent 272a442613
commit 85d77ef90d
5 files changed
+35 -57

No files matched your search

+6 -4
View File
@@ -59,7 +59,8 @@ Omarchy's default bindings stay enabled. `omarchy_default_bindings` and `omarchy
| --- | --- |
| `^brave-www\.tldraw\.com__-Default$` | Workspace 3 |
| `^tldraw-offline$` | Workspace 5, fullscreen |
| `^com\.anthropic\.Claude$`, `^kitty-herdr$` | `special:scratchpad silent` |
| `^so\.stencil\.tern$` | `special:scratchpad silent` |
| `^com\.anthropic\.Claude$` | `special:claude silent` |
| `^com\.fastmail\.Fastmail$` | `special:fastmail silent` |
| `^Beeper$` | `special:beeper silent` |
| `brave-(www\.)?youtube\.com__.*`, title not matching `.*Picture.?in.?[Pp]icture.*` | Float, pin, size 30% × 30% of the monitor, move to `10, monitor_h*0.7-10` (bottom-left corner) |
@@ -176,7 +177,7 @@ Every binding defined in `bindings.lua`. Bindings not listed here are Omarchy de
| `ALT + Q` / `W` / `E` / `R` / `T` | Switch to workspace 1 / 2 / 3 / 4 / 5 | — |
| `ALT + SHIFT + Q` / `W` / `E` / `R` / `T` | Move window to workspace 1 / 2 / 3 / 4 / 5 | — |
| `SUPER + CTRL + S` | `omarchy-toggle-scratch scratchpad` | share menu |
| `SUPER + A` | `omarchy-toggle-scratch scratchpad` | — |
| `SUPER + A` | `omarchy-toggle-scratch scratchpad` (Tern) | — |
| `SUPER + O` | Focus next monitor | pop window out |
| `SUPER + SHIFT + O` | Move window to next monitor | Obsidian |
| `SUPER + CTRL + SHIFT + J` | Move window to next monitor | — |
@@ -276,7 +277,7 @@ Focuses an app's window, cycles to the next one on repeated presses, or launches
| `ghostty` | `ghostty` | `ghostty` |
| `browser` | zen, brave, chromium, google-chrome, firefox, librewolf, vivaldi, microsoft-edge, helium — excluding `chrome-`/`webapp-` web apps | `omarchy-launch-browser` |
| `brave` | `^brave` (Brave Origin and its web apps) | `brave-origin` |
| `terminal` | kitty, alacritty, ghostty, foot, wezterm — excluding `^kitty-herdr$` (the scratchpad terminal) | `omarchy-launch-terminal` |
| `terminal` | kitty, alacritty, ghostty, foot, wezterm (Tern, the scratchpad terminal, does not match) | `omarchy-launch-terminal` |
| `ai` | `claude\|hermes` | `hermes desktop` |
| anything else | `^APP$` | the argument as a command |
@@ -343,7 +344,8 @@ omarchy-toggle-scratch [scratchpad|fastmail|beeper]
| Profile | Special workspace | Home monitor | Residents (class → launch) |
| --- | --- | --- | --- |
| `scratchpad` | `special:scratchpad` | Apple Studio Display | `com.anthropic.Claude` → `claude-desktop`; `kitty-herdr` → `kitty --class=kitty-herdr --config ~/.config/kitty/herdr.conf` |
| `scratchpad` | `special:scratchpad` | Apple Studio Display | `so.stencil.tern` → `tern` |
| `claude` | `special:claude` | Apple Studio Display | `com.anthropic.Claude` → `claude-desktop` |
| `fastmail` | `special:fastmail` | focused | `com.fastmail.Fastmail` → `gtk-launch fastmail` |
| `beeper` | `special:beeper` | focused | `Beeper` → `gtk-launch beeper` |
+21 -46
View File
@@ -123,7 +123,7 @@ o.bind("SUPER + CTRL + J", "Next workspace", hl.dsp.focus({ workspace = "e+1" })
o.bind("SUPER + CTRL + K", "Previous workspace", hl.dsp.focus({ workspace = "e-1" }))
-- Scratch workspaces. Omarchy's SUPER + S is taken by the region screenshot
-- below, so the main toggle (kitty/herdr) lands on SUPER + CTRL + S, with
-- below, so the main toggle (Tern) lands on SUPER + CTRL + S, with
-- SUPER + A (free in Omarchy) as the home-row alias. Claude Desktop has its
-- own scratch workspace on SUPER + SHIFT + A and SUPER + C (the latter
-- replaces Omarchy's universal copy). SUPER + ALT + S (send window to the
@@ -138,7 +138,7 @@ o.bind("SUPER + CTRL + K", "Previous workspace", hl.dsp.focus({ workspace = "e-1
-- under SUPER + CTRL + ALT + E / M in the Applications block below.
hl.unbind("SUPER + CTRL + S") -- was: share menu
o.bind("SUPER + CTRL + S", "Toggle scratch workspace", "omarchy-toggle-scratch scratchpad")
o.bind("SUPER + A", "Toggle Herdr scratch workspace", "omarchy-toggle-scratch scratchpad")
o.bind("SUPER + A", "Toggle Tern scratch workspace", "omarchy-toggle-scratch scratchpad")
hl.unbind("SUPER + SHIFT + A") -- was: ChatGPT web app
o.bind("SUPER + SHIFT + A", "Toggle Claude scratch workspace", "omarchy-toggle-scratch claude")
hl.unbind("SUPER + C") -- was: universal copy
@@ -156,11 +156,12 @@ end
hl.unbind("SUPER + O") -- was: pop window out
hl.unbind("SUPER + SHIFT + O") -- was: Obsidian (moved to SUPER + CTRL + ALT + O)
o.bind("SUPER + O", "Focus next monitor", hl.dsp.focus({ monitor = "+1" }))
o.bind("SUPER + SHIFT + O", "Move window to next monitor", hl.dsp.window.move({ monitor = "+1" }))
o.bind("SUPER + CTRL + SHIFT + J", "Move window to next monitor", hl.dsp.window.move({ monitor = "+1" }))
o.bind("SUPER + CTRL + SHIFT + K", "Move window to previous monitor", hl.dsp.window.move({ monitor = "-1" }))
o.bind("ALT + O", "Focus next monitor", hl.dsp.focus({ monitor = "+1" }))
o.bind("ALT + SHIFT + O", "Move window to next monitor", hl.dsp.window.move({ monitor = "+1" }))
o.bind("ALT + SHIFT + J", "Move window to next monitor", hl.dsp.window.move({ monitor = "+1" }))
o.bind("ALT + SHIFT + K", "Move window to previous monitor", hl.dsp.window.move({ monitor = "-1" }))
-- Named workspaces, in place of niri-dynamic-workspaces.
o.bind("SUPER + SHIFT + CTRL + ALT + W", "Workspace w", hl.dsp.focus({ workspace = "name:w" }))
@@ -175,10 +176,15 @@ o.bind("SUPER + SHIFT + R", "Cycle window size back", "omarchy-cycle-window-size
-- Alt+Shift+hjkl. Hyprland resizes by pixels, not by percent, so 100 px
-- replaces the niri 10%.
o.bind("ALT + H", "Shrink window width", hl.dsp.window.resize({ x = -100, y = 0, relative = true }))
o.bind("ALT + L", "Grow window width", hl.dsp.window.resize({ x = 100, y = 0, relative = true }))
o.bind("ALT + K", "Shrink window height", hl.dsp.window.resize({ x = 0, y = -100, relative = true }))
o.bind("ALT + J", "Grow window height", hl.dsp.window.resize({ x = 0, y = 100, relative = true }))
hl.unbind("SUPER + CTRL + H") -- was: toggle window gaps
hl.unbind("SUPER + CTRL + L") -- was: toggle window gaps
hl.unbind("SUPER + CTRL + K") -- was: toggle window gaps
hl.unbind("SUPER + CTRL + J") -- was: toggle window gaps
o.bind("SUPER + CTRL + H", "Shrink window width", hl.dsp.window.resize({ x = -100, y = 0, relative = true }))
o.bind("SUPER + CTRL + L", "Grow window width", hl.dsp.window.resize({ x = 100, y = 0, relative = true }))
o.bind("SUPER + CTRL + K", "Shrink window height", hl.dsp.window.resize({ x = 0, y = -100, relative = true }))
o.bind("SUPER + CTRL + J", "Grow window height", hl.dsp.window.resize({ x = 0, y = 100, relative = true }))
-- Same width steps on SUPER + , / SUPER + . (the < and > keys). Key names are
-- the lower-case xkb keysyms; "COMMA"/"PERIOD" would not match.
@@ -233,9 +239,6 @@ o.bind("SUPER + CTRL + ALT + T", "tldraw offline", "omarchy-launch-or-focus tldr
hl.unbind("SUPER + CTRL + ALT + W") -- was: toggle weather
-- gtk-launch takes the desktop-entry id: TLDraw.desktop, not tldraw_offline,
-- which does not exist (the old command could only focus, never launch).
o.bind("SUPER + CTRL + ALT + W", "tldraw", "omarchy-launch-or-focus tldraw \"gtk-launch TLDraw\"")
o.bind("SUPER + CTRL + ALT + SPACE", "Sticky notes", "omarchy-launch-or-focus sticky \"gtk-launch io.github.faridjaff.StickyNotesCanvas\"")
hl.unbind("SUPER + SHIFT + G") -- was: Signal
-- The ssh/mosh command and tmux keymaps live in ~/.config/kitty/goliath.conf
@@ -270,44 +273,16 @@ o.bind("SUPER + F24", "Dictate to Hermes", "voxtype record toggle --profile herm
-- Omarchy menu. SUPER + ALT + SPACE is the apps menu.
hl.unbind("SUPER + SHIFT + SPACE") -- was: toggle top bar
o.bind("SUPER + SHIFT + SPACE", "Emojis", "omarchy-shell shell toggle omarchy.emojis")
hl.unbind("SUPER + P") -- was: pseudo window
o.bind("SUPER + P", "Clipboard manager", "omarchy-shell shell toggle omarchy.clipboard")
hl.unbind("SUPER + SPACE") -- was: pseudo window
-- Omarchy's SUPER + SPACE is ALT + SPACE, so the key is free in Omarchy.
o.bind("ALT + SPACE", "Toggle Launcher", "omarchy-menu toggle launcher")
-- Mod+Shift+Return was the vicinae window switcher. ScrollOverview on
-- ALT + TAB below takes that job, so SUPER + SHIFT + RETURN keeps its default
-- job of opening the browser.
-- ─── ScrollOverview plugin ──────────────────────────────────────────────────
if hl.plugin.scrolloverview then
hl.config({
plugin = {
scrolloverview = {
gesture_distance = 300, -- how far is the "max" for the gesture
scale = 0.5, -- preferred overview scale
workspace_gap = 100,
layout = "vertical", -- vertical or horizontal
wallpaper = 2, -- 0: global only, 1: per-workspace only, 2: both
blur = true, -- blur only the main overview wallpaper
shadow = {
enabled = true,
range = 50,
},
},
},
})
-- Omarchy puts two binds on ALT + TAB: focus next window, and reveal the
-- active window on top. Both go, and the overview takes the key. Written with
-- o.bind and a description, so it shows up in the keybindings menu.
hl.unbind("ALT + TAB")
o.bind("ALT + TAB", "Toggle overview", function()
hl.plugin.scrolloverview.overview("toggle all")
end)
end
--
-- flea --default: begin. Written by `flea --default`; `flea --default off` removes the block whole.
hl.unbind("SUPER + SHIFT + F")
o.bind("SUPER + SHIFT + F", "File manager", { launch = 'flea --gui' })
+4 -3
View File
@@ -50,9 +50,10 @@ o.window([[^tldraw-offline$]], { workspace = "5", fullscreen = true })
-- them; "silent" leaves the reveal to the script. Under the master layout the
-- first window to appear takes the master slot; the rest stack beside it.
--
-- SUPER + A / SUPER + CTRL + S: kitty/herdr; SUPER + SHIFT + A: Claude
-- Desktop. Each alone on its own workspace, Studio Display.
o.window([[^kitty-herdr$]], { workspace = "special:scratchpad silent" })
-- SUPER + A / SUPER + CTRL + S: Tern; SUPER + SHIFT + A: Claude Desktop.
-- Each alone on its own workspace, Studio Display. Tern has no per-window
-- class flag, so every Tern window lands on the scratchpad.
o.window([[^so\.stencil\.tern$]], { workspace = "special:scratchpad silent" })
o.window([[^com\.anthropic\.Claude$]], { workspace = "special:claude silent" })
-- SUPER + CTRL + ALT + E / M: Fastmail and Beeper, each alone on the
-- focused monitor.
+3 -3
View File
@@ -129,9 +129,9 @@ elif [[ $APP == "brave" ]]; then
DEFAULT_SPAWN="brave-origin"
elif [[ $APP == "terminal" ]]; then
# Cycle all terminals. kitty-herdr is the SUPER + A scratch terminal
# (omarchy-toggle-scratch owns it), so it stays out of the rotation.
INSTANCES=($(addresses_matching '(kitty|alacritty|ghostty|foot|wezterm)' '^kitty-herdr$'))
# Cycle all terminals. Tern (so.stencil.tern) is the SUPER + A scratch
# terminal and the pattern below already leaves it out.
INSTANCES=($(addresses_matching '(kitty|alacritty|ghostty|foot|wezterm)'))
DEFAULT_LAUNCHER="omarchy-launch-terminal"
elif [[ $APP == "ai" ]]; then
@@ -25,7 +25,7 @@ case ${1:-scratchpad} in
scratchpad)
NAME="scratchpad"
HOME_MONITOR="Apple Computer Inc StudioDisplay 0x984262A7"
MEMBERS=("kitty-herdr|kitty --class=kitty-herdr --config $HOME/.config/kitty/herdr.conf")
MEMBERS=("so.stencil.tern|tern")
;;
claude)
NAME="claude"