{ config, lib, pkgs, ... }: with lib; let cfg = config.local.gui; in { config = mkIf cfg.enable { home.packages = [ pkgs.wlr-randr ]; programs = { waybar.enable = true; wofi.enable = true; }; services = { swayidle = { enable = true; timeouts = [ { timeout = 600; command = "${getExe pkgs.gtklock} -d"; } ]; }; }; 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 = true; 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; 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 pkgs.gtklock} -d"; "${mod}+Return" = "exec ${lib.getExe pkgs.kitty} ${lib.getExe pkgs.tmux}"; "${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"; }; 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; }; }; }