Sway is a modern tilling wayland compositor, that emulates i3. Based on wlroots, it's one of the most featureful wayland compositors.
Still, a lot of things wont work in Wayland.
I'm running sway as a user systemd service, started by sddm (the login manager).
/usr/share/wayland-sessions/sway-service.desktopis added for a custom wayland session- when I choose that session in sddm
/usr/local/bin/sway-service.shis started, which:- loads the sddm/pam environment into the user systemd service manager
- then starts the sway.service
- systemd/user/sway.service loads additional environment variables from
~/.config/sway/env - waits for the service to finish, which signals the end of the session
- next, sway initializes and starts running:
- at the end sway calls
exec "systemctl --user import-environment ; systemctl --user start sway-session.target"- which imports the additional sway env vars back into systemd
- only then
sway-session.targetis getting started:- it has
Wants=graphical-session-pre.targetso any desktop non-gui services starts first - then it has
BindsTo=graphical-session.target wayland-session.target, and any enabled gui/wayland and sway applets/services start from there - examples are
swayidle.servicewhich hasWantedBy=sway-session.target(orwayland-session.target) - same with swaybar/waybar, mako, and similar.
- it has
- at the end sway calls
Read man environment.d, environment variables set there will be read by the
--user systemd, and since everything is started in its hierarchy variables will
properly propagate.
- https://github.com/gdamjan/swaylock (fork: implements a grace period before a password is required)
- https://gist.github.com/gdamjan/1415d93b83a38f64cffea0ff4c54fc4b (nm-applet with --indicator support)
- https://github.com/kennylevinsen/wldash (runner / dashboard)
- https://github.com/Hummer12007/brightnessctl/
- https://github.com/misterdanb/avizo (notification daemon for volume/backlight)
- https://github.com/cyclopsian/wdisplays (GUI display configurator for wlroots compositors)
- https://github.com/bugaevc/wl-clipboard (Command-line copy/paste utilities for Wayland)
- Alexays/Waybar#85 (comment) (sway-layout script for waybar)
β¦ and more.
-
all firefox issues https://bugzilla.mozilla.org/show_bug.cgi?id=635134
-
copy by select / paste with middle click in QT/KDE apps(need to implement gtk_primary_selection_device_manager) (qt-5.14) -
ctrl-Π¦/Π doesn't copy/paste in QT/KDEhttps://bugreports.qt.io/browse/QTBUG-65503 (fixed qt-5.13) -
utf-8 pastehttps://bugreports.qt.io/browse/QTBUG-54786 (fixed qt-5.13) -
per window/app keyboard layout swaywm/sway#3155 (see https://github.com/swaywm/sway/pull/4504/files)
-
mpv doesn't inhibit screensaver(fix is: --gpu-context=wayland) should be automatic in mpv > 0.29.1 -
mpv error: failed to resolve wl_drm_interface(): /usr/lib/libEGL_mesa.so.0: undefined symbol: wl_drm_interface libva-intel-driver > 2.3.0(fixed in arch packages) -
xmag/zoom - double check font antialiasing
-
networkmanager applet(recompilednm-applet --indicator) -
pulseaudio applet(waybar kind of) -
bluetooth applet
-
kdeconnect applet (and functionality: clipboard, remote control)
-
KDE/Qt apps style(works fine with XDG_CURRENT_DESKTOP=KDE) -
systemd --user support in sway swaywm/sway#3486
-
generic screen/window capture (chromecasting, webrtc screensharing, screencasting) - pipewire integration in firefox/chrome
Unit user.slice (/user.slice):
ββuser-1000.slice
ββuser@1000.service
β ββdbus-broker.service
β β ββ1043 /usr/bin/dbus-broker-launch --scope user
β β ββ1044 dbus-broker --log 4 --controller 10 --machine-id dcf0d2b9b08f4fcf8β¦
β ββrun-r142215d057bf43d3bceb5cd0158dd792.service
β β ββ2290 /usr/bin/alacritty
β β ββ2310 /bin/bash
β ββrun-r93568e2d57e14e339b1b7f25e38b521c.service
β β ββ2131 /usr/bin/alacritty
β β ββ2151 /bin/bash
β β ββ6512 systemd-cgls -u user.slice
β ββswaykbdd.service
β β ββ1115 /usr/bin/swaykbdd
β ββrun-r8d99f10d5f2e4bf58089b02b0a7791e8.service
β β ββ2184 /usr/bin/alacritty
β β ββ2204 /bin/bash
β ββmako.service
β β ββ1116 /usr/bin/mako
β ββfirefox.service
β β ββ1109 /opt/firefox/firefox
β β ββ1329 /opt/firefox/firefox-bin -contentproc -parentBuildID 2020110616042β¦
β β ββ1365 /opt/firefox/firefox-bin -contentproc -childID 1 -isForBrowser -prβ¦
β β ββ1446 /opt/firefox/firefox-bin -contentproc -childID 2 -isForBrowser -prβ¦
β β ββ1529 /opt/firefox/firefox-bin -contentproc -childID 3 -isForBrowser -prβ¦
β β ββ1549 /opt/firefox/firefox-bin -contentproc -childID 5 -isForBrowser -prβ¦
β β ββ1901 /opt/firefox/firefox-bin -contentproc -childID 6 -isForBrowser -prβ¦
β β ββ1980 /opt/firefox/firefox-bin -contentproc -childID 7 -isForBrowser -prβ¦
β ββpulseaudio.service
β β ββ1004 /usr/bin/pulseaudio --daemonize=no --log-target=journal
β β ββ1039 /usr/lib/pulse/gsettings-helper
β ββswayidle.service
β β ββ1113 /usr/bin/swayidle -w -l
β ββinit.scope
β β ββ878 /usr/lib/systemd/systemd --user
β β ββ883 (sd-pam)
β ββrun-r68c60c3012ca412e81cc474fbc32b2ad.service
β β ββ2237 /usr/bin/alacritty
β β ββ2257 /bin/bash
β ββsway.service
β β ββ1045 /usr/bin/sway
β β ββ1098 swaybg -o * -i /usr/share/backgrounds/sway/Sway_Wallpaper_Blue_192β¦
β β ββ1100 swaybar -b bar-0
β β ββ1120 Xwayland :1 -rootless -terminate -listen 21 -listen 23 -wm 47
β β ββ1164 i3status-rs
β ββorg.kde.kdeconnect.service
β β ββ1112 /usr/lib/kdeconnectd
β β ββ2493 kdeinit5: Running...
β β ββ2494 /usr/lib/kf5/klauncher --fd=8
β β ββ2496 tags.so [kdeinit5] tags local:/run/user/1000/klauncherRBMkrF.1.slaβ¦
β ββrun-r652066f058184006ae1d462739e93b52.service
β ββ2062 /usr/bin/communi
ββsession-2.scope
ββ1012 /usr/lib/sddm/sddm-helper --socket /tmp/sddm-authe3be91ee-741e-41f8-β¦
ββ1019 /usr/bin/kwalletd5 --pam-login 7 3
ββ1021 systemctl --wait --user start sway.service
