Skip to content

Friday, 18 April 2025

This release includes new features and fixes for AdBlock, VerticalTabs, stability fixes, more usability features and translation updates.

General changes

  • Add input method hints to main input fields (url, search bar, etc.).
    • This allows on-screen keyboards to show more appropriate symbols or disable the auto correct feature.
  • Show the URL of bookmark and history items in statusbar when hovered over in the menu or sidebar (BUG: 448238)
  • Open all URLs in command line arguments (BUG: 413195), (Original author: abogical (Abdel-Rahman Abdel-Rahman))
  • Add “Preffer color scheme” option (BUG: 439891), (BUG: 497331)
  • Add option to add site permissions in preferences (BUG: 495391)
  • VerticalTabs: Override Alt+NUMBER keyboard shortcut
  • StatusBarIcon-Network: Restore online status detection
  • KDEIntegration: Fix KIO scheme handler (BUG: 491247)
  • Add option to block automatic popups
  • Qt 6.9 compatibility fixes

AdBlock

  • Add support for “rewrite” filter
  • Add support for remove rule with simple CSS selector
  • Ignore inactive hiding rules
  • Add support for “websocket” option
  • Rewrite Adblock Dialog (fixes crashes)
AdBlock dialog, Left: old version, Right: New version

Changelog

  • PyFalkon: port away from deprecated API (by Ilya K)
  • PyFalkon: Disable broken tests (by Juraj Oravec)
  • Update CHANGELOG for 25.04.0 release (by Juraj Oravec)
  • Fix crash when loading folder in bookmarks toolbar (by Juraj Oravec)
  • CI Flatpak - Add desktop notifications permission (by Justin Zobel)
  • CI Flatpak - Add kwallet6 dbus permission (by Justin Zobel)
  • CI Flatpak - Sort finish arguments (by Justin Zobel)
  • CI Flatpak - Update flatpak runtime (by Justin Zobel)
  • snapcraft: Fix crash by disabling webengine sandbox, we are already a (by Scarlett Moore)
  • CI: Add linux-qt6-next build (by Albert Astals Cid)
  • Add input method hints to input fields (by Juraj Oravec)
  • Select newly opened tabs from links and scripts (by Juraj Oravec)
  • Fix SiteSettings autotest (by Juraj Oravec)
  • Adblock: Add support for “rewrite” filter (by Juraj Oravec)
  • AdblockDialog: Add model for the tree view (by Juraj Oravec)
  • Adblock: Add support for remove rule (by Juraj Oravec)
  • Show history & bookmark url in menu on mouse hover (by Juraj Oravec)
  • Block automatic popups (by Juraj Oravec)
  • Use global settings for WebRTC on internal pages (by Juraj Oravec)
  • VerticalTabs Override Alt+NUMBER keyboard shortcut (by Juraj Oravec)
  • AdBlock: Ignore inactive hiding rules (by Juraj Oravec)
  • Adblock: Add support for “websocket” option (by Juraj Oravec)
  • AdblockDialog: Apply filter when tab changes (by Juraj Oravec)
  • SiteSettingsDialog: Add context description for “Set” button (by Juraj Oravec)
  • SBI-NetworkIcon - Restore online status detection (by Juraj Oravec)
  • Open all URLs in command line arguments (by Juraj Oravec)
  • Remove obsolete XSS Auditing option, has no effect (by Juraj Oravec)
  • CookieManager: Fix crash when removing while/black list items (by Juraj Oravec)
  • PyFalkon: Add missing Qz::ColorScheme enum type (by Juraj Oravec)
  • Add “Preffer color scheme” option (by Juraj Oravec)
  • Strip incorrect color iCCP profile from png images (by Juraj Oravec)
  • Preferences: Fix editing per site user agent (by Juraj Oravec)
  • Use angle backend for GPU acceleration on Qt 6.9+ (by Juraj Oravec)
  • Add missing default SiteSettings for intenal pages (by Juraj Oravec)
  • Add option to add site permissions in preferences (by Juraj Oravec)
  • PyFalkon: Remove warning about QCborStreamReader (by Juraj Oravec)
  • Update Changelog (by Juraj Oravec)
  • Port away from QLocale:Country related code (by Juraj Oravec)
  • B KIO scheme handler (by Juraj Oravec)
  • Add missing settings.endGroup() when needed (by Juraj Oravec)

Let’s go for my web review for the week 2025-16. This is a long one, I have a treasure trove of more than a thousand old links I’ve been sitting on and I’m starting to push a few of the oldies but goodies.


The Post-Developer Era

Tags: tech, ai, machine-learning, gpt, copilot, business, hiring

This matches what I see. For some tasks these can be helpful tools, but it definitely need a strong hand to steer them in the right direction and to know when to not use them. If you’re a junior you’d better invest in the craft rather than such tools. If you got experience, use with care and keep the ethical conundrum in mind.

https://www.joshwcomeau.com/blog/the-post-developer-era/


You cannot have our user’s data

Tags: tech, ai, machine-learning, gpt, copilot, copyright, criticism

Sourcehut pulled the trigger on their crawler deterrent. Good move, good explanations of the reasons too.

https://sourcehut.org/blog/2025-04-15-you-cannot-have-our-users-data/


Company apologizes after AI support agent invents policy that causes user uproar

Tags: tech, ai, machine-learning, gpt, business, funny

I willadmit it… I laughed. And that’s just one business risk among many.

