Skip to content

Welcome to Planet KDE

This is a feed aggregator that collects what the contributors to the KDE community are writing on their respective blogs, in different languages

Wednesday, 22 March 2023

This blog introduces a new tool to make it easy to stream wayland windows and screens to existing applications running under Xwayland that don't have native pipewire support in an easy-to-use manner than retains full user control throughout.

Intro

On my Plasma wayland session right now if I use the screen share function in Discord, I'm presented with the following.

It doesn't work 🙁

I have no windows listed, even though I clearly have windows open. The full screen shares are blank.
The same will be true in MS Teams, Slack, Zoom as well as any other Xwayland apps that involve screencasts.

Linux enthusiasts - and by reading developer blogs you're definitely in this camp - will understand why this is and probably know some technique to avoid this involving changing my setup or workflow in some way to work round things on a per-app basis.

For our wider userbase this isn't enough. Wayland is a technical detail and we want any switch has to be as transparent as possible for as many apps as possible for all cases - including cases we haven't thought of.

Introducing XwaylandVideoBridge

With our new tool, written by Aleix Pol and myself, running the workflow is as follows: I click on the share button. Immediately I'm presented with an option to choose what windows or screens I wish to make available to X.

This is now selectable in my existing application. The stream continues until I stop sharing within the application.

Left: a prompt to choose windows to stream.
Right: How it appears after selection

Security

The bridge works via the same mechanisms as any "native wayland" video streaming tool would work, through the XDG Desktop Portals. Getting data through PipeWire as requested it through the portal with explicit user consent.
Whilst the bridge does mean that any X application could eavesdrop the shared window the user still remains completely at the helm of which windows are shared to X applications and most importantly when.

We could go the route of trying to be completely seamless to the X client with N fake windows all forwarding content on demand, but I like the demonstration that it's possible to not break existing user applications without having to compromise on our lofty wayland goals.

Performance

Technically there's an overhead, pragmatically it uses no CPU and any latency is negligible compared to the cost of streaming.

Installation

Grab a flatpak from: Our gitlab builder or from source.

Note it requires a non-released libkpipewire, something the flatpak resolves.

Whilst only tested on a Plasma wayland session, this should be usable by any Wayland desktop with a working xdg-desktop-portal, screencasting and standard system tray.

Usage

Ensure our proxy is running in the background flatpak run org.kde.xwaylandvideobridge optionally setting it to autostart. After that everything should kick in automatically the next time an Xwayland application starts streaming.

How it works under the hood

The inspiration for this came from the debug tool to show pipewire streams in a window whilst we were working on Plasma remote desktop support. If we force that debug tool to run as an Xwayland client, it becomes visible to other Xwayland chat / streaming programs. We had 90% of the code already.

The only remaining step was some sneaky tricks to hide this X11 window from the user's view making it unfocussable, invisible and out of view. We then added detection for when we're being streamed by using the XRecord extension to monitor all clients redirecting the window we own.

It's an excellent example of X11 allowing you to do really, really stupid things, for novel and creative puposes.

Future Plans

This is only an initial Alpha release. How we take it in the future is not completely decided; it might remain a standalone tool moving to flathub or distros, we might proposed it into Plasma 6 by default. There's a possibility the Linux desktop might be at a point where this is redundant.

There's definitely some minor tweaks still to do on the exact workflow.

Please do give feedback and let us know!

http://disuss.kde.org thread

Qt for MCUs 2.2.4 LTS (Long-Term Support) has been released and is available for download. As a patch release, Qt for MCUs 2.2.4 LTS provides bug fixes and other improvements, and maintains source compatibility with Qt for MCUs 2.2.x. It does not add any new functionality.

Tuesday, 21 March 2023

Working on the Nextcloud desktop client, I stumbled into a nasty little bug. If you tried to add or remove a user account, the app would often freeze for a while. This was super annoying during testing, so I decided to look into it. Surprisingly this wasn’t a new bug I’d unwittingly introduced; tracing the … Continue reading "Fixing QtKeychain freezing on Apple devices"

