close
Skip to content

Welcome to Planet KDE

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

Sunday, 31 May 2026

Throughout this new process at KDE, I believe I have failed to clearly state what Ocean is and what it means for the future for Plasma user interface and experience.

In this post, I will try to shed some light into this and hopefully it’s easier for new people interested in this project.

Why the Confusion?

I think a lot of the confusion primarily comes from my part in showing graphics first and interface later.

Graphics tend to attract a lot of attention. So much that it swallows other narratives about what Ocean is. It’s natural for our users to want to know more and accept that the graphics are the whole story.

Spoiler… it’s not just graphics 😉

How Should We Think of Ocean?

Ocean is many things, let me list them out:

  • Ocean Design System
  • Ocean Widget Style
  • Ocean Font
  • Ocean Icons(Icon Pack)
  • Ocean Plasma Style
  • Ocean Color Scheme

I think this is another reason why there is confusion out there. I have given a few talks on this as well, but I also see how it’s confusing.

In simple terms, Ocean is a new graphic design platform for the Plasma Desktop.

This new platform aims, first, to organize the way graphic design for Plasma is achieved. As you may know, designers like me, tend to be pretty creative and unbound. We give free range to creativity and we like to break norms.

This is a problem, because if we want to make graphics for a computer system, such as Plasma, we need to organize our creativity in way that developers can understand.

For this reason, in recent years, a modern way to organize creativity for computers was invented by applications like Sketch, Figma, and Adobe XD.

In these applications SVG is the graphic of choice. SVG is a set of coordinates that tell the system how to draw shapes on the screen. It’s versatile enough that SVG code can be read and tweaked by designers and developers alike. It can be stretched without losing quality, yadah, yadah, yadah… You know the rest.

This new wave of applications work with SVG as collections or repeatable graphics interconnected with each other. They use systems of “Components” and “Variants”. Given that computer UI is generally very repetitive, these components save designers time in building more copies of the same graphic with only slight modifications, let’s say for states such as default, hover, selected, etc.

These design systems help bring the world of UI development into the graphic design applications. Many developers are very used to working with graphical components, but only until recently were designers able to work with them in a flexible graphical way.

KDE Plasma has never had a system like this to organize design around the UI. Because of this, designers haven’t really made a ton of inroads into the system and this limits users in the way that we can deliver design for them. In essence, we designers, were never organized enough to provide a proper, development-ready, graphic design that could be used for Plasma.

This is where Ocean comes in. We took up the idea of creating a design system for Plasma that accounts for most, if not all, of the necessary graphical building blocks that developers could use, that preserve consistency between graphics and code, and deliver a cohesive experience for users.

By doing this, our hope is that graphic designers that are used to working with design systems can join our team and help us go even further.

On the developer side, a design system is a much more clear way of communicating component organization. Developers can more easily understand how buttons are made, what colors are used, what typography levels are on screen, etc. We do this by creating a series of graphic tokens that describe their use in more detail.

CSS is also involved, even though we may not support it, applications like Figma and Penpot have the ability to represent component code in CSS terms that others can read. In addition to these tokens, we create a series of foundational tokens where we declare our colors, typography, shadow levels and composition, blur levels, etc. Everything that users would need to see on the screen.

Ok, But What About the Graphics You Keep Showing?

During the first part of creating a design system, we noticed something pretty meaningful. Breeze and other previous themes, while they work, they don’t have any reflection in a design system. Therefore, designers have a hard time completing the puzzle for a good design system that accounts for Breeze. With any attempt, we would be completing so much of a missing puzzle that we would create something new anyway, just to replicate a style in Penpot, for example.

Because of this, we decided to create a new style called Ocean and any style is composed of many parts, listed above.

Because of this, we created:

  • Ocean Icons (In progress)
  • Ocean Plasma Style (Complete in Penpot)
  • Ocean Font (In progress)
  • Ocean Style (Complete in Penpot)
  • Ocean Color Scheme (Complete-ish, needs more testing)

