[HN Gopher] Should You Write a Wayland Compositor?
___________________________________________________________________
Should You Write a Wayland Compositor?
Author : todsacerdoti
Score : 34 points
Date : 2021-01-26 15:16 UTC (7 hours ago)
(HTM) web link (tudorr.ro)
(TXT) w3m dump (tudorr.ro)
| kristoff_it wrote:
| Another Wayland compositor written in Zig is ifreund/river [1].
|
| Isaac, the author, gave a talk on choosing C vs Rust vs Zig on
| Zig SHOWTIME a while back [2] and also has an upcoming talk at
| FOSDEM 21 [3]
|
| [1] https://github.com/ifreund/river [2]
| https://www.youtube.com/watch?v=mwrA5IRGpfU [3]
| https://fosdem.org/2021/schedule/event/zig_wayland/
| DyslexicAtheist wrote:
| this talk is phenomenal thank you. he explains (timestamp:
| https://youtu.be/mwrA5IRGpfU?t=330) why he didn't go with Rust
| and it's quite puzzling what he says. I don't know enough about
| Rust if that's the case. To rephrase:
|
| "Rust was an obvious contender but it lacked good support for
| wlroots. there was a project which attempted to address this
| but they gave up after 12 months of work and 1000 commits.
| Rust's strong safety guarantees and memory management conflict
| with wlroots which assumes a longer lifetime of pointers. If
| you unplug your monitor with wlroots this pointer receives an
| event that means the output has disappeared and needs to be
| validated (see here https://way-
| cooler.org/blog/2019/04/29/rewriting-way-cooler-...).*
|
| This is strange because Rust positions itself as a system
| language so I'd have imagined these scenarios are all over the
| place and _unsafe_ Rust would be the way most of this is
| solved?
| steveklabnik wrote:
| > I'd have imagined these scenarios are all over the place
|
| Not as many as you'd imagine, really.
|
| The core issue here is that lifetimes are a _static_
| validation mechanism. But wlroots has pointers that have a
| _dynamic_ invalidation mechanism. There have been a few big
| attempts in systems like this to try and validate everything
| as statically as possible, and just like you 'd imagine, the
| mis-match leads to pain. Rust absolutely has ways of doing
| dynamic validation, some including unsafe, as you've noticed.
| But some folks will try to push the boundaries. And that can
| often be really good! That's how progress is made. But like
| any experiment, sometimes it doesn't work out well.
| boudin wrote:
| What he mentions is wlroot-rs. If you're interested, here's
| the post from its author about the difficulties faced which
| lead to stopping development. http://way-
| cooler.org/blog/2019/04/29/rewriting-way-cooler-i...
|
| It was discussed here back then
| https://news.ycombinator.com/item?id=19778738
| yjftsjthsd-h wrote:
| > Some power users also haven't switched to Wayland because their
| gimmicky window manager doesn't have a Wayland equivalent
| (XMonad, Awesome, Bspwm and the others).
|
| My first thought was that the author was being unnecessarily and
| unhelpfully dismissive. Then I skimmed the rest of the article
| and I think if you take it as "compositors are way bigger than
| window managers were in X, so if you want to write what would've
| been a window manager then you should consider working on top of
| an existing compositor" then it makes sense. I'm wondering if
| maybe it's just a language thing.
| dkersten wrote:
| Probably shouldn't have used the word "gimmicky" which makes it
| sound very dismissive. I don't see tiling as a gimmick, but
| rather a critical element of my day to day workflow, for
| example.
| yjftsjthsd-h wrote:
| Yeah, I think just using a different word would fix it.
| Teknoman117 wrote:
| I took it mainly as a joke. There are so many window managers
| for Linux, most with a small but dedicated user base. The time
| it takes for any "new" technology to reach every one of them is
| usually substantial.
|
| On a separate note, as an i3 user I should check out away
| again. Last time I tried it (multiple years ago), it had a
| fairly substantial amount of input lag. Kind of turned me off
| of anything based on wlroots.
| lapinot wrote:
| > it had a fairly substantial amount of input lag
|
| I use sway since ~2 years and i never experienced such thing.
| I you can still reproduce you should definitely look into it
| and email the maintainers, i'm sure it's a bug. Right now
| sway is feature frozen and it seems to be rock-solid. Screen
| capture works with pipewire (which is a breath of fresh air
| in comparison with the pulse/jack combo) and the xdg-desktop-
| portal extension. At this point i'm not sure i'll switch to
| something else in my lifetime!
| Teknoman117 wrote:
| As I said, it's been awhile. Was the latter half of 2016
| when I tried.
|
| I had bumped into it while trying to write a "system
| compositor / fullscreen shell" which would run another
| wayland compositor inside for the purpose of desktop
| recording. It would convert the wayland buffer handles into
| vaapi surfaces so I could use the GPU's video encoder. Most
| compositors never really picked up support for running
| nested, so I had abandoned that project.
|
| I was super intrigued about wayland because it caused all
| the drivers to truly support offscreen accelerated
| rendering, I was also hoping to turn it into a remote
| desktop thing where you could actually run 3D apps in the
| future as well.
___________________________________________________________________
(page generated 2021-01-26 23:02 UTC)