Planet KDE

Subscribe to Planet KDE feed Planet KDE
Planet KDE | English
Updated: 21 hours 12 min ago

How to write a QML effect for KWin

Mon, 2024-03-18 02:00

Since the dawn of the times, the only way to implement any effect that has fancy user interface used to be in C++. It would be rather an understatement to say that the C++ API is difficult to use or get it right so there are no glitches. On the other hand, it would be really nice to be able to implement dashboard-like effects while not compromise on code simplicity and maintainability, especially given the rise of popularity of overview effects a few years ago, which indicated that there is demand for such effects.

In order solve that problem, we started looking for some options and the most obvious one was QtQuick. It’s a quite powerful framework and it’s already used extensively in Plasma. So, in Plasma 5.24, we introduced basic support for implementing kwin effects written in QML and even added a new overview effect. Unfortunately, if you wanted to implement a QtQuick-based effect yourself, you would still have to write a bit of C++ glue yourself. This is not great because effects that use C++ are a distribution nightmare. They can’t be just uploaded to the KDE Store and then installed by clicking “Get New Effects…”. Furthermore, libkwin is a fast moving target with lots of ABI and API incompatible changes in every release. That’s not good if you’re an effect developer because it means you will need to invest a bit of time after every plasma release to port the effects to the new APIs or at least rebuild the effects to resolve ABI incompatibilities.

This has been changed in Plasma 6.0.

In Plasma 6, we’ve had the opportunity to address that pesky problem of requiring some C++ code and also improve the declarative effect API after learning some lessons while working on the overview and other effects. So, enough of history and let’s jump to the good stuff, shall we?

Project Structure

Declarative effects require some particular project structure that we need to learn first before writing any code

└── package
├── contents
│   └── ui
│   └── main.qml
└── metadata.json

The package directory is a toplevel directory, it should contain two things: a metadata.json file and a contents directory. The metadata.json file contains information about the name of the effect, what API it uses, the author, etc.

{
"KPackageStructure": "KWin/Effect",
"KPlugin": {
"Authors": [
{
"Email": "user@example.com",
"Name": "Name"
}
],
"Category": "Appearance",
"Description": "Yo",
"EnabledByDefault": false,
"Id": "hello-world",
"License": "MIT",
"Name": "Hello World"
},
"X-KDE-Ordering": 60,
"X-Plasma-API": "declarativescript"
}

The contents directory contains the rest of QML code, config files, assets, etc. Keep in mind that ui/main.qml is a “magical” file, it acts as an entry point, every effect must have it.

In order to install the effect and make it visible in Desktop Effects settings, you will need to run the following command

kpackagetool6 --type KWin/Effect --install package/

This is quite a lot to memorize. That’s why kwin provides an example qtquick effect that you can grab, tweak some metadata and you’re good to go. You can find the example project at https://invent.kde.org/plasma/kwin/-/tree/master/examples/quick-effect?ref_type=heads. Note that the example project also contains a CMakeLists.txt file, which provides an alternative way to install the effect by the means of cmake, i.e. make install or cmake --install builddir.

Hello World

Let’s start with an effect that simply shows a hello world message on the screen:

import QtQuick
import org.kde.kwin

SceneEffect {
id: effect

delegate: Rectangle {
color: "blue"

Text {
anchors.centerIn: parent
color: "white"
text: "Hello world!"
}
}

ScreenEdgeHandler {
enabled: true
edge: ScreenEdgeHandler.TopEdge
onActivated: effect.visible = !effect.visible
}

ShortcutHandler {
name: "Toggle Hello World Effect"
text: "Toggle Hello World Effect"
sequence: "Meta+H"
onActivated: effect.visible = !effect.visible
}

PinchGestureHandler {
direction: PinchGestureHandler.Direction.Contracting
fingerCount: 3
onActivated: effect.visible = !effect.visible
}
}

import QtQuick is needed to use basic QtQuick components such as Rectangle. import org.kde.kwin imports kwin specific components.

The SceneEffect is a special type that every declarative effect must use. Its delegate property specifies the content for every screen. In this case, it’s a blue rectangle with a “Hello World!” label in the center.

