Jan Grulich

Screen sharing in Plasma wayland session

One of the important missing features in Plasma wayland session is without a doubt possibility to share your screen or record you screen. To support this you need help of the compositor and somehow deliver all needed information to the client (application), in ideal way something what can be used by all DEs, such as Gnome. Luckily, this has been one of the primary goals of Pipewire, together with support for Flatpak. If you haven’t heard about Pipewire, it’s a new project that wants to improve audio and video handling in Linux, supporting all the usecases handled by PulseAudio and providing same level of handling for video input and output. With Pipewire supporting this, there was recently a new API added to xdg-desktop-portal for screen cast support and also for remote desktop. Using this API, applications can now have access to your screen content on Wayland sessions or in case they are running in sandbox. With various backend implementation, like xdg-desktop-portal-kde or xdg-desktop-portal-gtk, they just need to support one API to target all desktops. Screen cast portal works the way, that the client first needs to create a session between him and xdp (xdg-desktop-portal) backend implementation, user then gets a dialog with a screen he would like to share and starts screen sharing. Once he does that, xdp backend implementation creates a Pipewire stream, sends back response to the client with stream id and then client can connect to that stream and get its content. Once he no longer requests content of the selected stream, xdp backend implementation gets information that nobody is longer connected to the created Pipewire stream and can stop sharing screen information and xdp backend implementation is again ready to accept next requests for screen sharing. This is all happening in the background so there is really no cool picture I can show, at least this dialog which you get when you request to share a screen.

I finished support for screen cast portal in xdg-desktop-portal-kde last week and currently waiting for it to pass review and be merged to master. This is also currently blocked by two not merged reviews, one adding support for sending GBM buffers from KWin and one with new Remote Access Manager interface in KWayland, both authored by Oleg Chernovskiy, for which I’m really greatful. This all will hopefully land soon enough for Plasma 5.13. Testing this is currently a bit complicated as you need everything compiled yourself and besides my testing application there is really no app using this, except maybe Gnome remote desktop, but there should be support in future for this in Krfb, Chrome or in Firefox. Hopefully soon enough.

Last thing I would like to mention is for GSoC students. We also need remote desktop portal support to have full remote desktop experience so I decided to propose this as a GSoC idea so students can choose this interesting stuff as their GSoC work.

Upcoming news in Plasma 5.5

It’s been a while since Plasma 5.4 release and we are now approaching feature freeze for Plasma 5.5 so I would like to share with you what news you can expect in plasma-nm. This time we have major changes only in our connection editor although most of you wouldn’t probably even notice them. This is going to be a short list unfortunately given I have less time and less ideas, but at least something, right?

So, what is new?

WPA/WPA2 Enterprise validation
WPA/WPA2 Enterprise validation was the only one missing validation in our connection editor and without it we let you to save your WPA/WPA2 Enteprise configuration even when it was wrong or some option was missing. Now you should be able to save your configuration only when it’s valid for NetworkManager. In addition to check for missing properties, we check (in case of TLS authentication) whether provided private key can be decrypted with given private key password (works only for pkcs12 and PEM formats).

New password field widget
Option to show/hide the password and option to not store the password were removed as standalone widgets and they are now part of the password field. I did this to make the UI less complicated and also because I like it, however this introduced some accessibility issues which need to be addressed somehow once I have time to do that (mentioned this here as a commitment that I’ll really do something about that).
plasma-nm-password-widget

Other changes

  • OpenVPN improvements (better properties descriptions, new options)
  • added tooltips to most common options
  • some bugfixes and other minor improvements which are not worth mentioning

2+ years with network management in KDE

It has been more than 2 years when I was an intern in Red Hat and Lukáš Tinkl, my leader that time, told me that I should take a look what needs to be done around network management in KDE. I started with contribution to libnm-qt (networkmanager-qt now), because there was a plan to have a separated library for NetworkManager and port the applet to use it later. It took me a few months to get familiar with NetworkManager DBus API and implement all missing stuff and I was ready to start porting the applet. Problem was that the old NM applet was not ready at all, its architecture had been done with more network daemons in mind (like wicd) and the code base became really complicated. I still remember that discussion we had about starting from scratch, it was quite tough decision, because we had to drop such huge code base and years of work. Anyway, we decided to go for it and start from scratch and one of the best journeys of my life had begun. It went quite good, we were able to reuse some existing parts from the old applet and we had first release like half year later. Well, quality of first releases is questionable, not everyone liked them we did, but we have learned from mistakes and now I daresay that the version we have after 2 years currently in Plasma 5 is really great and we enjoyed doing it.

But the real reason why I decided to write this blog post is that I wanted to look to some statistics using gitstats after those 2 years of development and share them with you.

Stats about networkmanager-qt

Total files: 363
Total lines: 41876
More stats here.

Table of top contributors since the beginning.
nm-qt-authors

Stats about libmm-qt

Total files: 120
Total lines: 14695
More stats here.

Table of top contributors since the beginning.
mm-qt-authors

Stats about plasma-nm

Total files: 288
Total lines: 40507
More stats here.

Table of top contributors since the beginning.
plasma-nm-authors

NOTE that those statistics do not include contributions to the old NM applet, which some parts are used in both libraries and even in the new NM applet.

Upcoming changes in the next plasma-nm release

It’s been 3 months since the last plasma-nm (Plasma networkmanagement) release and we have been working really hard to bring you again a better release than the previous one. Unlike previous releases, this one is focused on internal changes which are not mostly noticeable on the outside, but I believe they are welcomed.

The most significant internal change is a new model. This one is more complex and easier to maintain and one of it’s advantages is that we can now use it also in the connection editor, so if there is a problem we can just fix it in one place. It should better handle various cases which were not properly handled in previous versions, like when you have more wireless cards. Also various NetworkManager changes are now properly propagated to the applet, i.e. we are not now limited to three connection states (disconnected, connecting, connected) as before, but when you activate your connection you will see the exact device state like “getting IP address” or “waiting for authorization” and so on. Regarding the connection editor, you can now activate/deactivate connections there which is probably something what nobody will use, but since this is possible because of the new model, then why not to add this option.

From visible changes I could mention new notifications. I added various notifications to inform you about successful or failed actions. This is quite useful when you do some action and nothing happens, usually when you are not authorized to do it. You can see new available notifications on the screenshot below.
notifications
Note: This screenshot is from Plasma 5 version and unfortunately not all notifications are also available in KDE 4 version, because I had to change API in libnm-qt (NetworkManagerQt) and this was possible only in the Qt5 version which is not released yet.

We were also working a lot on porting plasma-nm to KDE Frameworks 5 and I’m happy that plasma-nm is now part of Plasma 5 which means it will be released together and regularly also with bugfix releases, so you won’t have to always wait until we decide to bring you a new version. This change came quite late and there were no tarballs previously available until now, so I would really appreciate if you can test it together with the rest of Plasma 5. Regarding the KDE 4 version, we will probably release it together with Plasma 5 release, but if you want to try it now, you can just compile it from git and use branch called 0.9.3.

Here are some screenshots from Plasma 5 version. As you can see Plasma 5 version has a scrollbar o/. Unlike KDE 4 version there is no traffic monitor, because it hasn’t been ported yet, but we will add it in future and details will probably get a new look.
Details Password dialog

I hope you will like all the changes above and please do not forget to report all issues you spotted to our bugzilla.

Scroll To Top