And one little important detail, it doesn’t matter so much how Ocean style looks. Why?

Because through a design system for graphic designers, we have the ability to distribute our system for free to anyone that wants to use it. Graphic designers can tweak the design tokens that Plasma can understand and by doing that, they can more easily build a Plasma Style on their own in a way that is cohesive, thoughtful, complete. We then give those elements to the developer team that would help us execute the design. Hence why I say that Ocean is a design platform.

Still, we created a new style in graphical form and we are working with the developer team to execute this style, using the design system tokens and components, in the same way that the designer intended.

Our current focus is on icons, particularly application icons. This is just one of the many parts that compose Ocean design. A few months ago we completed a round of design that created monochrome Ocean icons. These icons are functional in nature and much easier to put together. However, we knew that app icons take longer because they are colorful and require lots of time and styling.

Icons

My recent posts showcase the progress on these icons. To be more clear about how we are doing this icon design element, here is a process:

  1. Formalize the visual system
    1. Define strict rules for perspective, lighting, shadows, gloss, depth, materials, and color usage so all icons feel like one coherent family.
  2. Strengthen semantic readability
    1. Ensure each icon immediately communicates the app’s purpose, especially at small sizes. Avoid abstraction that weakens recognition.
  3. Improve visual hierarchy
    1. Reduce competing elements and make each icon have one clear focal point with cleaner foreground/background separation.
  4. Tighten color discipline
    1. Use fewer competing colors, control saturation more carefully, and keep palettes more consistent across the set.
  5. Be more selective with stylistic quirks
    1. Avoid asymmetry, misalignment, or unusual perspectives unless they clearly improve recognition or composition.
  6. Standardize depth and rendering behavior
    1. Keep extrusion, internal shadows, dimensionality, and lighting logic consistent across all icons.
  7. Shift from per-icon experimentation to system-level art direction
    1. Prioritize cohesion and consistency over making every icon individually novel or visually surprising.

…and we are in step 3 of the process for these icons. We are moving them from rough mockups and sketches into more formalized shapes. At this stage, you should not expect a lot of color or shape cohesion. After this pass comes a time of definition. We restrict our colors even more, simplify shapes for impact, remove or redo icons, etc. It’s a major review. We expect to do this along with the community.

We also decided to not create icons for third parties. This makes the amount of app icons to make much smaller. This also makes it easier to think about what our icons should look like going forward.

All in all, Ocean is a platform composed of many parts. Our current design focus is set on completing the icon pack while the rest of the style is preparing for development.

I hope this makes it easier to understand and I am happy to answer any questions.

Joe Bloggs sat himself in front of his brand new laptop, pressed the On button and waited.
BERJAYA

Welcome to another edition of “This month in KDE Linux” — KDE’s in-progress operating system.

Infrastructure

This month we completed a major infrastructure project. Previously, our build process was generating Arch packages for KDE software and having mkosi install them; Hadi Chokr ported this to use KDE’s kde-builder tool to compile all KDE software directly. This change brings three benefits:

  • Better alignment with how developers compile KDE software themselves.
  • Improves distro-agnosticism, so we can more easily get non-KDE software from a different source in the future should the need arise.
  • Substantially faster by using a more effective caching system.

QA & testing

Another major focus this month was on improving KDE Linux’s automatic QA story. The project already has a basic “does it boot to the desktop?” test for every build, but we can do much better.

To that effect, Bhushan Shah and Thomas Duckworth worked on finishing up the OpenQA-based testing system prototyped by Kangwei Zhu last year. Once fully integrated, this promises to hugely improve our ability to catch bad builds before they’re released, and we can update it over time to catch even more failure conditions.

Harald Sitter also added a test using the existing system to make sure we don’t ship an image with broken file capabilities. We did ship one bad build that includes a regression here, so this new test ensures that it won’t happen again.

