Evie Litherland-Smith
3e0a4bb725
Move alacritty opacity and decoration settings to sway only. Remove Emacs opacity by default, todo maybe add to sway only somehow...
241 lines
7.9 KiB
Nix
241 lines
7.9 KiB
Nix
{
|
|
config,
|
|
lib,
|
|
pkgs,
|
|
fonts,
|
|
accentColourName,
|
|
...
|
|
}: let
|
|
set-background = pkgs.writeShellScriptBin "set-background" ''
|
|
${pkgs.swaybg}/bin/swaybg -m fill -i ${../wallpapers/landscapes/tropic_island_day.jpg}
|
|
'';
|
|
in {
|
|
imports = [
|
|
../default.nix
|
|
./avizo/default.nix
|
|
./fuzzel/default.nix
|
|
./swaylock/default.nix
|
|
./swayidle/default.nix
|
|
./swaync/default.nix
|
|
./waybar/default.nix
|
|
./wlogout/default.nix
|
|
];
|
|
home.packages = with pkgs; [
|
|
set-background
|
|
pinentry-gnome3
|
|
gnome.seahorse
|
|
ffmpeg
|
|
evince
|
|
grim
|
|
slurp
|
|
swayimg
|
|
swaybg
|
|
(writeShellScriptBin "protonmail-setup-bridge" ''
|
|
pkill -9 -f protonmail-bridge
|
|
${protonmail-bridge}/bin/protonmail-bridge -c
|
|
swaymsg exec "${protonmail-bridge}/bin/protonmail-bridge -n"
|
|
'')
|
|
(writeShellScriptBin "davmail-setup" ''
|
|
systemctl --user restart davmail # Ensure config file is present
|
|
systemctl --user stop davmail
|
|
${davmail}/bin/davmail -n ~/.davmail.properties
|
|
systemctl --user restart davmail
|
|
'')
|
|
];
|
|
programs = {
|
|
waybar.systemd.target = "sway-session.target";
|
|
alacritty.settings.window = {
|
|
padding = {
|
|
x = 10;
|
|
y = 10;
|
|
};
|
|
decorations = "none";
|
|
opacity = 0.85;
|
|
};
|
|
};
|
|
services = {
|
|
kanshi.systemdTarget = "sway-session.target";
|
|
gpg-agent.pinentryPackage = pkgs.pinentry-gnome3;
|
|
avizo.enable = true;
|
|
kdeconnect = {
|
|
enable = true;
|
|
indicator = true;
|
|
};
|
|
udiskie = {
|
|
enable = true;
|
|
notify = true;
|
|
automount = true;
|
|
tray = "never";
|
|
};
|
|
};
|
|
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.${accentColourName};
|
|
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 = "${set-background}/bin/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.swaynotificationcenter}/bin/swaync-client -t -sw";
|
|
"${modifier}+Shift+z" = "exec ${pkgs.swaynotificationcenter}/bin/swaync-client -d -sw";
|
|
"${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 5
|
|
blur enable
|
|
blur_xray disable
|
|
blur_passes 3
|
|
blur_radius 5
|
|
shadows enable
|
|
shadow_blur_radius 5
|
|
layer_effects "system-menu" blur enable; blur_ignore_transparent enable; shadows enable
|
|
layer_effects "gtk-layer-shell" blur enable; blur_ignore_transparent enable; shadows enable
|
|
layer_effects "notifications" blur enable; blur_ignore_transparent enable; shadows enable
|
|
layer_effects "launcher" blur enable; blur_ignore_transparent enable; shadows enable
|
|
layer_effects "logout_dialog" blur enable; blur_ignore_transparent enable; shadows enable
|
|
layer_effects "waybar" blur enable; blur_ignore_transparent enable; shadows enable
|
|
layer_effects "avizo" blur enable; blur_ignore_transparent enable; shadows enable
|
|
layer_effects "swaync-notification-window" blur enable; blur_ignore_transparent enable; shadows enable
|
|
layer_effects "swaync-control-center" blur enable; blur_ignore_transparent enable; shadows enable
|
|
titlebar_separator enable
|
|
'';
|
|
};
|
|
}
|