https://arstechnica.com/ai/2025/04/cursor-ai-support-bot-invents-fake-policy-and-triggers-user-uproar/


Elon Musk’s xAI allegedly uses ‘illegal’ generators to power Colossus supercomputer facility

Tags: tech, ai, machine-learning, gpt, twitter, ecology, economics

I hope people using Grok enjoy their queries… Because they come with direct environmental and health consequences.

https://www.tomshardware.com/tech-industry/artificial-intelligence/elon-musks-xai-allegedly-powers-colossus-supercomputer-facility-using-illegal-generators


Why the climate promises of AI sound a lot like carbon offsets

Tags: tech, ai, machine-learning, gpt, ecology, economics, politics

Don’t confuse scenarios for predictions… Big climate improvements due to AI tomorrow after accepting lots of emissions today is just a belief. There’s nothing to back up it would really happen.

https://www.technologyreview.com/2025/04/10/1114912/why-the-climate-promises-of-ai-sound-a-lot-like-carbon-offsets/


These are not the same

Tags: tech, ai, machine-learning, gpt, copilot, surveillance, politics, economics

This is a question which I have been pondering for a while… what will be left when the generative AI bursts. And indeed it won’t be the models as they won’t age well. The conclusion of this article got a chill running down my spine. It’s indeed likely that the conclusion will be infrastructure for a bigger surveillance apparatus.

https://tante.cc/2025/04/15/these-are-not-the-same/


LAPD Publishes Crime Footage It Got From a Waymo Driverless Car

Tags: tech, automotive, surveillance

You like having surveillance camera roaming around town? Well, you’re covered…

https://www.404media.co/lapd-publishes-crime-footage-it-got-from-a-waymo-driverless-car/


Silicon Valley crosswalk buttons apparently hacked to imitate Musk, Zuckerberg voices

Tags: tech, hacking, politics, funny

This is definitely a funny hack. I wonder how long the people behind this knew about the vulnerability and waited for the right opportunity to do something with it.

https://www.paloaltoonline.com/technology/2025/04/12/silicon-valley-crosswalk-buttons-apparently-hacked-to-imitate-musk-zuckerberg-voices/


CVE Foundation

Tags: tech, security, politics

Maybe something good will come out of the political turmoil around the CVE Program. This would be nice to see it more independent indeed.

https://www.thecvefoundation.org/home


HTTP headers for the responsible developer

Tags: tech, http

A good tour of the important HTTP headers.

https://www.twilio.com/en-us/blog/a-http-headers-for-the-responsible-developer


Common shell script mistakes

Tags: tech, shell, scripting

Writing shell scripts is still a craft. Interesting traps are presented here. Also, now better have shellcheck around for any non trivial script.

https://www.pixelbeat.org/programming/shell_script_mistakes.html


When Life Gives You Java

Tags: tech, programming, java

A few interesting tricks to apply to Java code. Some I already did, but the proposed model for algebraic data types I might add to my bag of tricks.

https://oblac.rs/2025-04-15-when-life-gives-you-java/


An Introduction to Modern CMake

Tags: tech, buildsystems, cmake

Looks like a nice resource for CMake. The documentation for it isn’t always great especially for beginners, hopefully it should fill that gap.

https://cliutils.gitlab.io/modern-cmake/README.html


C++20 idioms for parameter packs

Tags: tech, programming, c++, metaprogramming

The language keeps evolving, this is a good reminder that some old idiom can be let go. Parameter packs still need some adjustments to become nicer though.

https://www.scs.stanford.edu/~dm/blog/param-pack.html


Raw loops for performance?

Tags: tech, c++, performance, maintenance, optimization

Nice little comparison of raw loops and ranges in C++. As always, measure before making assumptions… Unsurprisingly it ends up on the usual readability vs performance debate.

https://www.sandordargo.com/blog/2025/04/16/raw-loops-for-performance


The Salami Method

Tags: tech, c++, portability, architecture

Interesting architectural proposal for highly portable C++ based libraries.

http://videocortex.io/2017/salami-method/


Avoiding memory fragmentation in Rust with jemalloc

Tags: tech, system, memory, rust, c

If you forgot that the memory allocator can matter greatly depending on your workload.

https://kerkour.com/rust-jemalloc


Atomicless Concurrency

Tags: tech, cpu, hardware, multithreading

Nice trick for highly performance sensitive data structures. Making data CPU local instead of thread local you can make a mechanism which is especially cache friendly.

https://mcyoung.xyz/2023/03/29/rseq-checkout/


Performance Analysis and Tuning on Modern CPUs

Tags: tech, performance, optimization, book

Looks like a nice resource to get better at finding the root cause of performance regressions and optimising code.

https://products.easyperf.net/perf-book-2


Ramblings from Jessie: Setting the Record Straight: containers vs. Zones vs. Jails vs. VMs

Tags: tech, containers, linux, virtualization, security

A bit of a rant, but since it looks like people are still trying to consider all those technologies are equivalent… I think it’s good to have an explanation on what makes containers different.

https://blog.jessfraz.com/post/containers-zones-jails-vms/


Reflections on Unikernels

Tags: tech, kernel, system

They keep being fascinating to me. Nice reflections showing how they can impact regular systems as well. I wonder why OCaml seems to be so prevalent in that space though.

https://dave.recoil.org/unikernels/


Datastar - The hypermedia framework.

Tags: tech, web, frontend, htmx

