Sway: Difference between revisions
imported>6t8k m Don't install sway twice. `programs.sway` already does this, leads to collisions in the nix store all else unchanged. |
|||
(17 intermediate revisions by 13 users not shown) | |||
Line 6: | Line 6: | ||
=== Using NixOS === | === Using NixOS === | ||
Here is a minimal configuration | Here is a minimal configuration: | ||
<syntaxhighlight lang="nix"> | <syntaxhighlight lang="nix"> | ||
{ config, pkgs, lib, ... }: | { config, pkgs, lib, ... }: | ||
{ | { | ||
environment.systemPackages = with pkgs; [ | environment.systemPackages = with pkgs; [ | ||
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 | ||
mako # notification system developed by swaywm maintainer | mako # notification system developed by swaywm maintainer | ||
]; | ]; | ||
# Enable the gnome-keyring secrets vault. | |||
# Will be exposed through DBus to programs willing to store secrets. | |||
services.gnome.gnome-keyring.enable = true; | |||
# | |||
# | |||
services. | |||
# enable sway window manager | # enable sway window manager | ||
Line 100: | Line 28: | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
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] | ||
=== Using Home Manager === | === Using Home Manager === | ||
Line 143: | Line 55: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
See [https:// | See [https://nix-community.github.io/home-manager/options.xhtml#opt-wayland.windowManager.sway.enable Home Manager's Options for Sway] for a complete list of configuration options. | ||
You might need to active dbus manually from .zshrc to use i.e: dunst, see [https://discourse.nixos.org/t/dunst-crashes-if-run-as-service/27671/2 Dunst crashes if run as service] | |||
=== Brightness and volume === | === Brightness and volume === | ||
Line 166: | Line 80: | ||
=== Systemd services === | === Systemd services === | ||
Kanshi is output configuration daemon. As explained above, we don't run sway itself as a systemd service. There are auxiliary daemons that we do want to run as systemd services, for example Kanshi [https://sr.ht/~emersion/kanshi/], which implements monitor hot swapping. It would be enabled as follows: | Kanshi is an output configuration daemon. As explained above, we don't run sway itself as a systemd service. There are auxiliary daemons that we do want to run as systemd services, for example Kanshi [https://sr.ht/~emersion/kanshi/], which implements monitor hot swapping. It would be enabled as follows: | ||
{{file|/etc/nixos/configuration.nix|nix|<nowiki> | {{file|/etc/nixos/configuration.nix|nix|<nowiki> | ||
# kanshi systemd service | # kanshi systemd service | ||
Line 183: | Line 97: | ||
}} | }} | ||
When you launch sway, the systemd service is started. | When you launch sway, the systemd service is started. | ||
=== Using greeter === | |||
Installing a greeter based on [https://search.nixos.org/options?channel=unstable&show=services.greetd.settings&from=0&size=50&sort=relevance&type=packages&query=greetd greetd] is the most straightforward way to launch Sway. | |||
Tuigreet does not even need a separate compositor to launch. | |||
{{file|/etc/nixos/configuration.nix|nix|<nowiki> | |||
services.greetd = { | |||
enable = true; | |||
settings = { | |||
default_session = { | |||
command = "${pkgs.greetd.tuigreet}/bin/tuigreet --time --cmd sway"; | |||
user = "greeter"; | |||
}; | |||
}; | |||
}; | |||
</nowiki>}} | |||
== Troubleshooting == | == Troubleshooting == | ||
Line 216: | Line 147: | ||
fonts = { | fonts = { | ||
packages = with pkgs; [ | |||
noto-fonts | noto-fonts | ||
noto-fonts-cjk | noto-fonts-cjk | ||
Line 233: | Line 164: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=== Swaylock cannot be unlocked with the correct password === | |||
Add the following to your NixOS configuration. | |||
<syntaxhighlight lang="nix> | |||
security.pam.services.swaylock = {}; | |||
</syntaxhighlight> | |||
The <code>programs.sway.enable</code> option does this automatically. | |||
=== Inferior performance compared to other distributions === | |||
Enabling realtime may improve latency and reduce stuttering, specially in high load scenarios. | |||
<syntaxhighlight lang="nix"> | |||
security.pam.loginLimits = [ | |||
{ domain = "@users"; item = "rtprio"; type = "-"; value = 1; } | |||
]; | |||
</syntaxhighlight> | |||
Enabling this option allows any program run by the "users" group to request real-time priority. | |||
=== WLR Error when trying to launch sway === | |||
When this happens on a new nixos system, enabling opengl in configuration.nix may fix this issue. | |||
<syntaxhighlight lang="nix"> | |||
hardware.opengl.enable = true; | |||
</syntaxhighlight> | |||
[[Category:Window managers]] | [[Category:Window managers]] | ||
[[Category:Applications]] | [[Category:Applications]] |