Sway: Difference between revisions
imported>Janik m added xdg-utils as recommended programm |
|||
(22 intermediate revisions by 17 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 209: | Line 140: | ||
Replace <code>myUser</code> with your user running the graphical environment. | Replace <code>myUser</code> with your user running the graphical environment. | ||
=== Missing fonts on Xorg applications === | |||
If fonts for certain languages are missing in Xorg applications (e.g. Japanese fonts don't appear in Discord) even though they're in the system, you can set them as default fonts in your configuration file | |||
<syntaxhighlight lang="nix> | |||
fonts = { | |||
packages = with pkgs; [ | |||
noto-fonts | |||
noto-fonts-cjk | |||
noto-fonts-emoji | |||
font-awesome | |||
source-han-sans | |||
source-han-sans-japanese | |||
source-han-serif-japanese | |||
]; | |||
fontconfig.defaultFonts = { | |||
serif = [ "Noto Serif" "Source Han Serif" ]; | |||
sansSerif = [ "Noto Sans" "Source Han Sans" ]; | |||
}; | |||
}; | |||
</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]] |