Skip to content

Saturday, 16 March 2024

Getting the KDE Mega Relase 6 out was a key milestone in the transition to Qt 6 and KDE Frameworks 6, but it doesn’t mean we are done yet. There’s still components to port and scaffolding to remove.

Porting remaining applications

While KDE Frameworks and Plasma switched completly to Qt 6 with the release, there’s still a number of components in KDE Gear using Qt 5 by default. The following modules still need work:

  • Artikulate
  • Cantor (MR)
  • Kalzium - has Qt6 CI already
  • Kig
  • KmPlot - has Qt6 CI already
  • KTouch (MR)
  • Marble (branch)
  • Minuet - has Qt6 CI already
  • Rocs (QtScript porting MR)
  • Step - has Qt6 CI already
  • KolourPaint (MR)
  • K3b - has Qt6 CI already
  • KMix
  • Kwave
  • Cervisia - partially ported
  • Lokalize (MR)
  • poxml
  • Umbrello
  • KDevelop (MR)
  • KRDC - has Qt6 CI already
  • KImageMap Editor - has partial Qt6 CI already
  • Kamoso
  • Kirigami Gallery (branch)
  • Calindori - CI is Qt6 only but default build is still Qt5?
  • ghostwriter - has Qt6 CI already

This list doesn’t include modules that are basically ported but cannot switch yet due to other things depending on them, ie. there is more than those not released for KF6 yet. Same goes for modules providing plugins that are still needed for both versions.

The complexity of the remaining work here ranges from putting on finishing touches and taking the decision to make the switch all the way to dealing with potentially difficult to port dependencies such as QtScript. So there’s something for everyone here ;)

And then there’s of course even more outside of the KDE Gear release automation that also needs to be looked at, Krita for example recently posted their plans for the migration to Qt 6.

Cleaning up porting aids

But even in the modules released exclusively for Qt6 and KF6 already there is still work to be done, namely removing the remaining uses of porting aids such as Qt5Compat.

While the need for this might not seem that pressing anymore there’s many good reasons for doing this sooner rather than later:

  • We have many people around still familiar with how to do that and its potential pitfalls. That knowledge tends to fade away over time.
  • We pay extra in download, storage and runtime cost for carrying around those dependencies. That matters especially for bundled apps, e.g. for some of our APKs this lead to a 20% size reduction.
  • Future-us will hate us for not doing this, in the same way as we were unhappy about past-us not having cleaned up after themselves during the 4 -> 5 migration.

QtCore5Compat

On the C++ side that’s basically QRegExp, QTextCodec and the SAX XML parsing API.

QTextCodec:

  • Uses for small chunks of UTF-8, Latin-1 or local 8 bit encoded strings can be replaced by QString API (not that common).
  • Use for larger amounts of data or different codecs can be replaced by QStringEncoder and QStringDecoder (the most common case).
  • Uses for listing all codecs needs new API in Qt 6.7 and cannot be replaced just yet (rare).
  • Uses in combination of QTextStream for non-Unicode content have no replacement (fortunately very rare by now).

QRegExp:

  • Fully replaceable by QRegularExpression.
  • Wildcard and exact match support might need changes to the actual expressions, either manually or via corresponding QRegularExpression helper methods (somewhat common by now as most easy case have long been converted).

Things get a bit more tricky for both of those when these types are used in API and thus propagate through larger parts of the code, but fortunately we only have a few of those cases left. The vast majority of uses is very localized.

SAX XML parser:

  • Replaceable by QXmlStreamReader.
  • Can require larger code changes and needs extra care when dealing with XML namespaces.
  • Fortunately rare by now.

Qt5Comapt.GraphicalEffects QML module

The other big part of Qt5Compat are about 25 graphical effects for QML.

  • DropShadow and RectangularGlow can in many cases be replaced by Kirigami.ShadowedRectangle, which is probably the most common case here. MultiEffect covers the rest, ie. shadows on anything else than (rounded) rectangles.
  • LinearGradient in any other orientation than vertical needs a nested and rotated `Rectangle` now to hold the gradient, see e.g. Kirigami.EdgeShadow for an example in horizontal or vertical orientation can be replaced by a Rectangle with associated Gradient (few cases left).
  • For anything else you have to hope that the Qt6 MultiEffect provides a suitable replacement. For the most common cases (blur and opacity masks) that’s the case fortunately, for more exotic effects you might need to get creative.

Plasma5Support

Qt5Compat isn’t the only porting aid though. Plasma5Support is another one to look at, with still hundreds of uses left just within KDE code.

Plasma5Support contains some of the former Plasma Framework functionality, such as the data engines. I have no experience porting away from that myself though, maybe the Plasma team can provide some guidance for that :)

You can help!

In particular removing the remaining porting aid uses in many cases doesn’t need in-depth knowledge of the affected applications but consists of separate and localized changes, so it’s the ideal side-task while waiting for longer compile runs for example.

LXR is a very useful tool for finding the remaining uses and the KDE Development channel on Matrix is the place to ask if you need help. Among my merge requests from the past two weeks you’ll also find 30+ examples for such changes.

Friday, 15 March 2024

Let’s go for my web review for the week 2024-11.


The Getty Makes Nearly 88,000 Art Images Free to Use However You Like | Open Culture

Tags: foss, culture, art

This is a big and relevant release for open and freely accessible culture.

https://www.openculture.com/2024/03/the-getty-makes-nearly-88000-art-images-free-to-use-however-you-like.html


Announcing Speedometer 3.0: A Shared Browser Benchmark for Web Application Responsiveness

Tags: tech, browser, frontend, web, performance, benchmarking

This is nice to see a new benchmark being published. This seems to follow real life scenarios. We can expect browser engines performance to increase.

https://browserbench.org/announcements/speedometer3/


Rebuilding FourSquare for ActivityPub using OpenStreetMap – Terence Eden’s Blog

Tags: tech, fediverse, map, geospatial

Neat early experiments on query OSM for nearest potential point of interests and of geolocation support in ActivityPub implementations.

https://shkspr.mobi/blog/2024/01/rebuilding-foursquare-for-activitypub-using-openstreetmap/


S3 is files, but not a filesystem

Tags: tech, cloud, storage, amazon

A good explanation of the S3 pros and cons.

https://calpaterson.com/s3.html


Not so quickly extending QUIC

Tags: tech, networking, protocols, standard, quic

Interesting stuff coming in that space, but at a very slow pace. This is unfortunate since it makes adoption slower too.

https://lwn.net/Articles/964377/


Cloning a laptop over NVME TCP

Tags: tech, storage, networking

Very interesting trick! I didn’t know you could use NVME over TCP. This is indeed perfect for cloning a laptop. This sounds slow but this is the kind of things you can run over night.

https://copyninja.in/blog/clone_laptop_nvmet.html


How HEAD works in git

Tags: tech, tools, git, version-control

Good explanations on how HEAD works in git and what it means. It’s indeed one of those terms where the consistency isn’t great in git.

https://jvns.ca/blog/2024/03/08/how-head-works-in-git/


A TUI Git client inspired by Magit

Tags: tech, git, command-line

Looks like an interesting Git user interface. I’ll take it out for a spin.

https://github.com/altsem/gitu


C++ safety, in context – Sutter’s Mill

