My dive into madness and testing of several Wayland softwares
Published on
It's been a hot minute, and I made a promise to myself to try out #100DaysToOffload, so here I am - throwing my first post into the void to see what happens.
The story so far goes that in my new year's promise to myself, I would devoid myself of Xorg/X11 software and do my best to not rely on it. I am fully on board for new stuff, as I think X11 is built on top of a lot of bad practices, like all your software for whatever reason knowing where your mouse is and having total access to your event bus for typing.
Since leaving X11 behind, I purged all X11 desktop software off my computer. For the last week or so I've been experimenting in quiet about trying to find a decent user experience with minimal pain, so let me describe my journey.
Sway is a wlroots-based compositor that tries to mirror the functionality of i3-wm, one of my favorite and probably most extensively used pieces of desktop software. I do miss i3, so Sway seems to be able to provide some functionality from that which I missed.
In practice, Sway is fine, but my issues stem not entirely from Sway itself, but moreso from wlroots being problematic. Since I tend to play a lot of games on Steam, Sway lent itself to being the worst at overall compatibility, and I think it's mostly due to wlroots
not being up to par with other Wayland composition libraries.
Now, this could technically be solved by one simple trick - Gamescope, something I've never used much of before. Gamescope is a thin Wayland-compatible shim produced by Valve to enable games to work better under Wayland and enable things like AMD's FidelityFX Super Resolution (FSR). Gamescope is commonly used on the Steam Deck, so I tried it out, and it solved a lot of game problems for me by stubbing problematic games with the following launch options (per game).
gamescope -W 1920 -H 1080 -r 60 -- %command% <flags/args>
In practice, it boots up a mini-virtualized desktop environment, but virtualizes games better under Wayland. I used it for a little bit in Left 4 Dead 2, and I had no noticeable performance issues or real frame drops, other than my FPS cap not being set and that itself was causing issues. Should I encounter any real problems with it, I'll most likely report back, but I sort of doubt it.
Sway still has some problems for me that I wasn't a huge fan on, namely the lack of working screen share, which I use a lot of for personal use. At no point through this process could I get screen share to actually function. I set all my environment variables, installed all the required software and libraries, and still nothing. I viewed that as sort of a big deal, so I thought I'd go with something a little simpler, so I went with...:
Gnome desktop, back in my day, used to be a MATE desktop, which I was absolutely in love with. Then when it became "GNOME 3", they went for a weird desktop-friendlier environment with an overarching top "activities" bar that resembled something closer to Ubuntu's Unity desktop. Unity is now defunct and on community support, but Gnome has evolved a bit and still uses it's user-friendly layout.
Gnome is good, at being a very minimalist desktop that isn't terribly hard to use. For a programmer like myself, however, I found it pretty tedious. As someone who's been using i3 for a good five-plus years now, not having my windows automatically fill the entire monitor with a few quick key commands quickly annoyed me. For vertical monitors, Gnome has no default keybindings to split windows, only support for landscape left/right splitting.
For normal, landscape, 1080p monitors, I wouldn't think this a problem. It's not a terribly big deal for people who split their browsers side by side or work with Libre Office each and every day. However, I prefer my monitors vertical, and sometimes my splits go beyond that of simple two-window layouts. Gnome was sort of not providing enough utility in that sense.
Gnome screen sharing, however, worked quite well, screenshots worked out of the box, and overall it was the least painful setup in the world to get rolling with. However, my cursor was forever a white rectangle, and I could not fix it. I imagine it had something to do with environment variables I had set coming from Sway, or possible GTK theming overlap, but all my Guix corrections did not provide a solution, and I could not find anyone else on the internet who had this problem.
After a lot of experimentation, I decided on Hyprland, and I can't say I'm necessarily proud of it, knowing some of Hyprland's horrible underpinnings. Hyprland is primarily developed by a handful of people writing C++ code to create a new Wayland compositor that might actually attract people to Wayland, and to that, I think it's an incredibly difficult task.
That being said, I think the community's past is horrendous, and the main developer's intentions of not doing anything was a sub-par response. Months after that incident, he did write on his blog about doing something, so he did add a Code of Conduct and made moderation changes to the Hyprland Discord, something I will never interact with, but it seems like Vaxry is trying to adapt and make positive improvements.
However, I think in turn, I'm only going to use Hyprland until something else better comes along, or an inevitable fork to better improve the community. I think it sort of comes with the territory that software can be improved by anyone, even if it means we disagree with them on political/social aspects. The nice part is that everyone comes together to work on software to improve the life of everyone. The bad part is the crazy that comes with it. Crazy aside, I think Hyprland does work really well, but I don't think I can (personally) account for the community and say they aren't a toxic shithole, at least not yet.
Other things I've tried:
Hyprland provides a package for screen sharing, which works out of the box and with pretty much zero config, which is entirely different from Sway, where Sway provides minimal help and it's up to you to provide the environment variables to tell programs Sway is running, which, in my eyes, is ... not helpful.
So, what's nice about Hyprland? Well:
It didn't take me terribly long to go from "what the hell are these hotkeys?" to "hey, this is kind of like i3 now". A bit of modifying the configuration file, Waybar, some research on their respective website/wiki/GitHub issues, and I'm at a point where I can write a blog post, do work, write code, play Yu-Gi-Oh! Master Duel, and not think twice about my desktop software.
Gradually as I fine-tune my Hyprland configuration, I'll put it into my Guix config repo online and make it integratable with Guix home slowly.
While I think Hyprland is a good enough solution for right now, I am still on the lookout for future prospective Wayland compositors to see what Wayland inspires. I am open to moving to a better client should I find it, because I am not sold on being with Hyprland should they continue to have community issues. I don't like supporting bad communities, and will hop the minute something better shows up.
While I believe Hyprland might have the ability to mature and grow up over time, I accept the reality that might not ever happen, and in turn would rather support a community that is accepting and not as toxic/hateful. I would like to one day submit code contributions if I can, but I don't think I could ever submit a contribution to Hyprland where it currently sits.
Thanks for reading!