diff --git a/modules/services/window-managers/i3-sway/lib/options.nix b/modules/services/window-managers/i3-sway/lib/options.nix index 7027e21d0..27addca29 100644 --- a/modules/services/window-managers/i3-sway/lib/options.nix +++ b/modules/services/window-managers/i3-sway/lib/options.nix @@ -508,7 +508,10 @@ in { }; mouseWarping = mkOption { - type = types.bool; + type = if isSway then + types.oneOf [ types.bool (types.enum [ "container" "output" ]) ] + else + types.bool; default = true; description = '' Whether mouse cursor should be warped to the center of the window when switching focus diff --git a/modules/services/window-managers/i3-sway/sway.nix b/modules/services/window-managers/i3-sway/sway.nix index 55e9ab03e..ad8432652 100644 --- a/modules/services/window-managers/i3-sway/sway.nix +++ b/modules/services/window-managers/i3-sway/sway.nix @@ -273,7 +273,14 @@ let "focus_wrapping ${lib.hm.booleans.yesNo focus.forceWrapping}" "focus_follows_mouse ${focus.followMouse}" "focus_on_window_activation ${focus.newWindow}" - "mouse_warping ${if focus.mouseWarping then "output" else "none"}" + "mouse_warping ${ + if builtins.isString (focus.mouseWarping) then + focus.mouseWarping + else if focus.mouseWarping then + "output" + else + "none" + }" "workspace_layout ${workspaceLayout}" "workspace_auto_back_and_forth ${ lib.hm.booleans.yesNo workspaceAutoBackAndForth