The ShortcutHandler is a helper that’s used to register global shortcuts. ShortcutHandler.name is the key of the global shortcut, it’s going to be used to store the shortcut in the config and other similar purposes. ShortcutHandler.text is a human readable description of the global shortcut, it’s going to be visible in the Shortcuts settings.

The ScreenEdgeHandler allows to reserve a screen edge. When the pointer hits that screen edge, some code can be executed by listening to the activated signal.

The PinchGestureHandler and SwipeGestureHandler allow to execute some code when the user makes a pinch or a swipe gesture, respectively.

effect.visible = !effect.visible toggles the visibility of the effect. When effect.visible is true, the effect is active and visible on the screen; otherwise it’s hidden. You need to set effect.visible to true in order to show the effect.

If you press Meta+H or make a pinch gesture or move the pointer to the top screen edge, you’re going to see something like this

Note that there are no windows visible anymore, it is the responsibility of the effect to decide what should be displayed on the screen now.

Displaying Windows

Being able to display text is great, but it’s not useful. Usually, effects need to display some windows, so let’s display the active window

delegate: Rectangle {
color: "blue"

WindowThumbnail {
anchors.centerIn: parent
client: Workspace.activeWindow
}
}

The change is quite simple. Instead of displaying a Text component, there’s a WindowThumbnail component now. The WindowThumbnail type is provided by the org.kde.kwin module. WindowThumbnail.client indicates what window the thumbnail item should display.

Input

Input processing contains no kwin specific APIs. TapHandler, MouseArea, Keys and other stuff available in QtQuick should just work. For example, let’s implement an effect that arranges windows in a grid and if somebody middle clicks a window, it will be closed

delegate: Rectangle {
color: "pink"

GridView {
id: grid
anchors.fill: parent
cellWidth: 300
cellHeight: 300

model: WindowModel {}
delegate: WindowThumbnail {
client: model.window
width: grid.cellWidth
height: grid.cellHeight

TapHandler {
acceptedButtons: Qt.MiddleButton
onTapped: client.closeWindow()
}
}
}
}

The code looks pretty straightforward except maybe the model of the GridView. WindowModel is a helper provided by org.kde.kwin module that lists all the windows. It can be passed to various views, Repeater, and so on.

The result can be seen here

Delegates are Per Screen

One thing to keep in mind is that the delegates are instantiated per screen. For example,

delegate: Rectangle {
color: "yellow"

Text {
anchors.centerIn: parent
color: "black"
text: SceneView.screen.name
}
}

When you activate the effect on a setup with several outputs, each output will be filled with yellow color and the output name in the center

Usually, the output is irrelevant, but if you need to know what output particular delegate is displayed on, you could use the SceneView.screen attached property.

Configuration

As your effect grows, you will probably face the need to provide an option or two. Let’s say that we want the background color in our hello world effect to be configurable. How do we achieve that? The first step, is to add a main.xml file in package/contents/config directory, i.e.

package/
├── contents
│   ├── config
│   │   └── main.xml
│   └── ui
│   └── main.qml
└── metadata.json

The main.xml file lists all options

<?xml version="1.0" encoding="UTF-8"?>
<kcfg xmlns="http://www.kde.org/standards/kcfg/1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.kde.org/standards/kcfg/1.0
http://www.kde.org/standards/kcfg/1.0/kcfg.xsd" >
<kcfgfile name=""/>
<group name="">
<entry name="BackgroundColor" type="Color">
<default>#ff00ff</default>
</entry>
</group>
</kcfg>

In our case, only one option is needed: BackgroundColor, which has Color type and #ff00ff default value. You can refer to the KConfigXT documentation to learn more what other entry types are supported.

The next step is to actually use the BackgroundColor option

delegate: Rectangle {
color: effect.configuration.BackgroundColor

Text {
anchors.centerIn: parent
color: "white"
text: "Hello world!"
}
}

effect.configuration is a map object that contains all the options listed in the main.xml.

Now, if you toggle the hello world effect, you’re going to see

There are a few more thing left to do though. If you navigate to Desktop Effects settings, you’re not going a configure button next to the hello world effect

Besides providing a main.xml file, the effect also needs to provide a config.ui file containing a configuration ui

package/
├── contents
│   ├── config
│   │   └── main.xml
│   └── ui
│   ├── config.ui
│   └── main.qml
└── metadata.json