Security

After multiple security issues were discovered in the upstream Linux kernel last month, a few of us (Adrian Vovk, Hadi Chokr, and I) did a mini-audit of insecure and unused software included in KDE Linux. This resulted in a variety of positive changes:

Pre-installed apps

I implemented a service to install any new pre-installed Flatpak apps on people’s existing systems. It ignores any apps you’ve previously uninstalled manually.

Speaking of new Flatpak apps, I replaced KWalletManager and its configuration page in System Settings with the new KeepSecret app, packaged using Flatpak.

I also updated Ark’s nightly Flatpak packaging to include 7-zip support and generally synchronize it with the Flathub version.

Documentation

I migrated the project’s website and documentation to https://linux.kde.org, where everything lives now. I also added a few more pages.

Grab bag

Hadi Chokr set up /opt/local for being a supported location for installing compiled binaries. This is because the usual /usr/local location is read-only on KDE Linux. This is now documented here.

João Pedro Silva Sousa fixed a bug that could make installation fail if there happened to be two KDE Linux live USB disks plugged in at once.


And that wraps up May! There’s still lots to do, so if you’re a fan of the project, please help out:

This is my first weekly update as a Google Summer of Code 2026 student working with KDE on Kdenlive.

My project is "Improving Effect Widgets for Kdenlive." The first widget I'm working on is the Curves Widget, specifically adding per-channel tab support to the avfilter.curves effect.


The problem: Kdenlive's current Curves effect uses a dropdown to switch between channels (R, G, B). Switching channels wipes the previous curve there's no memory per channel. So if you tune the red channel and switch to green, your red curve is gone. You'd have to stack multiple instances of the effect to adjust more than one channel.

The fix: replace the dropdown with tabs (All, R, G, B), each storing its own curve independently, all serialized together into avfilter.curves format.


This week I went from zero code to functional tabs in Kdenlive.

What went in:

  • Added m_channelData (std::map<CurveModes, QString>) to store per-channel curve state and m_tabBar (QTabBar) to CurveParamWidget
  • Implemented slotTabChanged -> saves the current channel's curve before switching, loads the next channel's curve or resets to straight line
  • Implemented serializeAllChannels -> builds the full avfilter.curves format from all channel data
  • Created avfilter_curves.xml -> new effect definition with per-channel parameter support
  • Fixed avfilter.curves being silently excluded from Kdenlive's effects list

R, G, B tabs are working correctly and affecting the video output. The "All" tab (master curve for all channels) is still being worked on.

Week 2 starts tomorrow.

🔗

BERJAYA
Tomaz Canabrava BERJAYA tomaz 00:00 +00:00
Atom

I'm Tomaz Canabrava, a developer with over 20 years of experience with compiled and non compiled languages. Having worked for projects in large and small companies, I have a broad understanding of the software development process.

My strong focus is in Rust, a systems programming language that I use to build high performance, reliable software. My previous focus was in C++ with Qt.

You can see the work I do on my GitHub, and at KDE

Back in March at FOSSASIA in Bangkok, I got invited to visit the OpenKylin team in Shanghai. I mentioned it briefly at the end of that report, and here we are — the follow-up post.

Saturday, 30 May 2026

So... progress continues on Oxygen 🙂

Over the last few weeks me and Pravin Kumar have been filling in some of the gaps in the icon set. There are still quite a few missing icons around the place, but slowly Oxygen is becoming a bit more complete again.

BERJAYA

Its fun revisiting this old project after all these years. Sometimes I find myself looking at old icons wondering what younger me was thinking. Sometimes the answer is "not much"or, the answer is "way too much"..

Either way, Oxygen continues to grow.

Talking about fun...

I've also been spending some time investigating QML styling and themeing. And in this case not because i have immediate plans do this, but mostly because i am curious about what is possible and where the limitations actually are.

