276 lines
10 KiB
Nix
276 lines
10 KiB
Nix
{
|
|
global =
|
|
{
|
|
config,
|
|
pkgs,
|
|
lib,
|
|
mods,
|
|
...
|
|
}:
|
|
{
|
|
programs.wshowkeys.enable = true;
|
|
programs.sway.enable = true;
|
|
services.dbus.packages = with pkgs; [ dconf ];
|
|
xdg.portal = {
|
|
enable = true;
|
|
extraPortals = with pkgs; [
|
|
xdg-desktop-portal-wlr
|
|
xdg-desktop-portal-gtk
|
|
];
|
|
};
|
|
};
|
|
home =
|
|
{
|
|
config,
|
|
pkgs,
|
|
lib,
|
|
mods,
|
|
...
|
|
}:
|
|
{
|
|
xdg.configFile."sway/config".onChange = lib.mkForce "";
|
|
|
|
home.sessionVariables = {
|
|
MOZ_ENABLE_WAYLAND = "1";
|
|
MOZ_USE_XINPUT2 = "1";
|
|
SDL_VIDEODRIVER = "wayland";
|
|
QT_QPA_PLATFORM = "wayland";
|
|
QT_WAYLAND_DISABLE_WINDOWDECORATION = "1";
|
|
_JAVA_AWT_WM_NONREPARETING = "1";
|
|
XDG_SESSION_TYPE = "wayland";
|
|
XDG_CURRENT_DESKTOP = "sway";
|
|
};
|
|
|
|
programs.waybar.enable = true;
|
|
home.file.".config/waybar" = {
|
|
source = ./waybar;
|
|
recursive = true;
|
|
};
|
|
|
|
services.swayidle =
|
|
let
|
|
lockwall = pkgs.runCommand "lock_wall.jpg" { } ''
|
|
${pkgs.ffmpeg}/bin/ffmpeg -i ${./wall.jpg} -filter_complex 'gblur=sigma=3' $out -y
|
|
'';
|
|
in
|
|
{
|
|
enable = true;
|
|
timeouts = [
|
|
{
|
|
timeout = 300;
|
|
command = ''${pkgs.systemd}/bin/loginctl lock-session && ${pkgs.sway}/bin/swaymsg "output * dpms off"'';
|
|
resumeCommand = ''${pkgs.sway}/bin/swaymsg "output * dpms on"'';
|
|
}
|
|
];
|
|
events = [
|
|
{
|
|
event = "before-sleep";
|
|
command = "${pkgs.systemd}/bin/loginctl lock-session";
|
|
}
|
|
{
|
|
event = "lock";
|
|
command = "${pkgs.swaylock}/bin/swaylock -f -i ${lockwall}";
|
|
}
|
|
];
|
|
};
|
|
|
|
wayland.windowManager.sway = {
|
|
enable = true;
|
|
xwayland = true;
|
|
wrapperFeatures = {
|
|
base = false;
|
|
gtk = false;
|
|
};
|
|
extraConfig = ''workspace 1'';
|
|
config =
|
|
let
|
|
menuCmd = "${pkgs.wofi}/bin/wofi --show drun -i | xargs swaymsg exec --";
|
|
exitMd = ''Exit Mode:| (l)Log out | (r)Reboot | (p)Poweroff'';
|
|
in
|
|
rec {
|
|
window.border = 1;
|
|
gaps.smartBorders = "on";
|
|
modifier = "Mod4";
|
|
terminal = "alacritty";
|
|
input."type:keyboard".xkb_layout = "fr";
|
|
startup = [
|
|
# { command = "waybar -b bar-0"; }
|
|
|
|
{ command = "${pkgs.pulseaudio}/bin/pactl set-sink-mute @DEFAULT_SINK@ on"; }
|
|
{ command = "${pkgs.pulseaudio}/bin/pactl set-source-mute @DEFAULT_SOURCE@ on"; }
|
|
|
|
{ command = "discord"; }
|
|
{ command = "thunderbird"; }
|
|
{ command = "mattermost-desktop"; }
|
|
{ command = "signal-desktop --"; }
|
|
# { command = "${lib.getExe pkgs.element-desktop}"; }
|
|
{ command = ''sh -c "sleep 2 && exec keepassxc"''; }
|
|
{
|
|
command = "alacritty --class weechat --title weechat --command ${pkgs.weechat}/bin/weechat";
|
|
}
|
|
];
|
|
assigns = {
|
|
"1" = [ { app_id = "firefox"; } ];
|
|
"9" = [ { app_id = "thunderbird"; } ];
|
|
"10" = [
|
|
{ class = "Mattermost"; }
|
|
{ class = "Signal"; }
|
|
{ class = "discord"; }
|
|
{ class = "Element"; }
|
|
{ app_id = "weechat"; }
|
|
];
|
|
};
|
|
bars = [
|
|
{
|
|
command = "waybar";
|
|
mode = "hide";
|
|
}
|
|
];
|
|
output."*".bg = "${./wall.jpg} fill";
|
|
seat."*"."hide_cursor" = "5000";
|
|
focus.wrapping = "yes";
|
|
window.titlebar = false;
|
|
colors =
|
|
let
|
|
black = "#000000";
|
|
dark = "#111111";
|
|
adark = "#111111BB";
|
|
aadark = "#11111177";
|
|
highl = "#222222";
|
|
gray = "#777777";
|
|
white = "#FFFFFF";
|
|
color = "#FFBB00";
|
|
urgent = "#FF0000";
|
|
in
|
|
{
|
|
focused = {
|
|
border = adark;
|
|
background = adark;
|
|
text = white;
|
|
indicator = color;
|
|
childBorder = color;
|
|
};
|
|
unfocused = {
|
|
border = aadark;
|
|
background = aadark;
|
|
text = gray;
|
|
indicator = dark;
|
|
childBorder = dark;
|
|
};
|
|
focusedInactive = {
|
|
border = adark;
|
|
background = adark;
|
|
text = gray;
|
|
indicator = dark;
|
|
childBorder = dark;
|
|
};
|
|
urgent = {
|
|
border = urgent;
|
|
background = urgent;
|
|
text = white;
|
|
indicator = urgent;
|
|
childBorder = urgent;
|
|
};
|
|
};
|
|
modes = {
|
|
"display" = {
|
|
"Left" = "output - transform 90";
|
|
"Down" = "output - transform normal";
|
|
"Up" = "output - transform 180";
|
|
"Right" = "output - transform 270";
|
|
|
|
"Shift+Left" = "output - transform flipped-90";
|
|
"Shift+Down" = "output - transform flipped";
|
|
"Shift+Up" = "output - transform flipped-180";
|
|
"Shift+Right" = "output - transform flipped-270";
|
|
|
|
"Escape" = ''mode default"'';
|
|
};
|
|
|
|
"resize" = {
|
|
"Left" = "resize shrink width 10px";
|
|
"Down" = "resize grow height 10px";
|
|
"Up" = "resize shrink height 10px";
|
|
"Right" = "resize grow width 10px";
|
|
|
|
"Escape" = ''mode default"'';
|
|
};
|
|
|
|
"${exitMd}" = {
|
|
"l" = "exec swaymsg exit";
|
|
"r" = "exec systemctl reboot";
|
|
"p" = "exec systemctl poweroff";
|
|
"Escape" = ''mode default"'';
|
|
};
|
|
};
|
|
keybindings = {
|
|
"${modifier}+Return" = "exec ${terminal}";
|
|
"${modifier}+q" = "kill";
|
|
"${modifier}+d" = "exec ${menuCmd}";
|
|
"${modifier}+Shift+f" = "exec firefox";
|
|
"${modifier}+Shift+c" = "reload";
|
|
"${modifier}+p" = ''exec ${pkgs.grim}/bin/grim -g "$(${pkgs.slurp}/bin/slurp -d)" - | ${pkgs.wl-clipboard}/bin/wl-copy -t image/png'';
|
|
"Print" = "exec ${pkgs.grim}/bin/grim - | ${pkgs.wl-clipboard}/bin/wl-copy -t image/png";
|
|
|
|
"${modifier}+x" = ''mode "display"'';
|
|
"${modifier}+r" = ''mode "resize"'';
|
|
|
|
"${modifier}+Shift+e" = ''mode "${exitMd}"'';
|
|
"${modifier}+l" = "exec ${pkgs.systemd}/bin/loginctl lock-session";
|
|
"Ctrl+Shift+l" = ''exec ${pkgs.grim}/bin/grim /tmp/t_lock.png && ${pkgs.swaylock}/bin/swaylock -f -i /tmp/t_lock.png'';
|
|
|
|
"${modifier}+Left" = "focus left";
|
|
"${modifier}+Down" = "focus down";
|
|
"${modifier}+Up" = "focus up";
|
|
"${modifier}+Right" = "focus right";
|
|
"${modifier}+ampersand" = "workspace 1";
|
|
"${modifier}+eacute" = "workspace 2";
|
|
"${modifier}+quotedbl" = "workspace 3";
|
|
"${modifier}+apostrophe" = "workspace 4";
|
|
"${modifier}+parenleft" = "workspace 5";
|
|
"${modifier}+minus" = "workspace 6";
|
|
"${modifier}+egrave" = "workspace 7";
|
|
"${modifier}+underscore" = "workspace 8";
|
|
"${modifier}+ccedilla" = "workspace 9";
|
|
"${modifier}+agrave" = "workspace 10";
|
|
|
|
"${modifier}+Shift+Left" = "move left";
|
|
"${modifier}+Shift+Down" = "move down";
|
|
"${modifier}+Shift+Up" = "move up";
|
|
"${modifier}+Shift+Right" = "move right";
|
|
"${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+minus" = "move container to workspace 6";
|
|
"${modifier}+Shift+egrave" = "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}+b" = "splith";
|
|
"${modifier}+v" = "splitv";
|
|
"${modifier}+Shift+s" = "layout stacking";
|
|
"${modifier}+w" = "layout tabbed";
|
|
"${modifier}+s" = "layout toggle split";
|
|
|
|
"${modifier}+f" = "fullscreen";
|
|
"${modifier}+Shift+space" = "floating toggle";
|
|
"${modifier}+space" = "focus mode toggle";
|
|
"${modifier}+z" = "focus parent";
|
|
"${modifier}+Shift+z" = "focus child";
|
|
"${modifier}+Shift+F1" = "move scratchpad";
|
|
"${modifier}+F1" = "scratchpad show";
|
|
|
|
"XF86AudioRaiseVolume" = "exec ${pkgs.pulseaudio}/bin/pactl set-sink-volume @DEFAULT_SINK@ +5%";
|
|
"XF86AudioLowerVolume" = "exec ${pkgs.pulseaudio}/bin/pactl set-sink-volume @DEFAULT_SINK@ -5%";
|
|
"XF86AudioMute" = "exec ${pkgs.pulseaudio}/bin/pactl set-sink-mute @DEFAULT_SINK@ toggle";
|
|
"XF86AudioMicMute" = "exec ${pkgs.pulseaudio}/bin/pactl set-source-mute @DEFAULT_SOURCE@ toggle";
|
|
"XF86MonBrightnessDown" = "exec ${pkgs.brightnessctl}/bin/brightnessctl set 5%-";
|
|
"XF86MonBrightnessUp" = "exec ${pkgs.brightnessctl}/bin/brightnessctl set +5%";
|
|
};
|
|
};
|
|
};
|
|
};
|
|
}
|