Skip to content

Monday, 25 September 2023

I had the hankering for tinkering the KDE application style. The default style by KDE, Breeze, is pretty nice as is, but there are small things I'd like to modify.

There's Klassy which is quite customizable and fun, but I don't really need all of the settings it has.

Then there's Kvantum which uses SVG files to create a theme, but they don't follow KDE colorschemes. And I dislike working with SVG files.

Both are brilliant for their usecases, but I wanted just Breeze with few changes.

Fork time!

Screenshot Zephyr style in action

So, I did what one has to do, forked Breeze and renamed everything Breeze related to Zephyr. I chose Zephyr because it was synonym for Breeze in Thesaurus lol. Also, it makes sure it's last in the list of the application styles, so people don't accidentally confuse it to Breeze.

Here's link to the repository: https://codeberg.org/akselmo/Zephyr

Installation help is also there, but feel free to make issue and/or merge requests for adding stuff like what packages one has to install for their distro.

Unfortunately due to the massive size of the Breeze Gitlab repo, I didn't want to flood Codeberg with the whole history. So, some of the history got lost. I have mentioned it in the readme file though.

After renaming all the things, the whole thing built and installed surprisingly easily.

I then implemented following:

  • Black outline setting, so the default outline has a black one around it.
    • Why? Idk looks cool. Not really other reason.
    • Yes, it can be disabled.
  • Traffic color icons in window deco
    • I am allergic to Apple but the traffic light concept just makes sense to me.
    • Also can be enabled or disabled
  • Customizable style frame and window deco outline colors
    • You can completely change the frame colors.
    • You can also make them invisible! No outlines, no frames! Fun!
  • Slightly rounder windows and buttons
    • At some point I will make a setting for these too, but now they're applied when the thing is built
  • Fitting Plasma style if you use the defaults Zephyr offers (mostly black outlines)
    • The plasma theme buttons do not match the application style in roundness, yet.
    • I am lazy and avoid working with SVG files as long as I can

Why

For fun! For learning! And I wanted to make something that is super close to Breeze (hell, it is Breeze, just few mods), but still has it's own charm and how I like seeing my desktop.

It also can work as a great test bench for others who want to see if they can modify application style.

Just rename anything Zephyr to YourForkNameHere and have fun. But it's probably better to fork the original Breeze project :)

Also, when making my own things for Breeze, it's nice to just implement them in something similar but different name so I can test the changes for longer period of time. And if I like the changes I can maybe show them to upstream.

In future, I will make it work with Plasma 6 (unless i feel lazy). Probably will have to fork Breeze then again and apply my changes. Hopefully it's not too big of a change.

Also, I will be working on the actual Breeze in future too! I hope to implement separator colors for the Plasma colorscheme, so basically you can change the color of all frames and outlines and whatnot. This kinda helped me to figure how that works as well!

All in all, good project, I keep tinkering with it and it helps me understand the Breeze styling and Qt in general more.

Revontuli and Zephyr

My colorscheme Revontuli works really well together with Zephyr. So, feel free to give them a go!

Thanks for reading as usual!

Sunday, 24 September 2023

On Thursday and Friday evenings, I went to the Matrix Community Summit at C-Base in Berlin with Tobias. It was the occasion to meet a few other Matrix developers particularly the Nheko developer, MTRNord and a few other devs whom I only knew by nickname. It was great even though I could only spend a few hours there. Tobias stayed longer and will be able to blog more about the event.

Photo of the C-Base showing a lot of electronical equipements
Photo of the C-Base showing a lot of electronical equipements

During the weekend, instead of going to the Matrix summit, I participated to the KDE Promo sprint with Paul, Aniqa, Niccolo, Volker, Joseph. Aron also joined us via video call on Saturday. This event was also in Berlin at the KDAB officem which we are very thankful for hosting us.

This sprint was the perfect occasion to move forward with many of our pending tasks. I mainly worked on web-related projects as I tried to work on a few items on my large todo list.

We now have an updated donation page, which includes the new donnorbox widget. Donnorboy is now our preferred way to make recurring donations and recurring donations are vital to the success of KDE. Check it out!

Screenshot of the website KDE.org/community/donations
Screenshot of the website KDE.org/community/donations

With Paul, we also looked at the next KDE For-pages. Two of them are now done and we will publish them in the coming weeks. There are plans for a few more and if you want to get involved there, this is the phabricator task to follow.

I also updated the KDE For Kids with the help of Aniqa. It now features the book Ada & Zangemann from Matthias Kirschner and Sandra Brandstätter that sensibilise kids to Free Software. Let me know if you have other books suggestions for kids around Free Software and KDE that we can include on our websites.

This was only a short version of all the things we did during this sprint, I will let the others blog about what they did. More blog posts will certainly pop up on planet.kde.org soon.

The sprint would have been only possible thanks to the generous donation from our users, so consider making a donation today! Your donation also helps to pay for the cost of hosting conferences, server infrastructure, and maintain KDE software.

Tuesday, 19 September 2023

Qt OPC UA – Data Type Code Generation