Looks like an interesting alternative to HTMX to come. Might go further enough that it has the potential to displace things like React as well.

https://data-star.dev/


Bilinear interpolation on a quadrilateral using Barycentric coordinates

Tags: tech, graphics, gpu, shader, 3d, mathematics

Wow, very smart approach to solve discontinuity issues when quads are turned into triangles.

https://gpuopen.com/learn/bilinear-interpolation-quadrilateral-barycentric-coordinates/


Shadertoys ported to Rust GPU

Tags: tech, 3d, shader, graphics, rust

Interesting stuff. This should ease greatly sharing code between shaders and the host application, especially for data specification which is easy to get wrong.

https://rust-gpu.github.io/blog/2025/04/10/shadertoys/


WebGL + Rust: Basic Water Tutorial

Tags: tech, 3d, graphics, rust, web

Nice tutorial for rendering water. It gets more complex from there but this one is doing quite a lot already.

https://chinedufn.com/3d-webgl-basic-water-tutorial/


A flowing WebGL gradient, deconstructed

Tags: tech, graphics, shader

Very nice deep dive into the reasoning behind a wavy gradient effect. It shows the best effect have several layers of refinements and tricks. Each trick is explained separately nicely, this is a good read.

https://alexharri.com/blog/webgl-gradients


Don’t Compare Averages

Tags: tech, data, data-visualization

Just looking at averages is indeed quickly hiding patterns. Make sure distributions are visible in some fashion.

https://martinfowler.com/articles/dont-compare-averages.html


4 psychology principles every UX/UI designer should know

Tags: tech, ux, cognition

Important principles to have in mind for proper UX/UI designs. There are more of course, those are the bare minimum though.

https://uxdesign.cc/4-psychology-principles-every-ux-ui-designer-should-know-89876d3bb356


Why do AI company logos look like buttholes?

Tags: tech, design, marketing

It’s meant to be humorous, but this says something interesting about how design and marketing evolves.

https://velvetshark.com/ai-company-logos-that-look-like-buttholes


Software development topics I’ve changed my mind on after 10 years in the industry

Tags: tech, programming, craftsmanship

A list of opinions on our field. It’s personal and biased of course, so make that you want out of it. I agree with most I’d say. A couple are rather niche though.

https://chriskiehl.com/article/thoughts-after-10-years


Code As Documentation

Tags: tech, programming, engineering, documentation, codereview

A bit of a self-serving post towards the end. Still I like it because it clearly mention that it’s not about dropping all documentation in favor of the code (quite the contrary in fact, documentation is very much needed). It really is about treating code like documentation, putting the same care into it in terms of readability and understandability. If you wonder what code reviews are for… it’s also for this readability concern.

https://martinfowler.com/bliki/CodeAsDocumentation.html


Retrospective technique: “Retro Wedding”

Tags: tech, agile, retrospective

Interesting alternative retrospective format. The way of framing the questions might help get new ideas.

https://scalablenotions.wordpress.com/2014/05/15/retrospective-technique-retro-wedding/


Is your team cross-functional enough?

Tags: tech, team, management

Nice little exercise to quickly figure out if the skillset of a team properly matches their project.

https://blog.crisp.se/2009/02/27/henrikkniberg/1235769840000


Thoughts: XP Revisited

Tags: tech, agile, xp

A look back at XP practices with some interesting insights. This doubles as a good XP primer as well.

https://ronjeffries.com/articles/018-01ff/xp-revisited-1/


How to use Event Storming to introduce Domain Driven Design

Tags: tech, ddd, xp, architecture

Looks like a good set of tips of get more DDD practices in place without the badly understood vocabulary which usually comes with it.

https://philippe.bourgau.net/how-to-use-event-storming-to-introduce-domain-driven-design/


Starting Out - What works, how fast, and why?

Tags: tech, agile, coaching

How to get started with putting in place an Agile approach in a team? Clearly structure helps in the beginning. One caveat of the article though: don’t read this as having to respect a book to the letter forever, it’s merely a starting point.

https://ronjeffries.com/articles/017-08ff/starting-out/


The Agile Fluency Model

Tags: tech, agile

This model is probably still a better one than certifications or very heavy processes. Far from perfect of course, but at least it gives a compass to teams to see if they’re going in the right direction.

https://martinfowler.com/articles/agileFluency.html


Are You Running from Problems or Solving Them?

Tags: tech, project-management, management, problem-solving, decision-making

If you spend your time in dull meetings and then run like a headless chicken… it’s definitely a sign you should cut down on the meetings and keep only the ones focusing on solving actual problems.

https://www.jrothman.com/mpd/management/2014/05/are-you-running-from-problems-or-solving-them/


The dark side of the Moomins

Tags: culture, history

Are we sure the Moomins are really a cute tale? I always felt them slightly off, but indeed it goes much darker than I suspected.

https://www.newstatesman.com/culture/books/2025/04/dark-side-of-the-moomins-tove-jansson



Bye for now!

Since the 24.12 KDE Gear release we are shipping the client-side push notification infrastructure for applications such as NeoChat and Tokodon. For 25.08 this is receiving a major update to catch up with the evolving underlying specifications and standards.

Push Notifications

