This repository has been archived on 2026-08-16. You can view files and clone it, but cannot push or open issues or pull requests.
ollie-kde/Makefile

203 lines
8.1 KiB
Makefile

# kde-ollie top-level Makefile
# Build order: libollie.so (Go) → ollie-kde daemon (C++/CMake)
BUILD_DIR := build-cmake
LIB_DIR := build
.PHONY: all lib daemon clean run install uninstall \
kf5 kf5-install kf5-uninstall \
krunner-install dolphin-install plasmoid-install plasmoid-uninstall \
tray
all: daemon
# Step 1: Build libollie.so from Go
lib: $(LIB_DIR)/libollie.so
$(LIB_DIR)/libollie.so: lib/capi.go lib/go.mod
cd lib && go build -buildmode=c-shared -o ../$(LIB_DIR)/libollie.so
# Step 2: Build the C++ daemon against libollie.so
daemon: lib
cmake -B $(BUILD_DIR) -S .
cmake --build $(BUILD_DIR)
# Step 2b: Build using KF5/Qt5 (for Plasma 5.27)
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)
# --- KF6 Install (default) ---
install: daemon
@echo "=== Installing ollie-kde (KF6) ==="
# Daemon + tray binaries
install -m755 $(BUILD_DIR)/ollie-kde /usr/bin/
install -m755 $(BUILD_DIR)/ollie-tray /usr/bin/
# Go shared library
install -m755 $(LIB_DIR)/libollie.so /usr/lib64/
# KRunner plugin
mkdir -p /usr/lib64/qt6/plugins/kf6/krunner
install -m755 $(BUILD_DIR)/lib/kf6/krunner/krunner_ollie.so \
/usr/lib64/qt6/plugins/kf6/krunner/
# Kate plugin
mkdir -p /usr/lib64/qt6/plugins/kf6/ktexteditor
install -m755 $(BUILD_DIR)/lib/kf6/ktexteditor/ollie_kate.so \
/usr/lib64/qt6/plugins/kf6/ktexteditor/
# Plasmoid QML plugin library + metadata
mkdir -p /usr/lib64/qt6/qml/org/ollie/private
install -m755 $(BUILD_DIR)/org/ollie/private/ollie-plasmoid-pluginplugin.so \
/usr/lib64/qt6/qml/org/ollie/private/libollie-plasmoid-pluginplugin.so
install -m644 $(BUILD_DIR)/org/ollie/private/ollie-plasmoid-plugin.qmltypes \
/usr/lib64/qt6/qml/org/ollie/private/
install -m755 $(BUILD_DIR)/lib/libollie-plasmoid-plugin.so /usr/lib64/
printf 'module org.ollie.private\nplugin ollie-plasmoid-pluginplugin\ntypeinfo ollie-plasmoid-plugin.qmltypes\ndepends QtQuick\n' | \
tee /usr/lib64/qt6/qml/org/ollie/private/qmldir > /dev/null
# Plasmoid package (force-update by removing first)
kpackagetool6 -t Plasma/Applet -r org.ollie.plasmoid 2>/dev/null; true
kpackagetool6 -t Plasma/Applet -i plasmoid/
# Dolphin service menus + helper scripts
mkdir -p ~/.local/share/kio/servicemenus
rm -f ~/.local/share/kio/servicemenus/ollie-actions.desktop
install -m755 dolphin/ollie-actions.desktop ~/.local/share/kio/servicemenus/
install -m755 dolphin/ollie-ask /usr/local/bin/
install -m755 dolphin/ollie-session-here /usr/local/bin/
# XDG autostart
install -m644 org.ollie.SessionManager.desktop /etc/xdg/autostart/
# Finalize
ldconfig
kquitapp6 krunner 2>/dev/null; true
@echo ""
@echo "=== Installation complete (KF6) ==="
@echo "Restart Kate, KRunner, and plasmashell to pick up plugins."
uninstall:
@echo "=== Uninstalling ollie-kde ==="
pkill -u "$$(id -u)" -x ollie-kde 2>/dev/null; true
rm -f /usr/bin/ollie-kde /usr/bin/ollie-tray
rm -f /usr/lib64/libollie.so /usr/lib64/libollie-plasmoid-plugin.so
rm -f /usr/lib64/qt6/plugins/kf6/krunner/krunner_ollie.so
rm -f /usr/lib64/qt6/plugins/kf6/ktexteditor/ollie_kate.so
rm -rf /usr/lib64/qt6/qml/org/ollie
kpackagetool6 -t Plasma/Applet -r org.ollie.plasmoid 2>/dev/null; true
rm -f ~/.local/share/kio/servicemenus/ollie-actions.desktop
rm -f /usr/local/bin/ollie-ask /usr/local/bin/ollie-session-here
rm -f /etc/xdg/autostart/org.ollie.SessionManager.desktop
ldconfig
kquitapp6 krunner 2>/dev/null; true
@echo "=== Uninstall complete ==="
# --- Individual component installs ---
krunner-install: daemon
mkdir -p /usr/lib64/qt6/plugins/kf6/krunner
install -m755 $(BUILD_DIR)/lib/kf6/krunner/krunner_ollie.so \
/usr/lib64/qt6/plugins/kf6/krunner/
kquitapp6 krunner 2>/dev/null; true
@echo "KRunner plugin installed. Restart krunner or re-login."
dolphin-install:
mkdir -p ~/.local/share/kio/servicemenus
rm -f ~/.local/share/kio/servicemenus/ollie-actions.desktop
install -m755 dolphin/ollie-actions.desktop ~/.local/share/kio/servicemenus/
install -m755 dolphin/ollie-ask /usr/local/bin/
install -m755 dolphin/ollie-session-here /usr/local/bin/
@echo "Dolphin menus installed. Restart Dolphin or re-open context menu."
plasmoid-install: daemon
kpackagetool6 -t Plasma/Applet -r org.ollie.plasmoid 2>/dev/null; true
kpackagetool6 -t Plasma/Applet -i plasmoid/
mkdir -p /usr/lib64/qt6/qml/org/ollie/private
install -m755 $(BUILD_DIR)/org/ollie/private/ollie-plasmoid-pluginplugin.so \
/usr/lib64/qt6/qml/org/ollie/private/libollie-plasmoid-pluginplugin.so
install -m644 $(BUILD_DIR)/org/ollie/private/ollie-plasmoid-plugin.qmltypes \
/usr/lib64/qt6/qml/org/ollie/private/
install -m755 $(BUILD_DIR)/lib/libollie-plasmoid-plugin.so /usr/lib64/
printf 'module org.ollie.private\nplugin ollie-plasmoid-pluginplugin\ntypeinfo ollie-plasmoid-plugin.qmltypes\ndepends QtQuick\n' | \
tee /usr/lib64/qt6/qml/org/ollie/private/qmldir > /dev/null
ldconfig
@echo "Plasmoid installed. Restart plasmashell or add widget."
plasmoid-uninstall:
kpackagetool6 -t Plasma/Applet -r org.ollie.plasmoid 2>/dev/null; true
rm -rf /usr/lib64/qt6/qml/org/ollie
rm -f /usr/lib64/libollie-plasmoid-plugin.so
ldconfig
@echo "Plasmoid uninstalled."
# --- KF5 Install ---
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/
# 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 \
/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 \
/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 \
/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/
# Plasmoid package
cp -a plasmoid /tmp/ollie-plasmoid-kf5
cp plasmoid/metadata-kf5.json /tmp/ollie-plasmoid-kf5/metadata.json
cp plasmoid/contents/ui/main-kf5.qml /tmp/ollie-plasmoid-kf5/contents/ui/main.qml
kpackagetool5 -t Plasma/Applet -r org.ollie.plasmoid 2>/dev/null; true
kpackagetool5 -t Plasma/Applet -i /tmp/ollie-plasmoid-kf5/
$(RM) -r /tmp/ollie-plasmoid-kf5
# Dolphin service menus + helper scripts
mkdir -p ~/.local/share/kio/servicemenus
rm -f ~/.local/share/kio/servicemenus/ollie-actions.desktop
install -m755 dolphin/ollie-actions-kf5.desktop ~/.local/share/kio/servicemenus/ollie-actions.desktop
install -m755 dolphin/ollie-ask /usr/local/bin/
install -m755 dolphin/ollie-session-here /usr/local/bin/
# XDG autostart
install -m644 org.ollie.SessionManager.desktop /etc/xdg/autostart/
# Finalize
ldconfig
kquitapp5 krunner 2>/dev/null; true
@echo ""
@echo "=== Installation complete (KF5) ==="
@echo "Restart Kate, KRunner, and plasmashell to pick up plugins."
kf5-uninstall:
@echo "=== Uninstalling ollie-kde (KF5) ==="
pkill -u "$$(id -u)" -x ollie-kde 2>/dev/null; true
rm -f /usr/bin/ollie-kde /usr/bin/ollie-tray
rm -f /usr/lib/x86_64-linux-gnu/libollie.so
rm -f /usr/lib/x86_64-linux-gnu/qt5/plugins/kf5/krunner/krunner_ollie.so
rm -f /usr/lib/x86_64-linux-gnu/qt5/plugins/ktexteditor/ollie_kate.so
rm -rf /usr/lib/x86_64-linux-gnu/qt5/qml/org/ollie
kpackagetool5 -t Plasma/Applet -r org.ollie.plasmoid 2>/dev/null; true
rm -f ~/.local/share/kio/servicemenus/ollie-actions.desktop
rm -f /usr/local/bin/ollie-ask /usr/local/bin/ollie-session-here
rm -f /etc/xdg/autostart/org.ollie.SessionManager.desktop
ldconfig
kquitapp5 krunner 2>/dev/null; true
@echo "=== Uninstall complete (KF5) ==="
# --- Development helpers ---
run: daemon
LD_LIBRARY_PATH=$(LIB_DIR):$$LD_LIBRARY_PATH ./$(BUILD_DIR)/ollie-kde
tray: daemon
./$(BUILD_DIR)/ollie-tray
clean:
rm -rf $(BUILD_DIR)
rm -f $(LIB_DIR)/libollie.so $(LIB_DIR)/libollie.h