The type system of OPC UA permits the creation of complex and nested data types. With the merge of the generic struct decoding and encoding feature, the Qt OPC UA module has greatly improved the comfort of handling such types. But for large projects with lots of custom data types, its QVariant based interface might still feel a bit too complicated.

Continue reading Qt OPC UA – Data Type Code Generation at basysKom GmbH.

Thursday, 14 September 2023

Generic Struct Handling is Coming to Qt OPC UA

OPC UA servers often use structured data types, for example when they are implementing a companion specification or exposing custom structured data types from a PLC program. Up to now, Qt OPC UA was just returning a binary blob when reading such a value and the decoding was left entirely to the user. Since OPC UA 1.04, there is a standardized way for a server to expose the data type description for custom data types. We have extended Qt OPC UA to use this information to make it much easier to encode and decode custom data types. The following article introduces the new API.

Continue reading Generic Struct Handling is Coming to Qt OPC UA at basysKom GmbH.

Sunday, 10 September 2023

Man, I wish politics were boring, but that is never going to happen. The only way a party can improve their popularity is by being seen as different and in some way better, so we will always have parties saying exactly that: That the others are wrong and that they are better.

However, in many cases there is actually a right and a wrong way to engage with a problem, so what will happen if one side wants to become popular with the worse solution? Well, lies, propaganda and disinformation of course!

But all of that shouldn't matter. If you have any opinion at all about what policies are good or bad, you can look up for yourself if a specific party worked for or against you in the past. But who wants to figure that out in their free time, really? I certainly don't, but I did it anyway because various elections in Germany are coming up and some parties have been actively working against what the KDE community stands for:

https://wordsmith.social/felixernst/deutscher-wahlkampf-aus-einer-kde-perspektive (German)

Yes, that article is only in German. I don't really want to translate it because I would need to provide a lot of local background knowledge as context. I am also already annoyed enough by Germany's political landscape that I wouldn't want to spend the time figuring out how to explain it to an international readership with varying backgrounds and severity of disinformation.

In any case, I wish all of you will be able to elect the party that is the least corrupt and whose actions (or lack thereof) are the least likely to kill innocent people. Happy voting!

Saturday, 9 September 2023

Screenshot of version 0.5.4

This release introduces a wide variety of new features and several fixes.

New Animation Features

A script element has been removed to ensure Planet works properly. Please find it in the original post.

One new feature is the overshoot keyframe preset, with this comes the ability to edit the keyframe transition to go beyond the previously imposed limits.

A script element has been removed to ensure Planet works properly. Please find it in the original post.

Added support for "auto orienting" groups and layer, automatically aligning their rotation with the motion path.

Composition Overhaul

This is a major change of how compositions are handled internally, all compositions now share the same attributes and features, without having a "main" composition that dictates how other compositions should behave.

This fixes several minor inconsistencies that were previously caused by this distinction.

Additionally, when saving formats that support a single composition, Glaxnimate will automatically export the active composition, simplifying the exporting process and enhancing overall project management.

File Formats

The main new feature is support for Adobe After Effects Project files (.aep). This allows you to open animations created in AE directly within Glaxnimate.

While not all AE features are supported, most animations should work fine.

There have been several improvements to other file formats as well.

SVG

Now importing a non-animated SVG uses the same duration as the current composition, making it easier to use SVG files as assets.

Support has been added for importing SVG with animated path shapes, as well as animateMotion.

Animations within <defs> now are imported correctly.

Some other import improvements include fixes to group opacity, clip paths, anchor point detection, and detection of the start and end frames (The latter fix also applies to AVD import).

Exporting to SVG has received numerous improvements such as better star shape conversion, miter limit being correctly exported, removing unnecessary stroke shapes, and fixing export of precompositions with stretched time or time offsets.

Lottie

Lottie import has received several improvements as well.

Now Glaxnimate supports loading lottie files with radial gradient highlights, split positions, and auto-oriented layers. Zig zag import has also been improved.

There have also been fixes to dotLottie import, now images and custom metadata are properly supported.

Open / Save Improvements

Along with format support, this release introduces several quality of life improvements to the open / save flow.

Saving a file sets the default export path to the folder the file is saved to, this is to avoid having to select the folder again if you want to export the file into multiple formats.

When possible, backup files are saved in the same directory as the file being edited. Previously backup files were stored exclusively in the glaxnimate data directory, which made them more difficult to access.

Directly opening a static image file sets the animation to 1 second rather than 0.

A new setting has been introduced in the preferences dialog that allows toggling between the system native file dialog and the Qt widgets one.

There have also been improvements in the script API to handle import / export plugins: the new window.choose_option() method shows a dialog to display a selection from a list, and exception from I/O plugins now show in the script console.

More Accurate Animations

Animation rendering has received several fixes. Some files might look slightly different but now the animation appears as intended.

Easing curves for keyframes now offer more accurate timing. Some issues with the rendering of the last frame for layers and hold keyframes have been resolved, also the UI no longer makes frames outside the composition range available for selection.

There have been visual fixes for masks, trim path and offset path modifiers.

Minor Features

RAL Classic Palette

Added support for loading image assets from the web rather than limiting to local files.

Added built-in palettes with RAL and web colors and the palette selector has been improved to accommodate these large palettes.

