Skip to content

Monday, 21 October 2024

Oxygen Icons 6.1.0 is a feature release of the Oxygen Icon set.

It features new SVG symbolic icons for use in Plasma Applets.

It also features improved icon theme compliance, fixed visability and added mimetype links.

URL: https://download.kde.org/stable/oxygen-icons/
Source: oxygen-icons-6.1.0.tar.xz
SHA256: 16ca971079c5067c4507cabf1b619dc87dd6b326fd5c2dd9f5d43810f2174d68
Signed by: E0A3EB202F8E57528E13E72FD7574483BB57B18D Jonathan Riddell jr@jriddell.org
https://jriddell.org/jriddell.pgp

Sunday, 20 October 2024

Hey folks! Apologies for the long gap since my last post. A lot has happened both personally and professionally—I got a new job and relocated, which led to me extending my GSoC deadline to wrap up the remaining tasks. I’m happy to share that I’ve now completed everything, and all the pending MRs related to my GSoC work have been merged. Here’s a quick overview:

MRs merged:

  • Reset form implementation in Okular : Okular now has form reset functionality, allowing you to clear fields or return them to their default values. !MR1007
  • Support for MouseDown, MouseEnter and MouseExit events : The corresponding event object is now generated when these mouse events are triggered. !MR994
  • Keystroke, Validate, Calculate and Format event support for Comboboxes : These essential events were previously not triggered for comboboxes. This MR adds support for them. !MR1027
  • Fix order of execution of events for text form fields : Keystroke, Validate, Calculate, and Format actions weren’t always executed in the correct order, especially during undo/redo or when modified via JavaScript. This MR fixes that and ensures KVCF actions are only triggered when a field value is committed, improving keyboard usability. !MR1002
  • Support for modifying the appearance stream text in form field choice (Poppler) : Added functionality to modify appearance stream text in form fields without altering their actual values. !MR1590
  • SubmitForm functionality (Poppler) : Support for reading the SubmitForm action was added to Poppler. While Okular doesn’t yet implement the actual submission process, this lays the groundwork for future integration. !MR1579

Future Scope:

Although much progress has been made during GSoC’24, there are still many areas where Okular’s PDF form functionality could be expanded:

  • The actual submission of forms in Okular can be built on top of the SubmitForm action now supported by Poppler.
  • Adding support for the SelectionChange event in ListBoxes would enhance their interactivity.
  • Additional functions could be implemented for CheckBoxes, ComboBoxes, and ListBoxes, such as programmatically checking items, clearing, deleting, inserting, and setting items. Some of these changes would also require updates to Poppler.
  • Improving keyboard navigation for form fields could further boost accessibility and ease of use.

Conclusion:

Participating in GSoC with KDE and contributing to Okular has been an incredible learning experience, and I’m proud of the contributions made. Huge thanks to my mentor, Albert Astals Cid, for his constant support, guidance, and patience through all my mistakes. Special thanks to Sune Vuorela for his reviews and insights which helped me learn a lot, and to the KDE Mentorship and GSoC teams for their indirect but invaluable help. I’m looking forward to continuing my journey with KDE.

See you next time. Cheers!

Hello again, sorry it’s been a while since the last post. In this case, I’m doing a never-before-seen multi-month post!

This may be the last post in this series, as the KDE Promo team has launched “This Week in KDE Apps” which covers my work here (and I also have plans to contribute to… 😅) Nate Graham typically reports on my Plasma changes in his “This Week in Plasma” series. All that would be left is the uninteresting changes, so I was thinking it might be more sensible to do an emersion-style “Status update” that’s isn’t strictly KDE related. We’ll see!

Plasma

[Feature] You can now tweak the pen pressure. This is useful if you prefer a specific style to your strokes, and you can’t change this directly in your preferred application. We plan to have add “soft” and “hard” presets to make using the curve easier. This is one of the last items paid for by our NLnet grant, so it’s exciting to see it finally come to fruition! [6.3]

The new pen pressure control in the Drawing Tablet KCM.

[Feature] The stylus cursor is now hidden on the Calibration page but this will only work once your distribution switches to Qt 6.8. The credit belongs to Nicolas Fella as he’s the one who put in the work upstream in Qt! [6.2.1]

[Bugfix] The calibration accuracy is now improved slightly and refining your existing calibration further should work closer to how you expect. [6.2.1]

[Bugfix] Added more safety rails in the Calibration code to prevent possible crashes. [6.2.1]