One thing I learned over the years is that there is often a large gap between what a toolkit "officially" allows and what a sufficiently stubborn designer can get away with 😉

Some of the ideas are probably completely unreasonable. Some not so much

Which usually means they are worth exploring.

I've been experimenting with possible directions for O² and thinking about how a future visual language could work. And this that im doing now is more of an exploration on the range rgther than what it actualy look slike

Nothing concrete yet.

Mostly experiments.
Questions.
Terrible ideas.
Possibly a few good ones hidden among them.

If things continue to move forward we (via KDAB) probably make a video showing some of these investigations, experiments and concepts. Sometimes its easier to explain visual ideas by showing them instead of writing walls of text about them.

So stay tuned 🙂

BERJAYA

And as always... if you are using Oxygen, thank you.

Its nice seeing that this old project still has a few new stories to tell.

Since the previous report two month ago, Itinerary got support for booking URLs, a newer foundation for its Android packages, and more detailed shared vehicle information.

New Features

Booking URLs

Some public transport services provide booking deep links together with their journey search results. That is, you can directly book the journey you have just searched in Itinerary or KTrip on the provider website, without having to search for the same journey again there. Both apps provide that option when available now.

Screenshot of Itinerary showing a result of a train connection search with a booking action.
Booking link on a train journey.

Infrastructure Work

GBFS v3 support

The handling of shared vehicles in KPublicTransport recevied a rework to properly support the much more detailed modelling of vehicle types in newer GBFS versions. Since the early versions of GBFS this has evolved from a simple enum to a complex type describing all kinds of properties of the available vehicles.

As practically all systems supporting rental vehicles for first/last mile routing (OpenTripPlanner, MOTIS, etc) are based on the GBFS datamodel, being limited to an oversimplified set of fixed types was increasingly getting into the way and prevented using newer features of those backends.

Qt 6.11 upgrade for Android

There has been a long overdue update of the Qt version used for KDE’s Android apps. As noted previously this unfortunately means losing support for Android versions 8 and below. ARM32 builds have been discontinued in the process as well, assuming that devices capable of running Android 9 or higher would also be able to run ARM64 code.

There have also been various other fixes related to the Android platform integration:

  • Notification interaction works properly again.
  • Notification icons are now handled more in line of what Android does.
  • Several issues related to safe area margins (ie. rounded screen corners and display cutouts) in Kirigami haven been fixed.

All of this also benefits all of KDE’s Android apps.

IATA SSIM flight schedules

Air France/KLM published their current flight schedule as open data, in IATA SSIM format. A newly built tool allows to convert that into a GTFS feed that Transitous can then consume, using Wikidata to provide translated airport and airline information.

Flight data isn’t new in Transitous, but this dataset is particularly interesting given its size. It’s not limited to Air France/KLM themselves, but also includes all (?) flights from their partner airlines. In total it’s nearly 400.000 flight patterns to almost 1.000 different airports. That essentially connects all currently disconnected public transport “islands” we have in Transitous.

Screenshot of MOTIS' stop view with flight options from Berlin to Bengaluru displayed.
Flight from BER to BLR.

The good news is that it’s holding up to that without a loss in performance, and door-to-door routing from e.g. Berlin to Tokyo actually works.

However, there’s a couple of reasons this isn’t rolled out yet and only available on the test instance:

  • As with the already existing flight data, connectivity between flights and ground transportation is tricky. I’ve written about this years ago already, applying the same approach helps here as well. Additionally, we get terminal information in the SSIM data in some cases, which further improves this, especially at very large airports.
  • We have no way yet to model check-in times in MOTIS, resulting in unrealistic transfer times from ground transportation to flights. It’s on the roadmap there, and also needed for services like Eurostar, or to model security checks at e.g. the Barcelona Sants station.
  • As a side-effect of that the router also finds clever tricks to bypass minimum transfer times between flights.
  • Inter-terminal transfers don’t seem to work reliably, probably because OSM routing doesn’t yield viable connections there. Unlike for railway stations in many countries, airport internals are unfortunately rarely mapped in detail in OSM yet.

