Basic sway setup
This commit is contained in:
parent
d752880bad
commit
bd16449cc8
3 changed files with 156 additions and 14 deletions
|
@ -36,6 +36,7 @@
|
||||||
(import ../../modules/programs/emacs.nix {})
|
(import ../../modules/programs/emacs.nix {})
|
||||||
../../modules/programs/fonts.nix
|
../../modules/programs/fonts.nix
|
||||||
../../modules/programs/desktop.nix
|
../../modules/programs/desktop.nix
|
||||||
|
../../modules/programs/sway.nix
|
||||||
../../modules/programs/media.nix
|
../../modules/programs/media.nix
|
||||||
../../modules/programs/games.nix
|
../../modules/programs/games.nix
|
||||||
];
|
];
|
||||||
|
|
|
@ -4,21 +4,162 @@
|
||||||
pkgs,
|
pkgs,
|
||||||
inputs',
|
inputs',
|
||||||
...
|
...
|
||||||
}: {
|
}: let
|
||||||
|
fuzzel-command = ''fuzzel -f "Iosevka Sans Quasi:size=16" -b "181818cc" -S "b9b9b9ff" -s "252525cc" -t "777777ff" -B 5 -r 5 -C "70b433cc" --width=80 --lines=25'';
|
||||||
|
in {
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
inputs'.nixpkgs-unstable.legacyPackages.xwayland-satellite
|
inputs'.nixpkgs-unstable.legacyPackages.xwayland-satellite
|
||||||
|
# Clipboard
|
||||||
|
wl-clipboard
|
||||||
|
cliphist
|
||||||
|
# Launcher
|
||||||
|
fuzzel
|
||||||
|
# Polkit
|
||||||
|
kdePackages.polkit-kde-agent-1
|
||||||
|
# Locking
|
||||||
|
swaylock-effects
|
||||||
|
swayidle
|
||||||
];
|
];
|
||||||
wayland.windowManger.sway = {
|
wayland.windowManager.sway = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = null;
|
package = null;
|
||||||
sway = {
|
swaynag.enable = true;
|
||||||
xwayland = false;
|
xwayland = false;
|
||||||
config = {
|
config = let
|
||||||
modifer = "Mod4";
|
modifier = "Mod4";
|
||||||
startup = [
|
in {
|
||||||
{command = "env DISPLAY=:0 xwayland-satellite";}
|
inherit modifier;
|
||||||
];
|
# Disable bars in the sway config, we'll launch ours through systemd
|
||||||
|
bars = [];
|
||||||
|
# Cosmetic settings
|
||||||
|
gaps = let
|
||||||
|
big = 5;
|
||||||
|
small = 3;
|
||||||
|
in {
|
||||||
|
inner = big;
|
||||||
|
outer = small;
|
||||||
|
smartBorders = "on";
|
||||||
|
smartGaps = true;
|
||||||
};
|
};
|
||||||
|
# Making trying to go to the current workspace send you back to your previous one
|
||||||
|
workspaceAutoBackAndForth = true;
|
||||||
|
# Use foot client as the default terminal
|
||||||
|
terminal = "footclient";
|
||||||
|
# Keybinding configuration
|
||||||
|
keybindings = {
|
||||||
|
"${modifier}+d" = "exec ${fuzzel-command} --prompt='❯ '";
|
||||||
|
"${modifier}+x" = "exec cliphist list | ${fuzzel-command} --prompt=' ❯ ' --dmenu | cliphist decode | wl-copy";
|
||||||
|
};
|
||||||
|
# Start programs when sway starts
|
||||||
|
startup = [
|
||||||
|
# Use xwayland-satellite as our xwayland server to disable scaling for x11 apps
|
||||||
|
{command = "env DISPLAY=:0 xwayland-satellite";}
|
||||||
|
# Setup wl-paste for clipboard memory
|
||||||
|
{command = "wl-paste --watch cliphist store --250";}
|
||||||
|
];
|
||||||
|
# Floating window rules
|
||||||
|
floating.criteria = [
|
||||||
|
# Basic window role/type detection
|
||||||
|
#{ window_role = "pop-up"; }
|
||||||
|
#{ window_role = "bubble"; }
|
||||||
|
#{ window_role = "dialog"; }
|
||||||
|
#{ window_type = "dialog"; }
|
||||||
|
#{ window_role = "task_dialog"; }
|
||||||
|
#{ window_type = "menu"; }
|
||||||
|
#{ window_role = "About"; }
|
||||||
|
#{ window_role = "Preferences"; }
|
||||||
|
# "Common" app id detection
|
||||||
|
#{ app_id = "floating"; }
|
||||||
|
#{ app_id = "floating_update"; }
|
||||||
|
#{ class = "(?i)pinentry"; }
|
||||||
|
#{ app_id = "Yad"; }
|
||||||
|
#{ app_id = "yad"; }
|
||||||
|
{app_id = ".*polkit.*";}
|
||||||
|
{title = "^Open File$";}
|
||||||
|
{title = "^Open Files$";}
|
||||||
|
# { title = "^Open$"; }
|
||||||
|
{title = "^Choose Files$";}
|
||||||
|
{title = "^Save As$";}
|
||||||
|
# { title = "^$"; }
|
||||||
|
{title = "Save File";}
|
||||||
|
{title = "File Operation Progress";}
|
||||||
|
{title = "(?i)(?:copying|deleting|moving)";}
|
||||||
|
# Firefox stuff
|
||||||
|
{title = "About Mozilla Firefox";}
|
||||||
|
{title = "Firefox - Sharing Indicator";}
|
||||||
|
{title = "Firefox — Sharing Indicator";}
|
||||||
|
# Specific applications
|
||||||
|
{app_id = "pavucontrol";}
|
||||||
|
{app_id = ".*blueman-manager.*";}
|
||||||
|
];
|
||||||
|
window.commands = [
|
||||||
|
{
|
||||||
|
command = "floating enable, sticky enable";
|
||||||
|
criteria = {
|
||||||
|
app_id = "firefox(-\w*)?";
|
||||||
|
title = "Library";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
command = "floating enable, sticky enable";
|
||||||
|
criteria = {
|
||||||
|
title = "[Pp]icture-in-[Pp]icture";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
systemd = {
|
||||||
|
enable = true;
|
||||||
|
variables = ["--all"];
|
||||||
|
};
|
||||||
|
wrapperFeatures = {
|
||||||
|
gtk = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
# Services to have sway act like a desktop environment
|
||||||
|
services.blueman-applet.enable = true;
|
||||||
|
systemd.user.services.polkit-kde = {
|
||||||
|
Unit = {
|
||||||
|
Description = "Polkit kde authentication agent";
|
||||||
|
After = ["graphical-session.target"];
|
||||||
|
};
|
||||||
|
Service = {
|
||||||
|
Type = "simple";
|
||||||
|
ExecStart = "${pkgs.libsForQt5.polkit-kde-agent}/libexec/polkit-kde-authentication-agent-1";
|
||||||
|
Restart = "on-failure";
|
||||||
|
};
|
||||||
|
Install = {
|
||||||
|
WantedBy = ["graphical-session.target"];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
services.swayidle = let
|
||||||
|
swaylock-package = pkgs.swaylock-effects;
|
||||||
|
swaylock-command = ''--screenshots --grace 30 --indicator --clock --timestr "%-I:%M:%S %p" --datestr "%A %Y-%M-%d" --effect-blur 20x3'';
|
||||||
|
in {
|
||||||
|
enable = true;
|
||||||
|
timeouts = [
|
||||||
|
# Lock the screen after 5 minutes of inactivity
|
||||||
|
{
|
||||||
|
timeout = 300;
|
||||||
|
command = "${swaylock-package}/bin/swaylock ${
|
||||||
|
builtins.replaceStrings ["%"] ["%%"] swaylock-command
|
||||||
|
}";
|
||||||
|
}
|
||||||
|
# Turn off the displays after 10 minutes of inactivity
|
||||||
|
{
|
||||||
|
timeout = 600;
|
||||||
|
command = ''swaymsg "output * dpms off"'';
|
||||||
|
resumeCommand = ''swaymsg "output * dpms on"'';
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
# TODOs:
|
||||||
|
# - [ ] Dropdown terminal
|
||||||
|
# - [ ] SwayFX and eyecandy configuration
|
||||||
|
# - [ ] Brightness control
|
||||||
|
# - [ ] Volume control
|
||||||
|
# - [ ] Floating, centered, and specific portion of screen for all configuration apps
|
||||||
|
# - [ ] Bar
|
||||||
|
# - [ ] Notifications
|
||||||
|
# - [x] Port over default floating rules
|
||||||
|
|
|
@ -102,11 +102,11 @@
|
||||||
services.desktopManager.plasma6.enable = true;
|
services.desktopManager.plasma6.enable = true;
|
||||||
environment.sessionVariables.NIXOS_OZONE_WL = "1";
|
environment.sessionVariables.NIXOS_OZONE_WL = "1";
|
||||||
# Enable swaywm
|
# Enable swaywm
|
||||||
# programs.sway = {
|
programs.sway = {
|
||||||
# enable = true;
|
enable = true;
|
||||||
# package = inputs'.swayfx.packages.default;
|
# package = inputs'.swayfx.packages.default;
|
||||||
# wrapperFeatures.gtk = true;
|
wrapperFeatures.gtk = true;
|
||||||
# };
|
};
|
||||||
# Setup bluetooth
|
# Setup bluetooth
|
||||||
hardware.bluetooth.enable = true;
|
hardware.bluetooth.enable = true;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue