Skip to content

Sunday, 20 April 2025

I love the Kate Text editor. I use it for pretty much all the programming projects I do. Kate has been around for long time now, about 20 years! At least earliest blog post for it I could find was written in 2004.

I wanted to go over my workflow with it, why I like it so much and hopefully get more people to try it out.

My Kate setup

How I set up my editor

Here's some settings I find important for my workflow. There's tons more settings to fiddle with, but most of the defaults suffice for me very well.

Plugins I use

Here's a list of the plugins I have enabled. Some of them are self-explanatory, some I will go more in detail later.

  • Build & Run
  • Color Picker
  • Colored Brackets
  • Document Preview
  • Docment Switcher
  • External Tools
  • Formatting
  • Git Blame
  • Kate Debugger
  • LSP Client
  • Open Link
  • Project Plugin
  • Search & Replace
  • Snippets
  • Terminal

Move and split views

In Kate, most views are in their own little tabs. You can right click these tabs and select "Own section" which splits them into their own areas. In the screenshot I provided at start, you can see my Projects and Git view being split like this, so they can both be open at the same time.

Context menu for splitting panels

Do note that these are saved per session, so sessions can have different splits.

Language server

In LSP Client settings, you can toggle multiple things I won't go into detail in here. What I do want to mention is the User Server Settings file, which can be edited from this menu. To override some defaults, you can just copy the default setting from the default tab, put it in your own settings tab and then just change the values.

Here's my LSP settings: dotfiles/kate/lspclient/settings.json

Debug adapters

Debugger settings work similarly to LSP setting, however you may have to restart Kate to recognize any new changes.

Here's my DAP settings: dotfiles/kate/debugger/dap.json

Formatters

For code formatting, there's also it's own setting menu, however as of writing this only the languages mentioned in default settings are supported.

If you want to tell formatter to stop autoformatting, you can set it like this, using clang-formatter as example:

{
  "clang-format": {
    "command": [
      "clang-format"
    ],
    "formatModifiedLinesOnly": true,
    "formatOnSave": false
  }
}

Here's my formatting settings: dotfiles/kate/formatting/settings.json

Shortcuts

Shortcuts are very personal thing and I encourage learning the defaults if at all possible. I have changed mine around a bit, for example Ctrl+Shift+Space for Quick Open and Ctrl+Space for Find action. More of these two later!

Path setting

Kate can't always find language servers for example, if it can't resolve your path. Use this path setting to load binaries from paths like ~/.local/bin. You can find this under Behavior settings at least on Kate 25.04.

Sessions

Sessions are basically group of projects. Do not treat sessions as projects themselves, that will only cause sadness.

I have separated my Work and Personal projects in their own sessions. This means that during work day, I can right click the Kate icon, select Work session, and then Kate will always open for me in that session until I choose Personal session.

In session settings I have set Kate to always open the last used session because of this.

I highly recommend this way of working. You could also have sessions for differently themed projects: Gamedev, web, etc..

Just make sure to create at least one session when starting out, then you can use that as a template for the other sessions in Kate session manager.

When I used to write more notes with Kate, I had it's own Notes session with both my Notes folder as a project folder and my blog.

Colorschemes

Kate uses KColorScheme library for it's colorscheme needs. You can very easily to copy a ready colorscheme and then start modifying your own changes on top of it.

You can also create a completely new colorscheme if you wish, like I have done here: Revontuli/Kate

The colorscheme files in the library are their own XML format which is not ideal IMO but it gets the job done. It would be awesome if Kate supported tree-sitter but so far I haven't heard anyone trying to implement that.

File quick switching

I mentioned this earlier in shortcuts section. If you're like me and have multiple projects open, you can use the Quick switcher and start typing the filename you need to open.

Quickswitcher being used

If you just want to open a specific project, you can type project bla and it will find that project for you from your project list.

This is why I have it bound to Ctrl+Shift+Space, so I can just press it and quickly find the file I need.

This is more interesting: Instead of searching for files, you can search for any action Kate has.

For example, if you want to look for terminal related actions, you can type "Terminal" and it lists everything plus any potential shortcuts.

Action search being used

Fun fact, you can use this in other KDE apps too, like Dolphin or Konsole! The default key combination for it is ctrl+alt+i but I use it so frequently I set it to ctrl+space.

Build and Run

The name of this plugin is a bit misleading IMO because it can do so much more than just build.

Build and run view

In essence, it's a command runner. You can give the command a name, then build command and run command.

For example in the above image, my game project has only one command called build which has build command odin build ./src -collection:src=src -debug -out:./build/ArtificialRage and run command odin run ./src -collection:src=src -debug -out:./build/ArtificialRage.

I can then just use the action search to build and run my game project.

For your projects, you can then add file called .kateproject.build in your project root folder, so Kate will pick that up. They're just JSON files that look like this:

{
    "target_sets": [
        {
            "cmake_config": "",
            "directory": "/home/akseli/Repositories/artificial-rage/",
            "loaded_via_cmake": false,
            "name": "artificial-rage",
            "targets": [
                {
                    "build_cmd": "odin build ./src -collection:src=src -debug -out:./build/ArtificialRage",
                    "name": "build",
                    "run_cmd": "odin run ./src -collection:src=src -debug -out:./build/ArtificialRage"
                }
            ]
        }
    ]
}

The .kateproject files can store much more information about the project, but they are not very user facing yet sadly. Something on my eternal to-do list.

Also when running the commands, there's "Output" tab that shows the results. It's basically view to your terminal, but if you encounter an error or warning, and the output panel can parse the file and location from it, you can click that item and it will open code at that position where the error/warning appeared.

Language server

As I mentioned above in the settings, Kate does have support for Language Server Protocol, as long as they're found from the path Kate looks for them and are configured properly. It's very much the same support one would expect in any modern editor.

One thing I do use a bunch thanks to it is looking for references to specific symbol, searching symbols across all my open projects and symbol overview.

Debugger

Kate has support for Debug Adapter Protocol, which is the lesser known cousin of Language Server Protocol.

This allows you to debug applications visually with breakpoints, check the stacktrace by using Locals and stack panel, and so on.

As long as the configuration is correct, debug adapter is found in path, and the executable, working directory, etc are given to Kate correctly, it can debug things rather well. The debugger plugin has undergone bunch of polish lately so it's rather good for my use, especially with my game projects.

Debugging my game

For bigger things like debugging whole Plasma desktop, I still use gdb in terminal.

Terminal

Speaking of terminal, the terminal is just Konsole running inside it's own view. The terminal can be made to follow the folder of the file you're editing, and it will share the settings with Konsole. You can also split the terminal from Kate if you need more views. Terminal tabs also work.

So it's essentially just Konsole embedded in Kate.

Git integration

The git integration in Kate is simple-but-works. You can diff, stage and discard lines/hunks directly from the editor (I use this a lot).

Git diffing

Then of course, you can stage and unstage, commit, push, pull etc. directly from Kate. As of writing this, you can't rebase yet, but for more complex tasks I tend to often use something like lazygit, which I highly recommend.

Git staging

All of this has inline git blame, so you can see per line who did what and where. This is very handy in projects with multiple devs.

Snippets

Kate has a snippet plugin that allows one to create simple or super complex snippets, for example for boilerplate.

Snippets tool

Here's example for my blog header snippet (don't mind the bad JS I wrote it very tired)

The snippet text, that will be pasted into a markdown file:

+++
title = "${title}"
date = ${justDate()}
aliases = ["/${dateUrl()}/${lowerFilename()}.html"]
[taxonomies]
tags = ["${tag}",]
+++

My ugly javascript mess for creating dynamic items:

function fileName() { return document.fileName(); }
function fileUrl() { return document.url(); }
function encoding() { return document.encoding(); }
function selection() { return view.selectedText(); }
function year() { return new Date().getFullYear(); }
function upper(x) { return x.toUpperCase(); }
function lower(x) { return x.toLowerCase(); }
function today() { 
    var date = new Date();
    return formatDate(date);
}
    
function padTo2Digits(num) {
  return num.toString().padStart(2, '0');
}

function getDateName(date){
    var names = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];
    return names[date.getDay()];
}

// 2024-06-13 Thu 10:00
function formatDate(date) {
    var dateString =     [
      date.getFullYear(),
      padTo2Digits(date.getMonth() + 1),
      padTo2Digits(date.getDate()),
    ].join('-');
    
    var dayName = getDateName(date);
    
    var time =     [
      padTo2Digits(date.getHours()),
      padTo2Digits(date.getMinutes())
    ].join(':');
    
    var timeString = dateString + " " + dayName + " " + time;
  return timeString;
}

function justDate() {
    var date = new Date();
    var dateString =     [
      date.getFullYear(),
      padTo2Digits(date.getMonth() + 1),
      padTo2Digits(date.getDate()),
    ].join('-');
    return dateString;
}

function dateUrl() {
    var date = new Date();
    var dateString =     [
      date.getFullYear(),
      padTo2Digits(date.getMonth() + 1),
      padTo2Digits(date.getDate()),
    ].join('/');
    return dateString;
}

function lowerFilename() {
	return lower(fileName());
}

So yes, you can write Javascript to generate snippets for you, like here I've done with date and time, filename, etc.. It's super useful.

You can then use code-completion shortcut and type snippet-namespace:snippet-name and press enter, and it will run the snippet for you. You can make the snippets only appear for files in specific language.

It's a very very powerful tool for generating simple boilerplate code. Requires some upfront work but after that's done, it works wonders.

Here's also some of my markdown snippets: dotfiles/kate/Markdown Snippets.xml

But why do I love it so

Kate has basically all the features I need, out of the box, without having to download random extensions or plugins. Sometimes I just have to enable plugins, maybe write and change some configurations.. But when that's done, it's all just there and I can start using it.

I tend to back up my configs to my dotfiles git, so I can just in subsequent installs use them immediately.

Hang on, VSCode has all of this and more!

You're right, VSCode has a lot of these things too. However with VSCode I've noticed that you have to sometimes download whole language as an extension. Then, the extensions may clash with each other, especially if you have two extensions that do different things for the same thing: I remember having two CMake extensions where both had something I needed, but they both also overlap in some basic features, so it got very confusing.

That's probably all skill-issue of course. But I like that I don't have to download any extensions or plugins or whatever.. I can just import my settings and start working.

VSCode being electron and Microsoft doesn't really help my feelings either, especially since some of their extensions like C# and Python are proprietary, and they're working on more extensions to be like that:

So yeah, I rather use something like Kate that I know will be around for long time and won't turn into proprietary mush, nor try to tell me to use their newest "AI" slop tools.

Kate is very much the embodiment of KDE tagline: Simple by Default, Powerful when Needed. It does all I need and allows me to modify it as I need.

I've contributed to Kate bunch of times, and every time it has been nice. The maintainers of Kate are very lovely patient people who deal with my nonsense. :)

And that's why I love it so much: The people around it, the out of the box experience, the simplicity yet powerfulness..! ❤️

Give Kate a try today! :)

If you have any issues with it, report them on bugs.kde.org. You can also send wishlist items there. There is also wishlist of things on KDE Discuss, feel free to chat there about it or ask for help in general.

PS. For the modal text editor lovers, Kate does have Vi mode. I use it from time to time, but I prefer Kate as it is to be honest. For my terminal/modal editing needs I use Helix editor, but most of the time I'm using Kate.

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)

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. Huge thanks to KDE e.V for sponsoring my travel and accomodation for the conference.

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 🙂

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

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.

Historically passwords and credentials in all of our apps and services (such as kio and our Network Manager plasmoid), are stored and managed by our KWallet subsystem and API. In a similar way, GNOME had gnome-keyring, and other similar systems were available. A major problem was the mutually incompatible interface between them, making impossible to have a single place where all the passwords go.

For this reason, a standard DBus interface called Secret Service has been developed, and systems like KWallet, gnome-keyring and KeepassXC have adopted the interface as well.

In the future, we want to eventually port our applications to use the Secret Service API directly, preferably via the QtKeychain library (some applications already do), which will use Secret Service natively on Linux. And as a bonus the Windows/Android native systems on those platforms will work too.

This will make our applications work much better, be more integrated in other desktops or platforms, and be less dependent on the KWallet framework which has big legacy code parts at this point.

Right now, KWallet has the option to bring up a Secret Service compatible interface, and this is a valuable first step, but there are still some potential problems in the migration path:

  • Applications using Secret Service will store their secret data in different places when running in different environment, including our own that have been migrated. If you login into a different session ,every app will have forgotten its credentials.
  • It’s possible to use a different Secret Service provider also in a Plasma session, for instance enabling it in KeepassXC. At that point some apps will save into it, while other ones will keep using KWallet with a different storage backend.
  • Applications ported from KWallet to SecretService will lose their credentials, unless some clunky porting code is written for each application.

A KWallet compatibility layer

Enter the recent refactor that happened in KWallet: it has now been split into 2 different system services now: one that exposes only the Secret Service API, and one that exposes only the KWallet API.

The service exposing the KWallet API has been written from scratch and is now just a thin wrapper around the Secret Service API, translating the KWallet DBus calls to Secret Service ones. The old KWallet service is now a pure Secret Service provider that just happens to use the old KWallet backend, exposing to Secret Service all the entries that had already been stored in the past.

This decouples our KWallet compatibility layer for existing or old applications (not only KDE applications, also third party ones like Chromium use it) with our actual secret storage and SecretService implementation, allowing a separate development roadmap, and even potential future transition to a different backend in a completely transparent way to the user.

You can see this decoupling in the same spirit as the recent KWin Wayland/X11 split: being able to develop the new technology without risking breaking compatibility of the legacy system.

