Flatpak applications are based on runtimes such as KDE or Gnome Runtimes. Both of these runtimes are actually based on Freedesktop SDK which contains essential libraries and services such as Wayland or D-Bus.
Recently there were a lot of discussion about supply chain attacks, so it might be interesting to ask how Freedesktop SDK was built. The answer can be found in freedesktop-sdk repository:
So it is built using an older version of Freedesktop SDK image. There is now an approved merge request that completely reworks bootstrapping of Freedesktop SDK. It uses another intermediate docker image freedesktop-sdk-binary-seed that bridges the gap between freedesktop-sdk and live-bootstrap.
So what is this live-bootstrap? If you look at parts.rst you’ll see that it is a build chain that starts with 256 byte hex assembler that can build itself from its source and also 640-byte trivial shell that can read list of commands from the file and executes them. Then it proceeds building 130 (as of the moment of writing) other components and in the process builds GCC, Python, Guile, Perl and lots of other supporting packages. Furthermore, each component is built reproducibly (and this is checked using SHA256 hash).
Some caveat: at the moment freedesktop-sdk-binary-seed still uses older binary of rustc to build rustc but in principle one could leverage mrustc to build it. Or possibly rust-gcc will become more capable in future versions and will be able to bootstrap rustc.
So unless your flatpak application uses rust, it will soon be buildable from sub 1 KiB binary seed.
Up until this version, QCoro::waitFor() was only usable for QCoro::Task<T>.
Starting with QCoro 0.8.0, it is possible to use it with any type that satisfies
the Awaitable concept. The concept has also been fixed to satisfies not just
types with the await_resume(), await_suspend() and await_ready() member functions,
but also types with member operator co_await() and non-member operator co_await()
functions.
QCoro::sleepFor() and QCoro::sleepUntil()
Working both on QCoro codebase as well as some third-party code bases using QCoro
it’s clear that there’s a usecase for a simple coroutine that will sleep for
specified amount of time (or until a specified timepoint). It is especially useful
in tests, where simulating delays, especially in asynchronous code is common.
Previously I used to create small coroutines like this:
A small helper coroutine that allows a piece of function to be executed in the context
of another thread.
voidApp::runSlowOperation(QThread*helperThread){// Still on the main threadui->statusLabel.setText(tr("Running"));constQStringinput=ui->userInput.text();co_awaitQCoro::moveToThread(helperThread);// Now we are running in the context of the helper thread, the main thread is not blocked// It is safe to use `input` which was created in another threaddoSomeComplexCalculation(input);// Move the execution back to the main threadco_awaitQCoro::moveToThread(this->thread());// Runs on the main thread againui->statusLabel.setText(tr("Done"));}
Git support in Kate landed almost 2 years ago but so far it is undocumented. I am writing this article in order to fill this gap and hopefully make more people aware of the git related features that Kate has.
To be able to use git functionality you need to enable at least two plugins
Once the project plugin is enabled and you are in a git repository, you will have the git toolview in your left sidebar:
The toolview shows git status of the git repository of the currently open document. There are 4 "top level" nodes as you can see. Staged refers to the files that are staged and will be committed if you run git commit ... **Modified **refers to the files that you were already present in your repository but you changed them. **Conflict **refers to the files that have conflicts. Finally, **Untracked **files are those files which your repository doesn't know about.
On the right edge, you can see +1, -2 (numstat) which basically shows you the number of changes in each file.
To be able to Stage/Unstage a file, you can just double click on a file and it will get staged if it was unstaged or unstaged if it was staged. But this can be tedious if you have a lot of files to stage so you can use the context menu (right click menu) to stage/unstaged many files at once:
Stage Selected Files will stage all the files in the selection
Remove Selected Files will remove all the files!
Stage All will all stage all the files
Unstage All will all unstage all the files
Discard All will discard all your changes!!
Show Diff will open a diff of all the files under that node.
Open at HEAD will open the file and show you its contents as they are currently committed i.e., at HEAD. This can be useful if you have many changes in your file and you want to see what the unmodified file looks like
Each top level node shows the number of files in it on the right side. For e.g., in the above screenshot it is 117 for the Untracked node.
Once you have staged a file, you can commit it either from the gui or command line as you wish. If you want to commit via the gui just click the Commit button at the top. Which will show you the following dialog:
Nothing much to say about it. There are two checkboxes at the bottom left corner.
Amend will amend the commit instead of adding a new one
Sign Off just adds a sign off message in the commit description
Once you click commit changes will be committed asynchronously and you will see a message about it in the Output toolview at the bottom
Once you have committed the changes, you can push them from the gui via the button with up arrow.
The command displayed in the line edit will be executed as is to push the changes. Similarly you can pull in the changes with the button with down arrow.
Sometimes the git status can be slightly out of date. In that case you can manually trigger a refresh by clicking the button at top right corner:
In addition to the basic stuff, there are some more features that can be access from the hamburger menu under the refresh button:
Refresh - refreshes git status
Amend Last Commit opens the commit dialog with 'amend' mode checked and last commit already loaded
Checkout Branch allows you to change current branch or create a new branch
Delete allows you to delete branches.
Compare Branch With can be used to compare current branch with a branch of your choice
Open Commit will open the specified commit in the Commit toolview. You can then browse all the changed files in that commit.
Stash offers git stash functionality
Current Branch
Current branch can be seen in the bottom right corner in the statusbar. The shown branch will be refreshed on changing the file and will always correspond to the repository the current file belongs to. This features is only available in current master (23.04 unreleased)
If you click the branch, it will allow you to change the branch or create a new one.
Commit Toolview
Commit toolview is useful to browse the changes inside a commit. It lists all the changed files in a commit on the left side in the below screenshot along with the number of changes in each file. On clicking a file, the diff of that file for the selected commit will be shown.
File History
You can browse the git history of a file by either right clicking in the Project tree or the Documents plugin tree and selecting Show File Git History
Once you click that, a new toolview will open with a list of commits particular to that file.
Clicking a commit will show the diff for that commit.
If you want to see all the changes in the commit, right click and select Show Full Commit. This will open the selected commit in Commit toolview which I showed above. (23.04 unreleased)
Staging Lines and Hunks
Lines and hunks can be staged from the diff viewer. Simply click "Show diff" on any file in the Git Widget and you will see the following.
You can then right click on a line and then stage that particular line or hunk.
Git Blame
If you have enabled the git blame plugin, it will show the git blame for each line as you click the line:
If you click on the blame, you will see a popup which shows the details of that commit. You can also open that commit in the Commit toolview if you want to explore the changes in that commit.
Comments?
A matching thread for this can be found here on r/KDE.
Historically, this was probably a good decision. Who does not remember that XML was so much easier to read, parse, and work with compared to binary or virtually any propitiatory file format?
KDE is aiming to bump its major version to 6. This might be a good time to reflect whether DocBook should serve as the sole official documentation language. Well, I would like to open this to an optional second language.
I don't mind what the second language could be; possible candidates are reStructuredText / Sphinx, Markdown, AsciiDoc -- among others. I don't want to convert DocBook to any other format. But giving projects some choice, might help.
I am by far not the only person with regard to a replacement of DocBook: DigiKam recently switched to Sphinx for their user documentation after 20 years of using DocBook. Krita uses Sphinx for five years and Kdenlive for over a year. By the way, the Linux kernel left DocBook for Sphinx, too.
What do you think? This would be a good topic for an Akademy BoF. Where should we discuss this in the meantime?
The Plasma Mobile team is happy to announce all the new developments carried out in the project from November to January!
Housekeeping
As announced in the last blog post, we had decided to migrate the releases of Plasma Mobile applications to KDE Gear, starting with KDE Gear 23.04 (in April).
Because of this, we will now decouple the blog post format from any sort of software release schedule, and try to get one out at least on a bi-monthly basis!
The blog post you are currently reading still coincides though with the release of Plasma Mobile Gear 23.01, which is the last Mobile Gear release.
Plasma 5.27
Plasma 5.27, the last in the Plasma 5 series, will be released on February 14th, 2023. Work will then shift to Plasma 6 from then on, with the Plasma 5.27 branch only receiving bug fixes.
Lockscreen
A major cause of crashes with the lockscreen when multiple lockscreen requests were received in a short amount of time, was fixed (Devin Lin, Plasma 5.26.5, Link).
Fixed wallpaper displaying in kscreenlocker. This allowed us to remove a slow workaround. (Devin Lin, Plasma 5.27, Link 1, Link 2)
Navigation Gesture
An issue was fixed where only part of the bottom edge of the screen was usable for the gesture with landscape on phones and tablets. (Devin Lin, Plasma 5.27, Link)
Other
Some issues with the mobile shell during rotation were investigated, which allowed for some issues with infinite loops to be fixed. (Devin Lin, Plasma 5.27, Link)
The issue where translations not being picked up and created for large parts of the mobile shell was also fixed. (Devin Lin, Plasma 5.27, Link)
Clock
The sidebar was changed to be tab bar-based. This saves a lot of horizontal space in the application. (Devin Lin, Mobile Gear 23.01, Link)
A possible scenario where an alarm ring would be triggered when a timer is paused was fixed (bug found in Plasma shell). (Devin Lin, Plasma 5.27, Link)
The timer add minute button was fixed. (Devin Lin, Mobile Gear 23.01, Link)
PlasmaTube (Youtube client)
The backend was ported to be libmpv-based, which greatly improves video playback and allows for seeking. (Devin Lin, Mobile Gear 23.01, Link)
The application was redesigned, giving it the ability to have videos playing while navigating other pages. (Devin Lin, Mobile Gear 23.01, Link and many more commits...)
QMLKonsole
Support was added for CLI arguments when launching the application, to start from certain folders. or run commands immediately. (Devin Lin, Mobile Gear 23.01, Link)
An issue where Ctrl-D would quit the entire application, rather than just a single tab was fixed. (Devin Lin, Mobile Gear 23.01, Link)
Raven Mail
Devin is in the process of rewriting the mail sync backend to not depend on Akonadi. Work is steadily progressing, but will likely be months away from initial completion.
Alligator (RSS Reader)
The interface was reworked to make better use of space for widescreen configurations. (Devin Lin, Mobile Gear 23.01, Link)
Spacebar (SMS/MMS)
Spacebar has seen several UI enhancements:
Devin Ported the settings page to use mobile form components.
Added a button to quickly scroll down to most recent message. The button also shows the number of new messages that have arrived since scrolling up.
Michael improved how the members of a conversation are displayed. Spacebar now show how many more people are in conversation if all members cannot be displayed in the chats list and also on the page header of the current conversation.
Added page to display all the members in current conversation and add new members.
Fix contacts list scrolling not working.
Spacebar also received various performance improvements:
Opening Spacebar is now faster as a result of the chats list query now being 5-10x faster or more in some cases.
Smoother scrolling through messsages.
The chats list is no longer fully reloaded every time a change happens (i.e., a message arriving).
The backend daemon also got some work done:
Now using the modem country code for consistent formatting of phone numbers. This also prevents guessing the regional code incorrectly.
Now verifing that received message timestamps are valid to prevent chronologically misordered messages.
Due to some some recent changes by cetain carriers, the user agent is now faked for sending/recieving MMS.
Now getting interface name and DNS servers directly from modem.
Moved send message logic and MMS network logic into daemon. This prevents incomplete sending of a message if the client app gets closed or switched to a different conversation during the message sending process.
Handle missing url id in notification messages. This should fix a MMS downloading issue that was caused by some carriers not including this.
Kasts (Podcast)
Kasts has seen a lot of development since the last release.
The header bar player controls have been redesigned, partly based on the design of Elisa. The header bar is resizeable and can be fully collapsed to just a minimal toolbar. (Bart De Vries, Mobile Gear 23.01, Link)
The left sidebar menu in desktop mode has been redesigned. It's now using similar buttons to the ones used in the bottom navigation bar in mobile mode. (Devin Lin, Mobile Gear 23.01, Link)
The audio backend has been re-written from scratch. It can now handle multiple backends: libVLC, gstreamer and Qt Multimedia. Kasts will use libVLC as default backend when available, which should solve common issues: volume control is now available through the main toolbar and seeking should no longer make the audio hang. (Bart De Vries, Mobile Gear 23.01, Link)
The settings menu was ported to the new form components. (Devin Lin, Mobile Gear 23.01, Link)
Support for chapter images was added. (Tobias Fella, Mobile Gear 23.01, Link)
Timestamps mentioned in episode descriptions are now clickable, which will make the audio jump to that point in the episode. (Bart De Vries, Mobile Gear 23.01, Link)
Images in headers are now clickable. This will open a fullscreen view of the image in question. (Bart De Vries, Mobile Gear 23.01, Link)
The subscribe button is now disabled when a podcast has just been added (Bart De Vries, Mobile Gear 23.01, Link)
Several issues with right-to-left language layouts were solved. (Bart De Vries, Mobile Gear 23.01, Link)
Kalk (Calculator)
Kalk has seen lots of bug squashing and UI improvements in these three months.
Expression, calculation history and result preview font size is now reactive to window size. (Michael Lang, Mobile Gear 23.01, Link)
The number pad hover color is now showing consistently even if the cursor is on the button text. (Michael Lang, Mobile Gear 23.01, Link)
The number pad hover is disabled on mobile to prevent a button from being incorrectly highlighted on touch screens. (Michael Lang, Mobile Gear 23.01, Link)
The tail of longer calculation result is now clipped instead of the head. (Michael Lang, Mobile Gear 23.01, Link)
We fixed the bug that causes the backspace button to delete functions character by character. It now properly deletes the whole function with one click. (Michael Lang, Mobile Gear 23.01, Link)
nput and result text no longer overlap in landscape mode. (Michael Lang, Mobile Gear 23.01, Link)
The function drawer no longer opens by default on startup, and there is no weird function drawer auto close animation on startup. (Michael Lang, Mobile Gear 23.01, Link)
Switching between the history page and the calculation page no longer causes infinite new pages being added to page stack. (Zekiah A, Mobile Gear 23.01, Link)
The function drawer indicator is now hidden in landscape mode (Dnt Dnt, Mobile Gear 23.01, Link)
The result is automatically cleaned if the input is empty (Šimon Rataj, Mobile Gear 23.01, Link)
The float point precision is kept between input string to mpfr conversion (Han Young, Mobile Gear 23.01, LinkLink)
The application data including icon and bug report address has been updated (Devin Lin, Mobile Gear 23.01, Link)
The haptic feedback on the number pad has been reduced (Devin Lin, Mobile Gear 23.01, Link)
Koko (Image viewer)
Carl updated Koko to use the new settings component. He also added a confirmation dialog before discarding image edits and fixed the full screen and slideshow mode not working.
Tokodon (Mastodon client)
Since the last Plasma Mobile update in November, Tokodon received multiple big releases and now supports custom emojis, searching, hashtags handling, a conversation view, polls and account editing. For the full release announcements, please check out 22.12 and 23.01. Another big release should happen in a few days, so stay tunned!
Arianna (Ebook reader)
Carl and Niccolò Venerandi started working on an ePub reader created using Kirigami that should also target the PineNote.
There is no releases yet, but Arianna is already in a usable state. Aside from the ePub viewer, it already supports searching inside books, and has a basic library management with reading progress tracking.
NeoChat (Matrix client)
NeoChat will now show notifications for all accounts, and not just the active one. There is also a new "compact" mode for the room list, and the room permission settings can now be configured directly from NeoChat.
It is also now possible to search in the room history, but only on non end-to-end-encrypted chats for now.
Emojis and Reactions have been significantly improved.
And finally NeoChat's developers fixed several crashes around user invitations and various other small bugs.
KWeather
KWeather has seen many bug fixes. Locations in the location page can now be dragged, and its UI/UX has been improved. The settings page has also seen a number of bug fixes. The plasmoid now works with the latest version of KWeatherCore. (Devin Lin, Han Young)
AudioTube (Youtube Music client)
Mathis implemented a blurred sidebar that turns into a bottom bar on mobile devices. He also redesigned the search popup.
AudioTube now only shows one page at a time instead of multiple stacked pages, making it visually less cluttered and fixing the issue where sometimes only half of the page was displayed
On mobile, the bottom drawer now shows the information about the selected song.
Théophile Giligien made it possible to remove items from the recently played section and from your search history.
Jonah took the first steps to make AudioTube Qt6 compatible. He also fixed a bug that made it impossible to play songs
Kirigami Addons
Carl and Mathis worked on a new search popup field component for KirigamiAddons. API doc
Joshua added an "About KDE" section to the AboutPage.
Contributing
Want to help with the development of Plasma Mobile? We are desperately looking for new contributors, beginners are always welcome!
The XRechnung format is a E-Government standard for electronic invoicing. At some point it will be mandatory for every company dealing with German governmental partners to send the invoices in this XML format.
Many commercial vendors have already caught up and provide ways to generate XRechnung formatted documents with their software. However, to my knowledge, the availability of open source end user software is very limited. Since the standard itself is at least very open and transparently documented, so I think it is worthwhile to also support it with free software on the desktop.
Kraft, the desktop software for invoicing and efficient office work in the small enterprise, supports export of XRechnung documents since a while.
Over the weekend I created a new little project that adds a viewer for XRechnung documents called xrview.
A german city was looking for something to evaluate processes in a Linux- and KDE based productivity work environment.
Technically it is not very sophisticated: It renders the provided XML file using XSL styles officially provided by the Koordinierungsstelle für IT-Standards in a two step process to HTML, which is displayed in a web view. Some values of interest are extracted from the XML and displayed in a detail pane on the left side.
This is just a POC and has to be continued, but the time was good to kickstart this project.
Maybe anybody is interested to create a PR to help to improve digitalization in Germany?
It has been a very busy few weeks as we endured snowstorm after snowstorm!
I have made some progress on the Mycroft in debian adventure! This will slow down as we enter freeze for bookworm and there is no way we will make it into bookworm as there are some significant issues to solve.
lingua-franco uploaded and accepted
pako uploaded and accepted
speechpy-fast uploaded
fitipy ready to upload
On the KDE side of things:
Plasma-bigscreen uploaded and accepted
skanpage uploaded and in NEW
In the Snap arena, I have made my first significant contribution to snapcraft upstream! It has been a great learning experience as I convert my Ruby knowledge to Python. Formatting is something I need to get used to!
Snaps have been on hold due to the kde-neon extension not having core22 support and the above pull request fixes that. Meanwhile, I have been working on getting core20 apps ( 22.08.3 final KDE apps version for this base. ) rebuilt for security updates.
As many of you know, I am seeking employment. I am a hard worker, that thrives on learning new things. I am a self starter, knowledge sponge, and eager to be an asset to < insert your company here > !
Meanwhile, as interview processes are much longer than I remember and the industry exploding in layoffs, I am coming up short on living expenses as my unemployment lingers on. Please consider donating to my gofundme. Thank you for your consideration.
The team is in full-on bugfixing mode and we’re knocking out issues left and right in preparation for the Plasma 5.27 final release! I bet everyone reading can find at least one fix for a bug that’s annoyed them at some point, because we have a few big ones here! We want this to be the best, most stable, most awesome Plasma 5 release ever, so folks are happy with it for 8 months or longer before Plasma 6 drops.
We did manage to sneak in some feature work too (you know us!) including screen recording for Spectacle! Check it out:
New Features
Spectacle now includes video recording on Wayland! (Aleix Pol Gonzalez, Spectacle 23.04. Link):
OpenConnect VPNs now support double-authentication mode using SAML authentication (Rahul Rameshbabu, Plasma 6.0, Link)
By default, the tooltips for all of our various clock widgets now show seconds, just in case you need to see them quickly, but don’t want the overhead of manually turning on the display of settings. This is also configurable, of course! (Alessio Bonfiglio, Plasma 6.0. Link 1 and link 2)
When you’re using the Unsplash Picture of the Day wallpaper plugin, you can now choose to only show results from the “Cyber” category (David Elliott, Plasma 6.0. Link):
User Interface Improvements
When you have the filter bar open in Dolphin and it’s filtering the view, clicking on a Places panel for the current view entry now resets the filter and shows you everything (Serg Podtynnyi, Dolphin 23.04. Link)
Spectacle’s “Capture the current pop-up only” checkbox is no longer present on Wayland, because it doesn’t do anything there (me: Nate Graham, Spectacle 23.04. Link)
System Settings’ Icons page now shows a “Help” button that takes you to the documentation for it (Natalie Clarius, Plasma 5.27. Link)
It’s now possible to delete Global Themes right from the grid view in System Settings, without having to go into the “Get New Global Themes…” window to do it, just like in most other System Settings pages for choosing visual theming options (Fushan Wen, Plasma 6.0 Link)
Scrolling over scrollbars (not dragging them; actually scrolling over them) now works consistently in QtQuick-based apps. And they also look better when using a right-to-left language, to! (Ivan Tkachenko, Frameworks 5.103. Link 1 and link 2)
Significant Bugfixes
(This is a curated list of e.g. HI and VHI priority bugs, Wayland showstoppers, major regressions, Plasma 5.27 beta bugs, etc.)
Spectacle FINALLY no longer includes itself in screenshots taken without a 1-second or longer delay using the main window (David Redondo, Spectacle 23.04. Link)
Under certain circumstances, Discover no longer always crashes on launch unless its cache folder (~/.cache/discover) is empty (Fabian Vogt, Plasma 5.24.8. Link)
KWin can no longer sometimes crash when you rapidly resize a quick-tiled window adjacent to another quick-tiled window (Vlad Zahorodnii, Plasma 5.27. Link)
Fixed a recent regression in the Plasma Wayland session that could cause GTK apps to succeed at sending clipboard data to Plasma only once and then fail on all subsequent times (David Redondo, Plasma 5.27. Link)
GTK4 apps are no longer double-scaled when using screen scaling (Luca Bacci, Plasma 5.27. Link)
When you’ve set up a window rule that wants to move a window to a screen location that doesn’t exist (e.g. because that location is on another screen that’s no longer connected), it will no longer be moved to an offscreen location where it’s open but inaccessible; instead the rule simply doesn’t execute at all until the location it wants to move the window to exists again (Xaver Hugl, Plasma 5.27. Link)
When an app requests that the system inhibit the system from going to sleep–and only from going to sleep–Plasma no longer inappropriately inhibits screen locking too (Kai Uwe Broulik, Plasma 5.27. Link)
In the Plasma Wayland session, fixed another bug that could cause you to be unable to choose a screen resolution other than your screen’s native resolution (Vlad Zahorodnii, Plasma 5.27. Link)
In the Plasma Wayland session, GTK2 apps minimized to their System Tray icon can now be restored (Fushan Wen, Plasma 5.27. Link)
Fixed a variety of subtle bugs in desktop widget positioning, so your widgets should FINALLY no longer move slightly every time you start the system (Marco Martin, Plasma 5.27. Link)
In the Notifications widget, the “show more” text FINALLY no longer ever overlaps other notifications in the history (Marco Martin, Plasma 5.27. Link)
If you’ve resized the Kickoff Application Launcher’s popup, searching in it no longer sometimes resets it to the default size (Fushan Wen, Plasma 5.27. Link)
After installing a new font, clicking on the “OK” button for the “job’s finished” message now makes it go away as expected (me: Nate Graham, Plasma 5.27. Link)
The entire system will no longer sometimes (but especially when using the Btrfs filesystem) hang while Flatpak apps are installed or updated (David Redondo, Frameworks 5.103. Link)
Fixed a whole buttload of weird, random-seeming clipboard issues in the Plasma Wayland session (David Redondo, Frameworks 5.103. Link 1, link 2, link 3, and link 4)
Added UI tests to the Kirigami.Avatar component to make sure it always works as expected when clicked or tapped (Ivan Tkachenko, Frameworks 5.103. 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
Please test the Plasma 5.27 beta! Bug reports filed against the beta version (5.26.90) get looked at and prioritized. It really helps. And of course, if you’re a developer, fixing those bugs is massively impactful too. 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 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!
It seems this isn’t necessary after all. At most if you like it you can put the year of creation of the copyrighted content, but the range and bumping it really isn’t necessary.
Interesting points about agile and lean approaches. In my view they tend to complete each other, that said the diagnostic of Scrum as practiced in most places today is not Agile is very true. So beware about what you’re doing, is it folklore? is it dogmatic? or do you really apply values and principles?