[Bugfix] Made sure the calibration matrix is reset when you hit the “Defaults” button. [6.2.1]

[Bugfix] Now the Calibration window opens on the correct screen. [6.2.1]

[Bugfix] Now the action dialog doesn’t show up in the wrong place when your KCM scrolls a lot, like mine. [6.2.1]

Tokodon

[Feature] The welcome page when you first open Tokodon now looks much nicer and friendly. Hopefully it makes it clearer what Tokodon is, and also includes an even clearer badge to indicate what service it connects to. [24.12]

The new welcome page.

[Feature] Display public servers to ease registration for first-time Mastodon users. Right now there’s not any filtering options, but this is a huge improvement over an empty textbox and expecting users to know where to find a server. [24.12]

The new servers page.

[Feature] My post tag display improvement was merged, which limits tags to one line. Note that this isn’t the final design we’ll go with, but they will no longer spill onto multiple lines. [24.12]

This is how tags will look when there’s too many to display at once.

[Feature] It seems people want Cohost’s “Following” feed for Mastodon, and of course Tokodon could do it! So that’s what I did, and implemented Cohost’s “Following” feed. Albiet it’s currently limited due to the Mastodon API we have available, so it comes with two big caveats currently: You only see when people were last active by the day, and the pagination kinda sucks. [24.12]

The following feed.

[Feature] Added support for managing your social graph within Tokodon. For example if you don’t want someone to follow you anymore, or to quickly unfollow someone from your “Following” list. [24.12]

Now you can force remove your followers. Don’t worry, I’m not removing you @patchexcempt!

[Feature] Self-identified bots are now correctly identified on the profile page. [24.12]

The LWN Mastodon is now correctly marked as a bot.

[Feature] Due to limitations in the Mastodon API, we now put a button on the account page to denote there are more settings available online. [24.12]

Where to find this link in the settings.

[Feature] Changed the media tab to a grid view, making it easy to see a user’s media all at once. This works different compared to Mastodon Web as you can even filter by featured tag in this mode - but it’s not shown in this screenshot. [24.12]

Screenshot of the media tab on an artist’s account.

[Feature] Laid the initial groundwork unread notifications. You now have a number indicator in the sidebar for unread notifications, and mark them as read. [24.12]

[Feature] Added list user management, so now you can use lists to their full advantage within Tokodon itself. [24.12]

Time to categorize everything KDE-related into a nice list…

[Feature] The warning iconography for “Content Warnings” are now removed, and replaced with “Content Notice” to denote it’s true and more generic purpose. [24.12]

How “content warnings” look now.

[Feature] Added support for read markers, allowing you to continue reading where you last left off. [24.12]

[Feature] Now the authorship of links are displayed in link preview cards including a Mastodon account, if available. See this official Mastodon blog post for more details. [24.12]

How authors appear in link preview cards now.

[Feature] Added a way to view poll results before voting, finally. [24.12]

Finally, I can see it all!

[Feature] Now it’s possible to see which poll options you voted for. [24.12]

Finally, I can remember it all!

[Feature] When clicking the “ALT” button, the media description pops up. This could be useful if you want to quickly view what the media is, before unhiding it. [24.12]

[Feature] Tokodon now supports displaying admin report, severed relationship and moderation warning notifications. These notifications can then be configured in the notifications settings as per usual. The details shown in the notifications can still use a bit of work, though. [24.12]

These are test notifications, since v4.3.0 is so new I haven’t seen them yet!

[Feature] The Notifications page is redesigned, to better suit non-English languages. I also added a button to go straight to Notification settings from here. [24.12]

How the notifications page looks like, on a mobile device.

[Feature] When you’re using Tokodon on a newer and emptier Mastodon account, the application is much friendlier with more helpful explanatory text everywhere. [24.12]

No posts in your Home? No bookmarks?

[Feature] Tokodon’s UI is now more responsive. The sidebar will appear on mobile devices if their screen is wide enough, like the Android tablet I use Tokodon on. [24.12]

[Feature] Timeline streaming and read markers can be turned off, if you prefer. [24.12]

The new timeline settings.

[Feature] When viewing someone’s profile, a list of people you follow that you have in common is now shown. Hopefully this will make it easier to find new friends on Mastodon! [24.12]

Note that if you make your social graph private, you won’t show up here.

[Feature] You can now edit your profile fields within Tokodon, without having to do it through Mastodon Web. [24.12]