Today we are announcing the availability of the latest release of LabPlot: Say hello to LabPlot 2.10!

This release comes with many new features, improvements and performance optimizations in different areas, as well as with support for new data formats and visualization types.

The major new features are introduced below. For a more detailed review of the changes in this new release, please refer to the ChangeLog file.

The source code of LabPlot, the Flatpak and Snap packages for Linux, as well as the installer for Windows and the image for macOS are available from our download page.

What’s new in 2.10?

Worksheet

LabPlot’s worksheet comes with new visualizations and more advanced plots, including:

  • Bar plots
  • Plot templates that allow you to save and re-use custom plot configurations
  • Error bars in histograms
  • Rug plots for box plots and histograms
  • More flexible and customizable box plots
  • Reference ranges, that is, custom areas on the plot to highlight x- and y-ranges
  • LaTeX error messages in text labels when rendering with LaTeX

Spreadsheet

The Spreadsheets gain more functions and operations to modify and generate data:

  • Data sampling (random and periodic methods)
  • Data flattening to convert pivoted data to column base format
  • Baseline subtraction using the arPLS algorithm
  • Heat-map formatting for categorical data in text columns
  • Column statistics for text columns, including the frequency table, bar and Pareto plots
  • Functions to access arbitrary cells of columns with cell (f(index), g(column, ..))
  • Functions to work with column statistics (size, mean, stddev, etc.)
  • Ability to specify the seed number when generating random numbers

Analysis

The new analysis tools added to LabPlot 2.10 include:

  • Maximum likelihood estimation for several distributions
  • Guess start values of fit parameter for polynomial models by linear regression
  • Export the results of a computation to a new spreadsheet
  • Fourier filtering for DateTime data

Import/Export

LabPlot 2.10 adds support for new file formats and multiple optimizations to improve import performance:

  • Import of Excel .xlsx files
  • Export spreadsheet and matrices to Excel .xlsx format
  • Import of Binary Log File (BLF) files from Vektor Informatik
  • HDF5: support VLEN data import
  • Reduced memory consumption when importing from a database table into a spreadsheet
  • Reduced memory consumption during the spreadsheet export to SQLite databases
  • Faster import of files with a large number of columns

Notebook

The 2.10 release Improves the variable panel and plot export:

  • Show the type of a variable, its size (in Bytes), and its dimension (number of rows and columns) for backends that provide this information
  • Properly show the values of Octave’s row vectors and matrices
  • Allow to copy variable names and values to the clipboard
  • Export plot results to vector graphic formats (PDF and SVG)

Monday, 20 March 2023

GitHub is rolling out 2FA, and Calamares is one of the repositories I maintain there. Calamares seems like kind-of-important infrastructure for some things (e.g. Microsoft’s own Linux distro). Enabling 2FA was remarkably painless because I already had a bunch of 2FA stuff set up for KDE’s Invent. Invent is a GitLab instance and all-round more pleasant, frankly. Enabling 2FA was funny because the first thing FreeOTP (the 2FA authenticator I use) said was “weak crypto settings” when scanning the GitHub QR code. Good job, folks.

So Calamares is still on GitHub. Thanks to Kevin I’m reminded that GH is like an addiction. Also that there have been calls to leave GH for years. As a maintainer-with-no-time of a repo, there are still no concrete plans to move. KDE Invent still seems like a non-starter because of translations workflow.

Anyway, rest assured that the Calamares repo is now 2FA-safe. And that a 3.3 release will happen someday.

Saturday, 18 March 2023

My experience taking part in Season of KDE

Background and motivations.

The year : 2020. Covid-19 has reached Europe, and a high-school student finds himself trapped home with a lot more free time than usual. So, of course, he spends the first week playing video games practically non-stop. However, he soon gets slightly bored by it, and begins to follow an online tutorial about programming in c++ with an introduction to the Qt framework.

