diff --git a/homeManagerModules/desktop/sway/scripts.nix b/homeManagerModules/desktop/sway/scripts.nix new file mode 100644 index 00000000..aa7fba41 --- /dev/null +++ b/homeManagerModules/desktop/sway/scripts.nix @@ -0,0 +1,21 @@ +{ + config, + lib, + pkgs, + ... +}: let + swaymsg = lib.getExe' config.wayland.windowManager.sway.package "swaymsg"; +in { + clamshell = pkgs.writeShellScript "sway-clamshell" '' + docked() { + [ "$(${swaymsg} -t get_outputs | ${lib.getExe pkgs.jq} '. | length')" -ne 1 ] && return 0 + return 1 + } + + if [ "$1" == "on" ]; then + docked && swaymsg output eDP-1 disable + elif [ "$1" == "off" ]; then + swaymsg output eDP-1 enable + fi + ''; +} diff --git a/homeManagerModules/desktop/sway/settings.nix b/homeManagerModules/desktop/sway/settings.nix index d3ee31a3..10a6d650 100644 --- a/homeManagerModules/desktop/sway/settings.nix +++ b/homeManagerModules/desktop/sway/settings.nix @@ -7,6 +7,7 @@ cfg = config.ar.home; helpers = import ../wayland/helpers.nix {inherit config lib pkgs;}; modifier = "Mod4"; + scripts = import ./scripts.nix {inherit config lib pkgs;}; in { enable = true; checkConfig = false; @@ -269,8 +270,8 @@ in { bindgesture swipe:right workspace prev bindgesture swipe:left workspace next - bindswitch --reload --locked lid:on output eDP-1 disable - bindswitch --reload --locked lid:off output eDP-1 enable + bindswitch --reload --locked lid:on exec ${scripts.clamshell} on + bindswitch --reload --locked lid:off exec ${scripts.clamshell} off default_border pixel 4 default_floating_border pixel 4