YES!

[Feature] You can now see trending links (or “news”) on the Explore page, and also suggested users. I’m intentionally not showing a screenshot since it doesn’t look very good yet. [24.12]

[Bugfix] The font size in the post composer now follows your preferred font setting. [24.12]

[Bugfix] Tapping a post only works by tapping on the content itself, not the margins. [24.12]

NeoChat

[Feature] You can open location links in your preferred map application. This is the same Map application under the Applications KCM, so you can choose something like OpenStreetMap or even Marble. [24.12]

Clicking this button will do it.

[Feature] The location chooser is now better in general. There’s a toolbar button to re-center the map, and if your device supports positioning then it can use that to center itself. [24.12]

Can’t show it here on my desktop, yet.

[Feature] The security page is overhauled and now contains more relevant settings from other pages. [24.12]

Hopefully NeoChat can make your experience on Matrix a more secure one.

[Feature] NeoChat’s welcome page when you first open it now looks a bit nicer. [24.12]

More settings buttons, woo!

[Bugfix] Now when you only have friend invites and no messages a better icon is displayed, instead of none at all. [24.12]

No longer blank!

[Bugfix] The buggy look of the date section header is finally fixed. [24.08.1]

Itinerary

[Feature] I added support for United Airlines reservations, so they can be imported to Itinerary and show up in KMail. Paired with Kalendar, this makes it really easy to keep track of my travel plans! I hope to add support for more North American airlines as I fly them, it’s surprisingly easy to write extractors. [24.08.1]

How a United reservation shows up in KMail now, much more useful!

Frameworks

[Feature] Added support for separator actions in ToolBarLayout in Kirigami. [6.7]

[Feature] Added command names for “Remove Spaces” and “Keep Extra Spaces” in KTextEditor, for a secret future project. [6.7]

[Feature] You can now disable the scrollbar interactivity on ScrollablePages in Kirigami. [6.8]

[Feature] Initial support for QML bindings to the KTextAddons emoticons API. This means that eventually our applications will no longer need to have their own special emoji picker, and our Unicode data will be unified! [1.6]

Libraries

[Bugfix] The caption text in applications that use the Kirigami add-ons fullscreen image viewer is now copyable. I usually write alternative text for my artwork in Tokodon first, and then copy it elsewhere. So it’s really cool to be able to do this within Tokodon itself and not have to go through Mastodon Web. [1.6]

KDE Goals

The goal I championed for, “We care about your Input” was selected! You can check it out on the goals page on the KDE website, which also includes links to our public workboard, chat and the original proposal. Let’s make KDE Plasma the perfect desktop environment for artists! (And everyone else too, I guess 😜)

Akademy

I also attended Akademy this year! You can read more about it in it’s dedicated blog post if you missed it.

The fountain, again!

It’s been almost a year since I started this series, and I can’t believe I’ve done almost a dozen of these. People seem to really like them, and I’m really appreciative of that! Like I said in the beginning, there will most likely not be a next part as it will be rolled into someone else’s blog posts now.

If you want a hint as to what I’ll be about blogging next, you might want to remember where this all began.

Saturday, 19 October 2024

I’m pretty interested in tablet stuff . Not because I think it makes senseo type long chunks of text using an on-screen keyboard, but they should make for a good drawing and painting experience. I’ve already written about the largest tablet I ever had, a 24″ Cintiq Pro and the Remarkable 2.

Today I’m going to run the gamut of the other tablets I’ve used…A living room table with five tablets around a decorated bowl holding coasters

Let’s start at eleven o’clock. That’s an iPad pro, first generation. I got it to see whether painting applications would work on it, and maybe port Krita to it. In the end, I pretty much only used it to read comics on. It’s top-heavy, the pen is top-heavy and I just didn’t like the painting applications I could get for it, like Procreate. I did create a little mock-up Qt-based painting application for testing purposes. But… I really, really hated the Apple Pencil. Like, really.  I also dislike iPadOS quite a bit.

Then, at two o’clock, the latest addition to the stable. The Remarkable Paper Pro. It’s bigger than the Remarkable 2, which isn’t necessarily a good thing. It’s supposedly the most advanced color e-ink panel there is, and there’s a front light. That makes it better than my Remarkable 2, which I now handed over to Irina, because without the front light, it’s unusable in anything but the brightest sunlight. That might just be my eyes, of course. The color, though… It’s fine for reading comics or pdf’s, if you like that seventies cheaply printed comic book look. Since the Remarkable runs its own OS, you cannot install Android apps, and since the OS changes quite a bit from version to version, third party apps ten not to work, or even brink the device, despite the device being remarkably open. (Sorry, pun intended.) The device does ooze quality, though! And the pen is great, really great.