What it means for users and developers

For the immediate future, not much really changes: users will still have all their secrets accessible, and every app they use that was using KWallet will keep working without forgetting anything.

In the same way, for developers, the whole KWallet C++ API keeps working exactly as it was (even though we’re discouraging its use in new projects). Also, the KWallet-to-Secret-Service API proxy layer will save data inside Secret Service with the same schema used by QtKeychain, keeping the data accessible if the application gets ported from using the KWallet C++ API to QtKeychain.

An experimental feature

Disclaimer: The following description is of an experimental feature behind a hidden configuration key: it will take a bit before it’s deemed ready for prime time.

One advantage of having 2 independent services to handle the KWallet API and the Secret Service one is that now it’s possible to chose different backends as well, such as KeepassXC, gnome-keyring or oo7.

Setting the following in kwalletrc:

[Migration]
MigrateTo3rdParty=true
[KSecretD]
Enabled=false

With this, the old KWallet backend (now a service called ksecretd) won’t be started anymore, and instead any Secret Service provider that is running or has been configured to be DBus-activatable will be used. The first time this happens, a data migration procedure will be executed, writing the data in KWallet into the new service, keeping all the user-saved secrets accessible.

Sunday, 13 April 2025

Welcome to a new issue of "This Week in KDE Apps"! Every week we cover as much as possible of what's happening in the world of KDE apps.

As Carl is still in vacation, this issue is only partially complete.

System Apps

Dolphin Manage your files

The Dolphin search integration has been rewritten from scratch. Notably, users can now switch the search tool between a simple search algorithm and one using file indexing and offering advanced search options. This way users are no longer forced to use the file index whenever it is available and can instead search in a slower but more reliable manner.

The overall user interface design is much improved with better clarity about what is currently being searched and which parameters can be changed. It was designed in a collaborative effort by Kristen McWilliam, Jin Liu, Andy Betts, Tagwerk, Felix Ernst, and a few others. (Felix Ernst, 25.08.0. Link)

The "Show in Groups" action was moved from the "View" menu to the "Sort By" menu. (Nate Graham, 25.08.0. Link)

The "Change View Mode" button which was recently added to Dolphin's default tool bar configuration is now icon-only by default (just like we had intended). (Akseli Lahtinen, 25.08.0. Link)

In the Trash context menu the "Properties" action is now once again in the last position just like in all the other Dolphin view context menus. This now-fixed inconsistency was an unintended side-effect of us moving the "Delete" action last to make it less likely to click it by accident when aiming at "Restore". (Kai Uwe Broulik, 25.08.0. Link)

Dolphin will now hide the background of the navigation bar when it's outside of the toolbar. (Akseli Lahtinen, 25.08.0. Link)

Other

Various improvements were made for the KDE Open and Save dialog:

  • People using single-click selection can now click on checkboxes to select individual items in multi-selection dialogs. This works similarly to how it does in Dolphin. (Akseli Lahtinen, KIO 6.14. Link)
  • Open and Save dialogs now allow quickly filtering through files by filename when pressing CTRL+I or Backslash key, like in Dolphin. (Akseli Lahtinen, KIO 6.14. Link)

…And Everything Else

This blog only covers the tip of the iceberg! If you’re hungry for more, check out Nate's blog about Plasma and be sure not to miss his This Week in Plasma series, where every Saturday he covers all the work being put into KDE's Plasma desktop environment.

For a complete overview of what's going on, visit KDE's Planet, where you can find all KDE news unfiltered directly from our contributors.

Get Involved

The KDE organization has become important in the world, and your time and contributions have helped us get there. As we grow, we're going to need your support for KDE to become sustainable.

You can help KDE by becoming an active community member and getting involved. Each contributor makes a huge difference in KDE — you are not a number or a cog in a machine! You don’t have to be a programmer either. There are many things you can do: you can help hunt and confirm bugs, even maybe solve them; contribute designs for wallpapers, web pages, icons and app interfaces; translate messages and menu items into your own language; promote KDE in your local community; and a ton more things.

You can also help us by donating. Any monetary contribution, however small, will help us cover operational costs, salaries, travel expenses for contributors and in general just keep KDE bringing Free Software to the world.

To get your application mentioned here, please ping us in invent or in Matrix.

Finishing Up

Kalah

Hey everyone, It’s me again, back with the final update for this year’s Season of KDE. So, turns out things don’t really go as planned and it took me some extra time to bring it over the line.

Since my last post, I wrote the tests for the Kalah game, the associated TUI, a greedy move selection and benchmarked Oware and Bohnenspiel. My mid-sem exams happened, in between, and delayed me by 2 weeks.