diff --git a/settings/hyprland.nix b/settings/hyprland.nix index f4342e9..3ae7f4f 100644 --- a/settings/hyprland.nix +++ b/settings/hyprland.nix @@ -276,6 +276,11 @@ in -- on them reads as "reset this thing", not "close it". local scratchpads = { ["dev.fred.scratchpad"] = "ghostty --class=dev.fred.scratchpad --title=scratchpad", + -- Yazi, parked the same way. A fresh `ghostty -e yazi` per press + -- has to link 131 shared libraries and init GTK before it draws + -- anything, so SUPER+E felt sluggish even with the daemon warm. + -- Toggling a special workspace spawns nothing. + ["dev.fred.files"] = "ghostty --class=dev.fred.files --title=files -e yazi", -- Spotify sets its own class, so no --class trick here; the -- lookup below lowercases before falling back, which covers both -- the Wayland app id and the XWayland "Spotify". @@ -326,6 +331,7 @@ in -- login so SUPER+Return is always an instant toggle and the shell -- keeps its history/cwd between peeks. hl.exec_cmd(scratchpads["dev.fred.scratchpad"]) + hl.exec_cmd(scratchpads["dev.fred.files"]) -- swayosd removed; volume/brightness OSD handled by quickshell ${lib.optionalString isMacbook ''hl.exec_cmd("hypridle")''} end) @@ -401,6 +407,20 @@ in center = true, }) + -- Yazi scratchpad — SUPER+E. + hl.window_rule({ + match = { class = "^dev.fred.files$" }, + workspace = "special:files silent", + }) + + hl.window_rule({ + name = "files-inset", + match = { class = "^dev.fred.files$" }, + float = true, + size = "80% 80%", + center = true, + }) + -- Games stall on other workspaces: no frame callbacks = no render = -- game loop blocks. Keep them ticking in the background at -- misc:render_unfocused_fps (15). @@ -447,7 +467,7 @@ in -- palette instead of needing a GTK restart. Nemo stays one key -- away on Super+N — it is the only one of the two that can drag -- a file into a browser. - hl.bind(mod .. " + E", hl.dsp.exec_cmd("ghostty -e yazi")) + hl.bind(mod .. " + E", toggle_scratchpad("files", "dev.fred.files")) hl.bind(mod .. " + N", hl.dsp.exec_cmd("nemo")) hl.bind(mod .. " + R", hl.dsp.exec_cmd("${pkgs.quickshell}/bin/qs ipc call launcher toggle")) hl.bind(mod .. " + Q", hl.dsp.window.close())