Skip to content

Wednesday, 8 November 2023

qqc2-breeze5-style is a theme used by Plasma Mobile. This alpha release is a re-bundling of the Plasma/5.27 branch of qqc2-breeze-style. It is for use by distros shipping alpha releases of Plasma 6 so that Qt 5 apps continue to be themed appropriately.

URL: https://download.kde.org/unstable/qqc2-breeze5-style/

SHA256: 813f9da4861567e70d1eccf3a3a092d802ac9475a91070fb47fa
8766f3c1e310

Signed by E0A3EB202F8E57528E13E72FD7574483BB57B18D Jonathan Esk-Riddell <jr@jriddell.org>
https://jriddell.org/esk-riddell.gpg

Oxygen Icons is an icon theme for use with any XDG compliant app and desktop.

It is part of KDE Frameworks 6 but is now released independently to save on resources.

This is the first (and likely only) pre-release, versioned 5.245.0, and it will have a stable release alongside KDE Frameworks 6 in February.

Distros which ship this version can drop the version released as part of KDE Frameworks 5.

sha256: b082a1a9a6d06cdeee2863555951609e95dd499f133035d04719a16f8500497f

URL: https://download.kde.org/unstable/oxygen-icons/

Signed by E0A3EB202F8E57528E13E72FD7574483BB57B18D Jonathan Esk-Riddell <jr@jriddell.org>
https://jriddell.org/esk-riddell.gpg

Tuesday, 7 November 2023

This project is trying to create a WS-Discovery client library based on the KDSoap
library.

The name is short for Klarälvdalens Datakonsult AB Simple Object Access Protocol Web Services Addressing Discovery Client

It is used by the SMB KIO worker from kio-extras.

kio-extras will have two releases as part of KDE’s 6th Megarelease, one for Qt 5 and one for Qt 6. Distros should build and ship both versions of kio-extras but the Qt5 build should use an internal static copy of kdsoap-ws-discovery-client so does not need to be built separately. The Qt 6 build of kio-extras does need this external build of kdsoap-ws-discovery-client. Distros will need an up to date copy of KDSoap library https://github.com/KDAB/KDSoap/tags.

SHA 256: 5007747f1ce607639bb63244f8894c03a15194c0a891b8d85e10d76dbdf79188
URL: https://download.kde.org/unstable/kdsoap-ws-discovery-client/
Signed by E0A3EB202F8E57528E13E72FD7574483BB57B18D Jonathan Esk-Riddell <jr@jriddell.org>
https://jriddell.org/esk-riddell.gpg

Let's take a look at a global theme that plays both with the old and new to create a rather striking aesthetic.

Monday, 6 November 2023

I’m happy to announce the 0.8.0 release of Subtitle Composer.

This release contains lots of bugfixes and new features including:

  • Automatic translations using DeepL or Google Cloud
  • WebVTT format support
  • Subtitle positioning UI and support
  • Subtitle class/comments/voice UI and support
  • Improved rich text editing/preview
  • Rich text rendering on waveform/video/editors
  • Qt6 support
  • FFmpeg 5 support
  • Subtitle lines are always time sorted; remove sort lines menu action
  • Replaced Kross with QJSEngine, removed ruby and python support
  • Improved script manager and tools menu

As usual all binaries are available from download page.

Source tarball can be downloaded from download.kde.org.

— Mladen

Thursday, 2 November 2023

Two new releases are out in preparation of the first alpha release or the February Megarelease.

KQuickImageEditor 0.3.0

This is the new stable version of KQuickImageEditor. Only notable change it the support for Qt6 in addition of Qt5 support.

Kirigami Addons 0.11.75

This is an alpha release and depends on an unreleased KDE Frameworks. Please only package it if you also package the coming alpha megarelease.

Packager section

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

KUserFeedback is a library for collecting user feedback for apps via telemetry and surveys.
Version 1.3.0 is now available for packaging.

This version adds the option to build it for Qt 6. It can also be built for Qt 5 and distros may want to package it twice, however this will mean handling some overlapping files and most apps which use it will be ported to Qt 6 as part of the KDE 6 MegaReleases in February so distros may prefer to drop Qt 5 builds then.

