Niri: Difference between revisions
Add more Additional Setup |
m Typo + keyboard shortcut with <kbd> element |
||
(11 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 <strong>without installing custom flake</strong> 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 | {{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 27: | Line 39: | ||
== Additional Setup == | == 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]] | 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 = {}; | |||
{{file|~/.config/home-manager/home.nix|nix|3= | 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.alacritty.enable = true; # Super+T in the default setting (terminal) | ||
programs.fuzzel.enable = true; # Super+D in the default setting (app launcher) | 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.swaylock.enable = true; # Super+Alt+L in the default setting (screen locker) | ||
programs.waybar.enable = true; # launch on startup in the default setting (bar) | 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.swayidle.enable = true; # idle management daemon | ||
services.polkit-gnome.enable = true; # polkit | |||
home.packages = with pkgs; [ | home.packages = with pkgs; [ | ||
swaybg # wallpaper | 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= | {{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 == | == See Also == | ||
* [[Wayland]] | |||
* [[Sway]] | * [[Sway]] | ||
* [[Wallpapers for Wayland]] | * [[Wallpapers for Wayland]] | ||
* https://github.com/sodiboo/niri-flake | * [https://github.com/sodiboo/niri-flake/ niri-flake] | ||
[[Category:Window managers]] | [[Category:Window managers]] | ||
[[Category:Applications]] | [[Category:Applications]] |