Evie Litherland-Smith
e9a3bcd858
Rename variables to be clear these are colour names, not the actual colours. Redefine as baseXX to be used in all scheme variables. Update all uses to remove "with scheme" form and make more explicit.
183 lines
6.3 KiB
Nix
183 lines
6.3 KiB
Nix
{
|
|
config,
|
|
lib,
|
|
pkgs,
|
|
fonts,
|
|
accentColourName,
|
|
altAccentColourName,
|
|
...
|
|
}: {
|
|
programs.waybar.systemd.target = lib.mkIf config.wayland.windowManager.sway.systemd.enable "sway-session.target";
|
|
services.kanshi.systemdTarget = lib.mkIf config.wayland.windowManager.sway.systemd.enable "sway-session.target";
|
|
wayland.windowManager.sway = {
|
|
enable = true;
|
|
package =
|
|
pkgs.swayfx.overrideAttrs
|
|
(old: {passthru.providedSessions = ["sway"];});
|
|
swaynag.enable = true;
|
|
systemd.enable = true;
|
|
xwayland = true;
|
|
checkConfig = false;
|
|
config = {
|
|
input = {
|
|
"*" = {
|
|
xkb_layout = "gb";
|
|
xkb_options = "ctrl:nocaps";
|
|
};
|
|
"type:touchpad" = {
|
|
tap = "enabled";
|
|
natural_scroll = "enabled";
|
|
};
|
|
};
|
|
seat = {
|
|
"seat0" = {
|
|
xcursor_theme = with config.gtk.cursorTheme; "${name} ${toString size}";
|
|
};
|
|
};
|
|
modifier = "Mod4";
|
|
terminal = "${config.programs.alacritty.package}/bin/alacritty";
|
|
menu = "${config.programs.fuzzel.package}/bin/fuzzel";
|
|
workspaceAutoBackAndForth = true;
|
|
bars = [];
|
|
gaps = {
|
|
inner = 5;
|
|
outer = 0;
|
|
};
|
|
fonts = {
|
|
names = [fonts.monospace.name];
|
|
style = "regular";
|
|
size = fonts.sizes.desktop * 1.0;
|
|
};
|
|
colors = let
|
|
sc = config.scheme.withHashtag;
|
|
text = toString sc.base05;
|
|
indicator = toString sc.${altAccentColourName};
|
|
background = toString sc.base00;
|
|
in {
|
|
inherit background;
|
|
focused = let
|
|
border = toString sc.${accentColourName};
|
|
in {
|
|
inherit background text indicator border;
|
|
childBorder = border;
|
|
};
|
|
focusedInactive = let
|
|
border = toString sc.base04;
|
|
in {
|
|
inherit background text indicator border;
|
|
childBorder = border;
|
|
};
|
|
unfocused = let
|
|
border = toString sc.base03;
|
|
in {
|
|
inherit background text indicator border;
|
|
childBorder = border;
|
|
};
|
|
urgent = let
|
|
border = toString sc.red;
|
|
in {
|
|
inherit background text indicator border;
|
|
childBorder = border;
|
|
};
|
|
};
|
|
startup = [
|
|
{command = "${pkgs.libsForQt5.polkit-kde-agent}/libexec/polkit-kde-authentication-agent-1";}
|
|
{command = "${pkgs.protonmail-bridge}/bin/protonmail-bridge -n";}
|
|
{command = "set-background";}
|
|
];
|
|
window = {
|
|
border = 1;
|
|
titlebar = false;
|
|
commands = [
|
|
{
|
|
criteria.window_role = "(?:pop-up|bubble|dialog)";
|
|
command = "floating enable";
|
|
}
|
|
{
|
|
criteria.app_id = "(?:org\.kde\.polkit-kde-authentication-agent-1|Pinentry|pavucontrol|\.blueman-manager-wrapped|nm-connection-editor)";
|
|
command = "floating enable";
|
|
}
|
|
{
|
|
criteria.class = "(?:[Mm]atplotlib|.*\.py|Idl)";
|
|
command = "floating enable";
|
|
}
|
|
{
|
|
# Catch-all for file dialog windows
|
|
criteria.title = "(?:Open|Save) (?:File|Folder|As)";
|
|
command = "floating enable, resize set width 1030 height 710";
|
|
}
|
|
{
|
|
# Inhibit idle when watching vidoes
|
|
criteria.app_id = "(?:firefox|mpv)";
|
|
command = "inhibit_idle fullscreen";
|
|
}
|
|
{
|
|
# Window rules for game sessions.
|
|
# Note: controllers don't reset idle timer
|
|
criteria.class = "(?:steam_app|Minecraft).*";
|
|
command = "floating enable, fullscreen enable, inhibit_idle focus";
|
|
}
|
|
];
|
|
};
|
|
floating.border = 1;
|
|
keybindings = with config; let
|
|
modifier = wayland.windowManager.sway.config.modifier;
|
|
in
|
|
lib.mkOptionDefault {
|
|
# Movement
|
|
"${modifier}+comma" = "workspace prev";
|
|
"${modifier}+period" = "workspace next";
|
|
"${modifier}+shift+comma" = "move workspace prev";
|
|
"${modifier}+shift+period" = "move workspace next";
|
|
"${modifier}+bracketleft" = "move workspace to output left";
|
|
"${modifier}+bracketright" = "move workspace to output right";
|
|
|
|
# Function keys
|
|
## Sound
|
|
"XF86AudioMute" = "exec ${services.avizo.package}/bin/volumectl %";
|
|
"XF86AudioMicMute" = "exec ${services.avizo.package}/bin/volumectl -m %";
|
|
"XF86AudioRaiseVolume" = "exec ${services.avizo.package}/bin/volumectl -u + 5";
|
|
"XF86AudioLowerVolume" = "exec ${services.avizo.package}/bin/volumectl -u - 5";
|
|
|
|
## Playback
|
|
"XF86AudioPlay" = "exec ${pkgs.playerctl}/bin/playerctl play-pause";
|
|
"XF86AudioStop" = "exec ${pkgs.playerctl}/bin/playerctl play-pause";
|
|
"XF86AudioPrev" = "exec ${pkgs.playerctl}/bin/playerctl previous";
|
|
"XF86AudioNext" = "exec ${pkgs.playerctl}/bin/playerctl next";
|
|
|
|
## Brightness
|
|
"XF86MonBrightnessUp" = "exec ${services.avizo.package}/bin/lightctl + 5";
|
|
"XF86MonBrightnessDown" = "exec ${services.avizo.package}/bin/lightctl - 5";
|
|
|
|
# System utilities
|
|
"Mod4+Mod1+l" = "exec swaylockfx";
|
|
"${modifier}+z" = "exec ${pkgs.mako}/bin/makoctl dismiss -a";
|
|
"${modifier}+Shift+z" = "exec ${pkgs.mako}/bin/makoctl restore";
|
|
"${modifier}+Shift+p" = "exec ${programs.wlogout.package}/bin/wlogout";
|
|
"${modifier}+Shift+Return" = "exec ${programs.emacs.finalPackage}/bin/emacsclient -c";
|
|
};
|
|
};
|
|
extraConfig = ''
|
|
bindgesture swipe:right workspace prev
|
|
bindgesture swipe:left workspace next
|
|
corner_radius 10
|
|
blur enable
|
|
blur_xray disable
|
|
blur_passes 3
|
|
blur_radius 5
|
|
corner_radius 10
|
|
shadows disable
|
|
shadow_blur_radius 0
|
|
layer_effects "system-menu" blur enable; shadows disable
|
|
layer_effects "gtk-layer-shell" blur enable; shadows disable
|
|
layer_effects "notifications" blur enable; shadows disable
|
|
layer_effects "launcher" blur enable; shadows disable
|
|
layer_effects "logout_dialog" blur enable; shadows disable
|
|
layer_effects "waybar" blur enable; shadows disable
|
|
layer_effects "avizo" blur enable; shadows disable
|
|
titlebar_separator enable
|
|
scratchpad_minimize enable
|
|
'';
|
|
};
|
|
}
|