Long holds occasionally dropped the release event in Hyprland, leaving whisrs recording until its silence auto-stop, and any stray toggle (key repeat, re-fired press) could invert the state so that pressing stopped and releasing started. The press and release binds now go through tiny scripts that check the daemon status first, making the toggle pair idempotent: start only when idle, stop only when recording. Also a note-to-self: Hyprland auto-reloads when files under the config symlink change, so a git rebase in this repo can transiently drop newly added binds; run hyprctl reload after git operations.
44 lines
2.1 KiB
Lua
44 lines
2.1 KiB
Lua
-- Keybindings (converted from keybindings.conf)
|
|
local P = require("programs")
|
|
|
|
hl.bind(P.mainMod .. " + T", hl.dsp.exec_cmd(P.terminal))
|
|
hl.bind(P.mainMod .. " + B", hl.dsp.exec_cmd(P.browser))
|
|
hl.bind(P.mainMod .. " + W", hl.dsp.window.close())
|
|
hl.bind(P.mainMod .. " + SHIFT + M", hl.dsp.exit())
|
|
hl.bind(P.mainMod .. " + E", hl.dsp.exec_cmd(P.fileManager))
|
|
hl.bind(P.mainMod .. " + V", hl.dsp.window.float())
|
|
-- App menu (original was bindr = $mainMod, SUPER_L, exec, $app_menu)
|
|
hl.bind(P.mainMod .. " + SUPER_L", hl.dsp.exec_cmd(P.app_menu), { release = true })
|
|
hl.bind("SHIFT + SUPER_L", hl.dsp.exec_cmd(P.menu))
|
|
-- dwindle
|
|
hl.bind(P.mainMod .. " + P", hl.dsp.window.pseudo())
|
|
-- dwindle
|
|
hl.bind(P.mainMod .. " + J", hl.dsp.layout("togglesplit"))
|
|
|
|
hl.bind(P.mainMod .. " + F", hl.dsp.window.fullscreen())
|
|
|
|
-- Screenshot
|
|
hl.bind("CTRL + PRINT", hl.dsp.exec_cmd("hyprshot -m active -m output"))
|
|
hl.bind("PRINT", hl.dsp.exec_cmd("hyprshot -m window"))
|
|
hl.bind("SHIFT + PRINT", hl.dsp.exec_cmd("hyprshot -m region"))
|
|
|
|
-- Color picker
|
|
hl.bind(P.mainMod .. " + C", hl.dsp.exec_cmd("hyprpicker --autocopy"))
|
|
|
|
-- Lock
|
|
hl.bind(P.mainMod .. " + L", hl.dsp.exec_cmd("~/.config/hypr/scripts/lock.sh"))
|
|
hl.bind(P.mainMod .. " + SHIFT + L", hl.dsp.exec_cmd("wlogout --protocol layer-shell"))
|
|
|
|
-- Cheatsheet
|
|
hl.bind(P.mainMod .. " + F1", hl.dsp.exec_cmd("~/.config/hypr/scripts/cheatsheet.py ~/.config/hypr/shortcuts.txt"))
|
|
|
|
-- OBS
|
|
hl.bind(P.mainMod .. " + ALT + TAB", hl.dsp.pass({ window = "class:^(com.obsproject.Studio)$" }))
|
|
hl.bind("F1", hl.dsp.pass({ window = "class:^(com.obsproject.Studio)$" }))
|
|
hl.bind("F2", hl.dsp.pass({ window = "class:^(com.obsproject.Studio)$" }))
|
|
|
|
-- Copilot key (sends SUPER+SHIFT+F23): hold-to-talk voice dictation via whisrs
|
|
-- press = start recording, release = stop and transcribe. The scripts check the
|
|
-- daemon state so stray toggles (key repeat, missed release) can't invert it.
|
|
hl.bind("SUPER + SHIFT + F23", hl.dsp.exec_cmd("~/.config/hypr/scripts/whisrs-hold-start.sh"))
|
|
hl.bind("SUPER + SHIFT + F23", hl.dsp.exec_cmd("~/.config/hypr/scripts/whisrs-hold-stop.sh"), { release = true })
|