Overall contributing has been very pleasant and the people on Mozilla's matrix channels have been helpful getting me on track. But better than taking my word for it, you should try contributing for yourself :)
381 karma · joined March 14, 2018
Overall contributing has been very pleasant and the people on Mozilla's matrix channels have been helpful getting me on track. But better than taking my word for it, you should try contributing for yourself :)
Talking about certs, nowadays it seems browsers want to make you believe that self signed certs are some diabolical work straight from hell. Using self signed certs with websockets on Firefox is actually nearly impossible [1].
I guess the reason why a lot of phones use gorilla glass is that the quality difference to regular glass is more noticeable and things like scratch resistance are a little more than just pure durability.
But I have to admit that my statement was of course somewhat hyperbole :)
What I am bemoaning is planned obsolescence, under capitalism there is hardly any incentive to make things more durable unless absolutely necessary. Superfest glasses may or may not be an example of planned obsolescence winning over durability as I do not know the costs to produce them and it seems there are some downsides like breaking rather violently once their time has finally come.
[1]: https://digitalcosmonaut.com/2020/superfest-ceverit-glass-dd...
I see, I do not know much about the internal workings of Wayland. The problem I do see though is that screen recording is an essential feature that has been neglected for years due to the lack of a standard.
> This is a really bad idea, don't do this.
While I agree that getting window positions may be questionable, providing a human readable title for the streams that have been selected seems obvious, yet is missing.
> syncing issues with window sizes being reported incorrectly
This seems rather theoretical to me, while of course true, I doubt it is going to matter in practice.
> It's also a misuse of the screencasting API.
Hmm, do you think there is a better solution, that isn't giving up and having each desktop environment do its own thing?
> If you want to do this right now then you'll have to integrate with the specifics of the window manager or shell. There is no way around it, I really doubt you will get much interest in doing it another way.
This is also my conclusion, alas it's not happening and one of the reasons why I think Wayland is not quite there yet.
No need to go that far, this site supports reader mode.
> Does this change require GNOME and/or Wayland?
PipeWire is not bound to Wayland or a specific desktop environment, it runs (mostly) fine under GNOME, KDE Plasma as well as sway. The desktop interfacing is done via flatpaks xdg-desktop-portal, as long as your desktop implements that you should be fine.
PipeWire is truly a godsend for screen recording on Wayland, not very long ago, if at all, every desktop environment / compositor had their own home brewed protocol and developing anything related to screen recording on Wayland was a massive pain [1]. I still can not fathom how Wayland could even exist this long without any decent way to do screen recording and I also do not get why there is no official protocol or at least extension for this!
But thanks to PipeWire some first projects finally support screen capturing on Wayland. Both Firefox (via webrtc) [2] and OBS [3] directly interface with PipeWire. For my personal project Weylus [4] I opted for the gstreamer plugin as at the time the documentation for PipeWire itself was very lacking and I could not figure out how to get it to work. Fortunately gstreamer is better documented and it turned out to be rather easy to use. But it shows that all this is still in an early stage as I hit quite some bugs, probably the most egregious (maybe even somewhat funny) one is KDE's kwin_wayland crashing if you hover the cursor over any window close button while screen recording [5], sadly it doesn't seem to be fixed yet. For some more bugs I've hit, see [6].
Something I am a little worried about is that flatpak with their xdg-desktop-portal [7] is now responsible for the de facto standard how screen recording is negotiated on Wayland. I fear that this means if flatpak does not need a feature, even if it makes sense in another context, it probably won't ever be implemented. For example something I require for my project are proper window names and their position as well as size, but apparently this is nothing essential for flatpak and the issues I have opened have largely been ignored [8]. This is by no means meant as an accusation, just an observations that things are not all good.
[1]: https://github.com/H-M-H/Weylus/issues/3#issuecomment-652670...
[2]: https://webrtc.googlesource.com/src/+/refs/heads/main/module...
[3]: https://github.com/obsproject/obs-studio/blob/master/plugins...
[4]: https://github.com/H-M-H/Weylus
[5]: https://bugs.kde.org/show_bug.cgi?id=435042
[6]: https://github.com/H-M-H/Weylus/issues/3#issuecomment-808940...
[7]: https://github.com/flatpak/xdg-desktop-portal
[8]: https://github.com/flatpak/xdg-desktop-portal/issues/created...
> Best way to really check it is with high-speed video capture of a hardware display and the mirrored content in the headset, of a high-(temporal-)resolution stopwatch.
Agreed, it's a little cumbersome but afterwards you can be pretty confident in your result. Have you measured 3ms like that? Getting below 3ms with small deltas using NVENC sounds possible but considering that even with a refresh rate of 120fps there is over 8ms between two frames, 3ms does sound suspiciously low.
One last question, have you done any experiments with the video codec, due to compatibility requirements I am pretty much limited to H.264 but was wondering if there is something better for super low latency encoding?
Wow that's pretty impressive, especially considering the 4K main screen + additional virtual screens used. I wonder how you get the latency this low. 3ms means no buffering at all, neither during encoding nor decoding. The best I could achieve so far is a little less than 60ms but with the additional restriction that playback has to be done via browser.
While I agree with the current ruling in the UK, this statement does not sit too well with me:
> "Only a person can have rights. A machine cannot," wrote Lady Justice Elisabeth Laing in her judgement.
In my opinion this sets a bad precedent in case we ever achieve artificial general intelligence (AGI) [2], which I think is perfectly possible, especially considering that we humans are nothing but complicated biological machines. And I think an AGI should very much be considered a person. That's why I think the way how a US judge in a prior cases put it is more agreeable:
> As technology evolves, there may come a time when artificial intelligence reaches a level of sophistication such that it might satisfy accepted meanings of inventorship.
> But that time has not yet arrived, and, if it does, it will be up to Congress to decide how, if at all, it wants to expand the scope of patent law.
But admittedly this is still all very hypothetical as I don't see AGI happening in the near future and for now there is no real problem.
[1]: https://en.wikipedia.org/wiki/The_Measure_of_a_Man_%28Star_T...
[2]: https://en.wikipedia.org/wiki/Artificial_general_intelligenc...
[1]: https://gist.github.com/jvns/edf78e7775fea8888685a9a2956bc47...
I was happy to read that the author comes to the same conclusion and proposes an `each` builtin (albeit only for the Oil shell)! Like that there is no need to learn another mini language as pointed out.
But I would love a shell with a sane language. At the moment I am using zsh + oh-my-zsh because I can not let go of the autocompletion I get. I tried some other shells like oil shell, ion shell, nushell and elvish but sadly the completion is just not there yet. The only shell with maybe even better completions I came a cross is fish, but I don't love the language, while it seems better than sh/bash to me I'd much rather have something more similar to ion shell with stronger typing.
Thinking about command completion, this seems like the analog problem to editors and the language server protocol. Is there something like a command completion server?
> 1) From the video, latency would need to go way down.
On the encoding side the only thing I can think of to improve latency is to try hardware encoding if available. Something like NVENC might bring it down. That leaves optimization for the network protocol to use, something based on udp is likely better suited than websockets. And finally mobile apps probably leave more room for improving playback latency (and enable other protocols than using websockets).
> 2) Pressure support is important, if not critical.
It is pretty straightforward to add new input methods, I will add some instructions to the Readme, maybe someone will step forward and add support for macOS and Windows.
> 3) Packaging.
There already is a .deb, although I still need to fix some dependency issue [1].
> Next step would be to go from mirroring to second display.
Apparently this is almost possible right now (at least with X11), see [2].
> breadcrumbs
I think this is the way to go, I will add some more info on how to contribute soon.
[1]: https://github.com/H-M-H/Weylus/issues/6 [2]: https://github.com/H-M-H/Weylus/issues/5
If someone wants to build a mobile app I am more than happy to provide other means of connection to Weylus than websockets. This also might bring the latency down as udp streaming and more control over video decoding and playing is possible then.
As far as I can tell this is not possible: https://tools.ietf.org/html/rfc6143#section-7.5.5
Also selecting a specific window, which is possible in Weylus, does not seem to work with vnc.
This is a possibility but encoding is already pretty optimized (ffmpeg and libx264 with ultrafast as preset), which is faster than my previous approach of just streaming PNGs. And streaming PNGs was not that slow either, even on a rather old laptop. That's why I suspect there's something wrong on the tablet.
Regarding noVNC: What latencies do they achieve? I am not a webdev so I guess they might have some more tricks up their sleeves, I will probably have a look. As far as I can tell noVNC does not support things like multitouch and pressure sensitivity so that rules out just using it (at least for my usecase).