Fast-forward to 2022. In the meantime, I had made the switch to Linux, and I had continued to make small c++/Qt programs in my free time. I decided that it would be nice to put my knowledge to practice, and do something useful for the community. KDE was a natural choice, as I really enjoy Plasma and the KDE apps, and I already had some experience with c++ and Qt.

What is Season of Kde ?

“Season of KDE is an outreach program hosted by the KDE community. The Season of KDE provides an opportunity for people to do mentored projects for KDE.”

- https://community.kde.org/SoK/About

The Adventure Begins !

The first challenge was to choose what to do. Coming from the outside, it is hard to know what projects are in active development, and where help is needed. This is one of the big advantages of SoK, as developers can submit project ideas, so mentees can just pick what interests them. However, I ultimately chose not to work on a proposed project, but to work on AudioTube. AudioTube is a YouTube Music client I had discovered a short while before, and which, most importantly, is in active development and I had some Ideas on features I could implement.

I got in touch with the developers and found some amazing persons who where willing to mentor my project, namely Jonah Brüchert, Carl Schwan and Devin Lin.

After having written the project proposal and set up a development environment, everything was ready to start !

The first merge request

I wanted to start with something simple. Adding the ability to remove songs from the playback history. Just adding an item to a popup menu and writing a small backend, what could be hard about that ? Wait, this application uses qml ? No widgets ?

qml crash-course

It turned out the ui side was still pretty easy, I just had to copy-paste some lines of code and change some keywords. The backend was a little bit more challenging, requiring some sql and a separate c++ class to handle when the menu item should be displayed, but nothing undoable

And then it was time to submit my first ever merge request (and getting aquainted with git and gitlab !).

Later merge requests

As a natural continuation to this first success, I began to work on making it possible to remove old search queries to the database. The search queries were handled by a model-view pattern. It turned out that the model was reset and reloaded every time a change was made to it, so I made it possible to change the model and the underlying database separately.

I also implemented a volume slider, a “clear playlist” button, the ability to play the favourite and most played songs as a playlist, enabled keyboard navigation of search propositions, and introduced support for the mpris standard, making it possible to control AudioTube from the system tray.

Useful lessons

If you hesitate to start contributing to an open source project because you have no previous experience in development, I can only encourage you to give it a shot. It isn’t really complicated. Also, it is very fun and there are lots of people who will gladly help you to get started. You might want to consider the following tips (most of them should also be valid outside of SoK and KDe) :

  • Start small. In the first merge request, you will need to get accustomed to many new tools and a new code base. So first make some small, easy changes to get the hang of it and gradually move to more complex, exiting new features.
  • When you encounter a new tool, learn only what you need for your current task. You don’t need to go through the whole git book before you can make your first contribution. If you learn only what you currently need, you’ll be able to get started much faster, and you can learn more every time you use that tool.
  • Don’t hesitate to ask for help. It is always good to try to solve problems yourself, but if you’re stuck somewhere, consider asking more experienced contributors. You’ll most probably learn something along the way.
  • If you want to start out in KDE, you’ll find useful information at https://community.kde.org/Get_Involved. Also, the #kde-welcome:kde.org matrix room is intended for new developers.

Closing thoughts

Getting new contributors is absolutely crucial for a healthy, long-living open source project. It is therefore important to make the onboarding process as easy as possible. Season of KDE achieves this by providing project ideas and facilitating the process of finding mentors to help. So, if you are already a contributor and have a nice idea for a project, please consider submitting it next year at SoK and maybe propose to mentor it. Or put it in the junior job list. And thanks for being patient with us newbies who make stupid mistake and ask obvious questions ;)
I also want to thank everybody who makes Season of KDE possible, especially my mentors.

It’s become almost a running joke on Phoronix at this point, but this week we do indeed have more Wayland fixes! 🙂 …And other things as well, including some good UI improvements to various KDE apps in addition to the background work of Qt 6 porting that is continuing full steam ahead, and reaching a position of increasing stability. Come see!