Holding Ctrl now allows you to snap the transform position handle to the x or y axis for precise adjustments.

Finally some buttons in the advanced page of the trace dialog have been fixed.

Experimental Android APK

There's now an arm64 APK download for Android, providing you with the opportunity to experience Glaxnimate on your mobile device.

This is experimental so not all features might be available and the user interface hasn't been polished yet.

Friday, 8 September 2023

Did a feature you love disappear from your Free Software project of choice? Before kicking up a fuss on Reddit, read this.

Francis 1.0 🔗

Carl Schwan CarlSchwan 08:00 +00:00
RSS

Francis logo
Francis logo

Today is my birthday but it’s also the day Francis got its first release. Francis is a pomodoro app, which was originally developed by Felipe Kinoshita. The Pomodoro Technique is a time management method developed by Francesco Cirillo in the late 1980s. It uses a kitchen timer to break work into intervals, typically 25 minutes in length, separated by short breaks.

Francis screnshot
Francis screnshot

The app is very simple and can be used as inspiration to develop your own Kirigami application.

Get Involved

If you are interested in helping, don’t hesitate to reach out in the Plasma Mobile matrix channel (#plasma-mobile:kde.org) and I will be happy to guide you.

I also regularly post about my progress on many KDE apps on my Mastodon account, so don’t hesitate to follow me there ;)

And in case you missed it, as a member of KDE’s fundraising working group, I need to remind you that KDE e.V., the non-profit behind the KDE community accepts donations.

Packager section

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

Thursday, 7 September 2023

The Qt 6 based KDE Frameworks 6 (KF6) development is ongoing since some time.

Already many things including Plasma and several applications, like Kate, have working KF6 based development versions.

KDE contributors did meet this week online for planning the final release time-frames.

We came up with this current plan:

Frameworks / Plasma/ Gear Release Schedule Plan

Following on from the last Akademy we checked where we were with our development progress in a meeting and settled on the following plan for all 3 major parts:

  • In KDE Gear master will be open for Qt6 code to land for those ready to move. Not all apps need to port.

  • The KDE Gear release will move by 2 months to allow for the extra time needed for testing initial Qt6 changes

  • An Alpha will be made in November (a soft freeze in Plasma terms)

  • Betas/RCs will be made throughout December and January (3 releases, 3 weeks apart)

  • Final release of all 3 major parts in sync in February

Due to the delay of KDE Gear by an additional patch release of 23.08 will be made.

This is still up for discussion, but if no objections come up, we will see a triple release of a first stable KF6, KF6 based Plasma and KF6 based Gear next February.

There is still a lot to do, help is welcome!

Last weekend, I went to Freedom Not Fear 2023 in Brussels. Fnf is an unconference for and by European digital activists. It covers various topics, from the latest terrible European law (Chat Control) to discussing how to get more involved in our democracies.

I usually attend more technical conferences, and it was refreshing to participate in a conference where ethical and political discussions around digital rights were a central topic. It was an occasion to meet people from different backgrounds, from a Dutch politician (and self-proclaimed student for life), to a member of various organizations (e.g. Edri, NlNet, epicenter.works, Chatons, …) and journalists from Netzpolitik.

Encryption is Love, Encryption is democracy, Encryption is Safety
Encryption is Love, Encryption is democracy, Encryption is Safety

On Friday evening, aside from the welcome talk, we had a presentation from the European Data Protection Supervisor (Wojciech Wiewiórowski) about their work on deploying a Mastodon instance for the EU institutions and how the lack of subscribers makes it hard to justify continuing investing in it.

The presentation is on Peertube if someone wants to watch it.

Picture of Wojciech Wiewiórowski presenting his talk
Picture of Wojciech Wiewiórowski presenting his talk

During the weekend, we had an unconference-style conference where everyone could create a topic of discussion and present their work interactively. This worked very well.

Board with all the discussion topics
Board with all the discussion topics

Many participants were using Linux (and often with Plasma), but others were unaware of KDE. So I did a small lighting talk about the KDE community and presented a few utilities we create: Plasma, GCompris, Labplot, Krita, Merkuro and Itinerary. Time was limited, so I couldn’t show everything we were doing, but I hope this small list of software shows that we are covering many different types of software.

I prepared my slides the day before, as I saw some slots for lightning talks were still available, and the new KDE For pages were of great help. But it makes sense to have some slides provided by KDE Promo, which can then be reused and modified depending on the audience. I’ll bring up the idea at the next KDE Promo sprint in 2 weeks.

Aside from the weekend, which was packed with discussion, we went on Monday to the European Parlament and had a small presentation about how the European Parlament works. We also had the opportunity to ask Patrick Breyer from the German Pirate Party questions.

Picture of Carl Schwan in front of the European Parlament and a sign “Democraty in Action”
Picture of Carl Schwan in front of the European Parlament and a sign “Democraty in Action”

Picture of the European Parlament
Picture of the European Parlament

I enjoyed this conference and thank the organizers and Digital Courage for organizing this event and the two MEPs for using some of their travel allowance to bring many people to Brussels.

Group photo with most of the participants
Group photo with most of the participants