sha256 252308b822dd4690ea85ab1688c9b0da5512978ac6b435f77a5979fc1d2ffd13

URL https://download.kde.org/stable/kuserfeedback/

Signed by E0A3EB202F8E57528E13E72FD7574483BB57B18D Jonathan Esk-Riddell <jr@jriddell.org>
https://jriddell.org/esk-riddell.gpg

* new release 1.3
* Add CC0-1.0 license
* Do not look for QtHelp if docs are disabled
* Remove unneeded setting of CMake policies, implied by requiring 3.16
* Add flatpak CI
* Bump minimum cmake version to 3.16
* Add explicit moc includes to sources for moc-covered headers
* Remove Designer&#39;s &quot;.&quot; normaloff file data from icon properties in .ui files
* Use latest-kf6 branch for Qt6
* In qt6 plugin name is KUserFeedbackQmlQt6
* PHP 8 compatibility
* Fix Qt 6 build of PHP-dependent unit tests
* categoryaggregationmodel
* Fix include form (use &quot;&quot; instead of &lt;&gt;) for provider.h
* Remove forward declaration as include is already defined
* Fix debug message
* Autogenerate debug categories
* Create logging_p.cpp directly
* Fix show headers in qtc6
* Compatibility is not necessary now
* kuserfeedback_version.h was not installed
* Fix compatibility (install temporary include in KUserFeedBack too)
* Add warning about removing compatibility
* Show all headers in includes
* KUserFeedbackConsole is an internal static lib too
* Not necessary here as it&#39;s an internal static lib
* Fix install target file
* Allow to co-install
* Port to new syntax
* Add Qt 6 Android CI
* typos–
* Add Qt6 windows CI support
* Hide finding docs dependencies behind ENABLE_DOCS
* Install translations
* qtversionsource: fix Qt 6.5 build
* avoid invalid lastX times
* .gitlab-ci.yml: enable static builds
* add it to CI qt6 bsd
* Fix cmakename in metainfo.yaml
* Tell no data has been sent if no data has been sent
* Give the dialog an actual title
* Remove duplicate header between cpp/h files
* Add windows CI

libqaccessibilityclient 0.5.0 is out now. The release adds Qt 6 support. libqaccessibilityclient is used by KMag and KWin both of which have forthcoming releases that are ported to Qt 6 so there should be no need for distros to build two versions.

https://download.kde.org/stable/libqaccessibilityclient/libqaccessibilityclient-0.5.0.tar.xz

Signed by E0A3EB202F8E57528E13E72FD7574483BB57B18D Jonathan Esk-Riddell <jr@jriddell.org>
https://jriddell.org/esk-riddell.gpg

