diff --git a/core/internal/config/embedded/hypr-binds.lua b/core/internal/config/embedded/hypr-binds.lua index 2488ab72..e2c26fb3 100644 --- a/core/internal/config/embedded/hypr-binds.lua +++ b/core/internal/config/embedded/hypr-binds.lua @@ -38,7 +38,7 @@ hl.bind("XF86MonBrightnessUp", hl.dsp.exec_cmd([[dms ipc call brightness increme hl.bind("XF86MonBrightnessDown", hl.dsp.exec_cmd([[dms ipc call brightness decrement 5 ""]]), { locked = true, repeating = true }) -- === Window Management === -hl.bind("SUPER + Q", hl.dsp.window.kill()) +hl.bind("SUPER + Q", hl.dsp.window.close()) hl.bind("SUPER + F", hl.dsp.window.fullscreen({ mode = "maximized", action = "toggle" })) hl.bind("SUPER + SHIFT + F", hl.dsp.window.fullscreen({ mode = "fullscreen", action = "toggle" })) hl.bind("SUPER + SHIFT + T", hl.dsp.window.float({ action = "toggle" })) diff --git a/core/internal/keybinds/providers/hyprland.go b/core/internal/keybinds/providers/hyprland.go index cca956b1..130c7235 100644 --- a/core/internal/keybinds/providers/hyprland.go +++ b/core/internal/keybinds/providers/hyprland.go @@ -732,7 +732,7 @@ func luaActionStringFromKnownHyprlandAction(action string) (string, bool) { case "execr": return fmt.Sprintf(`hl.dsp.exec_raw(%s)`, strconv.Quote(params)), true case "killactive": - return `hl.dsp.window.kill()`, true + return `hl.dsp.window.close()`, true case "forcekillactive": return `hl.dsp.window.kill()`, true case "closewindow": diff --git a/core/internal/keybinds/providers/hyprland_parser.go b/core/internal/keybinds/providers/hyprland_parser.go index 859c374c..a0cf3288 100644 --- a/core/internal/keybinds/providers/hyprland_parser.go +++ b/core/internal/keybinds/providers/hyprland_parser.go @@ -1074,7 +1074,7 @@ func luaExprToDispatcherParams(expr string) (dispatcher, params string) { if arg := luaCallStringArgValue(expr, "hl.dsp.window.close"); arg != "" { return "closewindow", arg } - return "closewindow", "" + return "killactive", "" case strings.HasPrefix(expr, "hl.dsp.window.kill("): if window := luaTableStringField(expr, "window"); window != "" { return "killwindow", window @@ -1082,7 +1082,7 @@ func luaExprToDispatcherParams(expr string) (dispatcher, params string) { if arg := luaCallStringArgValue(expr, "hl.dsp.window.kill"); arg != "" { return "killwindow", arg } - return "killactive", "" + return "forcekillactive", "" case strings.HasPrefix(expr, "hl.dsp.window.fullscreen("): switch luaTableStringField(expr, "mode") { case "maximized", "maximize": diff --git a/core/internal/keybinds/providers/hyprland_parser_test.go b/core/internal/keybinds/providers/hyprland_parser_test.go index 1b81c6c6..d3def7ca 100644 --- a/core/internal/keybinds/providers/hyprland_parser_test.go +++ b/core/internal/keybinds/providers/hyprland_parser_test.go @@ -75,6 +75,8 @@ func TestHyprlandLuaBindRoundTripHelpers(t *testing.T) { {`hl.dispatch([[customdispatcher arg one]])`, "customdispatcher", "arg one"}, {`hl.dsp.window.fullscreen({ mode = "maximized", action = "toggle" })`, "fullscreen", "1"}, {`hl.dsp.window.float({ action = "on" })`, "setfloating", ""}, + {`hl.dsp.window.close()`, "killactive", ""}, + {`hl.dsp.window.kill()`, "forcekillactive", ""}, {`hl.dsp.window.close({ window = "class:^(kitty)$" })`, "closewindow", "class:^(kitty)$"}, {`hl.dsp.focus({ workspace = "e+1" })`, "workspace", "e+1"}, {`hl.dsp.focus({ workspace = "2", on_current_monitor = true })`, "focusworkspaceoncurrentmonitor", "2"}, @@ -162,6 +164,8 @@ func TestLuaActionStringFromHyprlangActionUsesNativeDispatchers(t *testing.T) { action string want string }{ + {"killactive", `hl.dsp.window.close()`}, + {"forcekillactive", `hl.dsp.window.kill()`}, {"workspace 1", `hl.dsp.focus({ workspace = "1" })`}, {"movetoworkspace 2", `hl.dsp.window.move({ workspace = "2" })`}, {"movetoworkspacesilent special:magic", `hl.dsp.window.move({ workspace = "special:magic", follow = false })`},