Fixed a couple of sway issues

Made swayfx the standard, added nixos system-level module to enable
and autostart with greetd; Includes fix for missing session that
should be fixed in later nixpkgs versions

Fixed formatting for waybar workspaces module, wasn't showing active
or empty workspaces correctly
This commit is contained in:
Evie Litherland-Smith 2024-04-12 21:17:54 +01:00
parent a4ab3c7288
commit 6dd70aa58e
7 changed files with 84 additions and 240 deletions

View file

@ -170,16 +170,7 @@
++ systemModules; ++ systemModules;
}; };
in { in {
nixosConfigurations = let nixosConfigurations = {
swaygreet = {
services.greetd.settings = let
command = "sway";
in {
default_session = {inherit command;};
initial_session = {inherit command;};
};
};
in {
## Server ## Server
Legion = systemConfig { Legion = systemConfig {
@ -200,14 +191,25 @@
Northstar = systemConfig { Northstar = systemConfig {
hostName = "Northstar"; hostName = "Northstar";
systemModules = [./system/laptop.nix swaygreet]; systemModules = [
homeModules = [./home/sway/swayfx.nix]; ./system/laptop.nix
./system/sway.nix
];
homeModules = [
./home/sway/default.nix
];
}; };
Vanguard = systemConfig { Vanguard = systemConfig {
hostName = "Vanguard"; hostName = "Vanguard";
systemModules = [./system/desktop ./system/games.nix swaygreet]; systemModules = [
homeModules = [./home/sway/swayfx.nix]; ./system/desktop
./system/games.nix
./system/sway.nix
];
homeModules = [
./home/sway/default.nix
];
}; };
## Work ## Work
@ -215,15 +217,27 @@
Ronin = systemConfig { Ronin = systemConfig {
hostName = "Ronin"; hostName = "Ronin";
user = "elitherl"; user = "elitherl";
systemModules = [./system/laptop.nix swaygreet]; systemModules = [
homeModules = [./home/sway/swayfx.nix ./home/email/work.nix]; ./system/laptop.nix
./system/sway.nix
];
homeModules = [
./home/sway/default.nix
./home/email/work.nix
];
}; };
Scorch = systemConfig { Scorch = systemConfig {
hostName = "Scorch"; hostName = "Scorch";
user = "elitherl"; user = "elitherl";
systemModules = [./system/desktop.nix swaygreet]; systemModules = [
homeModules = [./home/sway/swayfx.nix ./home/email/work.nix]; ./system/desktop.nix
./system/sway.nix
];
homeModules = [
./home/sway/default.nix
./home/email/work.nix
];
}; };
}; };
}; };

View file

@ -1,194 +0,0 @@
# Default config for sway
#
# Copy this to ~/.config/sway/config and edit it to your liking.
#
# Read `man 5 sway` for a complete reference.
### Variables
set $mod Mod4
set $left h
set $down j
set $up k
set $right l
set $term alacritty
# Your preferred application launcher
# Note: pass the final command to swaymsg so that the resulting window can be opened
# on the original workspace that the command was run on.
set $menu rofi -show drun
include /etc/sway/config-vars.d/*
### Output configuration
output DP-1 scale 1.5
gaps inner 5
gaps outer 10
default_border pixel 2
### Input configuration
input * {
xkb_layout gb
xkb_options ctrl:nocaps
}
#
# Workspaces
#
set $ws1 "1"
set $ws2 "2"
set $ws3 "3"
set $ws4 "4"
set $ws5 "5"
set $ws6 "6"
set $ws7 "7"
set $ws8 "8"
set $ws9 "9"
# workspace $ws1 output DSI-1
# workspace $ws2 output DSI-1
# workspace $ws3 output DSI-1
# workspace $ws4 output DSI-1
# workspace $ws5 output DSI-1
# workspace $ws6 output DSI-1
# workspace $ws7 output DSI-1
# workspace $ws8 output DSI-1
# assign [app_id="foot"] $ws1
# assign [class="(?i)firefox"] $ws2
# assign [app_id="(?i)firefox"] $ws2
# assign [class="(?i)chromium"] $ws2
# assign [app_id="(?i)chromium"] $ws2
# assign [class="org.kde.dolphin"] $ws3
# assign [class="thunderbird"] $ws4
# assign [class="Mailspring"] $ws4
# assign [class="Element"] $ws5
# assign [class="Signal"] $ws5
# assign [class="Steam"] $ws6
# assign [class="Bitwarden"] $ws7
# assign [class="Nxplayer.bin"] $ws8
for_window [app_id="pavucontrol"] floating enable
### Key bindings
bindsym $mod+F1 exec swaylock
bindsym $mod+Return exec $term
bindsym $mod+q kill
bindsym $mod+space exec $menu
bindsym $mod+e exec emacsclient -c
bindsym $mod+w exec firefox
bindsym $mod+f exec thunar
floating_modifier $mod normal
# Reload the configuration file
bindsym $mod+Shift+r reload
# Exit sway (logs you out of your Wayland session)
bindsym $mod+Shift+q exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -b 'Yes, exit sway' 'swaymsg exit'
# Move your focus around
bindsym $mod+$left focus left
bindsym $mod+$down focus down
bindsym $mod+$up focus up
bindsym $mod+$right focus right
# Or use $mod+[up|down|left|right]
bindsym $mod+Left focus left
bindsym $mod+Down focus down
bindsym $mod+Up focus up
bindsym $mod+Right focus right
# Move the focused window with the same, but add Shift
bindsym $mod+Shift+$left move left
bindsym $mod+Shift+$down move down
bindsym $mod+Shift+$up move up
bindsym $mod+Shift+$right move right
# Ditto, with arrow keys
bindsym $mod+Shift+Left move left
bindsym $mod+Shift+Down move down
bindsym $mod+Shift+Up move up
bindsym $mod+Shift+Right move right
# Switch to workspace
bindsym $mod+1 workspace number $ws1
bindsym $mod+2 workspace number $ws2
bindsym $mod+3 workspace number $ws3
bindsym $mod+4 workspace number $ws4
bindsym $mod+5 workspace number $ws5
bindsym $mod+6 workspace number $ws6
bindsym $mod+7 workspace number $ws7
bindsym $mod+8 workspace number $ws8
bindsym $mod+9 workspace number $ws9
bindsym $mod+0 workspace number $ws10
# Move focused container to workspace
bindsym $mod+Shift+1 move container to workspace number $ws1
bindsym $mod+Shift+2 move container to workspace number $ws2
bindsym $mod+Shift+3 move container to workspace number $ws3
bindsym $mod+Shift+4 move container to workspace number $ws4
bindsym $mod+Shift+5 move container to workspace number $ws5
bindsym $mod+Shift+6 move container to workspace number $ws6
bindsym $mod+Shift+7 move container to workspace number $ws7
bindsym $mod+Shift+8 move container to workspace number $ws8
bindsym $mod+Shift+9 move container to workspace number $ws9
bindsym $mod+Shift+0 move container to workspace number $ws10
# Note: workspaces can have any name you want, not just numbers.
# We just use 1-10 as the default.
# Make the current focus fullscreen
bindsym $mod+m fullscreen
# Toggle the current focus between tiling and floating mode
bindsym $mod+v floating toggle
# Move the currently focused window to the scratchpad
bindsym $mod+Shift+c move scratchpad
# Show the next scratchpad window or hide the focused scratchpad window.
# If there are multiple scratchpad windows, this command cycles through them.
bindsym $mod+c scratchpad show
#
# Resizing containers:
#
mode "resize" {
# left will shrink the containers width
# right will grow the containers width
# up will shrink the containers height
# down will grow the containers height
bindsym $left resize shrink width 10px
bindsym $down resize grow height 10px
bindsym $up resize shrink height 10px
bindsym $right resize grow width 10px
# Ditto, with arrow keys
bindsym Left resize shrink width 10px
bindsym Down resize grow height 10px
bindsym Up resize shrink height 10px
bindsym Right resize grow width 10px
# Return to default mode
bindsym Return mode "default"
bindsym Escape mode "default"
}
bindsym $mod+r mode "resize"
#
# Status Bar:
#
# Read `man 5 sway-bar` for more information about this section.
# SwayFX additional settings
corner_radius 10
blur enable
blur_xray disable
blur_passes 3
blur_radius 5
corner_radius 10
shadows enable
shadow_blur_radius 4
titlebar_separator enable
scratchpad_minimize disable
exec waybar
# vim: ft=i3config

View file

@ -10,9 +10,9 @@
imports = [../desktop.nix]; imports = [../desktop.nix];
wayland.windowManager.sway = { wayland.windowManager.sway = {
enable = true; enable = true;
package = null;
swaynag.enable = true; swaynag.enable = true;
systemd.enable = true; systemd.enable = true;
wrapperFeatures.gtk = true;
xwayland = true; xwayland = true;
config = { config = {
input = { input = {
@ -27,11 +27,11 @@
workspaceAutoBackAndForth = true; workspaceAutoBackAndForth = true;
bars = []; bars = [];
gaps = { gaps = {
inner = 5; inner = 10;
outer = 10; # outer = 5;
}; };
fonts = { fonts = {
names = [fonts.monospace.name fonts.emoji.name]; names = [fonts.monospace.name];
style = "regular"; style = "regular";
size = 12.0; # fonts.sizes.desktop; size = 12.0; # fonts.sizes.desktop;
}; };
@ -45,12 +45,12 @@
border = toString scheme.withHashtag.${accentColour}; border = toString scheme.withHashtag.${accentColour};
childBorder = border; childBorder = border;
}; };
focusedInactive = rec { unfocused = rec {
inherit background text indicator; inherit background text indicator;
border = toString scheme.withHashtag.${accentColour}; border = toString base03;
childBorder = border; childBorder = border;
}; };
unfocused = rec { focusedInactive = rec {
inherit background text indicator; inherit background text indicator;
border = toString base03; border = toString base03;
childBorder = border; childBorder = border;
@ -109,10 +109,23 @@
in in
lib.mkOptionDefault { lib.mkOptionDefault {
"${modifier}+F1" = "exec swaylock"; "${modifier}+F1" = "exec swaylock";
"${modifier}+z" = "exec swaync-client -t -sw";
"${modifier}+e" = "exec emacsclient -c"; "${modifier}+e" = "exec emacsclient -c";
"${modifier}+w" = "exec firefox"; "${modifier}+w" = "exec firefox";
"${modifier}+f" = "exec thunar"; "${modifier}+f" = "exec thunar";
}; };
}; };
extraConfig = ''
corner_radius 10
blur enable
blur_xray disable
blur_passes 3
blur_radius 5
corner_radius 10
shadows enable
shadow_blur_radius 4
titlebar_separator enable
scratchpad_minimize disable
'';
}; };
} }

View file

@ -1,18 +0,0 @@
{pkgs, ...}: {
imports = [./default.nix];
wayland.windowManager.sway = {
package = pkgs.swayfx;
extraConfig = ''
corner_radius 10
blur enable
blur_xray disable
blur_passes 3
blur_radius 5
corner_radius 10
shadows enable
shadow_blur_radius 4
titlebar_separator enable
scratchpad_minimize disable
'';
};
}

View file

@ -314,10 +314,10 @@
margin: 0px; margin: 0px;
padding: 0px 5px; padding: 0px 5px;
} }
#workspaces button.empty { #workspaces button.persistent {
color: ${base03}; color: ${base03};
} }
#workspaces button.active { #workspaces button.focused {
color: ${accent}; color: ${accent};
} }
#workspaces button.urgent { #workspaces button.urgent {

View file

@ -43,9 +43,19 @@
]; ];
}; };
security = { security = {
pam.services.swaylock = {};
polkit.enable = true; polkit.enable = true;
rtkit.enable = true; rtkit.enable = true;
pam = {
services.swaylock = {};
loginLimits = [
{
domain = "@users";
item = "rtprio";
type = "-";
value = 1;
}
];
};
}; };
sound.enable = false; sound.enable = false;
hardware.bluetooth.enable = true; hardware.bluetooth.enable = true;

19
system/sway.nix Normal file
View file

@ -0,0 +1,19 @@
{
config,
pkgs,
...
}: {
programs.sway = {
enable = true;
package =
pkgs.swayfx.overrideAttrs
(old: {passthru.providedSessions = ["sway"];});
wrapperFeatures.gtk = true;
};
services.greetd.settings = let
command = "${config.programs.sway.package}/bin/sway";
in {
default_session = {inherit command;};
initial_session = {inherit command;};
};
}