|
|
Line 9: |
Line 9: |
| <syntaxhighlight lang="nix"> | | <syntaxhighlight lang="nix"> |
| { config, pkgs, lib, ... }: | | { config, pkgs, lib, ... }: |
|
| |
| let
| |
| # bash script to let dbus know about important env variables and
| |
| # propagate them to relevent services run at the end of sway config
| |
| # see
| |
| # https://github.com/emersion/xdg-desktop-portal-wlr/wiki/"It-doesn't-work"-Troubleshooting-Checklist
| |
| # note: this is pretty much the same as /etc/sway/config.d/nixos.conf but also restarts
| |
| # some user services to make sure they have the correct environment variables
| |
| 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
| |
| '';
| |
| };
| |
|
| |
| # currently, there is some friction between sway and gtk:
| |
| # https://github.com/swaywm/sway/wiki/GTK-3-settings-on-Wayland
| |
| # the suggested way to set gtk settings is with gsettings
| |
| # for gsettings to work, we need to tell it where the schemas are
| |
| # using the XDG_DATA_DIR environment variable
| |
| # run at the end of sway config
| |
| 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 ''
| |
| gnome_schema=org.gnome.desktop.interface
| |
| gsettings set $gnome_schema gtk-theme 'Dracula'
| |
| '';
| |
| };
| |
|
| |
| in
| |
| { | | { |
| environment.systemPackages = with pkgs; [ | | environment.systemPackages = with pkgs; [ |
| alacritty # gpu accelerated terminal
| |
| dbus # make dbus-update-activation-environment available in the path
| |
| dbus-sway-environment
| |
| configure-gtk
| |
| wayland
| |
| xdg-utils # for opening default programs when clicking links
| |
| glib # gsettings
| |
| dracula-theme # gtk theme
| |
| gnome3.adwaita-icon-theme # default gnome cursors
| |
| swaylock
| |
| swayidle
| |
| grim # screenshot functionality | | grim # screenshot functionality |
| slurp # screenshot functionality | | slurp # screenshot functionality |
| wl-clipboard # wl-copy and wl-paste for copy/paste from stdin / stdout | | wl-clipboard # wl-copy and wl-paste for copy/paste from stdin / stdout |
| bemenu # wayland clone of dmenu
| |
| mako # notification system developed by swaywm maintainer | | mako # notification system developed by swaywm maintainer |
| wdisplays # tool to configure displays
| |
| ]; | | ]; |
|
| |
|
Line 76: |
Line 23: |
| }; | | }; |
|
| |
|
| # xdg-desktop-portal works by exposing a series of D-Bus interfaces
| | # Enable the gnome-keyring secrets vault. |
| # known as portals under a well-known name
| |
| # (org.freedesktop.portal.Desktop) and object path
| |
| # (/org/freedesktop/portal/desktop).
| |
| # The portal interfaces include APIs for file access, opening URIs,
| |
| # printing and others.
| |
| services.dbus.enable = true;
| |
| xdg.portal = {
| |
| enable = true;
| |
| wlr.enable = true;
| |
| # gtk portal needed to make gtk apps happy
| |
| extraPortals = [ pkgs.xdg-desktop-portal-gtk ];
| |
| };
| |
| | |
| # Enable the gnome-keyrig secrets vault. | |
| # Will be exposed through DBus to programs willing to store secrets. | | # Will be exposed through DBus to programs willing to store secrets. |
| services.gnome.gnome-keyring.enable = true; | | services.gnome.gnome-keyring.enable = true; |
|
| |
|
| |
|
| # enable sway window manager | | # enable sway window manager |
Line 102: |
Line 34: |
| } | | } |
| </syntaxhighlight> | | </syntaxhighlight> |
|
| |
| and here are the relevent things you should add to your sway config:
| |
|
| |
| {{file|sway config|bash|
| |
|
| |
| set $menu bemenu-run
| |
|
| |
| # screenshots
| |
| bindsym $mod+c exec grim -g "$(slurp)" /tmp/$(date +'%H:%M:%S.png')
| |
|
| |
|
| |
| exec dbus-sway-environment
| |
| exec configure-gtk
| |
|
| |
| }}
| |
|
| |
|
| A few general comments: | | A few general comments: |
| * There is some friction between GTK theming and sway. Currently the sway developers suggest using gsettings to set gtk theme attributes as described here [https://github.com/swaywm/sway/wiki/GTK-3-settings-on-Wayland]. There is currently a plan to allow GTK theme attributes to be set directly in the sway config. | | * There is some friction between GTK theming and sway. Currently the sway developers suggest using gsettings to set gtk theme attributes as described here [https://github.com/swaywm/sway/wiki/GTK-3-settings-on-Wayland]. There is currently a plan to allow GTK theme attributes to be set directly in the sway config. |
| * Running sway as a systemd user service is not recommended [https://github.com/swaywm/sway/wiki/Systemd-integration#running-sway-itself-as-a---user-service] [https://github.com/swaywm/sway/issues/5160] | | * Running sway as a systemd user service is not recommended [https://github.com/swaywm/sway/wiki/Systemd-integration#running-sway-itself-as-a---user-service] [https://github.com/swaywm/sway/issues/5160] |
| * This wiki page was gutted and rewritten in June 2022. See [https://discourse.nixos.org/t/some-lose-ends-for-sway-on-nixos-which-we-should-fix/17728] for the related discussion.
| |
|
| |
|
| === Using Home Manager === | | === Using Home Manager === |