Then, at four o’clock, there’s an Onyx Boox. It does run Android, and I wanted to see how well it would run Krita. Well, Krita runs, but the device is a bit slow. The pen is pretty nice, too, even if the cap is dinky. The color is worse than the remarkable’s one, but, again, if you’re reading counterfeit seventies Uncle Scrooge PDF’s, it’s fine. I mostly use this device to learn Hangul and read right-to-left manga. It’s too slow, and the display is too slow, for vertical scrolling manhwa.

Next, at six o’clock, the Samsung Tab S4 Android tablet that we got when we first ported Krita to Android. Despite being really old and not getting any OS updates anymore, it’s still doing fine. I mostly use it to read manga and manhwa using Nihom, and still for testing Krita. The pen is too small to be comfortable, but I only use it for testing. What’s really annoying is that every Saturday morning, I get a notification that Samsung’s legal stuff has changed — even though I don’t get any security updates.

Finally, at eight o’clock, the Frunsi Rubenstab. It’s a bit heavy, a bit small, a bit slow, but on the whole, it’s amazing. It runs Android. It’s mostly designed to be used in landscape mode. The pen is great, the display is good, the large bezels make it easy to hold and it comes with just about too much extra stuff, ranging from ant-static gloves to a brush-like implement.

 

KUnifiedPush provides push notifications for KDE applications. Push notifications are a mechanism to support applications that occasionally need to receive some kind of information from their server-side part, and where receiving in a timely manner matters. Chat applications or weather and emergency alerts would be examples for that. More technical details about KUnifiedPush are available on Volker's introduction post about KUnifiedPush.

KUnifiedPush provides three possible provider backends for push notifications:

The default provider of KUnifiedPush is Ntfy with unifiedpush.kde.org but you can change it to your own server in the System Settings.

Screenshot of the settings showing the default settings

Currently both NeoChat and Tokodon integrates with KUnifiedPush as both Matrix and Mastodon support UnifiedPush. There is also ongoing work for weather and emergency alerts.

Packager Section

You can find the package on download.kde.org and it has been signed with Carl Schwan's GPG key.

Friday, 18 October 2024

This is the release schedule the release team agreed on

https://community.kde.org/Schedules/KDE_Gear_24.12_Schedule

Dependency freeze is in around 3 weeks (November 7) and feature freeze one
after that. Get your stuff ready!

I saw this question on KDE forum about how to limit memory usage of a specific application in KDE, using systemd specifically. I did some research on that.

Resource control in systemd

man systemd.resource-control lists plenty of options that we can set to a cgroup. E.g., to limit the memory usage of a service, we can add:

MemoryAccounting=yes
MemoryHigh=2G

under the [Service] section of its .service file.

The difference between this and ulimit is that ulimit is per process, while systemd resource control is per cgroup. I.e., the MemoryHigh is accounted to the sum of both the service process, and all sub-processes it spawns, and even detached processes, i.e., daemons.

(That's actually the main point of cgroup: a process tree that a process can't escape via double-forking / daemonizing.)

Apps as systemd services

KDE Plasma launches apps as systemd services. (See this doc and this blog for more details.)

We can find the name of the systemd service of an app like this:

$ systemd-cgls|grep konsole
│ │ │ ├─app-org.kde.konsole@0d82cb37fcd64fe4a8b7cf925d86842f.service
│ │ │ │ ├─35275 /usr/bin/konsole
│ │ │ │ └─35471 grep --color=auto konsole

But the problem is:

  1. The part of the name after @ is a random string, changes every time the app is launched.
  2. The service is generated dynamically:
$ systemctl --user cat app-org.kde.konsole@0d82cb37fcd64fe4a8b7cf925d86842f.service

# /run/user/1000/systemd/transient/app-org.kde.konsole@0d82cb37fcd64fe4a8b7cf925d86842f.service
# This is a transient unit file, created programmatically via the systemd API. Do not edit.
[Service]
Type=simple
...

So if we want to limit the memory usage of Konsole, there's no persistent .service file on disk that we can edit.