For more details see also the discussion in PR 2090.

Events

Registration for this year’s Open Transport Community Conference in October in Bern, Switzerland, opened a few days ago. That’s as close as it gets to an Itinerary conference. If you are interested in attending better sign up quickly, many tickets were already gone after the first day.

Fixes & Improvements

Travel document extractor

  • Added or improved travel document extractors for Condor and monbus.es.

This has been made possible thanks to your travel document donations!

Public transport data

  • Improved parsing of trip and route names in OpenTripPlanner responses (bug 519906).
  • Adapted to Deutsche Bahn journey query API changes, fixing missing departure and arrival times there.
  • Added support for wheelchair accessibility information from MOTIS.
  • Added support for querying free-floating rental vehicles from Entur.
  • Removed accidental apostrophe in front of flags in the country selector.

All of this also directly benefits KTrip.

Itinerary app

  • Fixed Itinerary showing an empty page when opening a file with it on a fresh installation.
  • Fixed barcode scan mode on Android.
  • Added support for Matrix SSO login.
  • Fixed arrival platform display in journey search results.
  • Show calendar icons/colors when available.
  • Don’t load all reservation data when initializing the grouped statistics model. This improved performance of the first access to the My Data page.
  • Be slightly more clever when to clear seat reservation from alternatives.

How you can help

Feedback and travel document samples are very much welcome, as are all other forms of contributions. Feel free to join us in the KDE Itinerary Matrix channel.

Welcome to a new issue of This Week in Plasma!

This week the team continued getting Plasma 6.7 in great shape for release. So there was lots of focus on bug-fixing and UI polishing.

We’ve released the second beta of Plasma 6.7, jam-packed with the latest fixes. If you can, please install it and test everything! There are many options for doing so.

Notable UI improvements

Plasma 6.7