Tags: tech, c++, memory, safety

Excellent piece from Herb Sutter once again. This is a very well balanced view about language safety and how far C++ could go in this direction. This is a nice call to action, would like to see quite some of that happen.

https://herbsutter.com/2024/03/11/safety-in-context/


A Tale of Two Standards

Tags: tech, standard, portability, unix, linux, posix, windows, history

An old article, but a fascinating read. This gives a good account on the evolution of POSIX and Win32. The differences in design and approaches are covered. Very much recommended.

https://www.samba.org/samba/news/articles/low_point/tale_two_stds_os2.html


Screen Space Reflection

Tags: tech, 3d, shader

Interesting walk through of a shader to compute reflections in a scene.

https://zznewclear13.github.io/posts/screen-space-reflection-en/


My favourite animation trick: exponential smoothing | lisyarus blog

Tags: tech, graphics, animation

A deep dive in the properties of exponential smoothing for animations. It’s often overlooked.

https://lisyarus.github.io/blog/programming/2023/02/21/exponential-smoothing.html


cohost! - “Rotation with three shears”

Tags: tech, graphics, history

Fascinating trick in 2d graphics. Not really useful nowadays, but interesting.

https://cohost.org/tomforsyth/post/891823-rotation-with-three


What Mob Programming is Bad At • Buttondown

Tags: tech, optimization, pairing, mob-programming

Interesting take and theory about pair and mob programming. Indeed finding the right path to optimize a piece of code is likely harder in such setups.

https://buttondown.email/hillelwayne/archive/what-mob-programming-is-bad-at/


40 years of programming

Tags: tech, craftsmanship, career

Very interesting insights from someone who’s been practicing this trade for a long time. I agree with most of it, it’s inspiring.

https://liw.fi/40/


On The Importance of Getting The Foundations Right - Cybernetist

Tags: tech, engineering, craftsmanship, architecture

Definitely this. The difference between a well performing team and one delivering subpar software is the basics of our trade. Minding your data models, your architectures and the engineering practices will get you a long way.

https://cybernetist.com/2024/03/11/importance-of-getting-the-foundations-right/


Work on tasks, not stories | nicole@web

Tags: tech, project-management, agile

Definitely this. The distinction between stories and tasks is an important one. Don’t confuse them.

https://ntietz.com/blog/work-on-tasks-not-stories/


Breaking Down Tasks - Jacob Kaplan-Moss

Tags: tech, project-management, estimates

This is indeed an important aspect of estimating work. The smaller you manage to break down tasks the easier it will be to estimate. Breaking down work is a skill in itself though.

https://jacobian.org/2024/mar/11/breaking-down-tasks/


Futility of Shortening Iterations | by Aviv Ben-Yosef | Mar, 2024 | Medium

Tags: tech, product-management, project-management

There’s some truth to this. Shorter optimized iterations with no good learning opportunities lead to busy work.

https://avivby.medium.com/futility-of-shortening-iterations-af4d3a3d9b3d


So you’ve been reorg’d… - Jacob Kaplan-Moss

Tags: management, organization

A bit US centric at times, but there are some more generally applicable advices in this piece. This can help you navigate in the time of a company reorganization (not always called out as such).

https://jacobian.org/2024/mar/12/reorg/



Bye for now!

Qt 6.7 introduces convenience improvements for implementing typical RESTful/HTTP client applications. The goal was/is to reduce the repeating networking boilerplate code by up to 40% by addressing the small but systematically repeating needs in a more convenient way. 

These include a new QHttpHeaders class for representing HTTP headers, QNetworkRequestFactory for creating API-specific requests,  QRestAccessManager class for addressing small but often-repeating pieces of code, and QRestReply class for extracting the data from replies and checking for errors. QNetworkRequestFactory, QRestAccessManager, and QRestReply are released as Technical Previews in Qt 6.7.

This blog will be used by the Release Team for communally maintained projects which need a release announcement.

KDE Frameworks, Plasma and KDE Gear will remain on kde.org. But individual releases of apps and libraries which get their own releases can be announced here.

Thursday, 14 March 2024

In today’s pervasively digital landscape, building software for a single platform is a 1990s approach. Modern applications, even those designed for specific embedded targets, must be adaptable enough to run seamlessly across various platforms without sacrificing efficiency or reliability.

This is often easier said than done. Here are some key points to consider when developing and testing multi-platform embedded software.

Emulation and virtual machines

When developing software, especially in the initial stages, testing and debugging often don’t happen on the final hardware but on development machines. That, and a frequent lack of target hardware means it’s a good idea to produce a build that can run within a virtual machine or container. Dedicating time and effort in developing custom hardware emulation layers and specialized build images pay off by enabling anyone in the test or development team to run a virtualized version of the final product.

Multi-board variants

Many product lines offer multiple hardware variants, with differing screen sizes and capabilities. Depending on the severity of the differences, these variants might require dedicated builds, potentially extending the time and resources devoted to your project. To avoid proliferating build configurations, consider enabling the software to auto-adapt to its hardware environment, provided it can be done reliably and without too much effort.

Mobile companion apps

Does your embedded product need to interface with a companion mobile app? These apps often handle remote configuration, reporting, and user profiles, enhancing product functionality and user experience. If so, consider using a cross-platform tool kit or framework to build your software. These allow you to share your business logic and UI components between iOS, Android, and your embedded platform. You can choose to reuse UI components in a stripped-down version of your application written specifically for mobile, or write the application once and have it adjust its behavior depending on the screen size and other hardware differences.

Strategies for multi-platform development

The key to successful multi-platform development is striking a balance between efficiency and coverage. Here are some strategies to consider.

Cross-compilation decisions

When dealing with multiple platforms, decide if it’s necessary to cross-compile for every platform with each commit. While this ensures up-to-date software for all variants, it can significantly extend the length of the build cycle. Consider reserving certain platforms for daily or less frequent builds to maintain a balance between speed and thoroughness.

Build system setup

Establish a robust build system with dedicated build computers, well-defined build scripts, and effective notification systems. Assign one person to oversee the build system and infrastructure to ensure its reliability and maintenance.

Embrace continuous integration (CI)

Transitioning from a traditional build approach to a continuous integration (CI) system is beneficial in the long run, especially when you’re managing multiple platforms. However CI demands automated builds, comprehensive unit testing, and automated test scripts. Despite this up-front investment, CI pays off by reducing bugs, enhancing release reliability, and speeding up maintenance changes.

Comprehensive testing

As much as possible, incorporate the “hard” testing bits into your automated testing/CI process – in other words, integration and user interface testing. These tests, while more complex to set up, significantly contribute to the robustness of your software. What works flawlessly in an emulated desktop environment may behave differently on the actual hardware, so ensure your testing procedures also include hardware target testing.

Building multi-platform with quality

Developing and testing software for multiple platforms requires a commitment to maintaining quality. For additional insights into ensuring your software’s versatility, reliability, and efficiency across all target platforms, read our best practices guide on Designing Your First Embedded Device: The Development Environment.

 

If you want to learn more about embedded Linux, come talk to us at Embedded World 2024 (9th-11th April) in Nürnberg: KDAB at EW24.

About KDAB

If you like this article and want to read similar material, consider subscribing via our RSS feed.

