update kde plasmoid and build config

This commit is contained in:
Levi Neely 2026-07-06 18:22:38 +02:00
parent f8b923ea13
commit e79cb33adb
4 changed files with 194 additions and 98 deletions

1
.gitignore vendored
View File

@ -1,2 +1,3 @@
build/
build-cmake/
build-kf5/

View File

@ -1,6 +1,13 @@
cmake_minimum_required(VERSION 3.20)
cmake_minimum_required(VERSION 3.16)
project(kde-ollie VERSION 0.1.0 LANGUAGES CXX)
option(OLLIE_KF5 "Build against KF5/Qt5 (Plasma 5.27)" OFF)
# Suppress CMP0160 warnings from KF5 cmake files (read-only IMPORTED property)
if(OLLIE_KF5)
cmake_policy(SET CMP0160 OLD)
endif()
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_AUTOMOC ON)
@ -14,100 +21,189 @@ include(KDECompilerSettings NO_POLICY_SCOPE)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
find_package(Qt6 REQUIRED COMPONENTS Core DBus Widgets Quick)
find_package(KF6StatusNotifierItem REQUIRED)
find_package(KF6 REQUIRED COMPONENTS Runner Notifications CoreAddons Config)
find_package(Plasma REQUIRED)
# libollie.so built by Go (expected in build/ after `make lib`)
set(OLLIE_LIB "${CMAKE_SOURCE_DIR}/build/libollie.so")
set(OLLIE_HEADER "${CMAKE_SOURCE_DIR}/build/libollie.h")
# --- Daemon ---
if(OLLIE_KF5)
# --- Qt5 / KF5 ---
find_package(Qt5 REQUIRED COMPONENTS Core DBus Widgets Quick Qml)
find_package(KF5 REQUIRED COMPONENTS
Notifications
Runner
CoreAddons
Config
Plasma
TextEditor
)
qt6_add_dbus_adaptor(DBUS_ADAPTOR_SRCS
daemon/org.ollie.SessionManager.xml
daemon/session_manager.h SessionManager)
# --- Daemon ---
qt5_add_dbus_adaptor(DBUS_ADAPTOR_SRCS
daemon/org.ollie.SessionManager.xml
daemon/session_manager.h SessionManager)
add_executable(ollie-kde
daemon/main.cpp
daemon/session_manager.cpp
${DBUS_ADAPTOR_SRCS}
)
target_include_directories(ollie-kde PRIVATE
${CMAKE_SOURCE_DIR}/build
${CMAKE_SOURCE_DIR}
${CMAKE_CURRENT_BINARY_DIR}
)
target_link_libraries(ollie-kde
Qt6::Core
Qt6::DBus
${OLLIE_LIB}
)
add_executable(ollie-kde
daemon/main.cpp
daemon/session_manager.cpp
${DBUS_ADAPTOR_SRCS}
)
target_include_directories(ollie-kde PRIVATE
${CMAKE_SOURCE_DIR}/build
${CMAKE_SOURCE_DIR}
${CMAKE_CURRENT_BINARY_DIR}
)
target_link_libraries(ollie-kde
Qt5::Core
Qt5::DBus
${OLLIE_LIB}
)
# --- System Tray ---
# --- System Tray ---
add_executable(ollie-tray
tray/main.cpp
tray/ollie_tray.cpp
)
target_include_directories(ollie-tray PRIVATE
${CMAKE_SOURCE_DIR}
)
target_link_libraries(ollie-tray
Qt5::Core
Qt5::DBus
Qt5::Widgets
KF5::Notifications
)
add_executable(ollie-tray
tray/main.cpp
tray/ollie_tray.cpp
)
target_include_directories(ollie-tray PRIVATE
${CMAKE_SOURCE_DIR}
)
target_link_libraries(ollie-tray
Qt6::Core
Qt6::DBus
Qt6::Widgets
KF6::StatusNotifierItem
)
# --- KRunner Plugin ---
kcoreaddons_add_plugin(krunner_ollie SOURCES krunner/ollie_runner.cpp INSTALL_NAMESPACE "kf5/krunner")
target_link_libraries(krunner_ollie
KF5::Runner
Qt5::Core
Qt5::DBus
Qt5::Widgets
)
# --- KRunner Plugin ---
# --- Kate Plugin ---
kcoreaddons_add_plugin(ollie_kate SOURCES kate/ollie_kate.cpp INSTALL_NAMESPACE "kf5/ktexteditor")
target_link_libraries(ollie_kate
KF5::TextEditor
Qt5::Core
Qt5::DBus
Qt5::Widgets
)
kcoreaddons_add_plugin(krunner_ollie SOURCES krunner/ollie_runner.cpp INSTALL_NAMESPACE "kf6/krunner")
target_link_libraries(krunner_ollie
KF6::Runner
Qt6::Core
Qt6::DBus
Qt6::Widgets
)
# --- Kate Plugin ---
find_package(KF6TextEditor REQUIRED)
kcoreaddons_add_plugin(ollie_kate SOURCES kate/ollie_kate.cpp INSTALL_NAMESPACE "kf6/ktexteditor")
target_link_libraries(ollie_kate
KF6::TextEditor
Qt6::Core
Qt6::DBus
Qt6::Widgets
)
# --- Plasmoid QML Plugin ---
qt6_add_qml_module(ollie-plasmoid-plugin
URI org.ollie.private
VERSION 1.0
SOURCES
plasmoid/plugin/olliedbusclient.h
# --- Plasmoid QML Plugin (manual for Qt5) ---
add_library(ollie-plasmoid-plugin SHARED
plasmoid/plugin/olliedbusclient.cpp
OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/org/ollie/private
)
target_link_libraries(ollie-plasmoid-plugin PRIVATE
Qt6::Core
Qt6::DBus
Qt6::Quick
)
target_include_directories(ollie-plasmoid-plugin PRIVATE
${CMAKE_SOURCE_DIR}/plasmoid/plugin
)
plasmoid/plugin/qmlplugin.cpp
)
target_link_libraries(ollie-plasmoid-plugin
Qt5::Core
Qt5::DBus
Qt5::Quick
Qt5::Qml
)
target_include_directories(ollie-plasmoid-plugin PRIVATE
${CMAKE_SOURCE_DIR}/plasmoid/plugin
)
set_target_properties(ollie-plasmoid-plugin PROPERTIES
OUTPUT_NAME "ollieprivateplugin"
)
# --- Plasmoid Package ---
# --- Plasmoid Package ---
plasma_install_package(plasmoid org.ollie.plasmoid)
plasma_install_package(plasmoid org.ollie.plasmoid)
# --- Install ---
install(TARGETS ollie-kde ollie-tray DESTINATION ${KDE_INSTALL_BINDIR})
install(TARGETS ollie-plasmoid-plugin
DESTINATION ${KDE_INSTALL_QMLDIR}/org/ollie/private)
install(FILES plasmoid/plugin/qmldir
DESTINATION ${KDE_INSTALL_QMLDIR}/org/ollie/private)
# --- Install ---
else()
# --- Qt6 / KF6 ---
find_package(Qt6 REQUIRED COMPONENTS Core DBus Widgets Quick)
find_package(KF6StatusNotifierItem REQUIRED)
find_package(KF6 REQUIRED COMPONENTS Runner Notifications CoreAddons Config)
find_package(Plasma REQUIRED)
install(TARGETS ollie-kde ollie-tray DESTINATION ${KDE_INSTALL_BINDIR})
install(TARGETS ollie-plasmoid-plugin
DESTINATION ${KDE_INSTALL_QMLDIR}/org/ollie/private)
# --- Daemon ---
qt6_add_dbus_adaptor(DBUS_ADAPTOR_SRCS
daemon/org.ollie.SessionManager.xml
daemon/session_manager.h SessionManager)
add_executable(ollie-kde
daemon/main.cpp
daemon/session_manager.cpp
${DBUS_ADAPTOR_SRCS}
)
target_include_directories(ollie-kde PRIVATE
${CMAKE_SOURCE_DIR}/build
${CMAKE_SOURCE_DIR}
${CMAKE_CURRENT_BINARY_DIR}
)
target_link_libraries(ollie-kde
Qt6::Core
Qt6::DBus
${OLLIE_LIB}
)
# --- System Tray ---
add_executable(ollie-tray
tray/main.cpp
tray/ollie_tray.cpp
)
target_include_directories(ollie-tray PRIVATE
${CMAKE_SOURCE_DIR}
)
target_link_libraries(ollie-tray
Qt6::Core
Qt6::DBus
Qt6::Widgets
KF6::StatusNotifierItem
)
# --- KRunner Plugin ---
kcoreaddons_add_plugin(krunner_ollie SOURCES krunner/ollie_runner.cpp INSTALL_NAMESPACE "kf6/krunner")
target_link_libraries(krunner_ollie
KF6::Runner
Qt6::Core
Qt6::DBus
Qt6::Widgets
)
# --- Kate Plugin ---
find_package(KF6TextEditor REQUIRED)
kcoreaddons_add_plugin(ollie_kate SOURCES kate/ollie_kate.cpp INSTALL_NAMESPACE "kf6/ktexteditor")
target_link_libraries(ollie_kate
KF6::TextEditor
Qt6::Core
Qt6::DBus
Qt6::Widgets
)
# --- Plasmoid QML Plugin ---
qt6_add_qml_module(ollie-plasmoid-plugin
URI org.ollie.private
VERSION 1.0
SOURCES
plasmoid/plugin/olliedbusclient.h
plasmoid/plugin/olliedbusclient.cpp
OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/org/ollie/private
)
target_link_libraries(ollie-plasmoid-plugin PRIVATE
Qt6::Core
Qt6::DBus
Qt6::Quick
)
target_include_directories(ollie-plasmoid-plugin PRIVATE
${CMAKE_SOURCE_DIR}/plasmoid/plugin
)
# --- Plasmoid Package ---
plasma_install_package(plasmoid org.ollie.plasmoid)
# --- Install ---
install(TARGETS ollie-kde ollie-tray DESTINATION ${KDE_INSTALL_BINDIR})
install(TARGETS ollie-plasmoid-plugin
DESTINATION ${KDE_INSTALL_QMLDIR}/org/ollie/private)
endif()

