I use KDE. Some use GNOME. Most other options are probably to be left out as X11 is unsafe.
Cosmic is not nearly finished, but will probably be a bit safer, as its in rust, even though not tested.
Then there are window managers like Sway, Hyprland, waymonad, wayfire, etc.
RaspberryPi also has their own Wayland Desktop.
Is every Wayland Desktop / WM equally safe, what are other variables here like language, features, control over permissions, etc?
Wayland is Wayland. If you use a Wayland compositor, you’re getting a lot of security by virtue of design alone. Things like keyloggers and screenrecorders will not be able to intrude on your session barring vulnerability exploits. I’m not going to touch on the relative vulnerability risk of each environment since a) they’re all relatively new & b) I’ve never implemented Wayland myself
With that being said, here’s what’s not protected by Wayland regardless of the chosen compositor: microphones, webcams, keyrings, and files.
For microphones & webcams, any distro which rolls Pipewire in combination with Wayland will be sufficient to secure these. Pretty much all Wayland environments roll Pipewire so this is only important to consider if you’re running your own customized environment (be sure to disable any pre-existing PulseAudio daemon after setting up Pipewire to close this security hole)
For keyrings, these are handled by your environment’s polkit implementation. Much like Wayland, there are several implementations of polkit and they’re all just about equally secure barring any potential vulnerabilities… Just make sure that you’re using an encrypted database (usually on by default) and that you have it configured to always relock & properly prompt for the unlock key.
For file access, this is actually a core probelm with Linux as a whole – any unsandboxed application you run will be able to read any file that you can read. The solution is to use sandboxed applications whenever possible. The easiest way to achieve this is through using flathub/flatpak applications, since they will always list out and enforce their required permissions on a per-application basis. For non-flatkpak applications, you’ll need to use “jail” environments (e.g.: bubblejail, firejail) in order to artificially restrict application permissions by hand.
This isn’t really true. Run
libinput debug-events
. In most distros users will have access to run this and keylog all input events.I use Wayland and love it, but keyloggers are not prevented on most common setups.
Here’s what
libinput debug-events
displays when I mash my keyboard. Seems secure to me?-event7 KEYBOARD_KEY +115.454s *** (-1) pressed event7 KEYBOARD_KEY +115.462s *** (-1) pressed event7 KEYBOARD_KEY +115.470s *** (-1) released event7 KEYBOARD_KEY +116.038s *** (-1) pressed event7 KEYBOARD_KEY +116.166s *** (-1) released event7 KEYBOARD_KEY +116.870s *** (-1) pressed event7 KEYBOARD_KEY +116.910s *** (-1) released event7 KEYBOARD_KEY +117.022s *** (-1) pressed event7 KEYBOARD_KEY +117.151s *** (-1) released event7 KEYBOARD_KEY +117.231s *** (-1) released event7 KEYBOARD_KEY +117.927s *** (-1) pressed event7 KEYBOARD_KEY +118.079s *** (-1) pressed event7 KEYBOARD_KEY +118.223s *** (-1) released event7 KEYBOARD_KEY +118.327s *** (-1) released event7 KEYBOARD_KEY +118.583s *** (-1) pressed event7 KEYBOARD_KEY +118.591s *** (-1) pressed event7 KEYBOARD_KEY +118.655s *** (-1) released