mirror of
https://github.com/prdlk/dotfiles.git
synced 2026-11-02 19:32:43 +00:00
feat(config): enhance scratchpad toggles, add workspace rules, adjust opacity and font size
This commit is contained in:
1 parent
989fac13d1
commit
f30eee4215
6 files changed
+88
-25
No files matched your search
@@ -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 + J", "Next workspace", hl.dsp.focus({ workspace = "e+1" }))
|
||||||
o.bind("SUPER + CTRL + K", "Previous 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
|
-- Scratch workspaces. Omarchy's SUPER + S is taken by the region screenshot
|
||||||
-- the special-workspace toggle lands here. SUPER + ALT + S (send window to
|
-- below, so the main toggle lands on SUPER + CTRL + S, with SUPER + A (free
|
||||||
-- the scratchpad) is still the Omarchy default and needs no line.
|
-- 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
|
hl.unbind("SUPER + CTRL + S") -- was: share menu
|
||||||
o.bind("SUPER + CTRL + S", "Toggle scratchpad", hl.dsp.workspace.toggle_special("scratchpad"))
|
o.bind("SUPER + CTRL + S", "Toggle scratch workspace", "omarchy-toggle-scratch scratchpad")
|
||||||
|
o.bind("SUPER + A", "Toggle scratch workspace", "omarchy-toggle-scratch 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")
|
|
||||||
|
|
||||||
-- Workspaces 1 to 5 on the home row of the left half: ALT to focus,
|
-- 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
|
-- 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 + J", "Terminals", "omarchy-cycle-terminal")
|
||||||
o.bind("SUPER + CTRL + ALT + K", "Browsers", "omarchy-cycle-browser")
|
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 + 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 + 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 + 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\"")
|
-- Fastmail, Beeper and the YouTube web app each live on their own scratch
|
||||||
o.bind("SUPER + CTRL + ALT + M", "Beeper", "omarchy-launch-or-focus beeper \"gtk-launch beeper\"")
|
-- 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
|
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
|
hl.unbind("SUPER + CTRL + ALT + W") -- was: toggle weather
|
||||||
-- gtk-launch takes the desktop-entry id: TLDraw.desktop, not tldraw_offline,
|
-- 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")
|
hl.unbind("SUPER + ALT + SHIFT + F")
|
||||||
o.bind("SUPER + ALT + SHIFT + F", "File manager (cwd)", { launch = 'flea --gui "$(omarchy-cmd-terminal-cwd)"' })
|
o.bind("SUPER + ALT + SHIFT + F", "File manager (cwd)", { launch = 'flea --gui "$(omarchy-cmd-terminal-cwd)"' })
|
||||||
-- flea --default: end.
|
-- 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.
|
||||||
@@ -32,18 +32,39 @@ require("default.hypr.toggles")
|
|||||||
-- display so it survives landing on a different DP connector after re-docking.
|
-- 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 = "3", monitor = "desc:Apple Computer Inc StudioDisplay 0x984262A7" })
|
||||||
hl.workspace_rule({ workspace = "4", monitor = "eDP-1" })
|
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
|
-- Always open these apps on a fixed workspace and follow them there. Classes
|
||||||
-- come from `hyprctl clients` -- the desktop files' StartupWMClass hints
|
-- come from `hyprctl clients` -- the desktop files' StartupWMClass hints
|
||||||
-- disagree with reality for Beeper (claims BeeperTexts, actually reports
|
-- disagree with reality for Beeper (claims BeeperTexts, actually reports
|
||||||
-- Beeper). Add " silent" to a workspace prop to place a window without
|
-- Beeper). Add " silent" to a workspace prop to place a window without
|
||||||
-- switching the view to it.
|
-- switching the view to it.
|
||||||
o.window([[^brave-youtube\.com__-Default$]], { workspace = "1" })
|
|
||||||
o.window([[^brave-www\.tldraw\.com__-Default$]], { workspace = "3" })
|
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).
|
-- tldraw-offline gets workspace 5 to itself on the laptop panel, fullscreen.
|
||||||
-- Pinning it here means it lands on the scratchpad no matter who starts it;
|
o.window([[^tldraw-offline$]], { workspace = "5", fullscreen = true })
|
||||||
-- "silent" leaves the reveal to omarchy-toggle-scratch.
|
|
||||||
|
-- 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" })
|
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" }
|
||||||
|
)
|
||||||
@@ -83,7 +83,23 @@ hl.config({
|
|||||||
-- Device names come from `hyprctl devices` (the "Tablet" entry, not "Tablet Pad").
|
-- 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.
|
-- 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" })
|
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
|
-- 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
|
-- so it survives a different DP connector after re-docking. With that display
|
||||||
|
|||||||
@@ -59,10 +59,11 @@ hl.config({
|
|||||||
})
|
})
|
||||||
|
|
||||||
-- Omarchy tags every mapped window `default-opacity` and fades it to
|
-- 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
|
-- 0.985 / 0.96 ($OMARCHY_PATH/default/hypr/windows.lua); that stock fade is
|
||||||
-- last-match-wins, so this pins every window opaque and blur-free. An opaque
|
-- kept. Rules are last-match-wins, so this only opts every window out of the
|
||||||
-- window has nothing visible behind it, so the pass above never runs for it.
|
-- blur enabled above -- the few percent of wallpaper that shows through an
|
||||||
o.window({ tag = "default-opacity" }, { opacity = "1.0 1.0", no_blur = true })
|
-- 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
|
-- The exception: terminals carry their own alpha (kitty's
|
||||||
-- `background_opacity`, 0.9 in ~/.config/kitty/kitty.conf), so they are the one
|
-- `background_opacity`, 0.9 in ~/.config/kitty/kitty.conf), so they are the one
|
||||||
|
|||||||
@@ -114,3 +114,5 @@ bold_italic_font auto
|
|||||||
# (~/.config/omarchy/themes/<name>/kitty.conf). Last include wins, so keep this
|
# (~/.config/omarchy/themes/<name>/kitty.conf). Last include wins, so keep this
|
||||||
# at the bottom.
|
# at the bottom.
|
||||||
include ~/.local/state/omarchy/current/theme/kitty.conf
|
include ~/.local/state/omarchy/current/theme/kitty.conf
|
||||||
|
|
||||||
|
font_size 9.0
|
||||||
@@ -18,6 +18,13 @@
|
|||||||
"oauth": {
|
"oauth": {
|
||||||
"clientId": "TOBx2IoGZW-gU-f_"
|
"clientId": "TOBx2IoGZW-gU-f_"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"github": {
|
||||||
|
"type": "http",
|
||||||
|
"url": "https://api.githubcopilot.com/mcp/",
|
||||||
|
"headers": {
|
||||||
|
"Authorization": "!printf 'Bearer %s' \"$(gh auth token)\""
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in new issue
Block a user