82 lines
2 KiB
Nix
82 lines
2 KiB
Nix
{ pkgs, lib, config, ... }:
|
|
|
|
let cfg = config.custom.gui.sway;
|
|
|
|
in with lib; {
|
|
|
|
options.custom.gui.sway = {
|
|
enable = mkEnableOption "sway window manager";
|
|
};
|
|
|
|
config = mkIf (cfg.enable) {
|
|
|
|
home.packages = with pkgs; [
|
|
wl-clipboard
|
|
(writeScriptBin "c" ''
|
|
${wl-clipboard}/bin/wl-copy
|
|
'')
|
|
(writeScriptBin "p" ''
|
|
${wl-clipboard}/bin/wl-paste
|
|
'')
|
|
];
|
|
|
|
programs.swaylock.enable = true;
|
|
programs.waybar.enable = true;
|
|
services.swayidle.enable = true;
|
|
|
|
wayland.windowManager.sway = {
|
|
# This is all required to get it to not die.
|
|
enable = true;
|
|
extraSessionCommands = "export WLR_NO_HARDWARE_CURSORS=1";
|
|
extraOptions = [ "--unsupported-gpu" ];
|
|
|
|
config = rec {
|
|
output."*".bg = "${../../data/wallpaper.jpg} fill";
|
|
input."type:keyboard".xkb_options = "caps:escape";
|
|
|
|
terminal = "${pkgs.kitty}/bin/kitty";
|
|
|
|
# Directional keys
|
|
modifier = "Mod4";
|
|
fonts = {
|
|
names = [ "Fira Code" ];
|
|
size = 8.0;
|
|
};
|
|
|
|
keybindings = let mod = modifier; in {
|
|
"${mod}+h" = "focus left";
|
|
"${mod}+j" = "focus down";
|
|
"${mod}+k" = "focus up";
|
|
"${mod}+l" = "focus right";
|
|
|
|
"${mod}+Shift+h" = "move left";
|
|
"${mod}+Shift+j" = "move down";
|
|
"${mod}+Shift+k" = "move up";
|
|
"${mod}+Shift+l" = "move right";
|
|
|
|
"${mod}+a" = "split v";
|
|
"${mod}+s" = "split h";
|
|
"${mod}+f" = "fullscreen toggle";
|
|
|
|
"${mod}+Alt+a" = "layout toggle stacking splitv";
|
|
"${mod}+Alt+s" = "layout toggle tabbed splith";
|
|
|
|
"${mod}+Return" = "exec ${terminal}";
|
|
"${mod}+Escape" = "exec ${pkgs.swaylock}/bin/swaylock";
|
|
"${mod}+Tab" = "exec ${pkgs.firefox}/bin/firefox";
|
|
|
|
"${mod}+Backspace" = "mode kill";
|
|
};
|
|
|
|
modes."kill" = {
|
|
Backspace = "kill; mode default";
|
|
Escape = "mode default";
|
|
};
|
|
|
|
window.titlebar = true;
|
|
};
|
|
};
|
|
|
|
};
|
|
|
|
}
|