Made it impossible to accidentally drag a window so far off a screen edge that it couldn’t be moved back. (Vlad Zahorodnii, KDE Bugzilla #495635)

Uninstalling an application now removes it from the history section of all the various launcher widgets. (Christoph Wolk, KDE Bugzilla #437303)

Made auto-hide panels compatible with the “Switch desktop on edge > Always enabled” setting. (Francesco Panarese, KDE Bugzilla #370964)

The Application Launcher’s “All Applications” view now groups apps case-insensitively, so apps whose first letter is lowercase no longer get pushed into their own group. (Christoph Wolk, KDE Bugzilla #501788)

Clarified how the option to create a virtual screen works in the screen chooser dialog. (David Redondo, KDE Bugzilla #517296)

Plasma 6.8

The lock screen now fully respects the timeout value set by PAM on the underlying system, instead of adding its own mandatory delay on top of it. This means on systems with the delay set to 0, you can re-type your password immediately after getting it wrong. (Tobias Fella, plasma-desktop MR #3702 and plasma-workspace MR #322)

The lock screen now notifies you when the “Slow Keys” accessibility feature is turned on, just in case you’re failing to type your password and don’t know why. (Martin Riethmayer, plasma-desktop #3726 and plasma-workspace MR #6626)

Discover’s dialog about a Flatpak app being replaced by another one now reassures you that your data will be automatically transferred, and also warns you that favorites/shortcuts/etc. to the old app will have to be re-made manually. (Nate Graham, discover MR #1342 and discover MR #1343)

Reduced the amount of visual flickering when Discover checks for updates. (Aleix Pol Gonzalez, KDE Bugzilla #513220)

Notable bug fixes

Plasma 6.6.6

Fixed a case where KWin could crash when a monitor was rapidly power-cycled or some of its settings were rapidly changed. (Vlad Zahorodnii, KDE Bugzilla #520145)

Fixed a case where the kactivitymanagerd service could crash in the background. (Marco Martin, KDE Bugzilla #520595)

Fixed a clipboard-related issue that could make XWayland-using apps lag or freeze right after locking the screen. (Vlad Zahorodnii, KDE Bugzilla #520674)

Fixed an issue that could make the large text of the digital clock displayed on the lock and login screens look kind of jagged with certain specific fonts. (Filip Fila, KDE Bugzilla #516314)

Plasma 6.7

Worked around an oddly-specific issue in Qt that could make widgets break when enabled in the System Tray after having previously disabled them and then restarted the computer. (Tobias Fella, KDE Bugzilla #520144)

Worked around an issue with the hardware or firmware on specific laptops that could trigger an infinite stream of keyboard brightness OSDs after closing the lid. (Vitaly Repin, powerdevil MR #632)

Fixed an issue that could make a renamed file on the desktop visually disappear (it still existed, and could be accessed through Dolphin) while multiple Activities were in use, or move to another location when there was only one Activity. (Akseli Lahtinen, KDE Bugzilla #520633 and KDE Bugzilla #511920)

Fixed an issue that made it impossible to use a hardware key to authenticate to an 802.1x-protected network. (Katharina Bogad, KDE Bugzilla #520449)

Fixed an issue that made the Networks widget show the wrong icon for an OVS bridge network. (Ivan Perevalov, KDE Bugzilla #517384)

Fixed an issue that could make Plasma’s built-in remote desktop server lag or freeze when copying certain specific things in certain specific apps. (Paul Hoskinson, KDE Bugzilla #520175)

Fixed an issue that made it impossible to focus the Network Widget’s search field using Ctrl+F. (Akseli Lahtinen, KDE Bugzilla #515280)

Fixed an issue that made the buttons on the fingerprint enrollment dialog get misplaced. (Harald Sitter, KDE Bugzilla #515824)

Fixed an issue with the Breeze theming of GTK apps that made sidebar separator lines turn bright white with dark color schemes. (Levi Leal, KDE Bugzilla #484383)

Plasma 6.8

Fixed two issues that could make KWin crash or fail to evaluate mathematical calculations from the Overview effect. (Alexander Lohnau, KDE Bugzilla #519923 and KDE Bugzilla #483147)

Fixed an issue that made it impossible to open the panel context menu while already in edit mode. (Tobias Fella, libplasma MR #1468)

How you can help

KDE has become important in the world, and your time and contributions have helped us get there. As we grow, we need your support to keep KDE sustainable.

Would you like to help put together this weekly report? Introduce yourself in the Matrix room and join the team!

Beyond that, you can help KDE by directly getting involved in any other projects. Donating time is actually more impactful than donating money. 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; many other opportunities exist.

You can also help out by making a donation! This helps cover operational costs, salaries, travel expenses for contributors, and in general just keeps KDE bringing Free Software to the world.

To get a new Plasma feature or a bug fix mentioned here

Push a commit to the relevant merge request on invent.kde.org.

Marknote 1.6.0 🔗

BERJAYA
Carl Schwan BERJAYA CarlSchwan 00:00 +00:00
RSS

After a few months of development, Marknote 1.6.0 is out!

This release is packed with new features. First of all, sub-folders are finally supported. This allows you to better organize your notes. This feature is still very new and at the moment, we don’t support creating these sub-folders in Marknote and you will need to create them in Dolphin or your preferred file manager. But we are planning to improve this further in future releases. Each notebook now also displays how many notes are stored inside.

 

Another big new change is that the command bar exposed by Marknote, now allows you to search for notes across all your notebooks.

If you feel fancy, we also added an optional background blur effect for the editor similar to what is also available in other KDE apps like NeoChat.

 

Finally, we made it easier to add emojis to your notes by adding emoji completions to the text editor.

 

This release also fixes various minor bugs; contains small refactoring and improves the state of the translations.

Packager section

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