Files
Hyprland-config/basic/submaps.lua
2026-08-23 21:13:46 -05:00

148 lines
7.8 KiB
Lua

local mainMod = "SUPER" -- Sets "Windows" key as main modifier
local ipc = "qs -c noctalia-shell ipc call "
local custom = require("custom-functions")
local function vim_motions_rebind_keys() -- Pressing H, J, K, L sends Left, Down, Up, Right to the active window
hl.bind("H", hl.dsp.send_shortcut({ mods = "", key = "Left"}))
hl.bind("J", hl.dsp.send_shortcut({ mods = "", key = "Down"}))
hl.bind("K", hl.dsp.send_shortcut({ mods = "", key = "Up"}))
hl.bind("L", hl.dsp.send_shortcut({ mods = "", key = "Right"}))
end
local function clipper_submap_keys() -- A submap for quick access to certain clipboard and screen tools. Pressing H, J, K, L sends Left, Down, Up, Right to the active window.
hl.bind("C" ,hl.dsp.exec_cmd(ipc .. "plugin:clipper openPanel"))
vim_motions_rebind_keys()
local function exit() hl.dispatch(hl.dsp.submap("reset")) hl.dispatch(hl.dsp.exec_cmd(ipc .. "plugin:clipper closePanel")) end
hl.bind("escape" ,exit )
hl.bind("MOD3" .. " + Hyper_L" ,exit )
end
hl.define_submap("hyper-submap", function()
clipper_submap_keys()
hl.bind("S" ,hl.dsp.exec_cmd(ipc .. "plugin:screen-toolkit toggle"))
hl.bind("T" ,hl.dsp.exec_cmd(ipc .. "plugin:timer toggle"))
hl.bind("M" ,hl.dsp.exec_cmd(ipc .. "controlCenter toggle"))
end)
hl.define_submap("screen-toolkit", "reset", function() -- Access the screen toolkit options
hl.bind("S" ,hl.dsp.exec_cmd(ipc .. " plugin:screen-toolkit toggle"))
hl.bind("C" ,hl.dsp.exec_cmd(ipc .. " plugin:screen-toolkit color"))
hl.bind("P" ,hl.dsp.exec_cmd(ipc .. " plugin:screen-toolkit pallete"))
hl.bind("O" ,hl.dsp.exec_cmd(ipc .. " plugin:screen-toolkit ocr"))
hl.bind("L" ,hl.dsp.exec_cmd(ipc .. " plugin:screen-toolkit lens"))
hl.bind("A" ,hl.dsp.exec_cmd(ipc .. " plugin:screen-toolkit annotate"))
hl.bind("SHIFT + A" ,hl.dsp.exec_cmd(ipc .. " plugin:screen-toolkit annotateWindow"))
hl.bind("R" ,hl.dsp.exec_cmd(ipc .. " plugin:screen-toolkit recordMp4"))
hl.bind("SHIFT + R" ,hl.dsp.exec_cmd(ipc .. " plugin:screen-toolkit recordFullscreenMp4"))
hl.bind("catchall" ,function ()
hl.dispatch(hl.dsp.submap("reset"))
hl.dispatch(hl.dsp.exec_cmd(ipc .. "plugin:screen-toolkit toggle "))
end)
end)
hl.define_submap("timer", function () -- Open and create timers, pause, reset, and start timers.
hl.bind("T" ,hl.dsp.exec_cmd(ipc .. "plugin:timer toggle"))
hl.bind("P" ,hl.dsp.exec_cmd(ipc .. "plugin:timer pause"))
hl.bind("R" ,hl.dsp.exec_cmd(ipc .. "plugin:timer reset"))
hl.bind("S" ,hl.dsp.exec_cmd(ipc .. "plugin:timer start 10"))
hl.bind("A" ,hl.dsp.exec_cmd(ipc .. "plugin:timer start 240"))
-- include the double escape or no?
hl.bind("catchall" ,function ()
hl.dispatch(hl.dsp.submap("reset"))
hl.dispatch(hl.dsp.exec_cmd(ipc .. "plugin:timer toggle "))
end)
end)
hl.define_submap("quick-settings", function () -- An Interface for quickly accessing settings and toggling certain features.
hl.bind("V" ,hl.dsp.exec_cmd("protonvpn-app & hyprctl dispatch submap vpn"))
hl.bind("S" ,hl.dsp.exec_cmd(ipc .. "settings toggle"))
hl.bind("C" ,hl.dsp.exec_cmd(ipc .. "plugin:clipper togglePanel "))
hl.bind("P" ,hl.dsp.exec_cmd(ipc .. "sessionMenu toggle"))
hl.bind("R" ,hl.dsp.exec_cmd(ipc .. "systemMonitor toggle"))
hl.bind("T" ,hl.dsp.exec_cmd(ipc .. "plugin:timer toggle"))
hl.bind("M" ,hl.dsp.exec_cmd(ipc .. "controlCenter toggle"))
hl.bind("D" ,hl.dsp.exec_cmd(ipc .. "notifications toggleDND"))
hl.bind("A" ,hl.dsp.exec_cmd(ipc .. "notifications dismissAll"))
hl.bind("SHIFT + B" ,hl.dsp.exec_cmd(ipc .. "bar toggle"))
hl.bind("SHIFT + W" ,hl.dsp.exec_cmd(ipc .. "wifi toggle -- toggle wifi"))
hl.bind("I" ,hl.dsp.exec_cmd(ipc .. "wallpaper toggle"))
hl.bind(" L " ,hl.dsp.exec_cmd(ipc .. "sessionMenu toggle"))
hl.bind("B " ,hl.dsp.exec_cmd(ipc .. "battery togglePanel -- toggle battery panel"))
hl.bind("SHIFT + C " ,hl.dsp.exec_cmd(ipc .. "calendar toggle"))
hl.bind("F" ,custom.switchFanSate)
-- Bind Submaps
hl.bind("L" ,hl.dsp.submap("layouts"))
hl.bind("N" ,function ()
hl.dispatch(hl.dsp.submap("notifications-sub"))
hl.dispatch(hl.dsp.exec_cmd(ipc .. "notifications toggleHistory"))
end)
hl.bind("B" ,function()
hl.dispatch(hl.dsp.submap("bt-sub"))
hl.dispatch(hl.dsp.exec_cmd(ipc .. "bluetooth togglePanel"))
end)
hl.bind("W" ,function ()
hl.dispatch(hl.dsp.submap("wifi-sub"))
hl.dispatch(hl.dsp.exec_cmd(ipc .. "network togglePanel"))
end)
-- TODO Implement layout switching
-- hl.bind(, L, hl.dsp.exec_cmd( notify-send "layout switching" & hyprctl dispatch submap layouts)
hl.bind("catchall" ,function ()
hl.dispatch(hl.dsp.submap("reset"))
hl.dispatch(hl.dsp.exec_cmd(ipc .. "controlCenter toggle "))
end)
end)
hl.define_submap("notifications-sub", function() -- Notifications submap for quick access to notification settings and actions.
hl.bind("D" ,hl.dsp.exec_cmd(ipc .. "notifications toggleDND"))
hl.bind("S" ,hl.dsp.exec_cmd(ipc .. "notifications toggleDND"))
hl.bind("Q" ,hl.dsp.exec_cmd(ipc .. "notifications toggleDND"))
hl.bind("A" ,hl.dsp.exec_cmd(ipc .. "notifications dismissAll"))
hl.bind("C" ,hl.dsp.exec_cmd(ipc .. "notifications clear"))
hl.bind("CTRL + D" ,hl.dsp.exec_cmd(ipc .. "notifications dismissAll"))
hl.bind("SHIFT + D" ,hl.dsp.exec_cmd(ipc .. "notifications dismissAll"))
hl.bind(mainMod .. " + D " ,hl.dsp.exec_cmd(ipc .. "notifications dismissAll"))
hl.bind("escape" ,function ()
hl.dispatch(hl.dsp.exec_cmd(ipc .. "notifications toggleHistory"))
hl.dispatch(hl.dsp.submap("reset"))
end)
end)
hl.define_submap("wifi-sub", "reset", function() -- Wifi submap for quick access to wifi settings and actions.
hl.bind("T" ,hl.dsp.exec_cmd(ipc .. "wifi toggle"))
hl.bind("S" ,hl.dsp.exec_cmd(ipc .. "wifi togglePanel"))
hl.bind("D" ,hl.dsp.exec_cmd(ipc .. "wifi disable"))
hl.bind("E" ,hl.dsp.exec_cmd(ipc .. "wifi enable"))
hl.bind("R" ,hl.dsp.exec_cmd("sudo systemctl restart iwd"))
hl.bind("escape" ,hl.dsp.exec_cmd(ipc .. "network togglePanel"))
end)
hl.define_submap("bt-sub", function() -- Bluetooth submap for quick access to bluetooth settings and actions.
hl.bind("T" ,hl.dsp.exec_cmd(ipc .. "bluetooth toggle"))
hl.bind("S" ,hl.dsp.exec_cmd(ipc .. "bluetooth togglePanel"))
hl.bind("D" ,hl.dsp.exec_cmd(ipc .. "bluetooth disable"))
hl.bind("E" ,hl.dsp.exec_cmd(ipc .. "bluetooth enable"))
hl.bind("H" ,hl.dsp.exec_cmd('bluetoothctl connect 88:92:CC:53:88:7E && notify-send "connected to headphones"'))
hl.bind("B" ,hl.dsp.exec_cmd('bluetoothctl connect FC:91:5D:6A:2A:C5 && notify-send "connected to earbuds"'))
hl.bind("P" ,hl.dsp.exec_cmd('bluetoothctl connect 64:9D:38:E0:4D:02 && notify-send "Connected to phone"'))
hl.bind("SHIFT + B" ,hl.dsp.exec_cmd('bluetoothctl disconnect FC:91:5D:6A:2A:C5 && notify-send "disconnected from earbuds"'))
hl.bind("J" ,hl.dsp.exec_cmd('bluetoothctl disconnect 88:92:CC:53:88:7E && notify-send "disconnected from headphones"'))
hl.bind("SHIFT + H" ,hl.dsp.exec_cmd('bluetoothctl disconnect 88:92:CC:53:88:7E && notify-send "disconnected from headphones"'))
hl.bind("M" ,hl.dsp.exec_cmd('bluetoothctl disconnect 64:9D:38:E0:4D:02 && notify-send "Disconnected from phone"'))
hl.bind("escape" ,function ()
hl.dispatch(hl.dsp.exec_cmd(ipc .. "bluetooth togglePanel"))
hl.dispatch(hl.dsp.submap("reset"))
end)
end)
hl.define_submap("open-apps", "reset", function() -- Submap for quickly opening commonly used applications.
hl.bind("S" ,hl.dsp.exec_cmd("signal-desktop"))
hl.bind("D" ,hl.dsp.exec_cmd("vesktop"))
hl.bind("F" ,hl.dsp.exec_cmd("firefox"))
hl.bind("M" ,hl.dsp.exec_cmd("feishin"))
hl.bind("R" ,hl.dsp.exec_cmd("calibre"))
hl.bind("E" ,hl.dsp.exec_cmd("darktable"))
hl.bind("catchall" ,hl.dsp.submap("reset"))
end)
-- TODO Implement a VPN summap that allows quick connection to different VPN servers and toggling the VPN on/off.