feat(config): enhance scratchpad toggles, add workspace rules, adjust opacity and font size

This commit is contained in:
Prad Nukala committed 2026-09-21 16:34:26 -04:00
1 parent 989fac13d1
commit f30eee4215
6 files changed
+88 -25

No files matched your search

+31 -15
View File
@@ -111,18 +111,22 @@ hl.unbind("SUPER + CTRL + K") -- was: Herdr keybindings
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" }))
-- Scratchpad. Omarchy's SUPER + S is taken by the region screenshot below, so
-- the special-workspace toggle lands here. SUPER + ALT + S (send window to
-- the scratchpad) is still the Omarchy default and needs no line.
-- Scratch workspaces. Omarchy's SUPER + S is taken by the region screenshot
-- below, so the main toggle lands on SUPER + CTRL + S, with SUPER + A (free
-- in Omarchy) as the home-row alias. SUPER + ALT + S (send window to the
-- scratchpad) is still the Omarchy default and needs no line.
--
-- All of them go through ~/.local/bin/omarchy-toggle-scratch rather than the
-- raw special-workspace toggle: it opens each workspace on its home monitor
-- (the raw toggle uses the focused one), and on reveal it starts whichever
-- resident is missing instead of sliding an empty workspace into view. The
-- residents are pinned to their workspaces by window rules in
-- hypr/hyprland.lua. Fastmail, Beeper and YouTube have their own scratch
-- workspaces under SUPER + CTRL + ALT + E / M / Y in the Applications block
-- below.
hl.unbind("SUPER + CTRL + S") -- was: share menu
o.bind("SUPER + CTRL + S", "Toggle scratchpad", hl.dsp.workspace.toggle_special("scratchpad"))
-- Mod+A is the scratch terminal: the same scratchpad toggle, except an empty
-- scratchpad starts kitty with ~/.config/kitty/herdr.conf (class kitty-herdr,
-- pinned to the scratchpad by the window rule in hypr/hyprland.lua) instead of
-- sliding an empty workspace into view. SUPER + A is free in Omarchy.
-- Needs ~/.local/bin/omarchy-toggle-scratch.
o.bind("SUPER + A", "Toggle scratch terminal", "omarchy-toggle-scratch")
o.bind("SUPER + CTRL + S", "Toggle scratch workspace", "omarchy-toggle-scratch scratchpad")
o.bind("SUPER + A", "Toggle scratch workspace", "omarchy-toggle-scratch scratchpad")
-- Workspaces 1 to 5 on the home row of the left half: ALT to focus,
-- ALT + SHIFT to send the window there. No Omarchy default uses ALT with a
@@ -179,14 +183,22 @@ o.bind("SUPER + CTRL + ALT + H", "AI apps", "omarchy-cycle ai")
o.bind("SUPER + CTRL + ALT + J", "Terminals", "omarchy-cycle-terminal")
o.bind("SUPER + CTRL + ALT + K", "Browsers", "omarchy-cycle-browser")
o.bind("SUPER + CTRL + ALT + G", "Ghostty", "omarchy-cycle ghostty")
o.bind("SUPER + CTRL + ALT + Y", "Web apps", "omarchy-cycle webapp")
o.bind("SUPER + CTRL + ALT + O", "Obsidian", "omarchy-cycle obsidian")
o.bind("SUPER + CTRL + ALT + F", "File manager", "omarchy-launch-or-focus nautilus \"gtk-launch org.gnome.Nautilus\"")
o.bind("SUPER + CTRL + ALT + E", "Fastmail", "omarchy-launch-or-focus fastmail \"gtk-launch fastmail\"")
o.bind("SUPER + CTRL + ALT + M", "Beeper", "omarchy-launch-or-focus beeper \"gtk-launch beeper\"")
-- Fastmail, Beeper and the YouTube web app each live on their own scratch
-- workspace (window rules in hypr/hyprland.lua); the toggle reveals it on the
-- focused monitor and starts the app only when no window of it exists --
-- the web-app launcher would otherwise open a second window every time.
o.bind("SUPER + CTRL + ALT + E", "Fastmail", "omarchy-toggle-scratch fastmail")
o.bind("SUPER + CTRL + ALT + M", "Beeper", "omarchy-toggle-scratch beeper")
o.bind("SUPER + CTRL + ALT + Y", "YouTube", "omarchy-toggle-scratch youtube") -- was: web apps cycle
hl.unbind("SUPER + SHIFT + Y") -- was: YouTube via the desktop entry (new window every press)
o.bind("SUPER + SHIFT + Y", "YouTube", "omarchy-toggle-scratch youtube")
hl.unbind("SUPER + CTRL + ALT + T") -- was: show time
o.bind("SUPER + CTRL + ALT + T", "Todoist", "omarchy-launch-or-focus todoist \"gtk-launch todoist\"")
-- Pattern is the exact class from `hyprctl clients`; the window rule in
-- hypr/hyprland.lua sends it to workspace 5 on eDP-1 fullscreen.
o.bind("SUPER + CTRL + ALT + T", "tldraw offline", "omarchy-launch-or-focus tldraw-offline \"gtk-launch tldraw-offline\"")
hl.unbind("SUPER + CTRL + ALT + W") -- was: toggle weather
-- gtk-launch takes the desktop-entry id: TLDraw.desktop, not tldraw_offline,
@@ -272,3 +284,7 @@ o.bind("SUPER + SHIFT + F", "File manager", { launch = 'flea --gui' })
hl.unbind("SUPER + ALT + SHIFT + F")
o.bind("SUPER + ALT + SHIFT + F", "File manager (cwd)", { launch = 'flea --gui "$(omarchy-cmd-terminal-cwd)"' })
-- flea --default: end.
-- flea --picker: begin. Written by `flea --picker`; `flea --picker off` removes the block whole.
o.window("com.thisisgm.flea.picker", { tag = "+floating-window" })
-- flea --picker: end.
+27 -6
View File
@@ -32,18 +32,39 @@ require("default.hypr.toggles")
-- display so it survives landing on a different DP connector after re-docking.
hl.workspace_rule({ workspace = "3", monitor = "desc:Apple Computer Inc StudioDisplay 0x984262A7" })
hl.workspace_rule({ workspace = "4", monitor = "eDP-1" })
hl.workspace_rule({ workspace = "5", monitor = "eDP-1" })
-- Always open these apps on a fixed workspace and follow them there. Classes
-- come from `hyprctl clients` -- the desktop files' StartupWMClass hints
-- disagree with reality for Beeper (claims BeeperTexts, actually reports
-- Beeper). Add " silent" to a workspace prop to place a window without
-- switching the view to it.
o.window([[^brave-youtube\.com__-Default$]], { workspace = "1" })
o.window([[^brave-www\.tldraw\.com__-Default$]], { workspace = "3" })
o.window([[^com\.fastmail\.Fastmail$]], { workspace = "4" })
o.window([[^Beeper$]], { workspace = "4" })
-- The SUPER + A scratch terminal (kitty --config ~/.config/kitty/herdr.conf).
-- Pinning it here means it lands on the scratchpad no matter who starts it;
-- "silent" leaves the reveal to omarchy-toggle-scratch.
-- tldraw-offline gets workspace 5 to itself on the laptop panel, fullscreen.
o.window([[^tldraw-offline$]], { workspace = "5", fullscreen = true })
-- Scratch workspaces, toggled by ~/.local/bin/omarchy-toggle-scratch, which
-- also starts any resident that is missing and picks the monitor. Pinning
-- the residents here means they land on their workspace no matter who starts
-- 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: Claude Desktop + kitty/herdr, Studio Display.
o.window([[^com\.anthropic\.Claude$]], { workspace = "special:scratchpad silent" })
o.window([[^kitty-herdr$]], { workspace = "special:scratchpad silent" })
-- SUPER + CTRL + ALT + E / M: Fastmail and Beeper, each alone on the
-- focused monitor.
o.window([[^com\.fastmail\.Fastmail$]], { workspace = "special:fastmail silent" })
o.window([[^Beeper$]], { workspace = "special:beeper silent" })
-- SUPER + CTRL + ALT + Y / SUPER + SHIFT + Y: the YouTube web app. Chromium
-- derives the class from the app URL and the host spelling has varied
-- (youtube.com vs www.youtube.com) once a video plays, so match the family.
-- Its picture-in-picture overlay shares the class; the "negative:" title
-- match keeps it out so Omarchy's pip rule (float + pin) still applies.
-- Rule regexes are RE2 full matches: no lookahead, and a pattern must cover
-- the whole string.
o.window(
{ class = [[brave-(www\.)?youtube\.com__.*]], title = [[negative:.*Picture.?in.?[Pp]icture.*]] },
{ workspace = "special:youtube silent" }
)
+16
View File
@@ -83,7 +83,23 @@ hl.config({
-- Device names come from `hyprctl devices` (the "Tablet" entry, not "Tablet Pad").
-- Built-in digitizer of the Flow Z13: it physically *is* the laptop panel.
-- Pen and finger are separate devices; the finger one is the "Touch" entry.
hl.device({ name = "elan9008:00-04f3:43c7-stylus", output = "eDP-1" })
-- Unbound, Hyprland maps a touch onto whichever monitor is *focused*
-- (onTouchDown falls back to the focused monitor when the device has no
-- output), so a tap on the panel landed on the Studio Display. Bound, the tap
-- focuses eDP-1 and then the window under the finger.
hl.device({ name = "elan9008:00-04f3:43c7", output = "eDP-1" })
--
-- Palm rejection while writing is libinput's job, not Hyprland's: with the
-- pen in proximity it drops touches on the paired touchscreen (same
-- LIBINPUT_DEVICE_GROUP) -- *all* of them only if the pen reports no tilt;
-- with tilt it drops just a 200x250mm rectangle whose side is guessed from
-- the tilt sign, and this pen reports ABS_TILT_X/Y, so a resting palm kept
-- landing as taps and scrolls. /etc/libinput/local-overrides.quirks (not
-- chezmoi-managed; the Flow Z13 stylus section) strips the tilt axes, which
-- flips arbitration to ignore-all. Cost: no tilt in drawing apps. The 90ms
-- re-enable after the pen leaves proximity is hard-coded in libinput.
-- Wacom Intuos BT S: pinned to the Studio Display, matched on EDID description
-- so it survives a different DP connector after re-docking. With that display
+5 -4
View File
@@ -59,10 +59,11 @@ hl.config({
})
-- Omarchy tags every mapped window `default-opacity` and fades it to
-- 0.985 / 0.96; themes deepen that (Cyberdream used 0.98 / 0.92). Rules are
-- last-match-wins, so this pins every window opaque and blur-free. An opaque
-- window has nothing visible behind it, so the pass above never runs for it.
o.window({ tag = "default-opacity" }, { opacity = "1.0 1.0", no_blur = true })
-- 0.985 / 0.96 ($OMARCHY_PATH/default/hypr/windows.lua); that stock fade is
-- kept. Rules are last-match-wins, so this only opts every window out of the
-- blur enabled above -- the few percent of wallpaper that shows through an
-- inactive window is the same as stock, where blur is off entirely.
o.window({ tag = "default-opacity" }, { no_blur = true })
-- The exception: terminals carry their own alpha (kitty's
-- `background_opacity`, 0.9 in ~/.config/kitty/kitty.conf), so they are the one
+2
View File
@@ -114,3 +114,5 @@ bold_italic_font auto
# (~/.config/omarchy/themes/<name>/kitty.conf). Last include wins, so keep this
# at the bottom.
include ~/.local/state/omarchy/current/theme/kitty.conf
font_size 9.0
+7
View File
@@ -18,6 +18,13 @@
"oauth": {
"clientId": "TOBx2IoGZW-gU-f_"
}
},
"github": {
"type": "http",
"url": "https://api.githubcopilot.com/mcp/",
"headers": {
"Authorization": "!printf 'Bearer %s' \"$(gh auth token)\""
}
}
}
}