nix-v0/src/home/wm/sway.nix
2024-11-03 15:27:57 -06:00

57 lines
2.1 KiB
Nix

{
pkgs,
lib,
config,
...
}:
let
swayosd = lib.getExe' config.services.swayosd.package "swayosd-client";
pactl = lib.getExe' pkgs.pulseaudio "pactl";
grim = lib.getExe' pkgs.grim "grim";
slurp = lib.getExe' pkgs.slurp "slurp";
clipboard-copy = lib.getExe' pkgs.wl-clipboard "wl-copy";
commonOptions = import ./common-i3.nix rec {
inherit config lib pkgs;
menu = lib.getExe' pkgs.bemenu "bemenu-run";
terminal =
if config.programs.kitty.enable then
lib.getExe' config.programs.kitty.package "kitty"
else
lib.getExe' pkgs.foot "foot";
};
in
{
options.custom = with lib; {
wm = {
sway = {
enable = mkEnableOption "Sway WM";
};
};
};
config = lib.mkIf config.custom.wm.sway.enable {
services.swayosd = {
enable = true;
};
wayland.windowManager.sway = {
enable = true;
extraConfig = commonOptions.extraConfig;
config = lib.mkMerge [
commonOptions.config
{
keybindings = {
"${commonOptions.modifier}+Shift+e" = "exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -B 'Yes, exit sway' 'swaymsg exit'";
"XF86AudioRaiseVolume" = "exec --no-startup-id '${swayosd} --output-volume=raise'";
"XF86AudioLowerVolume" = "exec --no-startup-id '${swayosd} --output-volume=lower'";
"XF86AudioMute" = "exec --no-startup-id '${swayosd} --output-volume=mute-toggle";
"XF86AudioMicMute" = "exec --no-startup-id '${pactl} set-source-mute @DEFAULT_SOURCE@ toggle'";
"${commonOptions.modifier}+o" = "exec --no-startup-id ${grim} -g \"\$(${slurp})\" ~/pictures/screenshots/$(date +%Y-%m-%d-%H-%M-%S).png";
"${commonOptions.modifier}+Shift+o" = "exec --no-startup-id ${grim} -g \"\$(${slurp})\" -t png - | ${clipboard-copy}";
"PRINT" = "exec --no-startup-id ${grim} -g \"\$(${slurp})\" -t png - | ${clipboard-copy}";
};
}
];
};
stylix.targets.sway.enable = true;
};
}