User Interface Improvements

Ark’s welcome screen is now richer with features, to be more like the one in Kate (Eugene Popov, Ark 23.04. Link):

New Ark welcome screen showing "recently used" list and documentation links

Made a few UI improvements to Elisa, such as showing a “Quit” menu item in the hamburger menu when using the System Tray icon feature, correctly returning to the prior window state when exiting full screen mode, and resetting the playback position slider to the beginning when the playlist is manually cleared (Nikita Karpei and me: Nate Graham, Elisa 23.04. Link 1, link 2, and link 3)

Okular’s default toolbar layout has now been tweaked a bit, and now includes the “View Mode” menu by default and also shows the zoom and view buttons on the left side, with the tools on the right side (me: Nate Graham, Okular 23.04. Link 1 and link 2):

Okular main window showing new toolbar layout with zoom and view controls on the left and various other tools on the right

When “Fix it for me!”-style actions in the Samba sharing wizard fail, you’re now shown an appropriate error message explaining what went wrong (me: Nate Graham, kdenetwork-filesharing 23.08. Link)

Plasma now exposes global actions for “Restart” and “Shut Down” so you can add keyboard shortcuts to trigger them. We already had the “without confirmation” versions of these actions, but these new ones will ask for confirmation first (me: Nate Graham, Plasma 6.0. Link)

When importing VPN configurations, any errors are now shown in the UI so you can figure out what went wrong and maybe fix it yourself (Nicolas Fella, Plasma 5.27.3. Link)

While downloading new Flatpak apps, Discover now reports the status as “Downloading” correctly (Aleix Pol Gonzalez, Plasma 5.27.4. Link)

If your keyboard has an Emoji key, pressing it now opens the Emoji Picker window (Konrad Borowski, Plasma 5.27.4. Link)

Info Center has adopted a flattened sidebar structure so pages no longer live in sub-categories. This should make it easier and faster to access everything (Oliver Beard, Plasma 6.0. Link):

Info Center window showing flattened sidebar navigation with no sub-category groups

When you synchronize your Plasma settings to SDDM, it now also syncs the cursor size (me: Nate Graham, Plasma 6.0. Link)

We no longer misleadingly use Filelight’s icon for the 3rd-party GParted app in the Breeze icon theme (me: Nate Graham, Frameworks 5.105. Link)

Significant Bugfixes

(This is a curated list of e.g. HI and VHI priority bugs, Wayland showstoppers, major regressions, etc.)

Fixed a source of crashes in System Settings when importing VPN configuration files (Nicolas Fella, Plasma 5.27.3. Link)

Fixed another source of clipboard-related crashes in Plasma (Fushan Wen, Plasma 5.27.4. Link)

Significantly improved robustness of screen arrangements when using a multi-monitor setup that includes monitors with identical EDID values (Xaver Hugl, Plasma 5.27.3. Link)

Significantly improved robustness of Plasma containments’ mapping to screens when using multi-monitor setups (David Edmundson, Plasma 5.27.3. Link)

Fixed the way GTK apps scale themselves in the Plasma Wayland session when using multiple screens with different physical DPI values (Luca Bacci, Plasma 5.27.4. Link)

In the Plasma Wayland session, Plasma no longer quits (not crashes!) when an app sends a window title that’s wayyyyy too long (David Edmundson, Plasma 5.27.4. Link)

In the Plasma Wayland session, screen recording and Task Manager thumbnails now work properly for users of NVIDIA GPUs with the proprietary drivers (Jan Grulich, Plasma 5.27.4. Link)

Other bug-related information of interest:

Automation & Systematization

Added a UI test for Discover to test installing and uninstalling apps from the PackageKit backend (Harald Sitter. Link)

Changes not in KDE that affect KDE

In its native Wayland mode, Firefox no longer has an invisible animation that forces the screen to constantly repaint, causing KWin to unnecessarily consume excessive CPU resources (Emilio Cobos Álvarez, Firefox 113, Link)