The config.ui file is a regular Qt Designer UI file. The only special thing about it is that the controls that represent options should have special name format: kcfg_ + OptionName. For example, kcfg_BackgroundColor

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>QuickEffectConfig</class>
<widget class="QWidget" name="QuickEffectConfig">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>455</width>
<height>177</height>
</rect>
</property>
<layout class="QFormLayout" name="formLayout">
<item row="0" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>Background color:</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="KColorButton" name="kcfg_BackgroundColor">
<property name="flat">
<bool>false</bool>
</property>
</widget>
</item>
</layout>
</widget>
<customwidgets>
<customwidget>
<class>KColorButton</class>
<extends>QPushButton</extends>
<header>kcolorbutton.h</header>
</customwidget>
</customwidgets>
<resources/>
<connections/>
</ui>

The last final piece in order to expose the configuration ui is to add the following line in the metadata.json file

"X-KDE-ConfigModule": "kcm_kwin4_genericscripted"

With all of that, the effect is finally displayed as configurable in the system settings and the background color can be changed

Sharing Your Effect With Other People

The preferred method to distribute third party extensions is via the KDE Store. Both JS and QML effects can be uploaded to the same “KWin Effects” category.

Documentation and Other Useful Resources

Documentation is still something that needs a lot of work (and writing it is no fun ). KWin scripting API documentation can be found here https://develop.kde.org/docs/plasma/kwin/api/.

Besides the link above, it’s worth having a look at the examples https://invent.kde.org/plasma/kwin/-/tree/master/examples?ref_type=heads in kwin git repository.

Window Heap

If you need to pack or arrange windows like how the overview effect does, you could use the WindowHeap component from org.kde.kwin.private.effects module. BUT you need to keep in mind that that helper is private and has no stable API yet, so use it on your own risk (or copy paste the relevant code in kwin). Eventually, the WindowHeap will be stabilized once we are confident about its API.

The WindowHeap source code can be found at https://invent.kde.org/plasma/kwin/-/tree/2a13a330404c8d8a95f6264512aa06b0a560f55b/src/plugins/private.

More Examples

If you need more examples, I suggest to have a look at the desktop cube effect in kdeplasma-addons. It’s implemented using the same QML effect API in kwin + QtQuick3D. The source code can be found at https://invent.kde.org/plasma/kdeplasma-addons/-/tree/master/kwin/effects/cube?ref_type=heads

Conclusion

I hope that some people find this quick introduction to QML-based effects in KWin useful. Despite being a couple years old, declarative effects can be still considered being in the infancy stage and there’s a lot of untapped potential in them yet. The QML effect API is not perfect, and that’s why we are interested in feedback from third party extension developers. If you have some questions or feedback, feel free to reach out us at https://webchat.kde.org/#/room/#kwin:kde.org. Happy hacking!

Categories: FLOSS Project Planets

Kile 2.9.95 / 3.0 beta 4 released

Sun, 2024-03-17 16:25

We have a release of Kile 2.9.95, also known as 3.0 beta 4! Earlier today, Michel Ludwig tagged the current Git master. This is the first beta release since October 2019. Beside the port to KDE Frameworks 6 and Qt 6, it provides a couple of new features and bug fixes.

