update configs

This commit is contained in:
2026-08-06 20:49:18 +02:00
parent b2ea1bd456
commit 0716da5eef
9 changed files with 236 additions and 156 deletions

View File

@@ -14,35 +14,85 @@ hl.bind(mainMod .. " + S",
hl.dsp.exec_cmd("grim -o" .. MAIN_DISPLAY .. " \"${HOME}/screenshots/screenshot-$(date +%F-%T).png\""))
hl.bind(mainMod .. " + SHIFT + S", hl.dsp.exec_cmd("grim -g \"$(slurp)\" - | wl-copy"))
local function focus_hyprland(direction)
hl.dispatch(hl.dsp.focus({ direction = direction }))
end
local function is_direct_nvim(title)
title = (title or ""):lower()
return title:find("^nvim")
or title:find(" - nvim", 1, true)
or title:find("^vim")
or title:find(" - vim", 1, true)
end
local function ask_direct_nvim(win, direction)
local runtime_dir = os.getenv("XDG_RUNTIME_DIR") or "/tmp"
local socket_path = string.format(
"%s/nvim-hypr-nav-%x.sock",
runtime_dir,
tostring(win.stable_id)
)
local handle = io.popen(string.format(
"printf 'nav:%s\\n' | socat -T 0.25 -,ignoreeof UNIX-CONNECT:%s 2>/dev/null",
direction,
socket_path
))
if not handle then
return false
end
local response = handle:read("*a")
handle:close()
return response:find("success", 1, true) ~= nil
end
local function smart_nav(direction)
return function()
local win = hl.get_active_window()
if not win
or win.class ~= "com.mitchellh.ghostty"
or not (
(win.title or ""):lower():find("^nvim")
or (win.title or ""):lower():find(" - nvim")
or (win.title or ""):lower():find("^vim")
or (win.title or ""):lower():find(" - vim"))
then
hl.dispatch(hl.dsp.focus({ direction = direction }))
if not win then
return
end
local runtime_dir = os.getenv("XDG_RUNTIME_DIR") or "/tmp"
local socket_path = string.format("%s/nvim-hypr-nav-%x.sock", runtime_dir, tostring(win.stable_id))
local handle = io.popen(
string.format("echo nav:%s | socat - UNIX-CONNECT:%s",
direction, socket_path))
local response = handle:read("*a")
handle:close()
if response:find("failed") then
hl.dispatch(hl.dsp.focus({ direction = direction }))
if win.class ~= "com.mitchellh.ghostty" then
focus_hyprland(direction)
return
end
local title = (win.title or ""):lower()
if title == "herdr" then
local helper = (os.getenv("HOME") or "")
.. "/.config/hypr/scripts/herdr-smart-nav"
local handle = io.popen(helper .. " " .. direction)
if not handle then
focus_hyprland(direction)
return
end
local result = handle:read("*a")
handle:close()
if result:find("hyprland", 1, true) then
focus_hyprland(direction)
end
return
end
if is_direct_nvim(title) and ask_direct_nvim(win, direction) then
return
end
focus_hyprland(direction)
end
end

View File

@@ -1,56 +0,0 @@
#!/usr/bin/python3
games = [
("all", "Stardew Valley"),
("ic", "steam_app_.*", "tile", "max"),
("all", "ffxiv*", "sf"),
("all", "Hollow Knight"),
("all", "HELLDIVERS*"),
("all", "CS", "tile", "max"),
("title", "Warhammer 40.000: Darktide", "tile", "max")
]
def main():
f = open("config/games.conf", "w")
conf: str = "# Auto generated window rules for Games\n\n"
for game in games:
if type(game) is not tuple:
continue
name = game[1]
match game[0]:
case "ic":
selector = f"match:initial_class \"{name}\""
case "title":
selector = f"match:title \"{name}\""
case "class":
selector = f"match:class \"{name}\""
case "all":
selector = f"match:title \"{name}\", match:class \"{name}\""
case s:
print(f"Could not find selector for \"{s}\"")
continue
for setting in game[2::]:
match setting:
case "sf":
conf += f"windowrule = stay_focused on, {selector}\n"
case "tile":
conf += f"windowrule = tile on, {selector}\n"
case "max":
conf += f"windowrule = maximize on, {selector}\n"
case s:
print(f"Could not find setting \"{s}\"")
conf += f"""windowrule = fullscreen on, {selector}
windowrule = monitor DP-3, {selector}
windowrule = allows_input on, {selector}\n
"""
f.write(conf)
f.close()
if __name__ == "__main__":
main()