…And everything else

This blog only covers the tip of the iceberg! If you’re hungry for more, check out https://planet.kde.org, where you can find more news from other KDE contributors.

How You Can Help

If you’re a user, upgrade to Plasma 5.27! If your distro doesn’t offer it and won’t anytime soon, consider switching to a different one that ships software closer to its developer’s schedules.

If you’re a developer, consider working on known Plasma 5.27 regressions! You might also want to check out our 15-Minute Bug Initiative. Working on these issues makes a big difference quickly!

Otherwise, visit https://community.kde.org/Get_Involved to discover other ways to be part of a project that really matters. Each contributor makes a huge difference in KDE; you are not a number or a cog in a machine! You don’t have to already be a programmer, either. I wasn’t when I got started. Try it, you’ll like it! We don’t bite!

And finally, KDE can’t work without financial support, so consider making a donation today! This stuff ain’t cheap and KDE e.V. has ambitious hiring goals. We can’t meet them without your generous donations!

Friday, 17 March 2023

Let’s go for my web review for the week 2023-11.


MoonRay Production Renderer

Tags: tech, foss, 3d, movie

This is a huge! DreamWorks Animation releasing its rendering pipeline as free software.

https://openmoonray.org/


Who reads your email?

Tags: tech, email, decentralized, self-hosting

This is very very centralized. No good surprise here unfortunately… and still email is really tough to fully self-host.

https://www.netmeister.org/blog/mx-diversity.html


Microsoft just laid off one of its responsible AI teams

Tags: tech, ai, microsoft, ethics, gpt

Well, people asking relevant questions slow you down obviously… since the goal about the latest set of generative models is to “move them into customers hands at a very high speed” this creates tension. Instead of slowing down they seem hell bent at throwing ethics out of the window.

https://www.platformer.news/p/microsoft-just-laid-off-one-of-its


GPT-4’s successes, and GPT-4’s failures - by Gary Marcus

Tags: tech, ai, gpt, ethics, science

The lack of transparency is staggering… this is purely about hype and at that point they’re not making any effort to push science forward anymore.

https://garymarcus.substack.com/p/gpt-4s-successes-and-gpt-4s-failures


Vim Best Practices For IDE Users

Tags: tech, tools, ide, vim

Very thorough overview of everything you can do with vim but also your IDE vim emulation.

https://betterprogramming.pub/50-vim-mode-tips-for-ide-users-f7b525a794b3


What a good debugger can do

Tags: tech, debugging, tools

I find debuggers to be underused at quite a few places. A shame when you see what they can do nowadays, and they keep improving!

https://werat.dev/blog/what-a-good-debugger-can-do/


Git Worktree: Enhance your Git Workflow

Tags: tech, tools, git

An often forgotten feature of git. That said it is very convenient when we need to juggle several branches at the same time. This can save some time and space.

https://www.dylanpaulus.com/posts/git-worktree


macige • mobile app CI workflow generator

Tags: tech, ci, mobile

Early days but could turn out useful when it gets more complete. Good way to easily have a CI pipeline targeting mobile platforms.

https://macige.tramline.app/


GitHub - huytd/comby-search: A code search tool based on Comby

Tags: tech, tools, refactoring

Looks like it completes Comby nicely for the search only case.

https://github.com/huytd/comby-search


Remote Synthesis | The Price Developers Pay for Loving Their Tools Too Much

Tags: tech, react, culture, tools

Excellent post about getting too invested in a single tool. We can loose flexibility in the process. Also in the case of React, I didn’t realize until now that half of the web developers have never known a time when React didn’t exist!

https://remotesynthesis.com/blog/the-price-of-developer-tools/


In Defense of Crusty Old Swiss Army Knives // Zach Goldstein

Tags: tech, django, htmx, react, frontend, backend

Nice exploration of Django + HTMX + web components for a CRUD use case. Interesting insights and highlights some of the limitations with HTMX.