There is an older post describing this in more detail, but as a quick recap the following are the relevant components in a push notification system:

  • The end-user application (also “user agent”, “client”): This is the part of the application running on a user’s device and is the thing you generally interact with, e.g. a Mastondon or Matrix client.
  • The application server: The server-side part of the application that might want to notify its client about an important event, even if is that is not currently running. E.g. a Mastodon or Matrix server.
  • The push server: The server-side part of the push infrastructure. It’s what the application server sends its notification to, and it knows how to forward that to a client device.
  • The push distributor: The part of the push infrastructure running on the user’s device. It’s usually a background service with a continuous network connection to the push server and when receiving a notification it launches the corresponding application.

UnifiedPush specifies the interfaces between the application and the push infrastructure parts, and that’s what KDE’s push notification implementation is built upon.

The UnifiedPush specification has evolved since we started this, mainly to achieve compatibility with the Web Push standard (RFC 8030). That’s good as it gives us Web Push’s security features and allows us to use existing Web Push infrastructure. It also simplifies application development as there’s one less standard to worry about.

What this means for our implementation and for applications using our client library is listed below.

KUnifiedPush changes

New UnifedPush D-Bus specification

The new D-Bus interface specified by UnifiedPush mainly aims at making future changes easier in a backward compatible way but doesn’t change things conceptually. This allows us to make this fully transparent to applications, as this only affects the communication between the KUnifiedPush client library and the distributor.

Even better, both the client library and our distributor support both versions of the D-Bus interface, so old clients not using our client library will work with the latest version of our distributor, and so will applications using the latest version of KUnifiedPush when facing an old distributor.

Message encryption

An important addition is a standardized way for doing message encryption (RFC 8291), avoiding that applications had to come up with their own way of doing this, or worse, not using message encryption at all.

The KUnifiedPush client library supports this by generating, persisting and providing the necessary keys as well as by taking care of decrypting incoming messages accordingly.

There’s an example use here.

Implementing message encryption also exposed a small compatibility issue with the ntfy push server in some configurations, a fix for this is awaiting review upstream.

Voluntary Application Server Identification (VAPID) support

VAPID (RFC 8292) provides a mechanism to ensure that only the application server itself is sending push notifications to a client, not somebody else who happens to know the push endpoint.

Most of this happens between the application server and the push server, on the client we only have to do one thing: Pass the VAPID public key from the application server to the distributor.

In KUnifiedPush that’s done with a call to Connector::setVapidPublicKey, before calling Connector::registerClient. As the latter constraint can be somewhat cumbersome to ensure when the VAPID key first has to be retrieved from the application server, there’s an additional convenience method, Connector::setVapidPublicKeyRequired. If VAPID is set to required registering for push notification is internally delayed until the key is provided, making integration into existing code usually pretty straightforward.

You’ll find an example use here.

Message urgency

Another feature brought by Web Push is message urgency (RFC 8030 §5.3). The idea here is that a device can reduce the amount of received messages based on their urgency when energy or network resources are limited. So you’d get fewer wakeups when on mobile network with a low battery than when on Wi-Fi and connected to a charger.

This has no impact on the client side. On the distributor side we determine the current urgency threshold and communicate to the push servers in their respective protocols.

For now this is a rather theoretical exercise though, as we yet have to implement device sleeping/wakeup while waiting for push notifications to really make a difference regarding power consumption. Something to discuss at the upcoming Plasma (Mobile) Sprint in Graz.

Mozilla Autopush

Thanks to the alignment with Web Push we can now use Mozilla’s Autopush push server as a backend, both their instance as well as a self-hosted one.

Note though that at least Mozilla’s own instance requires applications to use VAPID, which for example isn’t implemented in Tokodon yet. Additional compatibility considerations are listed here.

Self test

The system settings configuration module for push notifications now has a self-test action, which will send itself a push notification and verify that this was received correctly and sufficiently quickly again.

This isn’t strictly related to the protocol changes, but improved diagnostics help a lot with managing the increased complexity.

Development tooling

Besides the self-test for end user setups we also have a new command line tool for submitting push notifications for testing during development. Previously this could be done easily with sending a HTTP POST with curl, but with message encryption and VAPID signatures this isn’t really feasible anymore.

For convenience the demo push notification client included in the KUnifiedPush repository now also outputs the corresponding command to send it a notification (which is rather lengthy due to passing all the necessary keys).

Outlook

With all this we should be up-to-date with all the relevant specification changes again, and while at it there also has been a bunch of improvements and robustness fixes in general. The next step is adapting applications to make use of all this.

Thursday, 17 April 2025

I had an amazing opportunity to attend Conf KDE India this year. It was hosted in the wonderful city of Gandhinagar, Gujarat known for its well planned modern architecture and Khadi exports. I was really looking forward to see some familiar faces from last year’s cki and meet new ones.

Day 0

Amehedabad view at night captured on my return journey

I arrived a day before the conference in Gandhinagar. I really appreciate Bhushan for picking all of us from the airport, that was a very warm gesture. I had an early morning flight from Delhi so by the time I reached my hotel room I was really tired and dozed off for quite a while. Thankfully I woke up by evening, around the time when few of us decided to meet up for dinner. I also met Joseph for the first time in person, we have been working together on KEcoLab, a KDE Eco project so I was looking forward to meet him in person and suffice to say he is as warm and kind a person irl as he is when remote. After dinner, I worked on my slides and wrote a bit of qml code for my workshop. Rishi arrived later that day or rather early morning next day and we spent a bit of time tinkering with his Steamdeck before we dozzed off.

Day 1

