{ pkgs, lib, config, ... }: with lib; let cfg = config.wm.sway; dbus-sway-environment = pkgs.writeTextFile { name = "dbus-sway-environment"; destination = "/bin/dbus-sway-environment"; executable = true; text = '' dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=sway systemctl --user stop pipewire pipewire-media-session xdg-desktop-portal xdg-desktop-portal-wlr systemctl --user start pipewire pipewire-media-session xdg-desktop-portal xdg-desktop-portal-wlr ''; }; configure-gtk = pkgs.writeTextFile { name = "configure-gtk"; destination = "/bin/configure-gtk"; executable = true; text = let schema = pkgs.gsettings-desktop-schemas; datadir = "${schema}/share/gsettings-schemas/${schema.name}"; in '' export XDG_DATA_DIRS=${datadir}:$XDG_DATA_DIRS gnome_schema=org.gnome.desktop.interface gsettings set $gnome_schema gtk-theme 'Dracula' ''; }; in { options.wm.sway = { enable = mkEnableOption "wm: sway"; }; config = mkIf cfg.enable { environment.systemPackages = with pkgs; [ adwaita-icon-theme alacritty bemenu configure-gtk dbus-sway-environment dmenu-wayland dracula-theme # gtk theme glib grim #mako rofi slurp sway # sway-audio-idle-inhibit sway-contrib.grimshot swayidle swayimg swaynotificationcenter waybar wayland wayland-pipewire-idle-inhibit wl-clipboard wofi ]; services.dbus.enable = true; programs = { sway = { enable = true; wrapperFeatures.gtk = true; }; }; }; }