logo

blog

My website can't be that messy, right? git clone https://hacktivis.me/git/blog.git

Why I embraced Wayland.html (11290B)


  1. <!DOCTYPE html>
  2. <html xmlns="http://www.w3.org/1999/xhtml" xmlns:xi="http://www.w3.org/2001/XInclude" xml:lang="en" lang="en">
  3. <head>
  4. <meta charset="utf-8"/><link rel="stylesheet" type="text/css" href="/css/index.css?serial=2023040701"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="vcs-git" href="https://gitlab.com/lanodan/blog.git" title="gitlab"/><link rel="icon" type="text/css" href="/images/favicon.png?serial=2020111201"/><meta property="og:image" content="/images/avatar.png?serial=2020111201"/>
  5. <meta property="og:type" content="article"/>
  6. <meta property="og:title" content="Why I embraced Wayland"/>
  7. <title>Why I embraced Wayland - lanodan's cyber-home</title>
  8. </head>
  9. <body>
  10. <header>Sorry, I do not value($$$) your privacy. :^) — <a href="/privacy%20policy">Privacy Policy</a></header>
  11. <nav><details open="">
  12. <summary>Links</summary>
  13. <ul>
  14. <li><a href="/home">Home</a></li>
  15. <li><a href="/about">About</a></li>
  16. <li><a href="/projects/">Software Projects</a></li>
  17. <li><a href="/animelist">Anime List</a></li>
  18. <li><a href="/mangalist">Manga List</a></li>
  19. <li><a href="/bookmarks">Bookmarks</a></li>
  20. <li><a href="/coding%20style">coding style</a></li>
  21. <li><a href="/decreases%20of%20usability">Decreases of usability</a></li>
  22. <li><a href="/software%20basic%20needs">Software basic requirements</a></li>
  23. <li><a href="/recaptcha">Google ReCaptcha</a></li>
  24. <li><a href="/git/">/git/</a></li>
  25. <li><a href="/kopimi/">/kopimi/</a>: libre data</li>
  26. <li><a href="/librism">Désintox’ / FOSS activism</a></li>
  27. <li><a href="/notes/">/notes/</a></li>
  28. <li><a href="/standards">standards</a>: opinions on them</li>
  29. </ul>
  30. <ul>
  31. <li><a rel="alternate" type="application/atom+xml" href="https://hacktivis.me/feed.atom">Atom feed</a></li>
  32. <li><a href="gemini://hacktivis.me/">gemini-space</a></li>
  33. <li><a href="https://lanodan.eu/home">Resume</a></li>
  34. </ul>
  35. </details></nav>
  36. <article>
  37. <div xml:lang="en" lang="en" class="h-entry">
  38. <a href="/articles/Why%20I%20embraced%20Wayland"><h1>Why I embraced Wayland</h1></a>
  39. <p>Some of the folks that knew me from around 2014 know that I wasn't impressed with Wayland and really didn't see the point of it. X11 worked well enough for me and I didn't want to switch to something else, it felt like reinventing new stuff just for the sake of it to me (like systemd and pulseaudio; the fuck are those doing on freedesktop.org in the first place…). And I disagreed quite badly on it, sorry for folks related to wayland. Hopefully less and less folks will do this "politically conversative" opinion and actually wonder about the reasonings.</p>
  40. <figure>
  41. <img src="/images/Firefox%20overlaying%20st%20on%20my%20laptop.png"/>
  42. <figcaption>Screenshot of firefox chunks ghosting over the terminal on my NVidia laptop running on XOrg</figcaption>
  43. </figure>
  44. <p>The motivation was because using X11/XOrg (specially with NVidia) gave me some years of:
  45. <ul>
  46. <li>applications like Firefox shitting all over the desktop at times, leaving ghosted areas;</li>
  47. <li>all applications being able to send any and receive all keyboard+mouse input with no real solution against that (I know XTerm has some option to steal all keyboard input, didn't work for me);</li>
  48. <li>non-orthogonality of input device settings; XOrg allows to have a different settings on each and would require managing hotplug events but XOrg tools (<code>setxkbmap(1)</code>, <code>xmodmap(1)</code>, …) are done for a display server that would support only one layout setting and manage events by itself</li>
  49. <li>display configuration hell, I know how to use <code>xrandr(1)</code> for some arcane things now (including trashing the concept of VTs, thanks linux) but what a mess and of course no support for hotplugging (which is a mess unless you use a tiling window manager like XMonad);</li>
  50. <li>normal applications being able to trash your setup (ie. multi-monitor to a single display at 640x480) and no restoring if they crash down or don't care;</li>
  51. <li>applications often behaving weirdly when a tiling window manager resizes them automatically;</li>
  52. <li>still having this software-gore bug where moving a window on top of another leaves some of it frames behind, I love having that bug after 2020 when it should have been fixed well before 2010;</li>
  53. <li>some games window just disappearing a bit after initialization (spawns a blank window and immediately goes away), probably related to a missing quirk/extension but haven't found wtf was happening;</li>
  54. <li><a href="https://www.jwz.org/xscreensaver/faq.html">An absolute horror for even just basic screen locking/saving</a>.</li>
  55. </ul></p>
  56. <p>
  57. And that made me just done with X11 and it's design of being similar to a Unix where everyone is root… so basically not a Unix. <q>If you find yourself saying that X is the Unix way: What one thing is X doing and what is it doing well?</q><cite>Daniel Stone</cite><br/>
  58. By the way, if you're that kind of people which is like "X11/Xorg never threw me a bug" you're likely just ignoring the elephant in the room in the first place or not seeing it as a bug (this is why I usually don't care about statements like "$thing just works for me" and "$thing never broke for me", there is high chances of it being delusional or clueless).<br/>
  59. Plus with <em>actually informing myself about the wayland protocol design</em> rather than just seeing that you can rotate windows in weston (which is labelled a reference compositor but should be taken as a demo) and that GNOME is doing it's normal thing of trashing everything in it's way, specially good things <a href="https://www.jwz.org/doc/cadt.html">like an awful teenager</a>.
  60. </p>
  61. <p>
  62. But at some point I gave <a href="https://swaywm.org">Sway</a> an honest try on my NoVidya-plagued laptop, the one where the screenshot at the begining of this article comes from and I actually ended up with less bugs, it was still a mess because of NVidia having trashed the proprietary driver so much that nouveau, an open-source garage-hacker alternative that they're unfriendly with worked better, you know the adage: Fuck You NVidia.<br/>
  63. At least now that I replaced that badly aged laptop (Spectre/Meltdown was the final blow) with <a href="/articles/T495">a full-AMD one</a> (yay, no proprietary drivers), I don't have X11 kind of issues nor NoVidya kind of issues.<br/>
  64. Oh and my phone already was using Wayland (in fact it doesn't have X11) since 2015~2016 as I switched to SailfishOS because Android is a system that loves to trash itself. I maybe just didn't knew or ignored that fact as it's not as desktop/laptop. Wayland works really well on it btw, and X11 never made sense to me on handhelds, which is yet another point for Wayland.
  65. </p>
  66. <p>All that said:<ul>
  67. <li>I have yet to fully switch to wayland on my desktop, mostly because of quirky things like some games (they are really the worst…) and of course <abbr title="Virtual Reality">VR</abbr> is quite alpha but has the potential to work really well but so far the patches got a bit stuck. Launching Xorg for VR is good enough for now (but it's very unstable);</li>
  68. <li>XWayland works well if I need to launch an X11 application, much better than stuff like Xephyr where it always failed with my keyboard layout;</li>
  69. <li>I have done the quite crazy thing of throwing all of X11 (including things like <code>libX11.so</code>) out on my laptop, it means a lack of some applications and some weird shenanigans, like having to replace <code>libGL.so</code>(OpenGL linked with X11) with <code>libOpenGL.so</code>(window-system-agnostic) but sadly it's from <abbr title="GL Vendor-Neutral">GLVND</abbr> which has yet to appear on systems like FreeBSD so it's messy in some buildsystems. But overall it works pretty nicely;</li>
  70. <li>I have yet to resume working on <a href="/git/inaban">inaban</a>, a quite psychorigid wayland compositor for controlling applications behavior (so quite the complete opoosite of X11);</li>
  71. <li>I do not expect GNOME and related projects to actually do software/standards one can trully depend on, I'd much rather bet on one of their software having a critical bug than not having one;</li>
  72. <li>I barely care for proprietary software;</li>
  73. <li>Do not expect your NoVidya hardware to work well; NVidia® is almost hostile to Linux and they're the responsible ones; be careful on picking your hardware, everyone doesn't have to support your choices.</li>
  74. </ul></p>
  75. <h2>See More</h2>
  76. <ol>
  77. <li><a href="https://drewdevault.com/2019/02/10/Wayland-misconceptions-debunked.html">Wayland misconceptions debunked</a></li>
  78. <li><a href="https://www.youtube.com/watch?v=HllUoT_WE7Y">"Write a single library to handle all input devices, it'll be easy" they said…</a> (46 minutes 53 seconds): Talk about a linux-induced burden but relates a bit to Wayland on Linux and FreeBSD</li>
  79. <li><a href="https://www.youtube.com/watch?v=RIctzAQOe44">The Real Story Behind Wayland and X - Daniel Stone (linux.conf.au 2013)</a> (45 minutes 34 seconds)</li>
  80. <li><a href="https://github.com/swaywm/wlroots">wlroots</a>: Pluggable, composable, unopinionated modules for building a Wayland compositor; or about 50,000 lines of code you were going to write anyway.</li>
  81. <li><a href="https://swaywm.org">sway</a>: i3-compatible (with few extras) Wayland Compositor</li>
  82. <li><a href="https://git.sr.ht/~sircmpwn/wio">wio</a>: Wayland compositor for Linux &amp; FreeBSD which has a similar look &amp; feel to plan9's rio</li>
  83. <li><a href="https://hikari.acmelabs.space/">hikari</a>: Wayland compositor inspired by CWM</li>
  84. <li><a href="https://wayland-book.com/">Wayland Book</a> by Drew DeVault</li>
  85. </ol>
  86. <p>And yeah a lot of that list is linked to wlroots, feel free to pass on links from others, I know MATE is planning to switch to Wayland but it's still mostly for the future and I don't know how well wayland works in KDE (hopefully quite well).</p>
  87. <p>Note: I usually read replies to my articles but I'm not going to bother if you're going to just throw the typical clueless wayland-hater bile one can see on internet. I will probably answer honest questions though. Hopefully that will save some people's energy and time.</p>
  88. </div>
  89. <p>
  90. <a href="https://queer.hacktivis.me/objects/db4f70f5-7186-43ce-a350-e0e8d332bfb9" rel="replies external">Fediverse post for comments</a>, published on 2021-03-07T00:35:00Z, last updated on 2021-03-08T02:55:00Z
  91. </p>
  92. </article>
  93. <footer>
  94. <a href="http://endsoftpatents.org/innovating-without-patents"><img loading="lazy" src="/images/patent_free.png?serial=2020111201" alt="Patent Free"/></a>
  95. <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/"><img loading="lazy" alt="CC-BY-SA" src="/images/cc-by-sa.png?serial=2020111201"/></a>
  96. <a href="/anybrowser"><img loading="lazy" src="/images/anybrowser.png?serial=2020111201" alt="Anybrowser campaign"/></a>
  97. <a href="http://tstzmgqansvqfzr3qrkehszmlhjqbpqp7pwncrzr72ohyygrnbuu26qd.onion/">.onion</a>
  98. <a href="/privacy%20policy">Privacy Policy</a>(2019-11-27)
  99. This webthing agrees that <a href="https://simpleweb.iscute.ovh/">simple web is cute</a>~ ♥
  100. </footer>
  101. </body>
  102. </html>