Subscribe to KDAB TV for similar informative short video content.

KDAB provides market leading software consulting and development services and training in Qt, C++ and 3D/OpenGL. Contact us.

The post Streamlining Multi-platform Development and Testing appeared first on KDAB.

It's 2024 already, and even already March. Like last year, we had a video call with all sponsored developers, artists and volunteers to discuss what we achieved last year, figure out the biggest issues we're facing and set the priorities for this year.

Challenges

A very serious issue is that the maintainer of the Android and ChromeOS port of Krita has become too busy to work on Krita full-time. The Android and ChromeOS versions of Krita both use the Android platform, and that platform changes often and arbitrarily. This means that Sharaf has spent almost all of his time keeping Krita running on Android (and ChromeOS), instead of, as we had planned, work on a dedicated tablet user interface for Krita on Android. And since that maintenance work now is not being done, we're having a really big problem there. Additionally, since KDE has retired the binary factory and moved binary builds to invent.kde.org's continuous integration system, we don't have automatic builds for Android anymore.

We've also lost another sponsored developer. They were sick for quite some time, but recently they blogged they had started to work a different job. Since they were especially working on maintaining the libraries Krita is dependent on and were very good at upstreaming fixes, they will also really be missed.

Finally, we got Krita into the Apple MacOS store last year. However, two years ago, Krita's maintainer, that's me, changed her legal name. Now the certificates needed to sign the package for the store have expired, and we needed to create new certificates. Those have to have the signer's current legal name, and for some reason, it's proving really hard get the store to allow that the same developer, with the same ID and code but a different legal name to upload packages. We're working on that.

What We Did Last Year

Of course, we released Krita 5.2 and two bugfix releases for Krita 5.2. We'll do at least one other bugfix release before we release Krita 5.3.

The audio system for Krita's animation feature got completely overhauled, ported away from Qt's QtMultimedia system to MLT, The storyboard feature got improved a lot, we gained JPEG-XL support just in time for Google's Chrome team to decide to drop it, because there was nobody supporting it... We also refactored the system we use to build all dependent libraries on all platforms. Well, work on MacOS is still going on, with PyQt being a problem point. Of course, there were a lot of other things going on as well.

Wolthera started rewriting the text object, and mostly finished that and now is working on the tool to actually write, modify and typeset text. This is a huge change with very impressive results!

What We Hope To Do This Year

Parts of this list is from last year, part of it is new.

One big caveat: now that the KDE project has released the first version of KDE Frameworks for Qt6, porting Krita to Qt6 is going to have to happen. This is a big project, not just because of disappearing functions, but very much because of the changes to the support for GPU rendering. On Windows, OpenGL drivers are pretty buggy, and because of that, Qt5 offered the possibility to use the Angle compatibility layer between applications that use OpenGL and the native Direct3D library for GPU rendering. That's gone, and unless we rewrite our GPU rendering system, we need to put Angle back into the stack.

All in all, it's pretty likely that porting to Qt6 will take a lot of time away from us implementing fun new features. But when that is done we can start working on a tablet-friendly user interface, provided we can still release Krita for Android.

That's not to say we don't want to implement fun new featurs!

Here's the shortlist:

  • Implement a system to create flexible text balloons and integrate that with the text object so the text flows into the balloons
  • Implement a new layer type, for comic book Frameworks
  • Provide integration with Blender. (This is less urgent, though, since there is a very useful third-party plugin for that already: Blender Layer)
  • Replace the current docker system with something more flexible, and maintained.
  • Implement a system to provide tool presets
  • Create a new user interface for handling palettes
  • Add an animation audio waveform display
  • Add support for animation reference frame workflow.

We also discussed using the GPU for improving performance. One original idea was to use the GPU for brushes, but the artists argued that the brush performance is fine, and what's way too slow are the liquefy transform tool, transform masks and some filters. In the end, Dmitry decided to investigate

  • optimizing transform masks on the GPU

And there's the most controversial thing of all: should we add AI features to Krita? We have had several heated discussions amongst developers and artists on the mailing list and on invent.kde.org.

The artists in the meeting argued that generative AI is worthless and would at best lead to bland, repetitive templates, but that assistive AI could be useful. In order to figure out whether that's true, we started investigating one particular project: AI-assisted inking of sketches. This is useful, could replace a tedious step when doing art while still retaining the artistic individuality. Whether it will actually make it to Krita is uncertain of course, but the investigation will hopefully help us understand better the issue, the possibilities and the problems.

Note: we won't be implementing anything that uses models trained on scraped images and we will make sure that the carbon footprint of the feature doesn't exceed its usefulness.

Monday, 11 March 2024

The team is thrilled to introduce the much-anticipated release of Kdenlive 24.02, featuring a substantial upgrade to our frameworks with the adoption of Qt6 and KDE Frameworks 6. This significant under-the-hood transformation establishes a robust foundation, shaping the trajectory of Kdenlive for the next decade. The benefits of this upgrade are particularly noteworthy for Linux users, as improved Wayland support enhances the overall experience. Additionally, users on Windows, MacOS, and Linux will experience a substantial performance boost since Kdenlive now runs natively on DirectX, Metal, and Vulkan respectively, replacing the previous abstraction layer reliance on OpenGL and Angle, resulting in a more efficient and responsive application. This upgrade brings significant changes to packaging, featuring the introduction of a dedicated package for Apple Silicon, the discontinuation of PPA support and an enhanced method for installing the Whisper and Vosk speech-to-text engines.

While a significant effort has been invested in providing a stable user experience in this transition, we want to acknowledge that, like any evolving software, there might be some rough edges. Some known issues include: themes and icons not properly applied in Windows and AppImage, text not properly displayed in clips in the timeline when using Wayland and a crash in the Subtitle Manager under MacOS. Worth noting also is the temporary removal of the audio recording feature pending its migration to Qt6. We appreciate your understanding and encourage you to provide feedback in this release cycle so that we can continue refining and improving Kdenlive. In the upcoming release cycles (24.05 and 24.08), our development efforts will concentrate on stabilizing any remaining issues stemming from this upgrade. We’ll also prioritize short-term tasks outlined in our roadmap, with a specific emphasis on enhancing performance and streamlining the effects workflow.

In terms of performance enhancements, this release introduces optimized RAM usage during the import of clips into the Project Bin. Furthermore, it addresses Nvidia encoding and transcoding issues with recent ffmpeg versions.

To safeguard project integrity, measures have been implemented to prevent corruptions. Projects with non-standard and variable frame rates are not allowed to be created. When rendering a project containing variable frame rate clips, users will receive a warning with the option to transcode these clips, mitigating potential audio-video synchronization issues.

Users can now enjoy the convenience of an automatic update check without an active network connection. Glaxnimate animations now default to the rawr format, replacing Lottie. Furthermore, we’ve introduced an FFv1 render preset to replace the previously non-functional Ut Video. And multiple project archiving issues have been fixed.

Beyond performance and stability we’ve managed to sneak in several nifty quality-of-life and usability improvements, the highlights include:

Subtitles

This release introduces multiple subtitle support, allowing users to conveniently choose the subtitle from a drop-down list in the track header.

 

 

A subtitle manager dialog has been implemented to facilitate the import and export of subtitles.

Now, in the Import Subtitle dialog, you have the option to create a new subtitle instead of replacing the previous one.