Konqi made with cubes by the local volunteers

The first day of Cki 25 started with Bhushan introducing what KDE Community is, what we do and why we do to the crowd which comprised mostly of eager local college students. This was followed by Vishal talking about “Embracing FOSS in Edtech” a pretty interesting talk about the widespread use of open source software in various Indian schools and state governments.

After the lunch break, Shubham talked about how he self hosts everything using open source softwares and encouraged achieving digital independence through it. It was a pretty interesting talk for me considering I am pretty close to using up my free storage I get with my google account so this was a nice motivating step for me to break away from google. This was followed by a remote talk by Soumyadeep about using GhVmCtl to test GUI applications directly with ci runners. I think this project is quite similar to selenium-webdriver-at-spi that KDE maintains so it was interesting to know gnome is also working on something similar. After the coffee break Ravi talked about using Prav an XMPP based free chat software as an alternative to Quicksy. He covered a lot about the importance of federated ecosystems, data privacy and how Prav is playing a crucial role in this. The last talk of the day was by Subin where he talked about using Malayalam language (a popular language from the State of Kerala wirh roughly 37 million speakers worldwide) on Ubuntu through maintaining the Varnam Project, which is an open source cross platform transliterator for Indian languages. I enjoyed his talk a lot personally because I also speak Malayalam (although I am not a fluent in it) and it was interesting to know the progress he made on making Malayalam language having first party support on linux.

Afterwards for dinner we had punjabi style north indian kulche and lassi, pretty delicious indeed 😋

Day 2

Me conducting workshop on 'Building your first QML Interface'

I started the second day by giving a workshop on “Building your first QML Interface”. The idea was to build a small mvp of Whatsapp web interface (one of the most widely used chat application in India) in qml, although we werent able to completely build it but the feedback I got was that many were excited about qml and actively following along the workshop so I consider that a mild success. After this Shivam gave a talk about Clazy, its architecture, real world usage in KDE ecosystem and technical challenges faced in implementing static analysis. I am ashamed to admit I not used this tool much before but the talk definitely sparked my interest and I am keen to test it out and maybe integrate it into my workflow as well. This was followed by Joseph talking about End of 10 upcycling campaign also highlighting its importance in the Indian context, again another interesting talk.

After the lunch break, I enjoyed Rishi’s talk a lot about using nix and integrating it into your workflow. I have used nix os in the past and my spare laptop still runs it so I was happy to see it being mentioned in a kde conf. After this Keith talked about the widespread use of open source software in Australian schools, the talk had quite the parallels to the widespread use of Linux in the Indian state of Kerala so it piqued my interests again. The last talk of the day was given by Sahil where he shared his experience running various mirrors for KDE, VLC, Libreoffice, Blender and many other open source softwares and how we can also do that, another pretty intriguing talk. I have had to battle with Qt mirrors in the past so to know what all goes behind the scene to host these mirrors made me appreciate it a lot more than before and you never know maybe I might host a few mirrors for Qt some day.

After the conference all the speakers met together for dinner and we had pretty delicious south indian food.

Day 3

The third day was more about Workshops and Unconference sessions. I started the day by giving a workshop on KEcoLab, how anyone can use our infrastructure (or rather KDAB’s) to test their application’s energy consumption and optimise it. This was followed by Advaith conducting a workshop on writing plugins for Suse’s Cockpit, a web administration tool for linux machines. Afterwards we had an unconference session by Joseph on End of 10, it was a pretty engaging session by him and focussed a lot about the campaign’s outreach in India. We had another unconference session on HackMud by Advaith, Hackmud is a text based multiplayer hacking simulator and was proposed by him as an alternative way to learn programming. This was followed by demo with steamdeck and plasma mobile on pinephone, and suffice to say everyone were excited to try out the devices. SuperTux was especially the fan favourite game 🐧

Adalaj Stepwell

After the conference ended, we visited the Adalaj Stepwell, a stepwell located in the nearby small town of Adalaj Gujarat.

Traditional Gujarati Thali

We ended the day by having dinner at one of the traditional gujrati thali place which had unlimited servings, this was my first time having a gujarati thali and I was blown away by its taste, specially the mango purée.

Day n/n

This was the last day of my stay in Gujarat and I ended my trip by visiting the local landmarks with Bhushan. We visited the Sabarmati Ashram, the main residence of Mahatma Gandhi and saw many artifacts from his time. I got a few souvenirs for my family from this place and We visited the Sabarmati Riverfront after this.

Me and Bhushan at the riverfront

Regardless to say I had a blast attending the conference and it will be one of my best memories.

Very busy releasetastic week! The versions being the same is a complete coincidence 😆

https://kde.org/announcements/gear/25.04.0

Which can be downloaded here: https://snapcraft.io/publisher/kde !

In addition to all the regular testing I am testing our snaps in a non KDE environment, so far it is not looking good in Xubuntu. We have kernel/glibc crashes on startup for some and for file open for others. I am working on a hopeful fix.

Next week I will have ( I hope ) my final surgery. If you can spare any change to help bring me over the finish line, I will be forever grateful 🙂

The Kubuntu Team is happy to announce that Kubuntu 25.04 has been released.

Codenamed “Plucky Puffin”, Kubuntu 25.04 continues our tradition of giving you Friendly Computing by integrating the latest and greatest open source technologies into a high-quality, easy-to-use Linux distribution.