View File

@ -23,12 +23,11 @@ daemon: lib
cmake --build $(BUILD_DIR)
# Step 2b: Build using KF5/Qt5 (for Plasma 5.27)
KF5_BUILD_DIR := build-kf5
kf5: lib
@cp CMakeLists.txt CMakeLists.txt.kf6.bak && \
trap 'mv -f CMakeLists.txt.kf6.bak CMakeLists.txt' EXIT && \
cp CMakeLists-kf5.txt CMakeLists.txt && \
cmake -B $(BUILD_DIR) -S . --fresh && \
cmake --build $(BUILD_DIR)
cmake -B $(KF5_BUILD_DIR) -S . -DOLLIE_KF5=ON
cmake --build $(KF5_BUILD_DIR)
# --- KF6 Install (default) ---
@ -133,21 +132,21 @@ plasmoid-uninstall:
kf5-install: kf5
@echo "=== Installing ollie-kde (KF5) ==="
# Daemon + tray binaries
install -m755 $(BUILD_DIR)/ollie-kde /usr/bin/
install -m755 $(BUILD_DIR)/ollie-tray /usr/bin/
install -m755 $(KF5_BUILD_DIR)/ollie-kde /usr/bin/
install -m755 $(KF5_BUILD_DIR)/ollie-tray /usr/bin/
# Go shared library
install -m755 $(LIB_DIR)/libollie.so /usr/lib/x86_64-linux-gnu/
# KRunner plugin
mkdir -p /usr/lib/x86_64-linux-gnu/qt5/plugins/kf5/krunner
install -m755 $(BUILD_DIR)/lib/krunner_ollie.so \
install -m755 $(KF5_BUILD_DIR)/lib/krunner_ollie.so \
/usr/lib/x86_64-linux-gnu/qt5/plugins/kf5/krunner/
# Kate plugin
mkdir -p /usr/lib/x86_64-linux-gnu/qt5/plugins/ktexteditor
install -m755 $(BUILD_DIR)/lib/ollie_kate.so \
install -m755 $(KF5_BUILD_DIR)/lib/ollie_kate.so \
/usr/lib/x86_64-linux-gnu/qt5/plugins/ktexteditor/
# Plasmoid QML plugin
mkdir -p /usr/lib/x86_64-linux-gnu/qt5/qml/org/ollie/private
install -m755 $(BUILD_DIR)/lib/libollieprivateplugin.so \
install -m755 $(KF5_BUILD_DIR)/lib/libollieprivateplugin.so \
/usr/lib/x86_64-linux-gnu/qt5/qml/org/ollie/private/
install -m644 plasmoid/plugin/qmldir \
/usr/lib/x86_64-linux-gnu/qt5/qml/org/ollie/private/

