{ pkgs, config, lib, ... }: let term = config.wayland.windowManager.sway.config.terminal; homeDir = config.home.homeDirectory; cfg = config.py.profiles.gui; in { config = lib.mkIf cfg.enable { catppuccin = { sway.enable = true; }; home.sessionVariables = { XDG_CURRENT_DESKTOP = "sway"; }; wayland.windowManager.sway = { enable = lib.mkDefault true; package = null; # nix-community/home-manager/issues/5311 checkConfig = false; wrapperFeatures.base = true; wrapperFeatures.gtk = true; extraConfig = '' default_border pixel focus_on_window_activation smart ''; systemd = { enable = true; xdgAutostart = true; }; config = { terminal = lib.getExe pkgs.ghostty; menu = "exec ${lib.getExe pkgs.onagre}"; modifier = "Mod4"; bars = [ { command = "true"; } ]; focus = { followMouse = true; mouseWarping = true; newWindow = "smart"; }; fonts = { names = [ "Inter" ]; style = "Regular"; size = 12.0; }; gaps = { inner = 1; outer = 1; smartBorders = "on"; smartGaps = false; }; input = { "type:keyboard" = { xkb_options = "caps:escape"; }; "type:mouse" = { accel_profile = "flat"; }; "type:touchpad" = { accel_profile = "adaptive"; scroll_factor = "1.5"; tap = "enabled"; }; }; modes = { resize = { Escape = "mode default"; Return = "mode default"; Up = "resize shrink height 10 px"; Down = "resize grow height 10 px"; Left = "resize shrink width 10 px"; Right = "resize grow width 10 px"; h = "resize shrink width 10 px"; j = "resize grow height 10 px"; k = "resize shrink height 10 px"; l = "resize grow width 10 px"; }; }; output = { eDP-1 = { scale = "1.2"; }; }; startup = [ { command = "${pkgs.dex}/bin/dex -a"; } { command = "${homeDir}/scripts/unfuck-xdg-portals.fish"; } { command = "wl-paste -t text --watch clipman store --no-persist"; } ]; window = { commands = [ { command = "inhibit_idle fullscreen"; criteria = { class = "Chromium|zoom|Firefox"; }; } { command = "floating enable, sticky enable, resize set 20 ppt 40 ppt, border pixel 4"; criteria = { app_id = "^py.floating$"; }; } { command = "resize set 20 ppt"; criteria = { title = "Mumble PTT"; }; } ]; }; colors = { background = "$base"; focused = { border = "$pink"; background = "$base"; text = "$text"; indicator = "$rosewater"; childBorder = "$pink"; }; focusedInactive = { border = "$mauve"; background = "$base"; text = "$text"; indicator = "$rosewater"; childBorder = "$mauve"; }; unfocused = { border = "$mauve"; background = "$base"; text = "$text"; indicator = "$rosewater"; childBorder = "$mauve"; }; urgent = { border = "$peach"; background = "$base"; text = "$peach"; indicator = "$overlay0"; childBorder = "$peach"; }; placeholder = { border = "$overlay0"; background = "$base"; text = "$text"; indicator = "$overlay0"; childBorder = "$overlay0"; }; }; }; }; }; }