Luckily, systemd allows us to create drop-in files to partially modify a service. Also, systemd considers app-org.kde.konsole@0d82cb37fcd64fe4a8b7cf925d86842f.service to be instances of a template named app-org.kde.konsole@.service. (This is how things like getty@tty3.service work.) So we can create a drop-in file named ~/.config/systemd/user/app-org.kde.konsole@.service.d/override.conf with the content:

[Service]
MemoryAccounting=yes
MemoryHigh=2G

and it will apply to all instances of app-org.kde.konsole@.service, even if there's no service file with that name.

(The file doesn't have to be named "override.conf". Any name with .conf works.)

Then we need to reload the systemd user manager: systemctl --user daemon-reload.

Now we can launch Konsole, and check if the memory limit works:

$ systemctl --user show 'app-org.kde.konsole@*.service'|grep MemoryHigh=
EffectiveMemoryHigh=2147483648
MemoryHigh=2147483648
StartupMemoryHigh=infinity

Note: as explained above, the limit applies to the sum of Konsole and all processes it spawns. E.g., if we run kwrite in Konsole, the memory usage of kwrite will be accounted to the limit of Konsole, and the limit we set to KWrite won't apply.

Set defaults for all apps

We can put defaults in ~/.config/systemd/user/app-.service.d/override.conf, and it will match all services whose name starts with app-.

Alternatively, if we run systemd-cgls, we can see that all apps are under a node named app.slice. So we can also put defaults in ~/.config/systemd/user/app.slice.d/override.conf, and all apps will inherit the settings. However, this is different from the previous method, as user services are also under app.slice by default, so they will also inherit the settings.

Wednesday, 16 October 2024

A new Craft cache has just been published. The update is already available for KDE's CD, CI (Windows/Android) will follow in the next days.

Please note that this only applies to the Qt6 cache. The Qt5 cache is in LTS mode since April 2024 and does not recieve major updates anymore.

Changes (highlights)

Craft Core

  • Drop Python2 support
  • Require at least Python 3.9

Blueprints

  • Qt 6.8.0
  • FFmpeg 7.1
  • Kirigami Addons 1.5.0
  • KDE Frameworks 6.7.0
  • KDE Plasma 6.2.0
  • Removed snoregrowl
  • Removed ctemplate

About KDE Craft

KDE Craft is an open source meta-build system and package manager. It manages dependencies and builds libraries and applications from source on Windows, macOS, Linux, FreeBSD and Android.

Learn more on https://community.kde.org/Craft or join the Matrix room #kde-craft:kde.org

Thursday, 10 October 2024

We have just switched on the upgrade for KDE neon to rebase on Ubuntu 24.04 LTS.

We do this every two years and the 22.04 LTS base was getting increasingly crusty with old Pipewire causing problems and packages like Krita not compiling at all.

Follow the Noble Upgrade instructions or just click the notification that should appear soon.

Kirigami Addons is out. This releases contains mostly code cleanup and minor improvements. There is netherless a few relevant changes. Thanks to everyone who contributed some code.

New KAppTemplate’s template

A new KAppTemplate is available as a good starting point for application that manage multimedia libraries. It is based on shared design of Peruse, Arianna and the WIP Calligra Launcher.

Hopefully it helps people who want to develop game launchers and other type of specialized multimedia applications.

 

More templates are planned (e.g. for chat applications), so stay tunned!

FormCard

FormCard is the part of Kirigami Addons that received the most changes in this release. First of all, FormCard now use more consistent spacing and padding, which slighly less horizontal padding. Descriptions for radio and checkbox delegates are also put underneath the delegate’s main text and checkbox, in an effort to make FormCard a bit more compact.

Before
After

Additionally FormComboBoxDelegate now lets you display an inline status similar to that is available in other FormCard’s delegates.

Finally FormCard.AboutKDE was renamed to FormCard.AboutKDEPage. This improve the naming consistency with other page compoenents. A compatibility wrapper on top of AboutKDEPage named AboutKDE is still available to not break any existing applications.

Deprecations

The Banner component is now deprecated. Kirigami.InlineMessage now has a position parameter which can be set to Header or Footer. Additionally with KDE Frameworks 6.8 Kirigami.InlineMessage will look exactly the same as Banner! So there is no more reasons for this component to exists in Kirigami Addons.

Other

Kirigami Addons supports static builds with a recent enough version of extra-cmake-modules.

Packager Section

You can find the package on download.kde.org and it has been signed with my GPG key.