132 lines
3.6 KiB
Nix
132 lines
3.6 KiB
Nix
|
{
|
||
|
config,
|
||
|
lib,
|
||
|
...
|
||
|
}:
|
||
|
with lib; let
|
||
|
cfg = config.custom.desktops.sway.settings;
|
||
|
in {
|
||
|
options.custom.desktops.sway.settings.enable = mkOption {default = false;};
|
||
|
|
||
|
config.home-manager.users.${config.custom.username} = mkIf cfg.enable {
|
||
|
# https://nix-community.github.io/home-manager/options.xhtml#opt-wayland.windowManager.sway.config
|
||
|
# https://github.com/swaywm/sway/blob/master/config.in
|
||
|
# https://i3wm.org/docs/
|
||
|
#?? man 5 sway
|
||
|
wayland.windowManager.sway = {
|
||
|
config = {
|
||
|
#!! Module order causes many issues, use extraConfig
|
||
|
#// assigns = { };
|
||
|
|
||
|
#?? man sway-bar
|
||
|
bars = []; # Disable swaybars
|
||
|
|
||
|
# https://i3wm.org/docs/userguide.html#client_colors
|
||
|
colors = let
|
||
|
common = {
|
||
|
background = "#002b36";
|
||
|
border = "#073642";
|
||
|
childBorder = "#073642";
|
||
|
indicator = "#d33682";
|
||
|
text = "#93a1a1";
|
||
|
};
|
||
|
in {
|
||
|
background = common.background;
|
||
|
|
||
|
focused =
|
||
|
common
|
||
|
// {
|
||
|
background = "#6c71c4";
|
||
|
border = "#6c71c4";
|
||
|
childBorder = "#6c71c4";
|
||
|
text = "#002b36";
|
||
|
};
|
||
|
|
||
|
focusedInactive =
|
||
|
common
|
||
|
// {
|
||
|
border = "#93a1a1";
|
||
|
childBorder = "#93a1a1";
|
||
|
};
|
||
|
|
||
|
unfocused =
|
||
|
common
|
||
|
// {
|
||
|
border = "#002b36";
|
||
|
childBorder = "#002b36";
|
||
|
};
|
||
|
|
||
|
urgent = common;
|
||
|
};
|
||
|
|
||
|
# BUG: floating_modifier does not clear release binds
|
||
|
# https://github.com/swaywm/sway/issues/4505
|
||
|
#// floating = { };
|
||
|
|
||
|
focus = {
|
||
|
# BUG: Does not switch workspace on activation
|
||
|
# https://github.com/swaywm/sway/issues/7912
|
||
|
newWindow = "focus";
|
||
|
|
||
|
wrapping = "force";
|
||
|
};
|
||
|
|
||
|
fonts.size = 11.0;
|
||
|
|
||
|
# BUG: Other gaps may disable swayfx corners, fixed in master
|
||
|
# https://github.com/WillPower3309/swayfx/issues/93
|
||
|
# https://github.com/swaywm/sway/pull/8017
|
||
|
gaps.inner = 20;
|
||
|
|
||
|
modes = {}; # Disable modes
|
||
|
|
||
|
#?? wev
|
||
|
modifier = "Mod4";
|
||
|
|
||
|
# https://i3wm.org/docs/userguide.html#_automatically_starting_applications_on_i3_startup
|
||
|
startup = let
|
||
|
# Wrap exec in quotes
|
||
|
#?? <always|once> "COMMAND"
|
||
|
always = command: {command = "'${command}'";};
|
||
|
once = command: {command = "'${command}'";};
|
||
|
in [
|
||
|
# (always "${pkill} sway-audio-idle-inhibit; ${sway-audio-idle-inhibit}")
|
||
|
# (always "${pkill} vrr-fs; vrr-fs")
|
||
|
|
||
|
# # TODO: Use graphical-session.target when merged upstream
|
||
|
# # https://github.com/NixOS/nixpkgs/pull/218716
|
||
|
# (always "${pkill} waybar; ${waybar}")
|
||
|
|
||
|
# (once "${rm} ~/.config/qalculate/qalc.dmenu.history") # Clear calc history
|
||
|
# (once "${rm} ~/.cache/cliphist/db") # Clear clipboard database
|
||
|
# (once firefox-esr)
|
||
|
];
|
||
|
};
|
||
|
|
||
|
#!! Applies to every move/workspace invocation
|
||
|
# The inverse of --no-auto-back-and-forth would be preferable
|
||
|
#// workspaceAutoBackAndForth = true;
|
||
|
|
||
|
#// workspaceLayout = "";
|
||
|
|
||
|
#// workspaceOutputAssign = [ ];
|
||
|
|
||
|
# Commands not currently configurable via options
|
||
|
extraConfig = ''
|
||
|
default_border pixel 2
|
||
|
|
||
|
# BUG: Does not work
|
||
|
# https://github.com/swaywm/sway/issues/7360
|
||
|
default_floating_border normal 0
|
||
|
|
||
|
# BUG: Unknown/invalid command
|
||
|
#// primary_selection disabled
|
||
|
|
||
|
titlebar_border_thickness 2
|
||
|
|
||
|
workspace 1
|
||
|
'';
|
||
|
};
|
||
|
};
|
||
|
}
|