Sway: Difference between revisions
m Update hardware.opengl to hardware.graphics |
dimming, screen sharing, inhibit idle |
||
(6 intermediate revisions by 4 users not shown) | |||
Line 97: | Line 97: | ||
Tuigreet does not even need a separate compositor to launch. | Tuigreet does not even need a separate compositor to launch. | ||
{{file| | {{file|||<nowiki> | ||
services.greetd = { | services.greetd = { | ||
enable = true; | enable = true; | ||
settings = { | settings = { | ||
default_session = { | default_session = { | ||
command = "${pkgs | command = "${pkgs.tuigreet}/bin/tuigreet --time --cmd sway"; | ||
user = "greeter"; | user = "greeter"; | ||
}; | }; | ||
}; | }; | ||
}; | }; | ||
</nowiki>}} | </nowiki>|name=/etc/nixos/configuration.nix|lang=nix}} | ||
=== Automatic startup on boot === | |||
The snippet below will start Sway immediately on startup, without a greeter and '''without login prompt'''. Only consider using this in conjunction with [[Full Disk Encryption]]! | |||
<syntaxhighlight lang="nix"> | |||
services.getty = { | |||
autologinUser = "your_username"; | |||
autologinOnce = true; | |||
}; | |||
environment.loginShellInit = '' | |||
[[ "$(tty)" == /dev/tty1 ]] && sway | |||
''; | |||
</syntaxhighlight> | |||
== Configuration == | == Configuration == | ||
Line 146: | Line 159: | ||
== Troubleshooting == | == Troubleshooting == | ||
=== Cursor is too tiny on HiDPI displays === | === Cursor is missing icons or too tiny on HiDPI displays === | ||
Using [[Home Manager]] try configuring a general mouse cursor size and theme | ==== With programs.sway ==== | ||
<syntaxhighlight lang="nix> | |||
{ | |||
programs.sway.extraPackages = with pkgs; [ | |||
adwaita-icon-theme # mouse cursor and icons | |||
gnome-themes-extra # dark adwaita theme | |||
... | |||
]; | |||
} | |||
</syntaxhighlight> | |||
In ~/.config/sway/config | |||
<syntaxhighlight> | |||
seat "*" xcursor_theme Adwaita 32 | |||
</syntaxhighlight> | |||
==== With Home Manager ==== | |||
Using [[Home Manager]] try configuring a general mouse cursor size and theme. The reason that your cursor might be missing in some applications, is because <code>XCURSOR_THEME</code>is missing, which will cause applications relying on <code>XWAYLAND</code> to misbehave. Setting <code>sway.enable = true</code>, combined with the <code>name</code>, <code>package</code> and size will set the correct environment variables, which sway will then use. | |||
<syntaxhighlight lang="nix">home-manager.users.myUser = { | <syntaxhighlight lang="nix">home-manager.users.myUser = { | ||
home.pointerCursor = { | home.pointerCursor = { | ||
name = "Adwaita"; | name = "Adwaita"; | ||
package = pkgs | package = pkgs.adwaita-icon-theme; | ||
size = 24; | size = 24; | ||
x11 = { | x11 = { | ||
Line 160: | Line 190: | ||
defaultCursor = "Adwaita"; | defaultCursor = "Adwaita"; | ||
}; | }; | ||
sway.enable = true; | |||
}; | }; | ||
};</syntaxhighlight> | };</syntaxhighlight> | ||
Line 280: | Line 310: | ||
}; | }; | ||
}; | }; | ||
</syntaxhighlight> | |||
=== Screen sharing with Firefox, Chromium === | |||
<syntaxhighlight lang="nix"> | |||
{ pkgs, ... }: | |||
{ | |||
# xdg portal + pipewire = screensharing | |||
xdg.portal = { | |||
enable = true; | |||
wlr.enable = true; | |||
}; | |||
services.pipewire = { | |||
enable = true; | |||
alsa.enable = true; | |||
pulse.enable = true; | |||
}; | |||
} | |||
</syntaxhighlight> | |||
=== Screen dimming with wl-gammarelay-rs === | |||
Add <code>wl-gammarelay-rs</code> to programs.sway.extraPackages, then add the following to sway config: | |||
<syntaxhighlight> | |||
# start daemon | |||
exec wl-gammarelay-rs | |||
# bind shortcut to reset brightness | |||
bindsym $mod+Control+0 exec busctl --user set-property rs.wl-gammarelay / rs.wl.gammarelay Brightness d 1 | |||
# bind shortcut to dim screen for a particular output | |||
bindsym $mod+Control+Underscore exec busctl --user set-property rs.wl-gammarelay /outputs/DP_1 rs.wl.gammarelay Brightness d 0.5 | |||
</syntaxhighlight> | |||
=== Inhibit swayidle/suspend when fullscreen === | |||
Add to sway config: | |||
<syntaxhighlight> | |||
# When you use `for_window` the command you give is not executed | |||
# immediately. It is stored in a list and the command is executed | |||
# every time a window opens or changes (eg. title) in a way that | |||
# matches the criteria. | |||
# inhibit idle for fullscreen apps | |||
for_window [app_id="^.*"] inhibit_idle fullscreen | |||
</syntaxhighlight> | </syntaxhighlight> | ||
[[Category:Window managers]] | [[Category:Window managers]] | ||
[[Category:Applications]] | [[Category:Applications]] |