Manjaro Control Panel, 2025
Preamble
Ok it’s been a while… I was busy with a lot of things but finally I’ve found time and motivation to work on Manjaro Control Panel . I’ve fully reworked Kernels so far and started some groundwork for Drivers .
Currently supported features:
Unified backend for multiple UIs, based on libpamac
Qt/QML 6 modern UI (Kirigami)
KCM (Plasma’s System Settings page), based on Qt/QML UI
Features that are planned:
Command Line Interface – almost finished but needs a bit more work, will be ready in a couple of days I think.
GNOME UI – haven’t worked on that for now.
Features that would be nice to have:
Classic Qt-based UI for non-KDE users. I have a working concept but not sure I’ll have enough time to support it in any way.
What’s next
Current scope of the tool is Kernels and Drivers only. I plan to go iteratively this time and the plan is:
Test and roll out Kernels Qt and CLI
Continue working on Drivers
Test and roll out Drivers
Start with GNOME UI
Screenshots:
Qt/QML/KCM
CLI
Known issues
Kernel list doesn’t update after installation
Installation status can show up out-of-order
Translations are missing
You tell me (better using issues page )
The repository is: GitHub - LordTermor/manjaro-control-panel: New Manjaro settings manager
In packaging subfolder there is PKGBUILD. You can try building it yourself to test.
24 Likes
Teo
7 December 2025 10:23
2
The cli looks nice. The gui does not have indicator for installed kernel (from the screenshot).
Other than that i fail to see how this will replace MSM if it does not support xfce and is missing half of the modules like the time for example. And you don’t even plan to do that.
As with all recent manjaro development, this is rising more questions than giving answers. Like are you, the manjaro developers, planning to officially drop support for xfce?
At the top of the image there’s kernel 6.18 showing as current.
It could probably be highlighted more somehow to make it obvious. Perhaps forcing a brighter border (green) to attract the eye. But, then again, I found it easily enough.
It does support XFCE, just like the previous one.
I’m open to adding some features specific to other DEs (as Plasma has time settings itself) especially more trivial ones. I just don’t want Plasma to have duplicates as we’ve got a talk with KDE devs about time in past.
We have dozen of devs who use different DEs. It just happened that I use Plasma and work with Plasma input data (design language, available settings). As far as I know nobody is planning to drop XFCE.
Teo
7 December 2025 10:33
5
Maybe renaming to “currently installed” as i understood “current” as “latest”
It should be “currently in use” I guess…
Teo
7 December 2025 10:35
7
Yes.
But still if you have many kernels installed it should als be indicated on the list.
It doesn’t show up in list at all now, only on top, to have it harder to mix up. Installed kernels have their own section.
2 Likes
Teo
7 December 2025 10:47
10
So, just to be clear: is this a tool that will coexist with MSM or will it replace MSM.
I don’t know. I’d like it to replace MSM but not sure it’s possible. We can integrate old modules into this codebase partially (requires porting to Qt6) I think, for “classic” version. But I really want to focus on current scope.
When building w/ manjaro-chrootbuild PKGBUILD has to look like (build on XFCE):
libpamac needed as make dependency
# Maintainer: Manjaro Team
pkgbase=mcp
pkgname=(
'libmcp'
'mcp-cli'
'mcp-qt'
# 'mcp-qt-classic'
# 'mcp-kcm'
)
pkgver=0.1.0
pkgrel=1
pkgdesc="Manjaro Control Panel"
arch=('x86_64' 'aarch64')
url="https://github.com/LordTermor/manjaro-control-panel"
license=('GPL-3.0-or-later')
makedepends=(
'cmake'
'ninja'
'git'
'extra-cmake-modules'
'meson'
'vala'
'gobject-introspection'
'qt6-base'
'qt6-declarative'
'kirigami'
'ki18n'
'kcoreaddons'
'kauth'
'kcmutils'
'fmt'
'libsigc++-3.0'
'libsoup3'
'qcoro'
'libpamac'
)
source=("git+https://github.com/LordTermor/manjaro-control-panel.git")
sha256sums=('SKIP')
build() {
cmake -B build -S manjaro-control-panel \
-G Ninja \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/usr \
-DMCP_BUILD_LIB=ON \
-DMCP_BUILD_CLI=ON \
-DMCP_BUILD_QT=ON \
-DMCP_BUILD_QT_CLASSIC=ON \
-DMCP_BUILD_KCM=OFF
cmake --build build
}
package_libmcp() {
pkgdesc="Core library for Manjaro Control Panel"
depends=(
'glib2'
'libsigc++-3.0'
'libalpm.so'
'libsoup3'
)
DESTDIR="$pkgdir" cmake --install build/libmcp
}
package_mcp-cli() {
pkgdesc="CLI tools for Manjaro Control Panel"
depends=('libmcp' 'fmt')
DESTDIR="$pkgdir" cmake --install build/cli
}
package_mcp-qt() {
pkgdesc="Qt/QML standalone app for Manjaro Control Panel"
depends=(
'libmcp'
'qt6-base'
'qt6-declarative'
'kirigami'
'ki18n'
'kcoreaddons'
'kauth'
'fmt'
)
# Install mcp-qt binary
install -Dm755 build/bin/mcp-qt "$pkgdir/usr/bin/mcp-qt"
# Install shared libraries
DESTDIR="$pkgdir" cmake --install build/mcp-qt/common
DESTDIR="$pkgdir" cmake --install build/mcp-qt/modules
# Install transaction agent
install -Dm755 build/bin/mcp-transaction-agent "$pkgdir/usr/bin/mcp-transaction-agent"
# Install icon
install -Dm644 manjaro-control-panel/mcp-qt/data/assets/icon.svg "$pkgdir/usr/share/icons/hicolor/scalable/apps/mcp.svg"
}
package_mcp-qt-classic() {
pkgdesc="Qt Widgets classic app for Manjaro Control Panel"
depends=(
'libmcp'
'qt6-base'
'qt6-declarative'
'kirigami'
'ki18n'
'kcoreaddons'
'kauth'
'fmt'
)
# Install mcp-qt-classic binary
install -Dm755 build/bin/mcp-qt-classic "$pkgdir/usr/bin/mcp-qt-classic"
# Shared libs are provided by mcp-qt package, so this is a minimal install
}
package_mcp-kcm() {
pkgdesc="KDE System Settings modules for Manjaro Control Panel"
depends=(
'libmcp'
'qt6-base'
'qt6-declarative'
'kirigami'
'ki18n'
'kcoreaddons'
'kauth'
'kcmutils'
'systemsettings'
'fmt'
)
# Install KCM plugin
DESTDIR="$pkgdir" cmake --install build/mcp-qt/modules/kernel/kcm
# Install category file
install -Dm644 manjaro-control-panel/mcp-qt/data/categories/settings-system-administration-mcp.desktop \
"$pkgdir/usr/share/kservices6/settings-system-administration-mcp.desktop"
}
libpamac is bundled to libmcp as a static library, can you share the output?
mcp-qt includes mcp-qt-classic is this intended?
Sure, build without libpamac:
FAILED: [code=1] libmcp/CMakeFiles/libmcp.dir/ProgressFlattener.cpp.o.ddi
/usr/bin/c++ -Dlibmcp_EXPORTS -I/build/mcp/src/manjaro-control-panel/libmcp -I/build/mcp/src/build/_deps/libpamac-cpp-src/include -I/build/mcp/src/build/_deps/libpamac-src/src -isystem /usr/include/sigc++-3.0 -isystem /usr/lib/sigc++-3.0/include -isystem /usr/include/glib-2.0 -isystem /usr/lib/glib-2.0/include -isystem /usr/include/libmount -isystem /usr/include/blkid -isystem /usr/include/sysprof-6 -isystem /usr/include/libsoup-3.0 -march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=3 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -Wp,-D_GLIBCXX_ASSERTIONS -flto=auto -O3 -DNDEBUG -std=gnu++23 -fPIC -pthread -D_FILE_OFFSET_BITS=64 -E -x c++ /build/mcp/src/manjaro-control-panel/libmcp/ProgressFlattener.cpp -MT libmcp/CMakeFiles/libmcp.dir/ProgressFlattener.cpp.o.ddi -MD -MF libmcp/CMakeFiles/libmcp.dir/ProgressFlattener.cpp.o.ddi.d -fmodules-ts -fdeps-file=libmcp/CMakeFiles/libmcp.dir/ProgressFlattener.cpp.o.ddi -fdeps-target=libmcp/CMakeFiles/libmcp.dir/ProgressFlattener.cpp.o -fdeps-format=p1689r5 -o libmcp/CMakeFiles/libmcp.dir/ProgressFlattener.cpp.o.ddi.i
In file included from /build/mcp/src/build/_deps/libpamac-cpp-src/include/pamac/alpm_package.hpp:12,
from /build/mcp/src/build/_deps/libpamac-cpp-src/include/pamac/database.hpp:11,
from /build/mcp/src/build/_deps/libpamac-cpp-src/include/pamac/transaction.hpp:12,
from /build/mcp/src/manjaro-control-panel/libmcp/ProgressFlattener.cpp:10:
/build/mcp/src/build/_deps/libpamac-cpp-src/include/pamac/package.hpp:15:10: fatal error: pamac.h: No such file or directory
15 | #include <pamac.h>
| ^~~~~~~~~
compilation terminated.
[4/96] Scanning /build/mcp/src/manjaro-control-panel/libmcp/kernel/KernelManager.cpp for CXX dependencies
FAILED: [code=1] libmcp/kernel/CMakeFiles/libmcp-kernel.dir/KernelManager.cpp.o.ddi
/usr/bin/c++ -Dlibmcp_kernel_EXPORTS -I/build/mcp/src/manjaro-control-panel/libmcp/kernel/.. -I/build/mcp/src/build/_deps/libcoro-src/include -I/build/mcp/src/build/_deps/libcoro-build/include -I/build/mcp/src/build/_deps/libpamac-cpp-src/include -I/build/mcp/src/build/_deps/libpamac-src/src -isystem /usr/include/glib-2.0 -isystem /usr/lib/glib-2.0/include -isystem /usr/include/libmount -isystem /usr/include/blkid -isystem /usr/include/sysprof-6 -isystem /usr/include/sigc++-3.0 -isystem /usr/lib/sigc++-3.0/include -isystem /usr/include/libsoup-3.0 -march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=3 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -Wp,-D_GLIBCXX_ASSERTIONS -flto=auto -O3 -DNDEBUG -std=gnu++23 -fPIC -fexceptions -Wall -Wextra -pipe -pthread -D_FILE_OFFSET_BITS=64 -E -x c++ /build/mcp/src/manjaro-control-panel/libmcp/kernel/KernelManager.cpp -MT libmcp/kernel/CMakeFiles/libmcp-kernel.dir/KernelManager.cpp.o.ddi -MD -MF libmcp/kernel/CMakeFiles/libmcp-kernel.dir/KernelManager.cpp.o.ddi.d -fmodules-ts -fdeps-file=libmcp/kernel/CMakeFiles/libmcp-kernel.dir/KernelManager.cpp.o.ddi -fdeps-target=libmcp/kernel/CMakeFiles/libmcp-kernel.dir/KernelManager.cpp.o -fdeps-format=p1689r5 -o libmcp/kernel/CMakeFiles/libmcp-kernel.dir/KernelManager.cpp.o.ddi.i
In file included from /build/mcp/src/build/_deps/libpamac-cpp-src/include/pamac/alpm_package.hpp:12,
from /build/mcp/src/build/_deps/libpamac-cpp-src/include/pamac/database.hpp:11,
from /build/mcp/src/manjaro-control-panel/libmcp/kernel/KernelProvider.hpp:17,
from /build/mcp/src/manjaro-control-panel/libmcp/kernel/KernelManager.hpp:15,
from /build/mcp/src/manjaro-control-panel/libmcp/kernel/KernelManager.cpp:8:
/build/mcp/src/build/_deps/libpamac-cpp-src/include/pamac/package.hpp:15:10: fatal error: pamac.h: No such file or directory
15 | #include <pamac.h>
| ^~~~~~~~~
compilation terminated.
[5/96] Scanning /build/mcp/src/manjaro-control-panel/libmcp/kernel/KernelProvider.cpp for CXX dependencies
FAILED: [code=1] libmcp/kernel/CMakeFiles/libmcp-kernel.dir/KernelProvider.cpp.o.ddi
/usr/bin/c++ -Dlibmcp_kernel_EXPORTS -I/build/mcp/src/manjaro-control-panel/libmcp/kernel/.. -I/build/mcp/src/build/_deps/libcoro-src/include -I/build/mcp/src/build/_deps/libcoro-build/include -I/build/mcp/src/build/_deps/libpamac-cpp-src/include -I/build/mcp/src/build/_deps/libpamac-src/src -isystem /usr/include/glib-2.0 -isystem /usr/lib/glib-2.0/include -isystem /usr/include/libmount -isystem /usr/include/blkid -isystem /usr/include/sysprof-6 -isystem /usr/include/sigc++-3.0 -isystem /usr/lib/sigc++-3.0/include -isystem /usr/include/libsoup-3.0 -march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=3 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -Wp,-D_GLIBCXX_ASSERTIONS -flto=auto -O3 -DNDEBUG -std=gnu++23 -fPIC -fexceptions -Wall -Wextra -pipe -pthread -D_FILE_OFFSET_BITS=64 -E -x c++ /build/mcp/src/manjaro-control-panel/libmcp/kernel/KernelProvider.cpp -MT libmcp/kernel/CMakeFiles/libmcp-kernel.dir/KernelProvider.cpp.o.ddi -MD -MF libmcp/kernel/CMakeFiles/libmcp-kernel.dir/KernelProvider.cpp.o.ddi.d -fmodules-ts -fdeps-file=libmcp/kernel/CMakeFiles/libmcp-kernel.dir/KernelProvider.cpp.o.ddi -fdeps-target=libmcp/kernel/CMakeFiles/libmcp-kernel.dir/KernelProvider.cpp.o -fdeps-format=p1689r5 -o libmcp/kernel/CMakeFiles/libmcp-kernel.dir/KernelProvider.cpp.o.ddi.i
In file included from /build/mcp/src/build/_deps/libpamac-cpp-src/include/pamac/alpm_package.hpp:12,
from /build/mcp/src/build/_deps/libpamac-cpp-src/include/pamac/database.hpp:11,
from /build/mcp/src/manjaro-control-panel/libmcp/kernel/KernelProvider.hpp:17,
from /build/mcp/src/manjaro-control-panel/libmcp/kernel/KernelProvider.cpp:8:
/build/mcp/src/build/_deps/libpamac-cpp-src/include/pamac/package.hpp:15:10: fatal error: pamac.h: No such file or directory
15 | #include <pamac.h>
| ^~~~~~~~~
compilation terminated.
[12/96] Building CXX object _deps/libcoro-build/CMakeFiles/libcoro.dir/src/event.cpp.o
ninja: build stopped: subcommand failed.
==> ERROR: A failure occurred in build().
Aborting...
==> ERROR: Building package [b] failed.
Cleaning up.
1 Like
Ah, yeah, it needs only header. Weird that it doesn’t use headers from bundled pamac, I think I should add it as an include path… Thanks!
1 Like
I won’t be able to try, unfortunately. I have tried to keep as much of Plasma/KDE as possible off of my Xfce systems.
1 Like
omano
7 December 2025 12:50
17
When building the PKGBUILD, there is a conflict with mcp-qt and mcp-kcm:
:: Proceed with installation? [Y/n]
(3/3) checking keys in keyring [-------------------------------------------------------] 100%
(3/3) checking package integrity [-------------------------------------------------------] 100%
(3/3) loading package files [-------------------------------------------------------] 100%
(3/3) checking for file conflicts [-------------------------------------------------------] 100%
error: failed to commit transaction (conflicting files)
/usr/lib/qt6/plugins/plasma/kcms/systemsettings/kcm_mcp_kernel.so exists in both 'mcp-qt' and 'mcp-kcm'
/usr/share/applications/kcm_mcp_kernel.desktop exists in both 'mcp-qt' and 'mcp-kcm'
Errors occurred, no packages were upgraded.
==> WARNING: Failed to install built package(s).
==> Cleaning up...
1 Like
committed 12:50PM - 07 Dec 25 UTC
Try now, should work (with clean rebuild from scratch) without new makedepends. libmcp uses main branch of libpamac-cpp, so has to be fine.
Can reproduce. I think I didn’t catch this because was using --overwrite="*" to remove development unpackaged version. I think PKGBUILD needs to be more selective to not add these files to -qt.
1 Like
Both were the same issue and should be fixed.
1 Like
$ mcp-qt-classic
mcp-qt-classic: error while loading shared libraries: libmcp-qt-page-kernel.so: cannot open shared