snowfield/home-manager-modules/sway/default.nix
2024-03-30 23:30:43 +01:00

131 lines
3.8 KiB
Nix

{ config, pkgs, lib, ... }:
let
cfg = config.luj.programs.sway;
inherit (cfg) modifier;
terminal = "kitty";
in
with lib;
{
options.luj.programs.sway = {
enable = mkEnableOption "Enable SwayWM";
modifier = mkOption {
type = lib.types.str;
default = "Mod1";
};
background = mkOption {
type = types.path;
};
};
config = mkIf cfg.enable {
wayland.windowManager.sway = {
enable = true;
package = pkgs.swayfx;
config = {
inherit terminal;
output."*" = {
bg = builtins.toString cfg.background + " fill";
};
inherit (cfg) modifier;
input = {
"*" = {
xkb_layout = "fr";
};
};
gaps = {
right = 2;
left = 2;
top = 0;
bottom = 0;
inner = 1;
};
bars = [ ];
keybindings = lib.mkOptionDefault {
"${modifier}+ampersand" = "workspace 1";
"${modifier}+eacute" = "workspace 2";
"${modifier}+quotedbl" = "workspace 3";
"${modifier}+apostrophe" = "workspace 4";
"${modifier}+parenleft" = "workspace 5";
"${modifier}+egrave" = "workspace 6";
"${modifier}+minus" = "workspace 7";
"${modifier}+underscore" = "workspace 8";
"${modifier}+ccedilla" = "workspace 9";
"${modifier}+agrave" = "workspace 10";
"${modifier}+Shift+ampersand" = "move container to workspace 1";
"${modifier}+Shift+eacute" = "move container to workspace 2";
"${modifier}+Shift+quotedbl" = "move container to workspace 3";
"${modifier}+Shift+apostrophe" = "move container to workspace 4";
"${modifier}+Shift+parenleft" = "move container to workspace 5";
"${modifier}+Shift+egrave" = "move container to workspace 6";
"${modifier}+Shift+minus" = "move container to workspace 7";
"${modifier}+Shift+underscore" = "move container to workspace 8";
"${modifier}+Shift+ccedilla" = "move container to workspace 9";
"${modifier}+Shift+agrave" = "move container to workspace 10";
"${modifier}+h" = "focus left";
"${modifier}+j" = "focus down";
"${modifier}+k" = "focus up";
"${modifier}+l" = "focus right";
"${modifier}+Shift+h" = "move left";
"${modifier}+Shift+j" = "move down";
"${modifier}+Shift+k" = "move up";
"${modifier}+Shift+l" = "move right";
"${modifier}+q" = "kill";
"${modifier}+space" = "exec rofi -show run";
"${modifier}+Return" = "exec ${terminal}";
"${modifier}+f" = "fullscreen toggle";
"XF86MonBrightnessUp" = "exec brightnessctl s +10";
"XF86MonBrightnessDown" = "exec brightnessctl s 10-";
"${modifier}+w" = "exec swaylock";
};
};
extraConfig = ''
set $laptop eDP-1
corner_radius 8
default_dim_inactive 0.2
default_border none
default_floating_border none
bindswitch lid:on output $laptop disable
bindswitch lid:off output $laptop enable
'';
extraOptions = [ "--unsupported-gpu" ];
};
programs.swaylock =
{
enable = true;
package = pkgs.swaylock-effects;
settings = {
screenshots = true;
clock = true;
indicator = true;
indicator-radius = 200;
indicator-thickness = 20;
grace = 0;
grace-no-mouse = true;
grace-no-touch = true;
line-uses-ring = false;
ignore-empty-password = true;
show-failed-attempts = false;
font = "Fira Code";
timestr = "%H:%M";
datestr = "";
effect-blur = "8x5";
effect-vignette = "0.5:0.5";
color = "00000000";
};
};
};
}