Niri: Difference between revisions
No edit summary |
m Typo + keyboard shortcut with <kbd> element |
||
(17 intermediate revisions by 5 users not shown) | |||
Line 1: | Line 1: | ||
[https://github.com/YaLTeR/niri Niri] is a scrollable tiling [[Wayland]] compositor. | {{infobox application | ||
|name=Niri | |||
|type=Wayland compositor | |||
|initialRelease=2023-11-26 | |||
|status=Active | |||
|license=GNU General Public License v3.0 only | |||
|os=Linux, FreeBSD | |||
|programmingLanguage=Rust, GLSL | |||
|github=YaLTeR/niri | |||
|documentation=[https://github.com/YaLTeR/niri/wiki Official wiki], [https://github.com/sodiboo/niri-flake/blob/main/docs.md niri-flake] | |||
}} | |||
[https://github.com/YaLTeR/niri Niri] is a scrollable-tiling [[Wayland]] compositor. | |||
== Installation == | == Installation == | ||
Line 9: | Line 21: | ||
}} | }} | ||
{{Note|Niri can be enabled without installing custom flake such as [https://github.com/sodiboo/niri-flake niri-flake]. | {{Note|Niri can be enabled <strong>without installing a custom flake</strong> such as [https://github.com/sodiboo/niri-flake niri-flake]. {{ic|niri-flake}} is only necessary if you want to use a very recent version of Niri or if you want to write configurations in the Nix language, although as of 2025 this repository is listed near the top in search engines.}} | ||
{{Warning|Without [[#Configuration]] or [[#Additional Setup]], or in other words after fresh installation, you may unable to launch apps because of missing Alacritty and fuzzel. Press <kbd>Super</kbd>+<kbd>Shift</kbd>+<kbd>E</kbd> to exit Niri and proceed to one of them.}} | |||
== Configuration == | == Configuration == | ||
Line 16: | Line 30: | ||
{{file|~/.config/home-manager/home.nix|nix|3= | {{file|~/.config/home-manager/home.nix|nix|3= | ||
xdg.configFile."niri/config.kdl".source = | xdg.configFile."niri/config.kdl".source = ./config.kdl; | ||
}} | }} | ||
Line 22: | Line 36: | ||
See [https://github.com/YaLTeR/niri/wiki the wiki] for configuration options for Niri. | See [https://github.com/YaLTeR/niri/wiki the wiki] for configuration options for Niri. | ||
== Additional Setup == | |||
As described in [https://github.com/YaLTeR/niri/wiki/Example-systemd-Setup Example systemd Setup (Niri wiki)], you might want to set up some additional services including [[Swayidle]], [[Swaylock]], [[Waybar]], [[Polkit]] and [[Secret Service]] as follows to complement the functionality of a regular window manager. Some of the these settings are also required to enable all the features of [https://github.com/YaLTeR/niri/blob/main/resources/default-config.kdl the default configuration file]. | |||
{{file|3= | |||
security.polkit.enable = true; # polkit | |||
services.gnome.gnome-keyring.enable = true; # secret service | |||
security.pam.services.swaylock = {}; | |||
programs.waybar.enable = true; # top bar | |||
environment.systemPackages = with pkgs; [ alacritty fuzzel swaylock mako swayidle ] | |||
|name=/etc/nixos/configuration.nix|lang=nix}}Or using [[Home Manager]]:{{file|~/.config/home-manager/home.nix|nix|3= | |||
programs.alacritty.enable = true; # Super+T in the default setting (terminal) | |||
programs.fuzzel.enable = true; # Super+D in the default setting (app launcher) | |||
programs.swaylock.enable = true; # Super+Alt+L in the default setting (screen locker) | |||
programs.waybar.enable = true; # launch on startup in the default setting (bar) | |||
services.mako.enable = true; # notification daemon | |||
services.swayidle.enable = true; # idle management daemon | |||
services.polkit-gnome.enable = true; # polkit | |||
home.packages = with pkgs; [ | |||
swaybg # wallpaper | |||
]; | |||
|name=~/.config/home-manager/home.nix|lang=nix}} | |||
== Troubleshooting == | |||
=== IME not working on Electron apps === | |||
There is a general workaround to set {{ic|NIXOS_OZONE_WL}} as described in [[Wayland#Electron_and_Chromium]]: | |||
{{file|/etc/nixos/configuration.nix|nix|3= | |||
environment.sessionVariables.NIXOS_OZONE_WL = "1"; | |||
}} | |||
However, since Niri does not support text-input-v1, sometimes enabling text-input-v3 by manually adding {{ic|<nowiki>--wayland-text-input-version=3</nowiki>}} flag is necessary for IME to work: | |||
{{code|<nowiki>slack --wayland-text-input-version=3</nowiki>}} | |||
Alternatively, if the package supports {{ic|commandLineArgs}}, the following may be used instead: | |||
{{code|<nowiki>(pkgs.vscode.override { | |||
commandLineArgs = [ | |||
"--wayland-text-input-version=3" | |||
]; | |||
});</nowiki>}} | |||
== See Also == | |||
* [[Wayland]] | |||
* [[Sway]] | |||
* [[Wallpapers for Wayland]] | |||
* [https://github.com/sodiboo/niri-flake/ niri-flake] | |||
[[Category:Window managers]] | [[Category:Window managers]] | ||
[[Category:Applications]] | [[Category:Applications]] |