https://zachgoldstein.engineering/posts/crusty-knives/crusty-knives/


Choose boring tools – Eduards Sizovs

Tags: tech, architecture, complexity

Definitely this. If it’s too fancy and fashionable you’re likely to pay it in later with the undue complexity it introduced.

https://sizovs.net/boring/


Debugging Architects - The Architect Elevator

Tags: tech, system, architecture, organization

Indeed, it’s important for architects to get their “hands dirty”. Organizations where it’s not the case prevent their architects to challenge their assumptions pushing them to stay in their ivory tower. It’s a good way for bad decisions to pile up over time.

https://architectelevator.com/transformation/debugging-architect/


Jade Rubick - Advice for new directors

Tags: tech, management

Interesting advises for higher management roles. The information gathering and the distorsion fields are key factors to have in mind to not loose perspective. Otherwise it’s when you’ll start doing more harm than good.

https://www.rubick.com/advice-for-new-directors/


Research: Do People Really Get Promoted to Their Level of Incompetence?

Tags: management, hr, career

Interesting, this seems to empirically confirm the Peter Principle, at least in sales. Also shows that companies are trying to workaround it. Dual career ladders seem to be an interesting path for this.

https://hbr.org/2018/03/research-do-people-really-get-promoted-to-their-level-of-incompetence


No heroes needed

Tags: tech, team, management, project-management

Definitely this as well. Having “heroes” brings obscurity and hide the problems, this prevents management from knowing and handling the issues. This also create lots of missed opportunities for collective learning and improvements.

https://rpadovani.com/no-heroes


Nearly 40% of software engineers will only work remotely | TechTarget

Tags: tech, remote-working, hr, hiring

The report is very US centric. Still it looks like the future standard for developer jobs will be more and more remote.

https://www.techtarget.com/searchhrsoftware/news/365531979/Nearly-40-of-software-engineers-will-only-work-remotely


See the First Complete Map of an Insect’s Brain | Smart News| Smithsonian Magazine

Tags: science, neuroscience

Very import milestone for brain mapping. Far from more complex animals of course and an insane amount of work each time. Still the common fruit fly is already revealing interesting new facts about neurology.

https://www.smithsonianmag.com/smart-news/see-the-first-complete-map-of-an-insects-brain-180981778/


Shoshikantetsu

Tags: culture, japan

Interesting japanese term. “Complete what was originally intended”. A few more proposed at this end of this short post.

https://asnewman.github.io/shoshikantetsu



Bye for now!

Thursday, 16 March 2023

Witch Wells, Az
Snowy Sunrise Witch Wells, Az

After my last post a few things have happened. First, I want to thank all of you for your support, monetary and moral. The open source community is amazing and I love being a part of it. We are surviving thanks to all of you. Despite my failed interview, a new door has opened up and I am happy to announce that Canonical is funding me to work part time for a period of 3 months on KDE Snaps! While not the full time role I was hoping for, I’ll take it, and who knows, maybe they will see just how awesome I am! 🙂

I started back to work on these last Tuesday. So far I have made good progress and even have a working Core22 snap!

Work done on upstream snapcraft ( tool used to make snaps ):

New content pack version, fixed an issue with snapcraft remote-build choking on part with /sdk, fixed regex as our naming scheme has changed:

https://github.com/snapcore/snapcraft/pull/4069

Ran into a new bug with snapcraft expand-extensions and so I must now enter all of this information manually into snapcraft.yaml until fixed, bug report here:

https://bugs.launchpad.net/snapcraft/+bug/2011719

And without further ado, our first core22 snap is Dragonplayer Version 22.12.3 available in the snap store. Many more coming soon!

KDE Dragon media player
KDE Dragon media player

With a new month upon us, I must ask for help again, I will not see any money for this work until next month. Please consider a dontation. Thank you from the bottom of our hearts.

https://gofund.me/c9cc02ed

We are happy to announce the release of Qt Creator 10 RC!