View File

@ -160,7 +160,7 @@ Item {
Layout.fillWidth: true
elide: Text.ElideRight
font.family: "monospace"
font.pixelSize: Kirigami.Theme.defaultFont.pixelSize
font.pointSize: Kirigami.Theme.defaultFont.pointSize
visible: !sessionDelegate.renaming
}
@ -168,7 +168,7 @@ Item {
id: inlineRenameField
Layout.fillWidth: true
font.family: "monospace"
font.pixelSize: Kirigami.Theme.defaultFont.pixelSize
font.pointSize: Kirigami.Theme.defaultFont.pointSize
visible: sessionDelegate.renaming
onAccepted: {
var newName = text.trim()
@ -195,7 +195,7 @@ Item {
Label {
text: modelData.agent
opacity: 0.7
font.pixelSize: Kirigami.Theme.smallFont.pixelSize
font.pointSize: Kirigami.Theme.defaultFont.pointSize
visible: !sessionDelegate.renaming
}
@ -232,7 +232,7 @@ Item {
? "(waiting for output...)"
: "Select or create a session")
font.family: "monospace"
font.pixelSize: Kirigami.Theme.defaultFont.pixelSize
font.pointSize: Kirigami.Theme.defaultFont.pointSize
color: dbus.chatText
? Kirigami.Theme.textColor
: Kirigami.Theme.disabledTextColor
@ -283,7 +283,7 @@ Item {
Layout.fillWidth: true
Layout.leftMargin: 8
Layout.bottomMargin: 4
font.pixelSize: Kirigami.Theme.smallFont.pixelSize
font.pointSize: Kirigami.Theme.defaultFont.pointSize
opacity: 0.6
text: {
var id = dbus.activeSessionId