The release features the latest KDE Plasma 6.3 desktop, KDE Gear 24.12.3, kernel 6.14, and many other updated applications and libraries.

Applications for core day-to-day usage are included and updated, such as Firefox, and LibreOffice.

In addition to the applications on our install media, 25.04 benefits from the huge number of applications in the Ubuntu archive, plus those installable via snap or other methods.

Please refer to our release notes for further details.

Download Kubuntu 25.04 or learn how to upgrade from 24.10.

Note: For upgrades from 24.10, there may a delay of a few hours to days between the official release announcements and the Ubuntu Release Team enabling upgrades.

Welcome to the March 2025 development and community update.

Development Report

Text Tool Rework Progress

Wolthera is still buried in text work for 5.3.

  • Add Language text property, which is important for font-shaping, line-break, word-break and text-transform. (Change)
  • Better font unit conversion and other small fixes. (Change)
  • Ensure alignment, dominant-baseline and baseline-shift follow CSS-inline-3 and SVG2. (Change)
  • Rework text decorations so they are calculated as per css-text-decor-4. (Change)

Palettes

Several bugs in color palette editing have been fixed in the stable build, including failure to save group and number of rows, crash when adding a group to a palette in a document, and lag when adding a swatch. (bug 461521, bug 476589, bug 476607, bug 478715) (Change, by Mathias Wein)

In the unstable nightly builds, the Python Palette Docker has been re-added, which can manage palettes and export them to .gpl and .svg formats. (Change, by Freya Lupen)

Qt6 Port Progress

Krita 6.0.0-prealpha now supports PyQt6, and all built-in Python plugins have been updated to support it alongside PyQt5. (Change, by Freya Lupen)

User-made plugins will require updating by the author to work on Krita 6. Krita 6 will not be released any time soon, but for plugin authors who want to get a head start, see the change link for porting tips!

Wayland Testing

Krita doesn't yet support the Linux compositor Wayland, but it can now be enabled for testing purposes on the unstable nightly builds by setting the environment variable QT_QPA_PLATFORM=wayland. (Change, by Nicolas Fella)

Community Report

March 2025 Monthly Art Challenge Results

For the "Virtual Plein Air Painting" theme, 19 forum members submitted 26 original artworks. And the winner is… multiple entries by @Elixiah. Black Bear Pass:

Black Bear Pass by @Elixiah

Also check out the other entry, Druid Arch, Colorado.

The April Art Challenge is Open Now

For the April Art Challenge, @Elixiah handed the winner's honor of choosing the theme to second-place @Mythmaker, who handed it to third-place-tie @Katamaheen, who has chosen illustrating "Fairy Tales and Bedtime Stories" as the theme. The optional challenge is to design the artwork as a book cover. See the full brief for more details, and paint a familiar story with a new brush.

Best of Krita-Artists - February/March 2025

Nine images were submitted to the Best of Krita-Artists Nominations thread, which was open from February 14th to March 11th. When the poll closed on March 14th, these five wonderful works made their way onto the Krita-Artists featured artwork banner:

Krozz Defender by @Yaroslavus_Artem

Krozz Defender by @Yaroslavus_Artem

Gagarin Scientific Research Station by @Dima

Gagarin Scientific Research Station by @Dima

The Anger That Breaks from Within by @ryanwc

The Anger That Breaks from Within by @ryanwc

Xavier by @MangooSalade

Xavier by @MangooSalade

2025 by @Montie

2025 by @Montie

Ways to Help Krita

Krita is Free and Open Source Software developed by an international team of sponsored developers and volunteer contributors.

Visit Krita's funding page to see how user donations keep development going, and explore a one-time or monthly contribution. Or check out more ways to Get Involved, from testing, coding, translating, and documentation writing, to just sharing your artwork made with Krita.

Other Notable Changes

Other notable changes in Krita's development builds from Mar. 17 - Apr. 17, 2025, that were not covered by the Development Report.

Stable branch (5.2.10-prealpha):

  • Brush Editor: Don't apply active mirror tool to the brushstroke preview. (bug report) (Change, by Scott Petrovic)
  • ACB Palette: Use title for the palette name. (Change, by Halla Rempt)

Unstable branch (5.3.0-prealpha):