Speech-to-Text

The Speech Editor, our text-based editing tool that enables users to add clips to the timeline from selected texts, now includes the option to create new sequences directly from the selected text.

Effects

The initial implementation of the long awaited easing interpolation modes for keyframes has landed. Expected soon are easing types (ease in, ease out and ease in and out) and a graph editor.

 

The Gaussian Blur and Average Blur filters are now keyframable.

Rendering

Added the option to set an interpolation method for scaling operations on rendering.

Quality-of-Life and Usability

Added the option to apply an effect to a group of clips by simply dragging the effect onto any clip within the group.

Conveniently move or delete selected clips within a group using the Alt + Select option.

Added a toggle button to clips with effects to easily enable/disable them directly from the timeline.

Added list of last opened clips in Clip Monitor’s clip name

Added the ability to open the location of the rendered file in the file manager directly from the render queue dialog..

The Document Checker has been completely rewritten following the implementation of sequences. Now, when you open a project, Kdenlive checks if all the clips, proxies, sequences, and effects are loaded correctly. If any errors are spotted, Kdenlive seamlessly sorts them out in the project files, preventing any possible project corruptions

Added the ability to trigger a sound notification when rendering is complete.
Full changelog
  • Fix multitrack view not exiting for some reason on tool switch (Qt6). Commit.
  • Fix qml warnings. Commit.
  • Show blue audio/video usage icons in project Bin for all clip types. Commit. See issue #1816
  • Multiple fixes for downloaded effect templates: broken link in effect info, empty name, cannot edit/delete. Commit.
  • New splash for 24.02. Commit.
  • Subtitles: add session id to tmp files to ensure 2 concurrent versions of a project don’t share the same tmp files. Commit. Fixes bug #481525
  • Fix title clip font’s weight lost between Qt5 and Qt6 projects. Commit.
  • Fix audio thumbnail not updated on replace clip in timeline. Commit. Fixes issue #1828
  • Refactor mouse position in the timeline to fix multiple small bugs. Commit. Fixes bug #480977
  • Subtitle import: disable ok button when no file is selected, only preview the 30 first lines. Commit.
  • Fix wrong clip dropped on timeline when subtitle track is visible. Commit. See bug #481325
  • Fix track name text color on Qt6. Commit.
  • Ensure we don’t mix title clips thumbnails (eg. in duplicated clips). Commit.
  • Fix scopes and titler bg on Win/Mac. Commit.
  • Fix incorrect item text. Commit.
  • Fix extract frame from video (fixes titler background, scopes, etc). Commit.
  • Make AVFilter average and gaussian blur keyframable. Commit.
  • Ensure we always load the latest xml definitions for effects. Commit.
  • Fix composition paste not correctly keeping a_track. Commit.
  • Ensure custom keyboard shortcuts are not deleted on config reset. Commit.
  • Fix crash after changing toolbar config: ensure all factory()->container actions are rebuild. Commit.
  • Try to fix white monitor on undock/fullscreen on Windows / Mac. Commit.
  • Fix sequence copy. Commit. See bug #481064
  • Fix pasting of sequence clips to another document messing clip ids. Commit.
  • Fix python package detection, install in venv. Commit. See issue #1819
  • Another pip fix. Commit.
  • Fix typos in venv pip. Commit.
  • Venv: ensure the python process are correctly started. Commit.
  • Add avfilter dblur xml description to fix param range. Commit.
  • Fix typo. Commit.
  • Correctly ensure pip is installed in venv. Commit.
  • Fix undocked widgets don’t have a title bar to allow moving / re-docking. Commit.
  • Ensure pip is installed inside our venv. Commit.
  • Fix Qt6 dragging clips with subtitle track visible. Commit. Fixes bug #480829
  • Subtitle items don’t have a grouped property – fixes resize bug. Commit. See bug #480383
  • Fix Shift + resize subtitle affecting other clips. Commit.
  • Speech to text : switch to importlib instead of deprecated pkg_resources. Commit.
  • Multi guides export: replace slash and backslash in section names to fix rendering. Commit. Fixes bug #480845
  • Fix moving grouped subtitles can corrupt timeline if doing an invalid move. Commit.
  • Fix sequence corruption on project load. Commit. Fixes bug #480776
  • Fix sort order not correctly restored, store it in project file. Commit. Fixes issue #1817
  • Ensure closed timeline sequences have a transparent background on opening. Commit. Fixes bug #480734
  • Fix Arrow down cannot move to lower track if subtitles track is active. Commit.
  • Enforce refresh on monitor fullscreen switch (fixes incorrectly placed image). Commit.
  • Fix audio lost when replacing clip in timeline with speed change. Commit. Fixes issue #1815
  • Fix duplicated filenames or multiple uses not correctly handled in archiving. Commit. Fixes bug #421567. Fixes bug #456346
  • Fix multiple archiving issues. Commit. Fixes bug #456346
  • Do not hide info message on render start. Commit.
  • Fix Nvidia transcoding. Commit. See issue #1814
  • Fix possible sequence corruption. Commit. Fixes bug #480398
  • Fix sequences folder id not correctly restored on project opening. Commit.
  • Fix duplicate sequence not creating undo entry. Commit. See bug #480398
  • Fix drag clip at beginning of timeline sometimes loses focus. Commit.
  • Fix luma files not correctly checked on document open, resulting in change to luma transitions. Commit. Fixes bug #480343
  • [CD] Run macOS Qt5 only on manual trigger. Commit.
  • Fix group move corrupting undo. Commit. Fixes bug #480348
  • Add FFv1 render preset to replace non working utvideo. Commit.
  • Fix possible crash on layout switch (with Qt in debug mode), fix mixer label overlap. Commit.
  • Hide timeline clip effect button on low zoom. Commit. Fixes issue #1802
  • Fix subtitles not covering transparent zones. Commit. Fixes bug #480350
  • Group resize: don’t allow resizing a clip to length < 1. Commit. Fixes bug #480348
  • Luma fixes: silently autofix luma paths for AppImage projects. Try harder to find matching luma in list, create thumbs in another thread so we don’t block the ui. Commit.
  • Fix crash cutting grouped overlapping subtitles. Don’t allow the cut anymore, add test. Commit. Fixes bug #480316
  • Remove unused var. Commit.
  • Effect stack: don’t show drop marker if drop doesn’t change effect order. Commit.
  • Try to fix crash dragging effect on Mac. Commit.
  • Another try to fix monitor offset on Mac. Commit.
  • Optimize some of the timeline qml code. Commit.
  • Fix DocumentChecker model directly setting items and incorrect call to columnCount() in index causing freeze in Qt6. Commit.
  • Fix clip monitor not updating when clicking in a bin column like date or description. Commit. Fixes bug #480148
  • Ensure we also check “consumer” producers on doc opening (playlist with a different fps). Commit.
  • Fix glaxnimate animation not parsed by documentchecker, resulting in empty animations without warn if file is not found. Commit.
  • Fix NVidia encoding with recent FFmpeg. Commit. See issue #1814
  • Fix clip name offset in timeline for clips with mixes. Commit.
  • Better way to disable building lumas in tests. Commit.
  • Don’t build lumas for tests. Commit.
  • Fix Mac compilation. Commit.
  • Fix data install path on Windows with Qt6. Commit.
  • Fix ridiculously slow recursive search. Commit.
  • Fix start playing at end of timeline. Commit. Fixes bug #479994
  • Try to fix mac monitor vertical offset. Commit.
  • Don’t display useless link when effect category is selected. Commit.
  • Fix save clip zone from timeline adding an extra frame. Commit. Fixes bug #480005
  • Fix clips with mix cannot be cut, add test. Commit. Fixes issue #1809. See bug #479875
  • Fix cmd line rendering. Commit.
  • Windows: fix monitor image vertical offset. Commit.
  • Fix project monitor loop clip. Commit.
  • Add test for recent sequence effect bug. Commit. See bug #479788
  • Fix tests (ensure we don’t try to discard a task twice). Commit.
  • Blacklist MLT Qt5 module when building against Qt6. Commit.
  • Fix monitor offset when zooming back to 1:1. Commit.
  • Fix sequence effects lost. Commit. Fixes bug #479788
  • Avoid white bg label in status bar on startup. Commit.
  • Fix qml warnings. Commit.
  • Fix clicking on clip fade indicator sometimes creating a 2 frames fade instead of defined duration. Commit.
  • Improved fix for center crop issue. Commit.
  • Fix center crop adjust not covering full image. Commit. Fixes bug #464974
  • Fix various Qt6 mouse click issues in monitors. Commit.
  • Disable Movit until it’s stable (should have done that a long time ago). Commit.
  • Fix Qt5 startup crash. Commit.
  • Add time to undo action text. Commit.
  • Fix cannot save list of project files. Commit. Fixes bug #479370
  • Add missing license info. Commit.
  • [Nightly Flatpak] Replace Intel Media SDK by OneVPL Runtime. Commit.
  • [Nightly Flatpak] Fix and update python deps. Commit.
  • [Nightly Flatpak] Switch to Qt6. Commit.
  • Fix editing title clip with a mix can mess up the track. Commit. Fixes bug #478686
  • Use Qt6 by default, fallback to Qt5. Commit.
  • Fix audio mixer cannot enter precise values with keyboard. Commit.
  • [CI] Require tests with Qt6 too. Commit.
  • Add FreeBSD Qt6 CI. Commit.
  • Apply i18n to percent values. Commit.
  • Show GPU in debug info. Commit.
  • Prevent, detect and possibly fix corrupted project files, fix feedback not displayed in project notes. Commit. Fixes issue #1804. See bug #472849
  • [nightly Flatpak] Add patch to fix v4l-utils. Commit.
  • Update copyright to 2024. Commit.
  • [nightly flatpak] fix v4l-utils once more. Commit.
  • [nightly Flatpak] v4l-utils uses meson now. Commit.
  • Don’t crash on first run. Commit.
  • [nightly flatpak] Try to fix v4l-utils. Commit.
  • [nightly flatpak] Cleanup. Commit.
  • Get rid of dropped QtGraphicalEffects. Commit.
  • Fix qml warnings. Commit.
  • Qt6: fix subtitle editing in timeline. Commit.
  • Fix subtitles crashing on project load (incorrectly setting in/out snap points). Commit.
  • Test project’s active timeline is not always the first sequence. Commit.
  • Ensure secondary timelines are added to the project before being loaded. Commit.
  • Ensure autosave is not triggered when project is still loading. Commit.
  • Show GPU name in Wizard. Commit.
  • Avoid converting bin icons to/from QVariant. Commit.
  • [Nightly Flatpak] Update deps. Commit.
  • Fix Qt6 audio / video only clip drag broken from clip monitor. Commit.
  • Fix rubber select incorrectly moving selected items when scrolling the view. Commit.
  • Port away from jobclasses KIO header. Commit.
  • Fix variable name shadowing. Commit.
  • When switching timeline tab without timeline selection, don’t clear effect stack if it was showing a bin clip. Commit.
  • Fix crash pressing del in empty effect stack. Commit.
  • Ensure check for HW accel is also performed if some non essential MLT module is missing. Commit.
  • Fix closed sequences losing properties, add more tests. Commit.
  • Don’t attempt to load timeline sequences more than once. Commit.
  • Fix “Sequence from selection” with single track. Commit.
  • Refactor code for paste. Commit.
  • Fix timeline groups lost after recent commit on project save. Commit.
  • Ensure we always use the correct timeline uuid on some clip operations. Commit.
  • Qt6: fix monitor image vertical offset. Commit.
  • Always keep all timeline models opened. Commit. See bug #478745
  • Add animation: remember last used folder. Commit. See bug #478688
  • Fix KNS KF6 include. Commit.
  • Add missing include. Commit.
  • Refresh effects list after downloading an effect. Commit.
  • Fix crash searching for effect (recent regression). Commit.
  • Fix audio or video only drag of subclips. Commit. Fixes bug #478660
  • Fix editing title clip duration breaks title (recent regression). Commit.
  • Glaxnimate animations: use rawr format instead of Lottie by default. Commit. Fixes bug #478685
  • Effect Stack: remove color icons, fix mouse wheel seeking while scrolling. Commit. See issue #1786
  • Fix timeline focus lost when dropping an effect on a clip. Commit.
  • Disable check for removable devices on Mac. Commit.
  • [CD] Use Qt6 templates instead of custom magic. Commit.
  • Fix type in Purpose KF version check. Commit.
  • Fix dropping lots of clips in Bin can cause freeze on abort. Commit.
  • Right click on a mix now shows a mix menu (allowing deletion). Commit. Fixes bug #442088
  • Don’t add mixes to disabled tracks. Commit. See bug #442088
  • Allow adding a mix without selection. Commit. See bug #442088
  • Fix proxied playlist clips (like stabilized clips) rendered as interlaced. Commit. Fixes bug #476716
  • [CI] Try different approach for macOS signing. Commit.
  • [CI] Signing test, explicitly source env for now. Commit.
  • Camcorder proxies: ensure we have the same count of audio streams and if not, create a new proxy with audio from original clip (Fixes Sony FX6 proxies). Commit.
  • Fix typo. Commit. Fixes issue #1800
  • [CI] Re-enable Flatpak. Commit.
  • [CI] More fixes for the signing test. Commit.
  • [CI] Fixes for the signing test. Commit.
  • [CI] Add macOS signing test. Commit.
  • [CI] Fix pipeline after recent renaming upstream. Commit.
  • Qml warning fixes. Commit.
  • Add subtitle manager to project mneu. Commit.
  • Fix groups tests. Commit.
  • Fix transparency lost on rendering nested sequences. Commit. Fixes bug #477771
  • Fix guides categories not applied on new document. Commit. Fixes bug #477617
  • Fix selecting several individual items in a group. Commit.
  • Add import/export to subtitle track manager. Commit.
  • Drag & drop of effect now applies to all items in a group. Commit. See issue #1327
  • New: select an item in a group with Alt+click. You can then perform operations on that clip only: delete, move. Commit. See issue #1327
  • Consistency: activating an effect in the effects list now consistently applies to all selected items (Bin or Timeline). Commit.
  • Cleanup assets link to documentation. Commit.
  • Check MLT’s render profiles for missing codecs. Commit. See bug #475029
  • Various fixes for python setup. Commit.
  • Fix Qt6 compilation. Commit.
  • FIx incorreclty placed ifdef. Commit.
  • Start integrating some of the new MLT keyframe types. Commit.
  • Various fixes for python venv install. Commit.
  • Fix missing argument in constructor call. Commit.
  • Fix crash on auto subtitle with subtitle track selected. Commit.
  • Fix python install stuck. Commit.
  • Improve timeline clip effect indicator. Commit. See issue #445
  • Work/multisubtitles. Commit.
  • Fix some issues in clip monitor’s last clip menu. Commit.
  • Various fixes and improved feedback for Python venv, add option to run STT on full project. Commit.
  • Text corrections. Commit.
  • Fix typos. Commit.
  • If users try to render a project containing variable framerate clips, show a warning and propose to transcode these clips. Commit.
  • Fix qml warning (incorrect number of args). Commit.
  • Fix qt6 timeline drag. Commit.
  • Flatpak: Use id instead of app-id. Commit.
  • Fix audio stem export. Commit.
  • Add link to our documentation in the effects/composition info. Commit.
  • Qt6: fix monitor background and a few qml mouse issues. Commit.
  • Rename ObjectType to KdenliveObjectType. Commit.
  • We need to use Objective C++ for MetalVideoWidget. Commit.
  • When pasting clips to another project, disable proxies. Commit. Fixes issue #1785
  • Remove unneeded lambda capture. Commit.
  • Fix monitor display on Windows/Qt6. Commit.
  • Cleanup readme and flatpak nightly manifests. Commit.
  • [Nightly Flatpak] Do not build tests. Commit.
  • Fix tests broken by last commit. Commit.
  • Add list of last opened clips in Clip Monitor’s clip name. Commit.
  • Add Craft Jobs for Qt6. Commit.
  • [CI] Switch to new template include format. Commit.
  • [CI] Add reuse-lint job. Commit.
  • Chore: REUSE linting for compliance. Commit.
  • Don’t check for cache space on every startup. Commit.
  • Don’t allow creating profile with non standard and non integer fps from a clip. Commit. See issue #476754
  • Remove unmaintained changelog file. Commit.
  • Automatically check for updates based on the app version (no network connection at this point). Commit.
  • Fix project duration for cli rendering. Commit.
  • Fix clips with missing proxy incorrectly loaded on project opening. Commit.
  • Fix compilation with KF < 5.100. Commit.
  • Add undo redo to text based edit. Commit.
  • Check and remove circular dependencies in tractors. Commit. Fixes bug #471359
  • Hide resize handle on tiny clips with mix. Commit.
  • Fix minor typos. Commit.
  • Adapt to new KFileWidget API. Commit.
  • Fix mix not always deleted when moving grouped clips on same track. Commit.
  • Fix python venv for Windows. Commit.
  • Fix timeremap. Commit.
  • Fix replace clip keeping audio index from previous clip, sometimes breaking audio. Commit. See bug #476612
  • Create sequence from selection: ensure we have enough audio tracks for AV groups. Commit.
  • Fix timeline duration incorrect after create sequence from timeline selection. Commit.
  • Add a Saving Successful event, so people can easily play a sound or show a popup on save if wanted. Commit. See issue #1767
  • Fix project duration not updating when moving the last clip of a track to another non last position. Commit. See bug #476493
  • Update file kdenlive.notifyrc. Commit.
  • Duplicate .notifyrc file to have both KF5 and KF6 versions. Commit.
  • Don’t lose subtitle styling when switching to another sequence. Commit. Fixes bug #476544
  • Port from deprecated ksmserver calls. Commit.
  • Allow aborting clip import operation. Commit.
  • Ensure no urls are added to file watcher when interruping a load operation. Commit.
  • Fix crash dropping url to Library. Commit.
  • When dropping multiple files in project bin, improve import speed by not checking if every file is on a remote drive. Commit.
  • Fix titler shadow incorrectly pasted on selection. Commit. Fixes bug #476393
  • Sequences folder now has a colored icon and is always displayed on top. Commit.
  • Fix Qt5 compilation. Commit.
  • Fix Qt5 compilation take 3. Commit.
  • Fix Qt5 compilation take 2. Commit.
  • Fix Qt5 compilation. Commit.
  • Fix some Qt6 reported warnings. Commit.
  • Fix pasted effects not adjusted to track length. Commit.
  • Python virtual env: Add config tab in the Environement Settings page, minor fixes for the dependencies checks. Commit.
  • [Qt6] We need to link to d3d on Windows. Commit.
  • Convert license headers to SPDX. Commit.
  • Use pragma once for new monitor code. Commit.
  • Fix Qt6 build on Windows. Commit.
  • Text based edit: add font zooming and option to remove all silence. Commit.
  • Move venv to standard xdg location (.local/share/kdenlive). Commit.
  • Whisper now has word timings. Commit.
  • Use python venv to install modules. Commit.
  • Fix timeline preview ignored in temporary data dialog. Commit. Fixes bug #475980
  • Improve debug output for tests. Commit.
  • Correctly prefix python scripts, show warning on failure to find python. Commit.
  • Qt6 Monitor support. Commit.
  • Speech to text: fix whisper install aborting after 30secs. Commit.
  • Don’t try to generate proxy clips for audio with clipart. Commit.
  • Clip loading: switch to Mlt::Producer probe() instead of fetching frame. Commit.
  • Multiple fixes for time remap losing keyframes. Commit.
  • [CI] Increase per test timeout. Commit.
  • Add secondary color correction xml with renamed alphasp0t effect, fix effectgroup showing incorrect names. Commit.
  • Add png with alpha render profile. Commit. See issue #1605
  • Fix Mix not correctly deleted on group track move. Commit. See issue #1726
  • Cleanup commented code. Commit.
  • Fix setting default values is never executed. Commit.
  • Cleanup param insert and placeholder replacement. Commit.
  • Move render argument creation to a function. Commit.
  • Move project init logic out of renderrequest. Commit.
  • Use projectSceneList() for both cli and gui rendering. Commit.
  • Use active timeline for rendering. Commit.
  • Adapt to KBookmarkManager API change. Commit.
  • Small cleanup. Commit.
  • Properly initialize projectItemModel and bin playlist on render request. Commit.
  • Revert “Properly initialize projectItemModel and bin playlist on render request”. Commit.
  • Fix for renamed frei0r effects. Commit.
  • Fix rendering with alpha. Commit.
  • Rotoscoping: don’t auto add a second kfr at cursor pos when creating the initial shape, don’t auto add keyframes until there are 2 keyframes created. Commit.
  • Fix description –render-async flag. Commit.
  • Fix keyframe param not correctly enabled when selecting a clip. Commit.
  • Fix smooth keyframe path sometimes incorrectly drawn on monitor. Commit.
  • Allow setting the default interpolation method for scaling operations on rendering. Commit. Fixes issue #1766
  • Don’t attempt to replace clip resource if proxy job was not completely finished. Commit. Fixes issue #1768
  • Properly initialize projectItemModel and bin playlist on render request. Commit.
  • Rename render params, don’t load project twice. Commit.
  • Remove accelerator on timeline tab rename. Commit. Fixes issue #1769
  • Print render errors for cli rendering too. Commit.
  • Minor cleanup. Commit.
  • Improve exit code on failure. Commit.
  • [cli rendering] Fix condition for subtitle. Commit.
  • Show documentchecker warning only if relevant. Commit.
  • Fix printing of documentchecker results. Commit.
  • [cli renderer] Ensure x265 params are calculated. Commit.
  • Custom clip job: allow using current clip’s frame as parameter. Commit.
  • Properly adjust timeline clips on sequence resize. Commit.
  • Remove unused debug stuff. Commit.
  • Fix project duration not correctly updated on hide / show track. Commit.
  • Custom clip jobs: handle lut file as task output. Commit.
  • Allow renaming a timeline sequence by double clicking on its tab name. Commit.
  • Fix resize clip with mix test. Commit.
  • Fix resize clip start to frame 0 of timeline not correctly working in some zoom levels,. Commit.
  • Remember Clip Monitor audio thumbnail zoom & position for each clip. Commit.
  • Asset List: ensure favorite are shown using a bold font. Commit.
  • Fix asset list using too much height. Commit.
  • Switch Effects/Compositions list to QWidget. Commit.
  • Drop unused and deprecated qmlmodule QtGraphicalEffects. Commit.
  • Fix warning. Commit.
  • Fix multiple audio streams broken by MLT’s new astream property. Commit. Fixes bug #474895
  • Custom clip jobs: ensure we never use the same output name if several tasks are started on the same job. Commit.
  • Custom clip jobs: ensure script exists and is executable. Commit.
  • Fix dialogs not correctly deleted, e.g. add track dialog, causing crash on exit. Commit.
  • Ensure clips with audio (for exemple playlists) don’t block audio when inserted on video track. Commit.
  • Ensure translations cannot mess with file extensions. Commit.
  • Fix another case blocking separate track move. Commit.
  • Fix grabbed clips cannot be moved on upper track in some cases. Commit.
  • Final blocks for enabling render test suite: add synchronous option to exit only after rendering is finished, add option for render preset (use H264 as default). Commit.
  • Implement #1730 replace audio or video of a bin clip in timeline. Commit.
  • Fix cppwarning. Commit.
  • Fix move clip part of a group on another track not always working. Commit.
  • Fix playlist count not correctly updated, allowing to delete last sequence. Commit. Fixes bug #474988
  • Fix motion-tracker Nano file name and links to the documentation. Commit.
  • Stop installing kdenliveui.rc also as separate file, next to Qt resource. Commit.
  • Library: add action to open a library file in a File manager. Commit.
  • Fix tests and possible corruption in recent mix fix. Commit.
  • Correctly highlight newly dropped files in library. Commit.
  • Fix threading issue crashing in resource widget. Commit. Fixes issue #1612
  • Fix freeze on adding mix. Commit. See issue #1751
  • Make Lift work as expected by most users. Commit. Fixes bug #447948. Fixes bug #436762
  • Fix load task discarding kdenlive settings (caused timeline clips to miss the “proxy” icon. Commit.
  • Fix multiple issues with Lift/Gamma/Gain undo. Commit. Fixes bug #472865. Fixes bug #462406
  • Fix freeze / crash on project opening. Commit.
  • COrrectly update effect stack when switching timeline tab. Commit.
  • Drop timeline guides, in favor of sequence clip markers. Commit.
  • Optimize RAM usage by not storing producers on which we did a get_frame operation. Commit.
  • Fix guide multi-export adding an extra dot to the filename. Commit.
  • Open the recursive search from the project file location. Commit.
  • Inform user about time spent on recursive search. Commit.
  • Allow open contained folder in job queue dialog. Commit.
  • Read input and output from command line. Commit.
  • Correctly process configurable render params. Commit.
  • Fix crash on subclip transcoding. Commit. Fixes issue #1753
  • Fix audio extract for multi stream clips. Commit.
  • Correctly set render params for headless rendering. Commit.
  • Ensure some basic parts are built with headless rendering. Commit.
  • Remove unneeded setting of CMake policies, implied by requiring 3.16. Commit.
  • Fix detection/fixing when several clips in the project use the same file. Commit.
  • Render widget: show warning if there is a missing clip in the project. Commit.
  • DocumentChecker: Enable recursive search for clips with proxy but missing source. Commit.
  • Fix rnnoise effect parameters and category. Commit.
  • Fix minor typo. Commit.
  • Fix zone rendering not remembered when reopening a project. Commit.
  • Add missing test file. Commit.
  • Various document checker fixes: fix display update on status change, allow sorting in dialog, hide recreate proxies if source is not available, add test for missing proxy. Commit.
  • Project Bin: don’t draw icon frame if icon size is null. Commit.
  • Fix clips with empty resource not detected by our documentchecker code. Commit.
  • Fix document checker dialog not enabling ok after removing problematic clips. Commit.
  • Document checker dialog: fix selection, allow multiple selection, limit color background and striked out text to a specific column. Commit.
  • Show fade value on drag. Commit. Fixes issue #1744
  • If copying an archived file fails, show which file failed in user message. Commit.
  • Don’t incorrectly treat disabled proxy (-) as missing. Commit. Fixes issue #1748
  • Fix minor typo. Commit.
  • Fix box_blur xml. Commit.
  • Add new “preserve alpha” option to box blur. Commit.
  • Transcoding: add option to replace clip in project (disabled for timeline sequence clips). Commit. See issue #1747
  • Add notr=”true” for text that should not be translated. Commit.
  • When an MLT playlist proxy is missing, it should be reverted to a producer, not stay in a chain. Commit.
  • Adapt to kbookmarks API change. Commit.
  • Adapt to KNotifcations API change. Commit.
  • Try to auto fix path of LUT files on project opening. Commit.
  • Automatically fix missing fonts (like before). Commit.
  • Remove unused ManageCapturesDialog. Commit.
  • [DCResolverDialog] Improve UI. Commit.
  • Fix recursive search and “use placeholder”. Commit.
  • [REUSE] Remove duplicated entry in dep5. Commit.
  • Chore(REUSE): Further linting. Commit.
  • Chore(REUSE): Add headers in data/effects/update. Commit.
  • Chore(REUSE): Add headers in src/ui. Commit.
  • Chore(REUSE): Add missing licence texts. Commit.
  • Chore(reuse): Add missing IP info. Commit.
  • Chore(REUSE): Add SPDX info to CMakelists.txt files. Commit.
  • Add missing include (fix qt6 build). Commit.
  • Don’t duplicate KF_DEP_VERSION + remove unused REQUIRED_QT_VERSION. Commit.
  • Fix configure qt6. Commit.
  • [ColorWheel] Show real color in slider instead of black and white. Commit. See issue #1405
  • Add QColorUtils::complementary. Commit.
  • Add some accessibility names for testing. Commit.
  • Add option to export guides as FFmpeg chapter file. Commit. See bug #451936
  • [Rendering] Further restructuring. Commit.
  • [DocumentResource] Fix workflow with proxies. Commit.
  • Try to fix tests. Commit.
  • [DocumentChecker] Fix and polish after refactoring. Commit.
  • [DocumentChecker] Refactor code to split logic and UI. Commit.
  • [DocumentChecker] Start to split UI and backend code. Commit.
  • Add our mastodon on apps.kde.org. Commit.
  • Fix typo not installing renderer. Commit.
  • Fix tests. Commit.
  • Delete unused var. Commit.
  • Initial (yet hacky) cli rendering. Commit.

The post Kdenlive 24.02.0 released appeared first on Kdenlive.

Sunday, 10 March 2024

If you have not been following this blog series, I made a wrapper for Firefox to be able to run different tabs (and more) in different KDE Plasma Activities.

Often a hurdle to using a piece of software is that it is not packaged for Linux distros.

Kudos to Aurélien Couderc (coucouf), who packaged already 0.4.1 for Debian and provided the patch to make it easier to package to different distros.

With 0.4.2 version of Activity-aware Firefox we applied that patch. Other then that, the functionality remains the same as in 0.4.1.

Then I also wrote an AUR package, so Arch, EndeavourOS etc. should be covered now too.

As a consequence, Repology now lists 12 distro packages for Activity-aware Firefox – that is a great start!

But while large, Debian- and Arch-based distros are just a subset of all available FOSS operating systems that KDE Plasma and Firefox run on. If someone were to put it on Open Build Service to cover also RPM-based and other distros, that would be a great boon!

Contributions welcome, as I am reaching the limit of my skills here.

hook out → server migration successful – more on that some other day

Saturday, 9 March 2024

The FreeBSD ports tree contains KDE Frameworks 6 and KDE Plasma 6, e.g. x11/plasma6-plasma-desktop, but KDE applications have not updated in particular, and so FreeBSD does not have the “megarelease” on-tap just now.

As for expectations, I think it’s realistic to say that the first minor release, 6.1, is when FreeBSD ports will switch over to the new stuff. For now, it’s the “previous era” in terms of applications. There are a couple of reasons for that, but they can be distilled down to “lack of developer resources”. There’s a couple of things you can do to help, potentially speeding things up.

Hybrid Systems

It is of course possible to run KDE Frameworks 5 applications (e.g. all the applications in the FreeBSD ports tree) in whatever desktop environment you like. Theoretically that includes KDE Plasma 6, so the combination Plasma 6 from x11/plasma6-plasma and KDE applications like graphics/spectacle is fine. But see the notes on co-installability below.

Running the newer desktop now helps with testing.

There’s a couple of things that needs specific testing off the top of my head:

  • Wayland support from KWin. I could never get KWin from Plasma 5 to work in a Wayland session. Since we (“we” as in FreeBSD KDE ports maintainers) did not have the time to seriously sit down with it, it is probably still broken in some mysterious fashion. Running literally any other Wayland session from the ports tree, with KDE applications, is fine.
  • All the KCMs for system configuration. You’ll probably need to install sysutils/plasma6-kde-cli-tools to get at them. Since system configuration is an integrator’s job, there is likely to be a bunch of breakage there.

Use FreeBSD Bugzilla to report issues, but remember to look for duplicates and most importantly, try to solve the problem and submit a patch. Patches go through the ports tree and then generally go upstream, if they are not outrageously hacky.

13 is Bad Luck

KWin is mostly nice code. Modern, too. It uses C++20 standard library features, in particular std::ranges::subrange. With a suitably new gcc, that’s not a problem. With a suitably new clang, not a problem either.

FreeBSD 13.2 has clang 14.0.5 as system compiler. This is not suitably new. While it supports the C++20 language, the standard library is severely lacking in std::ranges. KWin won’t build.

FreeBSD 13.3 has clang 17.0.5 (release announcement mentions it specifically). One of the big things of clang 17 is its improved standard library. This is suitably new. KWin for KDE Plasma 6 builds fine.

13.2 is still a supported release as far as FreeBSD goes, for one more quarter. It won’t get any KDE Plasma 6 though. Users are encouraged to upgrade to 13.3 – that’s fairly reasonable for desktop use. Or upgrade to 14, to be on the branch that has support until the year 2028.

What About KDE Plasma 5

Plasma 5 is hanging around as long as we don’t have a full working Plasma 6, and as long as there are supported releases of FreeBSD that can’t build Plasma 6. That’s about 3 months, assuming there is no big breakage.

And, of course, the ports tree can be switched to whatever snapshot or branch you like, so you can still build today’s ports six months from now.

Co-installability

For testing it would be great to have KDE Plasma 5 and Plasma 6 installed at the same time, so it is easy to switch between the two. Short answer: it ain’t gonna happen.

This just comes down to available developer time. There are things that can be co-installed: KDE Frameworks 5 and Frameworks 6 (most of them, anyway). But once we reach the whole desktop experience, a lot more of the software stack comes into play.

Here are some examples:

  • Infrastructure that provides binaries:
    • signon-qt6-8.61 conflicts with signon-qt5-8.61 on /usr/local/bin/signond . Since it’s a DBus service it is probably compatible and we could depend on either one, doesn’t matter. But that’s not how dependencies are written in FreeBSD packages, so ..
  • KDE Frameworks that provide binaries and XDG files:
    • kf6-kwallet-6.0.0 conflicts with kf5-kwallet-5.115.0_1 on /usr/local/bin/kwallet-query . I don’t know if the wallet format remains compatible, or if the executables are really all that different. I suppose one or both could be renamed, but that is effort that probably needs to be undone in a couple of months (or a decision could be made to version binaries in general, but that is not going to reduce maintenance burden at all).
    • kf6-baloo-6.0.0 conflicts with kf5-baloo-5.115.0 on /usr/local/etc/xdg/autostart/baloo_file.desktop . Could be versioned, again with the question “to what end” – although I think you would want to start the baloo version corresponding to the KDE Plasma version.
  • Plasma Components that provide binaries or system-wide configuration:
    • plasma6-kactivitymanagerd-6.0.0 conflicts with plasma5-kactivitymanagerd-5.27.10 on /usr/local/lib/libexec/kactivitymanagerd . Same kind of versioning question.
    • plasma6-libplasma-6.0.0 conflicts with kf5-plasma-framework-5.115.0_1 on /usr/local/share/plasma/desktoptheme/breeze-dark/colors . This is probably unimportant, and I would guess that the colors are the same.

All of this is fixable by moving things into a different prefix, or moving things around in packaging, but there is limited mileage in thwacking upstream with a hammer to fit it into packaging system limitations.

Takeaway

On FreeBSD 13.3 and higher, with the default ports tree, KDE Plasma 6 is here, but of limited use as a daily-driver desktop. Expect the rest of the KDE Megarelease to land in the coming three months.

KDE Plasma 6 Desktop on FreeBSD inside VirtualBox (click for full size)
KDE Plasma 6 Desktop on FreeBSD inside VirtualBox (click for full size)

The screenshot here is Plasma 6 in 800x600 mode in VirtualBox – not its natural element, but even there I notice some really nice bits of attention-to-detail. Due to co-installability issues, the best applications (from the ports tree) to run in it are, ironically, anything but KDE applications.

With KDE’s Frameworks 6 being released recently, I’ve been working on getting Tellico to compile with it. It didn’t actually take too much work since I’ve been gradually porting away from any deprecated functions in Qt5.

There’s plenty to do to make sure everything is fully functional and has the correct appearance. But I’m hopeful to have a release soon. At the moment, the master branch compiles with either KF5/Qt5 or KF6/Qt6.

Tellico With KF6