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

150 lines
5.9 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
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)
# Run the daemon (useful for testing)
run: daemon
LD_LIBRARY_PATH=$(LIB_DIR):$$LD_LIBRARY_PATH ./$(BUILD_DIR)/ollie-kde
# Run the system tray (daemon must be running)
tray: daemon
./$(BUILD_DIR)/ollie-tray
# Install KRunner plugin
krunner-install: daemon
sudo cp $(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."
clean:
rm -rf $(BUILD_DIR)
rm -f $(LIB_DIR)/libollie.so $(LIB_DIR)/libollie.h
# Install Dolphin service menus
dolphin-install:
mkdir -p ~/.local/share/kio/servicemenus
cp dolphin/ollie-actions.desktop ~/.local/share/kio/servicemenus/
sudo cp dolphin/ollie-ask /usr/local/bin/
@echo "Dolphin menus installed. Restart Dolphin or re-open context menu."
# Install plasmoid to user's local plasma directory
plasmoid-install: daemon
kpackagetool6 -t Plasma/Applet -u plasmoid/ 2>/dev/null || \
kpackagetool6 -t Plasma/Applet -i plasmoid/
sudo mkdir -p /usr/lib64/qt6/qml/org/ollie/private
sudo cp $(BUILD_DIR)/org/ollie/private/ollie-plasmoid-pluginplugin.so \
/usr/lib64/qt6/qml/org/ollie/private/libollie-plasmoid-pluginplugin.so
sudo cp $(BUILD_DIR)/org/ollie/private/ollie-plasmoid-plugin.qmltypes \
/usr/lib64/qt6/qml/org/ollie/private/
sudo cp $(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' | \
sudo tee /usr/lib64/qt6/qml/org/ollie/private/qmldir > /dev/null
sudo ldconfig
@echo "Plasmoid installed. Restart plasmashell or add widget."
plasmoid-uninstall:
kpackagetool6 -t Plasma/Applet -r org.ollie.plasmoid 2>/dev/null || true
sudo rm -rf /usr/lib64/qt6/qml/org/ollie
sudo rm -f /usr/lib64/libollie-plasmoid-plugin.so
sudo ldconfig
@echo "Plasmoid uninstalled."
install: daemon
@echo "=== Installing ollie-kde ==="
# Daemon + shared library
sudo install -m755 $(BUILD_DIR)/ollie-kde /usr/bin/
sudo install -m755 $(BUILD_DIR)/ollie-tray /usr/bin/
sudo install -m755 $(LIB_DIR)/libollie.so /usr/lib64/
# KRunner plugin
sudo install -m755 $(BUILD_DIR)/lib/kf6/krunner/krunner_ollie.so \
/usr/lib64/qt6/plugins/kf6/krunner/
# Kate plugin
sudo install -m755 $(BUILD_DIR)/lib/kf6/ktexteditor/ollie_kate.so \
/usr/lib64/qt6/plugins/kf6/ktexteditor/
# Plasmoid QML plugin
sudo mkdir -p /usr/lib64/qt6/qml/org/ollie/private
sudo cp $(BUILD_DIR)/org/ollie/private/ollie-plasmoid-pluginplugin.so \
/usr/lib64/qt6/qml/org/ollie/private/libollie-plasmoid-pluginplugin.so
sudo cp $(BUILD_DIR)/org/ollie/private/ollie-plasmoid-plugin.qmltypes \
/usr/lib64/qt6/qml/org/ollie/private/
sudo 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' | \
sudo tee /usr/lib64/qt6/qml/org/ollie/private/qmldir > /dev/null
# Plasmoid package
kpackagetool6 -t Plasma/Applet -u plasmoid/ 2>/dev/null || \
kpackagetool6 -t Plasma/Applet -i plasmoid/
# Dolphin service menus + helpers
mkdir -p ~/.local/share/kio/servicemenus
install -m755 dolphin/ollie-actions.desktop ~/.local/share/kio/servicemenus/
sudo install -m755 dolphin/ollie-ask /usr/local/bin/
sudo install -m755 dolphin/ollie-session-here /usr/local/bin/
# Service setup (detect init system)
@if [ -d /etc/user/init.d ] || rc-status --version 2>/dev/null | grep -q "0\.\(6[0-9]\|[7-9]\)"; then \
echo "=== OpenRC detected (user services) ==="; \
sudo install -m755 services/ollie-kde.openrc /etc/user/init.d/ollie-kde; \
echo "Run: rc-update --user add ollie-kde default"; \
echo "Run: rc-service --user ollie-kde start"; \
elif [ -d /run/systemd/system ]; then \
echo "=== systemd detected ==="; \
mkdir -p ~/.config/systemd/user; \
install -m644 services/ollie-kde.service ~/.config/systemd/user/; \
echo "Run: systemctl --user enable --now ollie-kde"; \
else \
echo "=== WARNING: No supported init system detected ==="; \
echo "Neither OpenRC (>=0.60) nor systemd found."; \
echo "You will need to start ollie-kde manually or set up"; \
echo "autostart for your session manager (e.g. XDG autostart)."; \
fi
# Finalize
sudo ldconfig
kquitapp6 krunner 2>/dev/null; true
@echo ""
@echo "=== Installation complete ==="
@echo "Restart Kate, KRunner, and plasmashell to pick up plugins."
uninstall:
@echo "=== Uninstalling ollie-kde ==="
# Stop service
rc-service --user ollie-kde stop 2>/dev/null; true
rc-update --user del ollie-kde 2>/dev/null; true
systemctl --user disable --now ollie-kde 2>/dev/null; true
# Daemon + shared library
sudo rm -f /usr/bin/ollie-kde /usr/bin/ollie-tray
sudo rm -f /usr/lib64/libollie.so /usr/lib64/libollie-plasmoid-plugin.so
# KRunner plugin
sudo rm -f /usr/lib64/qt6/plugins/kf6/krunner/krunner_ollie.so
# Kate plugin
sudo rm -f /usr/lib64/qt6/plugins/kf6/ktexteditor/ollie_kate.so
# Plasmoid QML plugin
sudo rm -rf /usr/lib64/qt6/qml/org/ollie
# Plasmoid package
kpackagetool6 -t Plasma/Applet -r org.ollie.plasmoid 2>/dev/null; true
# Dolphin service menus + helpers
rm -f ~/.local/share/kio/servicemenus/ollie-actions.desktop
sudo rm -f /usr/local/bin/ollie-ask /usr/local/bin/ollie-session-here
# Service files
sudo rm -f /etc/user/init.d/ollie-kde
rm -f ~/.config/systemd/user/ollie-kde.service
# Finalize
sudo ldconfig
kquitapp6 krunner 2>/dev/null; true
@echo "=== Uninstall complete ==="