Bug fixes:

  • Tools: Fix tool opacity being reset when switching brushes. (bug report) (Change, by D Kang)
  • Tools: Fix sampling screen color when using multiple screens with different screen scaling. (Change, by killy |0veufOrever)
  • Tools: Keep brush rotation during brush resize action. (Change, by Maciej Jesionowski)
  • Layer Stack: When transforming a filter mask or its parent layer, show the content's bounds instead of the mask's entire canvas bounds. (Change, by Maciej Jesionowski)
  • Animation Export: Fix failure to overwrite existing animation sequence. (bug report) (Change, by Emmet O'Neill)
  • Animation: Make changing animation settings such as framerate and start/end frame undoable, and affect the document modified state. (bug report) (Change, by Emmet O'Neill)
  • Usability: Make bundle activation/deactivation clearer, using a checkbox. (bug report) (Change, by Scott Petrovic)
  • Canvas: Speed up canvas panning with rulers, by reducing the rate of ruler updates. (Change, by Maciej Jesionowski)

Features:

  • Animation/Recorder: Update built-in FFmpeg to version 7.1. (Change, by Dmitry Kazakov)
  • Batch Export Plugin: Add Bilinear filtering option. (Change, by Austin Anderson)

Nightly Builds

Pre-release versions of Krita are built every day for testing new changes.

Get the latest bugfixes in Stable "Krita Plus" (5.2.10-prealpha): Linux - Windows - macOS (unsigned) - Android arm64-v8a - Android arm32-v7a - Android x86_64

Or test out the latest Experimental features in "Krita Next" (5.3.0-prealpha). Feedback and bug reports are appreciated!: Linux - Windows - macOS (unsigned) - Android arm64-v8a - Android arm32-v7a - Android x86_64

Wednesday, 16 April 2025

Haruna version 1.4.0 is released.

Added support for recursive subtitle search, rotating video and opening youtube playlists from a video url containing a playlist id https://www.youtube.com/watch?v=video_id&list=playlist_id

Fixed issues with tracks menus showing incorrect tracks and changed the behavior of progress/seek slider while pressed to pause the video.


flathub logo

Windows version:

Availability of other package formats depends on your distro and the people who package Haruna.

If you like Haruna then support its development: GitHub Sponsors | Liberapay | PayPal

Feature requests and bugs should be posted on bugs.kde.org, ignoring the bug report template can result in your report being ignored.


Changelog

1.4.0

Features
  • Added setting to search subtitles recursively. Searches folders relative to the parent folder of the playing file and folders defined by the `Load subtitles from` setting
  • Added support for opening youtube playlists from urls containing a playlist id
  • Added actions to rotate video clockwise (ctrl + r) and counter clockwise (ctrl + e)
Bugfixes
  • Fix tracks menus showing tracks from previously opened files
  • Fix subtitles added by drag and drop not being added to the subtitles menu
  • While the progress/seek slider is pressed the video is paused, fixes continuously opening the next video when dragged and held all the why to the end

In first of a kind movement to develop free and open source fonts for traditional Malayalam scripts, the Rachana Institute of Technology, KaChaTaThaPa Foundation and Sayahna Foundation had previously announced font design competition in May 2024.

Many participants registered from all over India and shared their initial design of a few selected characters. Ten submissions were shortlisted, and the selected participants were invited for a two-day in person workshop conducted at River Valley campus, Trivandrum. The workshop was lead by the jury members — Dr. KH Hussain who designed notably Rachana and Meera fonts (among many other); eminent calligrapher and designer of Sundar, Ezhuthu, Karuna & Chingam fonts, Narayana Bhattathiri; type designer and multi-scripts expert Vaishnavi Murthy; and yours truly. High quality sessions & feedback from the speakers and lively interactive sessions enlightened both experienced and non-technical designers about the intricacies of typeface design.

Participants of the font workshop held at River Valley Campus, Trivandrum, in August 2024.

Refinement

To manage the glyph submissions for collaborative font projects, a friend of mine and I built a web service. The designers just need to create each character in SVG format and upload into their font project. This helped to abstract away from the designers all the technical complexities, such as assigning correct Unicode codepoint, correct naming convention, OpenType layout & shaping etc.

There was mid-term evaluation of the completed glyph set in October 2024; and a couple of online sessions where the jury pointed out necessary corrections and improvements required for each font.

The final submissions were done near the end of December 2024; and further refinements ensued. All the participants were very receptive to the constructive feedback and enthusiastic to improve the fonts. The technical work for final font production was handled by your humble correspondent.

Results

In March 2024, the jury made a final evaluation and adjudged the winners of the competition. All the six fonts completed are published as open source, and they can be downloaded from Rachana website. See the report for the winning entries, font specimens & posters, prize money, and all other details.

RIT Thaara (താര), calligraphic style, named after Sabdatharavali.

RIT Lekha (ലേഖ), body text font.

RIT Lasya (ലാസ്യ). The Latin glyphs were drawn independently based on Akaya Kannada font, as suggested by a jury member.

RIT Ala (അല).

RIT Keram Bold (കേരം).

RIT Indira Bold (ഇന്ദിര).

I am very happy to have the chance to collaborate over the course of a year with designers from various backgrounds to develop beautiful traditional Malayalam orthography fonts and make them all available under free license. I would like to thank the jury members who did exemplary work in evaluating the designs and providing constructive feedback & guidance multiple times that helped to refine the fonts; CVR for the work to create web pages on Rachana website; and the three Foundations for the initiative and funding to make this all possible. Full disclosure: all the jury members worked in volunteer capacity.

Next competition

RIT-KaChaTaThaPa-Sayahna foundations have already announced plans for next open font design competition! This time the focus is on body text fonts.

Monday, 14 April 2025

Fedora 42 has been released! 🎉 So let’s see what is included in this new release for the Fedora Atomic Desktops variants (Silverblue, Kinoite, Sway Atomic, Budgie Atomic and COSMIC Atomic).

Note: You can also read this post on the Fedora Magazine.

New COSMIC Atomic variant

The new COSMIC desktop has been packaged for Fedora and a new Atomic variant created for it thanks to Ryan Brue. It is not yet available on the website but should be soon. See fedora-websites#351. Edit: It is now live: Fedora COSMIC Atomic.

See the Fedora change request.

Changes for all variants

composefs enabled by default

Following Fedora CoreOS in Fedora 41, Fedora Atomic Desktops are now using composefs by default. This is an important first step towards better integrity for the system content.

Note: As a side effect of this change, the systemd-remount-fs.service unit may fail to start on your system. Until we find a good way to fix this, you can find a workaround to apply in the atomic-desktops-sig#72 issue or in the common issue thread on the forum.

See the Fedora change request and the tracking issue atomic-desktops-sig#35.

Migration to a static GRUB config

As part of the move to composefs, we had to migrate systems to using a static GRUB config.

This also removes the duplicated entries in the boot menu for installations that pre-dates Fedora 41.

The transition will happen automatically during the first boot on Fedora 42. You can verify that it worked by looking at the status of the bootloader-update service:

$ sudo systemctl status bootloader-update.service

We are still missing documentation on how to change some GRUB settings now that the configuration is static. See the tracking issue atomic-desktops-sig#73.

Custom keyboard layout set on installation (for LUKS unlock)

This fix is important for setups where the root disk is encrypted with LUKS and the user is asked a passphrase on boot. The keyboard layout is now set as a kernel argument during the installation by Anaconda. If you want to later change the keyboard layout used for the LUKS password prompt, you will have to update the kernel argument.

Example to set the keyboard layout to the french keyboard:

$ sudo rpm-ostree kargs --append=vconsole.keymap=fr

Example to replace an existing layout by another:

$ sudo rpm-ostree kargs --replace=vconsole.keymap=de

See atomic-desktops-sig#6.

No longer building for PPC64LE

According to the countme statistics, we did not have users on PPC64LE, so we decided to stop building the Fedora Atomic Desktops for that architecture.

If you relied on those images, you can migrate to Fedora Bootc images (which are available for PPC64LE) or use a conventionnal Fedora package based installation.

See the Fedora change request.

What’s new in Silverblue

GNOME 48

Fedora Silverblue comes with the latest GNOME 48 release.

For more details about the changes that alongside GNOME 48, see What’s new in Fedora Workstation 42 on the Fedora Magazine, Looking ahead at 2025 and Fedora Workstation and jobs on offer! and Fedora Workstation 42 is upon us! from Christian F.K. Schaller.

What’s new in Kinoite

KDE Plasma 6.3

Fedora Kinoite ships with Plasma 6.3, Frameworks 6.11 and Gear 24.12.

See also What’s New in Fedora KDE Plasma Desktop 42? on the Fedora Magazine.

What’s new in Sway Atomic

Nothing specific this release.

What’s new in Budgie Atomic

The default software center for Budgie Atomic is now Plasma Discover. To rebase from Fedora 41 to 42, you will have to use the command line as rebasing via GNOME Software will move your system to Fedora Silverblue.

See: fedora-budgie/project/issue/5.

Changes in unofficial images

Until we complete the work needed in the Fedora infrastructure to build and push official container images for the Atomic Desktops (see releng#12142 and cloud-image-uploader#37), I am providing unofficial builds of those. They are built on GitLab.com CI runners, use the official Fedora packages and the same sources as the official images.

You can find the configuration and list on gitlab.com/fedora/ostree/ci-test and the container images at quay.io/organization/fedora-ostree-desktops.

Container images signed with cosign (sigstore)

The unofficial container images are now signed with cosign. You can configure your system to verify the signature of the images using the instructions from the project README.

Container images available for aarch64

We are now building all our variants for the aarch64 architecture as well.

Goodbye to Sericea and Onyx (now Sway Atomic & Budgie Atomic)

We have now removed all container images under that name. Use the new names:

Unofficial, experimental Fedora Asahi Remix Atomic Desktops

We are now producing unofficial, experimental bootable container images targeting Apple Silicon, using the packages from the Fedora Asahi Remix project.

Those images are in a working state, but the installation procedure is not ready for general use. We thus only recommend that you give this a try if you are ready to help with the development or are ready to re-install you system and lose data.

See: fedora-asahi-remix-atomic-desktops project on GitHub

See also the Fedora Asahi Remix 42 is now available posts on the Fedora Magazine.

Note that those images currently do not support the x86 emulation detailed in New in Fedora: Running x86 programs on ARM systems.

Universal Blue, Bluefin, Bazzite and Aurora

Our friends in the Universal Blue project (Bazzite, Bluefin, Aurora) have prepared the update to Fedora 42. Look for upcoming announcements in their Discourse.

I heavily recommend checking them out, especially if you feel like some things are missing from the Fedora Atomic Desktops and you depend on them (NVIDIA proprietary drivers, extra media codec, out of tree kernel drivers, etc.).

What’s next

Roadmap to Bootable Containers

The next major evolution for the Atomic Desktops will be to transition to Bootable Containers. See also the Fedora bootc documentation.

We have established a roadmap (atomic-desktops-sig#26) and we need your help to make this a smooth transition for all of our existing users.

Turning the sysext experiment into a good experience

Systemd system extensions (sysexts) are a new option when you need some applications available on your system and can not run them in containers or as Flatpaks for various reasons. They offer an alternative approach to package layering as they do not increase update time and can be enabled or disabled as needed.

Support for sysexts is still in development for the Atomic Desktops but they already provide advantages over package layering for some use cases. See the currently experimental project: github.com/travier/fedora-sysexts.

Unifying the Atomic Desktops documentation

We would like to unify the documentation for the Fedora Atomic Desktops into a single one instead of having per desktop environments docs which are mostly duplicate of one another and need to be constantly synced.

See the tracking issue atomic-desktops-sig#10 if you want to help us do that.

Where to reach us

We are looking for contributors to help us make the Fedora Atomic Desktops the best experience for Fedora users.