* new release: new version and new ECM URL
* Bump min required Qt6 to 6.5
* Port away from deprecated operator+(Qt::Modifier modifier, Qt::Key key
* Port away from deprecated QVariant::Type
* Add explicit moc includes to sources for moc-covered headers
* Use ECMDeprecationSettings
* Have export macros header include version header (Qt6-only)
* Use QAccessibilityClient6 as package name for Qt6 version
* Use variable to hold CMake config name, also targets file name
* Install headers into QAccessibilityClient/ visibility layer
* Move version setup into src/ subdir
* Use generic target name for generated library
* Move library target property setting next to declaration
* Move CMake config template file into src/ subdir
* Remove unimplemented methods
* Use ECM master when building for Qt6
* Use CamelCase includes
* Fix finding the unit test helper executable
* Add FreeBSD Qt6 CI support
* Add Gitlab CI
* Remove duplicate header between cpp/h files
* We depend against qt5.15
* Use -qt6 when we build against qt6
* Fix find_package
* Fix signals
* Adapt build system for building against qt6
* It&#39;s already define in ecm
* Make compile with strict compile flags
* Make building without deprecated methods
* Fix some compile error
* Add CI definitions information for seed job
* Use more target-centric cmake code
* Use GenerateExportHeader
* Remove module prefixe from Qt includes
* Do not use deprecate QFlatgs(nullptr) constructor
* Fix member init order to match definition order
* Clean up include dirs
* Convert license statements to SPDX expressions
* Add support for AccessibleId property
* Update README.md a bit
* Support API documentation generation with kapidox
* Remove the references to projects.kde.org
* Fix qstring minor optimization
* Port setMargins
* Use only undeprecated KDEInstallDirs variables
* KDECMakeSettings already cares for CMAKE_AUTOMOC and BUILD_TESTING
* Fix use in cross compilation
* Q_ENUMS -> Q_ENUM
* more complete release instructions

Phonon 4.12.0 and Phonon-VLC (phonon-backend-vlc) have new releases today which add Qt 6 support. These tars will by default build Qt 5 and 6 at the same time and we advise distros to ship both builds.

Phonon GStreamer (phonon-backend-gstreamer) is deprecated and we do not advise to use it.

https://community.kde.org/Phonon/Releases/Core/4.12.0

URLhttp://download.kde.org/stable/phonon/4.12.0/phonon-4.12.0.tar.xz.mirrorlist
SHA2563287ffe0fbcc2d4aa1363f9e15747302d0b080090fe76e5f211d809ecb43f39a

Changes

  • Future-proof build fix for clang > 16
  • Allow build against Qt6 when also built against Qt5
  • Mark Qt6Core5Compat as REQUIRED for Qt6 builds
  • let the user opt out of qt 5 or 6 builds
  • bring back includes dir
  • build qt5 and 6 at the same time
  • be explicit about default values
  • fix build for qt6
  • Omit legacy CMake variables when building with Qt 6
  • fix build with clang-16
  • Don’t install legacy includes when building against Qt 6
  • Allow to build against last kf6
  • Add Windows Qt 6 CI
  • Update the translations folder name
  • Don’t redefine CMAKE_MODULE_PATH
  • .gitlab-ci.yml: enable static builds
  • Port away from deprecated INSTALL_TARGETS_DEFAULT_ARGS
  • Add FreeBSD Qt6 CI support
  • We depend against qt5.15 now
  • Add Windows CI
  • Add Android Qt5 and Qt6 CI
  • Take out empty deprecated registerMetaTypes() method in Qt6 builds
  • We need const char * (make compile qt6 apps)
  • Qt::AA_UseHighDpiPixmaps is enabled by default in qt6
  • Add Qt5 and Qt6 Linux CI
  • Fix the Qt6 build
  • Fix phonon lib name
  • Fix coding style + increase ecm
  • Adapt build system for building against qt6
  • Adapt code for building against qt6
  • Make it compiles without deprecated methods
  • Add KDE CI configuration for Phonon
  • Fix typos found by codespell
  • Update IRC network name in Doxygen main page
  • Allow to compile with unity support
  • Port away from deprecated Qt methods
  • Remove module prefixes from Qt includes
  • Port away from deprecated QList::swap(i, j)
  • Port away from deprecated qVariantFromValue()
  • Use Q_DECLARE_OPERATORS_FOR_FLAGS in same namespace as flags definition
  • Use more nullptr
  • Improve metainfo.yaml
  • Use NO_POLICY_SCOPE with KDECompilerSettings
  • Remove explicit use of ECM_KDE_MODULE_DIR, is part of ECM_MODULE_PATH
  • Remove “virtual” where “override” is used; add missing virtual in destructors
  • Revert “Port deprecated qVariantFromValue method”
  • Port deprecated qVariantFromValue method
  • bump to 4.11.1 for release
  • Remove phonon from the include directory
  • throw out the qml demo
  • import gpl2 for new settings source code
  • Reorder cmake macro includes

https://community.kde.org/Phonon/Releases/VLC/0.12.0

URLhttps://download.kde.org/stable/phonon/phonon-backend-vlc/0.12.0/phonon-backend-vlc-0.12.0.tar.xz.mirrorlist
SHA256338479dc451e4b94b3ca5b578def741dcf82f5c626a2807d36235be2dce7c9a5

Changes

  • drop support for libvlc 2.x
  • support qt5/6 multibuild
  • mediaobject new can throw but does not return null
  • .gitignore ignore /compile_commands.json
  • Add Linux Qt 5 CI
  • Update the translations folder name
  • Remove explicit use of ECM_KDE_MODULE_DIR, is part of ECM_MODULE_PATH
  • Make compile against qt6
  • Add override keyword + use nullptr
  • Show all headers in qtc6
  • Adapt build system for building against qt6
  • Use Qt::end
  • Remove obsolete include
  • Use override keyword
  • Use QStringLiteral (QLAtin1String is deprecated)
  • Use Q_SIGNALS/Q_SLOTS
  • Fix typos found by codespell
  • debug vmem format setup
  • use picture_t to calculate pitch lines
  • Update the obsolete projects.kde.org URL
  • Revert “Port deprecated QLatin1Literal -> QLatin1String”
  • Port deprecated QLatin1Literal -> QLatin1String
  • preliminary vlc4 port
  • only set xwindow when the qt platform actually is xcb (on unix)

Signed by E0A3EB202F8E57528E13E72FD7574483BB57B18D Jonathan Esk-Riddell <jr@jriddell.org>
https://jriddell.org/esk-riddell.gpg

Wednesday, 1 November 2023

The other day I had to dive into the ksmserver code, the core of session management in KDE Plasma, but found it all a bit difficult to read. If only I could get a callgraph I thought…

Turns out it actually is possible!

In fact it is almost too easy with clang/llvm. There are already solutions that attach LLVM bitcode to existing binaries. e.g. gllvm. gllvm basically is a shim sitting between ninja and the actual compiler and injects some behavior for us. This enables the use without having to refit anything in our existing code. You might note that clazy, our most excellent code analyzer, works in a similar fashion.

Here is how to use it:

# install gllvm (NOTE: as a pre-requisite you should have Go properly set up)
go install -v github.com/SRI-CSL/gllvm/cmd/...@latest

# clone plasma-workspace
git clone https://invent.kde.org/plasma/plasma-workspace
# change directory
cd plasma-workspace
# export environment variables
export CXX=gclang++
export CC=gclang
# You may need to set some additional vars so gllvm can find your compilers
## export LLVM_CC_NAME=clang-16
## export LLVM_CXX_NAME=clazy
# Configure
cmake -S . -B build
# Build
cmake --build build/
# extract the bitcode (into build/bin/ksmserver.bc by default)
get-bc -m -v build/bin/ksmserver
# Run through llvm's opt program to generate a callgraph
opt --disable-output --passes=dot-callgraph build/bin/ksmserver.bc
# copy into working directory
cp build/bin/ksmserver.bc.callgraph.dot callgraph.dot
# prettify the c++ names (this may produce invalid labels, so I'm skipping it here)
## cat build/bin/ksmserver.bc.callgraph.dot | llvm-cxxfilt > callgraph.dot
# generate an SVG of the graph
dot -x -Tsvg -ocallgraph.svg callgraph.dot
# we now have a callgraph.svg \o/

Depending on the complexity of the software and how many libraries it uses this graph may be incredibly large and verbose though. We’ll need to apply some filtering to make it useful. Or at least I thought so when working with ksmserver.

To further filter the graph you can use the gvpr helper. It is a bit clunky but gets the job done. You can build a filter expression to only include interesting functions like so

N{
    if ($.label!="@(*_ZN9KSMServer*)" || $.label=="@(*metacall*)")
        delete($G, $);
}

and then filter the dot graph with

# Filter out uninteresting functions (filter.prog is the filter expression from above)
gvpr -c -f filter.prog build/bin/ksmserver.bc.callgraph.dot > intermediate.gv
# Filter out all empty nodes (they call nothing and are of no interest)
gvpr -c "N[$.degree==0]{delete(root, $)}" intermediate.gv > final.gv
# generate an SVG
cat final.gv | dot -x -Tsvg -ocallgraph.svg

Final result

Screenshot