summaryrefslogtreecommitdiff
path: root/home/desktop/sway.nix
diff options
context:
space:
mode:
authorAlejandro Soto <alejandro@34project.org>2024-12-03 21:19:39 -0600
committerAlejandro Soto <alejandro@34project.org>2024-12-03 21:49:54 -0600
commit61f3db56410f41d5249c88e44db60d9713dae26d (patch)
tree49c2d5d5e4da331d139cfdc6034c0dba5980271b /home/desktop/sway.nix
parent854f5ee287eb66db5a0713e2f4fac56794e3d735 (diff)
home: big refactor
Diffstat (limited to 'home/desktop/sway.nix')
-rw-r--r--home/desktop/sway.nix117
1 files changed, 117 insertions, 0 deletions
diff --git a/home/desktop/sway.nix b/home/desktop/sway.nix
new file mode 100644
index 0000000..1162e87
--- /dev/null
+++ b/home/desktop/sway.nix
@@ -0,0 +1,117 @@
+{ config, lib, pkgs, ... }:
+with lib; let
+ cfg = config.local.desktop;
+in
+{
+ config = mkIf cfg.enable {
+ programs = {
+ swaylock = {
+ enable = true;
+
+ settings = {
+ color = "222222";
+ font-size = 24;
+ show-failed-attempts = true;
+ };
+ };
+
+ waybar.enable = true;
+
+ wofi.enable = true;
+ };
+
+ services = {
+ swayidle = {
+ enable = true;
+
+ timeouts = [
+ { timeout = 600; command = "${getExe config.programs.swaylock.package} -fF"; }
+ ];
+ };
+ };
+
+ systemd.user.services.wl-gammarelay-rs = {
+ Unit.After = [ "sway-session.target" ];
+ Install.WantedBy = [ "sway-session.target" ];
+
+ Service.ExecStart = getExe pkgs.wl-gammarelay-rs;
+ };
+
+ wayland.windowManager.sway = {
+ enable = true;
+
+ config = {
+ modifier = "Mod4";
+ focus.followMouse = false;
+
+ fonts = {
+ size = 11.0;
+ names = [ "DejaVu Sans Mono" ];
+ style = "Bold Semi-Condensed";
+ };
+
+ bars = singleton {
+ command = "waybar";
+ position = "top";
+ };
+
+ keybindings =
+ let
+ mod = config.wayland.windowManager.sway.config.modifier;
+ wofi = config.programs.wofi.package;
+
+ inherit (pkgs.local) st tmux-lift;
+
+ grimshot = getExe pkgs.sway-contrib.grimshot;
+ in
+ mkOptionDefault {
+ "${mod}+a" = "focus parent";
+ "${mod}+c" = "focus child";
+ "${mod}+d" = "exec --no-startup-id ${getExe wofi} -S run";
+ "${mod}+i" = "exec busctl --user call rs.wl-gammarelay / rs.wl.gammarelay ToggleInverted";
+ "${mod}+o" = "exec ${getExe config.programs.swaylock.package} -fF";
+ "${mod}+Return" = "exec ${getExe st} -e ${getExe tmux-lift}";
+ "${mod}+Shift+e" = "input * xkb_layout latam";
+ "${mod}+Shift+u" = "input * xkb_layout us";
+ "${mod}+p" = "exec ${grimshot} copy active";
+ "${mod}+Shift+p" = "exec ${grimshot} copy area";
+ "${mod}+Ctrl+p" = "exec ${grimshot} copy window";
+ };
+
+ startup = [
+ {
+ command = "${getExe pkgs.xautolock} -time 10 -locker '${pkgs.i3lock-color}/bin/i3lock-color -fe -c222222'";
+ }
+ ];
+
+ window.commands = [
+ # (No) Title Bars
+ {
+ command = "border pixel 5";
+ criteria.class = "^.*";
+ }
+
+ {
+ command = "floating enabled";
+ criteria.class = "floating";
+ }
+ ];
+ };
+
+ extraSessionCommands = ''
+ export SDL_VIDEODRIVER=wayland
+ # needs qt5.qtwayland in systemPackages
+ export QT_QPA_PLATFORM=wayland
+ export QT_WAYLAND_DISABLE_WINDOWDECORATION="1"
+ # Fix for some Java AWT applications (e.g. Android Studio),
+ # use this if they aren't displayed properly:
+ export _JAVA_AWT_WM_NONREPARENTING=1
+ '';
+
+ swaynag.enable = true;
+ systemd.enable = true;
+
+ xwayland = true;
+ };
+ };
+}