New features
  • Port to KDE Frameworks 6 & Qt 6 (Port by Carl Schwan)
  • Enable high-dpi support
  • Provide option to hide menu bar (Patch by Daniel Fichtner, #372295)
  • Configurable global default setting for the LivePreview engines (Patch by Florian Zumkeller-Quast, #450332)
  • Remove offline copy of "LaTeX2e: An unofficial reference manual", use online version instead (Patch by myself, Christoph Grüninger, Issue #7)
Fixed bugs
  • Kile crashes on selecting "Browse" or "Zoom" for document preview (Patch by Carl Schwan, #465547, #476207, #467435, #452618, #429452)
  • Kile crashes when generating new document (Patch by Carl Schwan, #436837)
  • Ensure \end{env} is inserted in the right place even when the user uses tabs for indentation (Patch by Kishore Gopalakrishnan, #322654)
  • Avoid saving console commands in bash history (Patch by Alessio Bonfiglio, #391537, #453935)
  • Don't crash when deleting templates (#413506)
  • Avoid crashing when closing a document that is being parsed (#404164)

Thanks to all the contributors. They fixed bugs, wrote documentation, modernized the code, and in general took care of Kile.

Enjoy the latest Kile release!

Categories: FLOSS Project Planets

Breeze Icon Update March 16, 2024

Sat, 2024-03-16 11:11

Hi all,

I am back with another update for adapting icons to the 24px grid and doing some larger edits. This week, I worked on 3 rows, which is great, and was able to hit just past the 50% mark, it seems

Here is a video with the changes:

Categories: FLOSS Project Planets

This weekend I am contributing to Transitous. You should too.

Sat, 2024-03-16 07:41
Transitous is a new community-driven routing service. Add your own city and help make it great.
Categories: FLOSS Project Planets

Dolphin 24.02

Sat, 2024-03-16 06:30

Since last Dolphin version 23.08, I spent a lot of my time making sure the transition to KF6/Qt6 went smoothly for dolphin and its dependencies and plugins and thanks to many others contributions, in particular Alexander and Nicolas, this went well. The objective being no-one would notice despite much code has changed and this mostly worked out.

Changes

A few behaviors and default have changed.

Files and folders are now selected with a single-click and opened with a double-click. This will mainly affect Neon Users, since most distros already had this behavior default. You can select the single-click-open mode on the first page of systemsettings, as it concerns also Plasma, file/open dialog and other applications.

The extract here option in the menu now has the behavior of the old "extract here and detect subfolders". This makes the menu less heavy on text while making the action more accessible.

Service menus will need some adaptation unfortunately, you will need to Moving them to a new location. Usually mv ~/.local/share/kservices5/ServiceMenus/* ~/.local/share/kio/servicemenus. (Ensure to have destination directory created: mkdir -p ~/.local/share/kio/servicemenus) You can read the updated documentation.

The F10 shortcut now opens the menu, instead of creating a directory. That's an important change to improve accessibility by providing standard shortcuts. You can change it back if you want, and you can also use the the standard shortcut for this action Ctrl+Shift+N.

New features

The settings have been reorganized making it easier to find what you are looking for. The Interface section regroups setitings regarding the UI elements of dolphin, and the view those that influences how the main view will display your files and folders.

Shoutout to Dimosthenis Krallis for pulling it off, this wasn't an easy task especially for a not yet regular contributor.

Thanks to Carl, we got a very nice visual improvement to KDE application with breeze. I really enjoy the change to Dolphin. Looking back at dolphin in plasma5 makes it glaring.

A small new feature, I added, is you can now middle click on a file to open it in the second application associated with its type. Let's say you have an html file you normally open with your browser, but sometimes you want to edit it. Now instead of going to the open-with menu you can middle-click it. This works for scripts as well, opening them in your default editor instead of the second application assoctiated with their type.

This was inspired by the fact that folders benefit from middle-click activations to open new tabs. Making this behavior configurable might make sense, suggestions welcome, but this seems like a sensible default at least.

Felix, my fellow dolphin co-maintainer, did a bunch of ui-refinement, like the free space label in the status bar and some very nice accessibility improvements, including the F10 shorcut change that now triggers the app menu by default.

You can open now open containing folders for files in the Recent Files.

Bug fixed

Akseli Lahtinen made sure to Resort directory size count after refreshing.

And in total 32 were fixed between Dolphin 23.08.05 and Dolphin 24.02.0. 480098 441070 477897 479596 478724 476670 473999 478117 477607 477288 476742 172967 452587 475547 422998 423884 440366 474951 474999 393152 473775 473377 473513 420870 472912 468445 469354 462778 417930 464594 471999 47197

New code, new bugs

Unfortunately whenever you ship new code, you risk introducing new bugs, and even months of testing didn't iron them all.

One I think you could have spotted earlier, was that on X11, panels are hidden after minimizing Dolphin window. Thanks to Nicolas fella, this was swiftly fixed and will reach users in next Dolphin release. In the meantime, this is a good time to learn about the shortcuts for panels:

  • F9: toggle places panel
  • F11: toggle information panel

We now have a need process to build packages for Windows and Mac OS, Dolphin has not made the transition though. I am working on it to bring latest dolphin to its Window and MacOS users.

Categories: FLOSS Project Planets

Completing the KDE Frameworks 6 transition

Sat, 2024-03-16 05:45

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.

Categories: FLOSS Project Planets

This week in KDE: Dolphin levels up

Sat, 2024-03-16 00:36

In addition to lots and lots of Plasma 6 stability work and the beginning of Plasma 6.1 feature work, Dolphin received large amount of development this week, resulting in some nice improvements. Check it out!

New Features

KSSHAskPass (which has the best name of any app in the world, change my mind) now supports SK-type SSH keys (Franz Baumgärtner, KSSHAskPass 24.05. Link)

Gave the Web Browser widget the option to always load a specific page every time, or remember the last-browsed-to one (Shubham Arora, Plasma 6.1. Link):

Info Center has a new page showing you technical audio information for debugging purposes (Shubham Arora, Plasma 6.1. Link)

The icon chooser dialog how has a filter so you can see only symbolic icons, or no symbolic icons (Kai Uwe Broulik, Frameworks 6.1. Link):

UI Improvements

Dolphin’s icon once again changes with the accent color (Kai Uwe Broulik, Dolphin 24.02.1. Link)

Most of Dolphin’s bars are now animate appearing and disappearing (Felix Ernst, Dolphin 24.05. Link):

https://i.imgur.com/S9FcNzq.mp4

Some folders in Dolphin get special view settings applied by default, such as the Trash and Downloads folders. Now these special view settings get applied to those folders even if you’re using the “use same view settings for all folders” setting (Jin Liu, Dolphin 24.05. Link)

Dolphin now has a new tab in its settings window for settings about its panels, which were previously hidden away in a context menu. So far just the Information Panel is represented there, but others may be added later! (Benedikt Thiemer, Dolphin 24.05. Link):

Made touch scrolling in Konsole work better (Willian Wang, Konsole 24.05. Link)

Improved the way Konsole’s text cursor scales on Wayland, especially with fractional scale factors (Luis Javier Merino Morán, Konsole 24.05. Link)

Okular already lets you scroll around a document with the hjkl keys. Now if you hold down the Shift key while doing it, it scrolls 10 times faster! (Someone going by the pseudonym “GI GI”, Okular 24.05. Link)

KRunner-powered search fields in Overview and the Search widget show the same search ordering that other ones already do (Alexander Lohnau, Plasma 6.0.2. Link)

The Power and Energy widget now hides its “Show Battery percentage on icon when not fully charged” option when the system has no batteries (Natalie Clarius, Plasma 6.0.2. Link)

With non-random wallpaper slideshows, Plasma now remembers the last-seen one and starts from there the next time you log in (Fushan Wen, Plasma 6.0.2. Link)

Improved keyboard navigation Kirigami sidebars powered by the GlobalDrawer component (Carl Schwan, Frameworks 6.1. Link)

Increased the size of the “Get new Plasma Widgets” dialog (Me: Nate Graham, Frameworks 6.1. Link)

Bug Fixes

Fixed one source of issues with the lock screen breaking on X11 by showing a black background. There may be more, and we’re on the case for those too (Jakob Petsovits, Plasma 6.0.2. Link)

Fixed a way that the Battery Monitor widget could cause Plasma to crash (Natalie Clarius, Plasma 6.0.2. Link)

Fixed a way that Plasma could crash when you middle-click tasks in the Task Manager, or rapidly left-click on random audio-playing tasks (Fushan Wen, Plasma 6.0.2, Link 1 and link 2)

On X11, clicks no longer get eaten on part of top panels (Yifan Zhu, Plasma 6.0.2. Link)

On X11, lock and sleep inhibitions once again work (Jakub Gocoł, Plasma 6.0.2. Link)

Fixed most of the incorrectly-colored System Tray icons when using mixed dark/light themes. There’s still one remaining source of this that we found, which is also being worked on (Nicolas Fella, Plasma 6.0.2. Link)

You can once again scrub through songs played in Spotify using the Media Player widget (Fushan Wen, Plasma 6.0.2. Link)

Fixed several issues with panel widgets (including Kickoff) incorrectly passing focus to their parent panel when activated (Niccolò Venerandi, Plasma 6.0.2. Link)

Dragging widgets to or from panels no longer sometimes causes Plasma to crash or makes the widget get stuck in ghost form on the desktop (Marco Martin, Plasma 6.0.3. Link 1 and link 2)

On Wayland, adding a second keyboard layout now causes the relevant System Tray widget to appear immediately, rather than only after Plasma or the system was restarted (Harald Sitter, Plasma 6.0.3. Link)

Fixed a way that Bluetooth pairing could fail (Ajrat Makhmutov, Plasma 6.0.3, Link)

On X11, the screen chooser OSD works again (Fushan Wen, Plasma 6.0.3. Link)

Breeze GTK is once again the default GTK theme (Fabian Vogt, Plasma 6.0.3. Link)

Yet again fixed the login sound so that it actually plays (Harald Sitter, Plasma 6.0.3. Link)

Reverted to an older and better way of sending pointer events on Wayland, which fixes multiple issues involving windows and cursors teleporting unexpectedly while dragging to maximize or de-maximize windows (Vlad Zahorodnii, Plasma 6.1. Link 1, link 2, and link 3)

Fixed a bunch of weird cursor issues with GPUs that don’t support variable refresh rate properly (Xaver Hugl, Plasma 6.1. Link)

Fixed a source of xdg-desktop-portal crashes on boot (David Redondo, Frameworks 6.1 Link)

Fixed two issues with the “Get New [thing]” dialogs that caused them to not show installation progress correctly, and get stuck after uninstalling something (Akseli Lahtinen, Frameworks 6.1. Link 1 and link 2)

System Monitor charts now appear properly for users of 10+ year-old Intel integrated GPUs (Arjen Hiemstra, Frameworks 6.1. Link)

More UI elements throughout QtQuick-based KDE software stop animating when animations are globally disabled, which also fixes an issue where Plasma button highlights would disappear with animations are globally disabled (me: Nate Graham, Frameworks 6.1. Link 1 and link 2)

Other bug information of note:

Performance & Technical

Fixed a source of 25-second Plasma startup delays when using KDE Connect with Bluetooth disabled or absent (Simon Redman, the next KDE Connect release, though most distros have already backported it. Link)

Fixed another source of slow Plasma startups caused by using the Bing picture of the day wallpaper (Fushan Wen, Plasma 6.0.2. Link)

KWin now does direct scan-out even for rotated screens (Xaver Hugl, Plasma 6.1. Link)

Reduced the size of all the wallpapers in the plasma-workspace-wallpapers repo by 10 MB (Martin Rys, Plasma 6.1. Link)

Ported Kile to KDE Frameworks 6. Hopefully this should presage a new release soon (Carl Schwan, link)

Automation & Systematization

Wrote a tutorial about setting up your app’s continuous integration system to package and publish to the Windows store (Ingo Klöcker, link)

Added some autotests for X11-specific window behavior (Vlad Zahorodnii, link)

Other

Rewrote a some chunks of text on KDE neon’s website to make it reflect reality: it is a distro, its target users are those who want KDE stuff fast and can tolerate some instability, and you shouldn’t use the package manager to get apps (me: Nate Graham, link 1, link 2, link 3, and link 4)

…And Everything Else

This blog only covers the tip of the iceberg! If you’re hungry for more, check out https://planet.kde.org, where you can find more news from other KDE contributors.

How You Can Help

Please help with bug triage! The Bugzilla volumes are extraordinary right now and we are overwhelmed. I’ll be doing another blog post on this tomorrow; for now, if you’re interested, read this.

Otherwise, visit https://community.kde.org/Get_Involved to discover other ways to be part of a project that really matters. Each contributor makes a huge difference in KDE; you are not a number or a cog in a machine! You don’t have to already be a programmer, either. I wasn’t when I got started. Try it, you’ll like it! We don’t bite!

As a final reminder, 99.9% of KDE runs on labor that KDE e.V. didn’t pay for. If you’d like to help change that, consider donating today!

Categories: FLOSS Project Planets

Web Review, Week 2024-11

Fri, 2024-03-15 07:59

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!

Categories: FLOSS Project Planets

RESTful Client Applications in Qt 6.7 and Forward

Fri, 2024-03-15 03:39

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.

Categories: FLOSS Project Planets

New Release Team Blog

Thu, 2024-03-14 20:00
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.
Categories: FLOSS Project Planets

Ruqola 2.1.1

Thu, 2024-03-14 20:00
Ruqola 2.1.1 is a bugfix release of the Rocket.chat app. Improvements: Preview url fixed I implement "block actions" (it's necessary in RC 6.6.x when we invite user) Fix OauthAppsUpdateJob support (administration) Fix update view when we translate message (View was not updated in private channel) Show server icon in combobox server Fix show icon for displaying emoji popup menu when we display thread message Fix jitsi support Fix dark mode URL: https://download.
Categories: FLOSS Project Planets

Qt Creator 13 RC released

Thu, 2024-03-14 07:33

We are happy to announce the release of Qt Creator 13 RC!

Categories: FLOSS Project Planets

Streamlining Multi-platform Development and Testing

Thu, 2024-03-14 04:00

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.

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.

Categories: FLOSS Project Planets

What We're Up To In 2024

Wed, 2024-03-13 20:00

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] (https://github.com/Yuntokon/BlenderLayer/).)
  • 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.

Categories: FLOSS Project Planets

Qt for MCUs 2.7 released

Wed, 2024-03-13 09:20

A new version of Qt for MCUs is available, bringing new features to the Qt Quick Ultralite engine, additional microcontrollers, and various improvements to our GUI framework for resource-constrained embedded systems.

Categories: FLOSS Project Planets

KDE Plasma 6.0.2, Bugfix Release for March

Mon, 2024-03-11 20:00

Tuesday, 12 March 2024. Today KDE releases a bugfix update to KDE Plasma 6, versioned 6.0.2.

This release adds a week's worth of new translations and fixes from KDE's contributors. The bugfixes are typically small but important and include:

  • Fix sending window to all desktops. Commit. Fixes bug #482670
  • Folder Model: Handle invalid URL in desktop file. Commit. Fixes bug #482889
  • Fix panels being set to floating by upgrades. Commit.
View full changelog
Categories: FLOSS Project Planets

Kdenlive 24.02.0 released

Mon, 2024-03-11 12:52

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.

Categories: FLOSS Project Planets

Activity-aware Firefox 0.4.2 & packages for Debian and Arch

Sun, 2024-03-10 19:00

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

Categories: FLOSS Project Planets

How YOU Help With Quality

Sat, 2024-03-09 16:53

In today’s other blog post, I mentioned how we’ve been getting a huge number of bug reports since the Mega-Release. If you’re not in software engineering, this probably seems like a bad thing. “Oh no, why so many bugs? Didn’t you test your software properly!?”

Since most people are not involved in software engineering, this perspective is common and understandable. So I’d like to shed a light on the assumptions behind it, and talk about the challenges involved in improving software quality, which is a passion of mine.

Don’t kill the messenger

See, bug reports are a “don’t kill the messenger” type of thing. Bugs are there whether they get reported or not, and getting them reported is important so you have a more accurate picture of how your software is actually being used by real people in the real world.

In our KDE world, the alternative to “lots of bug reports” isn’t “few bug reports because there are few bugs” but rather “few bug reports because the software isn’t actually being used much so no one is finding the bugs.” What matters more is the severity of the actionable bug reports.

What bug-free software looks like

That sounds so defeatist! Surely it must actually be possible to have bug-free software, right?

Yes. But to achieve it, you have to test literally every possible thing the software can do to make sure it performs correctly in the environment in which it’s doing it. If the software can do infinite things in infinite environments, then testing also becomes infinite and therefore impossible, so combinations get missed and bugs sneak through. Bug-free software must aggressively limit the scope and variety of those environments to just the ones that can be tested. What does that look like in practice?

  • Limit what the software can do in the first place. Remove as many features, options, and settings as possible without compromising the product’s necessary core functionality.
  • Limit how the user can modify and extend the software after release. No user-created themes, widgets, scripts–nothing! Every modification to what the software can do or how it looks must go through a the same QA team that QAd the software in its original state. 1st-party modifications only.
  • Limit the versions of upstream 3rd-party libraries, dependencies, and kernels that the software is allowed to use. Lock those versions and test everything the software can do on those specific versions.
  • Limit how downstream 3rd-party user-facing software (i.e. apps) can interface with the system. Lock it down in a sandbox as much as you can so any misbehavior can’t affect the rest of the system.
  • Limit the hardware that the software stack is allowed to run on. Test everything the software can do only on that hardware.

Does this sound very much like how KDE software is developed, distributed, and used? I’d say it’s more like how Apple builds products (and note that Apple products still have bugs, but I digress)! By contrast: KDE develops lots of features and options; we’re liberal with supported library, dependency, and kernel versions; and we don’t prevent you from installing our software on any random device you can get your hands on.

You can see the challenge right away! The foundation of quality is a set of restrictions that we don’t want to impose on ourselves and our users. You folks reading this probably don’t want us to impose them on you, either.

Quality from chaos

So is it just impossible to ensure quality in a permissive environment? No, but it’s harder. That’s right: we in the KDE free software world set for ourselves a fundamentally more difficult task than the big corporations with their billions of dollars of resources. Given this, I think we’ve done a pretty darn impressive job with the Mega-Release. And judging by initial impressions out there, it seems like many others agree too!

So how did we do it?

We lengthened our beta period to 3 months and relied on bug reports from people using the software in their own personal environments.

Yes you, loyal reader! We wanted to hear how our software was working on your 12-year-old Netbook. We wanted to hear how it worked when plugged into two TVs and a rotated monitor, all through a KVM switch. We wanted to hear how it coped with the most bizarre-looking 3rd-party themes. By using our flexible and non-limited software in your diverse ways on your diverse hardware, you’re testing it and finding all the bugs that we lack the resources to find ourselves.

Does this sort of QA work sound like something you don’t want to do? That’s 100% fine. But then you need for someone else to be the QA team for you. There are two options:

  • Buy a computer with KDE software pre-installed; there are a lot of them now! Then it’s the vendor’s responsibility to have done adequate QA on their own products. Is it buggy anyway? Complain to them or find a better vendor!
  • If you’re going to install it yourself, limit yourself to common hardware, default software settings, and operating systems that are relatively conservative in their update schedules. Then the QA has been provided by others who who already used your exact setup and reported all the bugs affecting it.
Become a superhero

But what if you do want to help out with making the software better for others, but you’re not a programmer? Congratulations, you’re a real-life superhero.

We’ve already talked about reporting bugs. It’s also important to do a good job with your bug reports so they’re actionable! I’ll encourage folks to read through our documentation about this. Low-quality bug reports don’t just waste our time, they waste yours as well!

But where do all those 150-200 bug reports per day that I mentioned actually go? There’s a flip side which is that someone needs to do something with every single one of them. The more bug reports we get (which, again, is good!) the more we need people to help triaging them.

Because the truth is, most bug reports don’t begin life being actionable for developers. They may be missing key information; they may be mistaking a feature for a bug; they may be describing an issue in someone else’s software; they may be about an issue that was already fixed in a version of the software that the reporter doesn’t have; they may be describing a real issue but in an unclear and confusing way; and so on.

The job of bug triagers is to make each of these bug reports actionable. Ask for missing information! Move them to the right products! Set the version and severity appropriately! Mark already reported bugs as duplicates of the existing report! Mark obvious upstream or downstream issues accordingly and direct people to the places where they can report the bugs to the responsible developers! Try to reproduce the issue yourself and mark it as confirmed if you can! And so on. It isn’t terribly glamorous work, so there aren’t very many people lining up to be volunteer bug triagers, unlike developers. But it’s very important. And so every person who helps out adds resources to what’s currently a very small team, making a massive difference in the process.

If you’ve been looking for a way to help out KDE in a way that doesn’t require programming or a consistent time commitment, this is it. Triage a few bugs here, a few bugs there. Chip in when you can. If 30 people each triaged three bugs a day (this would take under 10 minutes, on average), we’d be in an amazing position.

So get started today! I’m available to help in the #kde-bugs Matrix room.

Still don’t wanna? Donate to KDE e.V. so we can eventually hire our own professional bug triage and QA team!

Categories: FLOSS Project Planets

Working Build With KDE Frameworks 6

Sat, 2024-03-09 16:26

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.

Categories: FLOSS Project Planets

Pages