diff --git a/Makefile b/Makefile index 89bad97..d23a975 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ 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 fix-build-perms + tray all: daemon @@ -18,19 +18,10 @@ $(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 fix-build-perms +daemon: lib cmake -B $(BUILD_DIR) -S . cmake --build $(BUILD_DIR) -# Fix build directory permissions if a previous sudo install contaminated them. -# This happens when cmake re-runs during `sudo make install` or when `sudo cp` -# somehow taints the build tree. -fix-build-perms: - @if [ -d $(BUILD_DIR) ] && find $(BUILD_DIR) -not -user $$(id -u) -print -quit 2>/dev/null | grep -q .; then \ - echo "Fixing build directory permissions (root-owned files detected)..."; \ - sudo chown -R $$(id -u):$$(id -g) $(BUILD_DIR); \ - fi - # Step 2b: Build using KF5/Qt5 (for Plasma 5.27) kf5: lib @cp CMakeLists.txt CMakeLists.txt.kf6.bak && \ @@ -44,27 +35,27 @@ kf5: lib install: daemon @echo "=== Installing ollie-kde (KF6) ===" # Daemon + tray binaries - sudo install -m755 $(BUILD_DIR)/ollie-kde /usr/bin/ - sudo install -m755 $(BUILD_DIR)/ollie-tray /usr/bin/ + install -m755 $(BUILD_DIR)/ollie-kde /usr/bin/ + install -m755 $(BUILD_DIR)/ollie-tray /usr/bin/ # Go shared library - sudo install -m755 $(LIB_DIR)/libollie.so /usr/lib64/ + install -m755 $(LIB_DIR)/libollie.so /usr/lib64/ # KRunner plugin - sudo mkdir -p /usr/lib64/qt6/plugins/kf6/krunner - sudo install -m755 $(BUILD_DIR)/lib/kf6/krunner/krunner_ollie.so \ + 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 - sudo mkdir -p /usr/lib64/qt6/plugins/kf6/ktexteditor - sudo install -m755 $(BUILD_DIR)/lib/kf6/ktexteditor/ollie_kate.so \ + 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 - sudo mkdir -p /usr/lib64/qt6/qml/org/ollie/private - sudo install -m755 $(BUILD_DIR)/org/ollie/private/ollie-plasmoid-pluginplugin.so \ + 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 - sudo install -m644 $(BUILD_DIR)/org/ollie/private/ollie-plasmoid-plugin.qmltypes \ + install -m644 $(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/ + 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 + 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/ @@ -72,12 +63,12 @@ install: daemon 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/ - sudo install -m755 dolphin/ollie-ask /usr/local/bin/ - sudo install -m755 dolphin/ollie-session-here /usr/local/bin/ + install -m755 dolphin/ollie-ask /usr/local/bin/ + install -m755 dolphin/ollie-session-here /usr/local/bin/ # XDG autostart - sudo install -m644 org.ollie.SessionManager.desktop /etc/xdg/autostart/ + install -m644 org.ollie.SessionManager.desktop /etc/xdg/autostart/ # Finalize - sudo ldconfig + ldconfig kquitapp6 krunner 2>/dev/null; true @echo "" @echo "=== Installation complete (KF6) ===" @@ -86,24 +77,24 @@ install: daemon uninstall: @echo "=== Uninstalling ollie-kde ===" pkill -u "$$(id -u)" -x ollie-kde 2>/dev/null; true - sudo rm -f /usr/bin/ollie-kde /usr/bin/ollie-tray - sudo rm -f /usr/lib64/libollie.so /usr/lib64/libollie-plasmoid-plugin.so - sudo rm -f /usr/lib64/qt6/plugins/kf6/krunner/krunner_ollie.so - sudo rm -f /usr/lib64/qt6/plugins/kf6/ktexteditor/ollie_kate.so - sudo rm -rf /usr/lib64/qt6/qml/org/ollie + 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 - sudo rm -f /usr/local/bin/ollie-ask /usr/local/bin/ollie-session-here - sudo rm -f /etc/xdg/autostart/org.ollie.SessionManager.desktop - sudo ldconfig + 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 - sudo mkdir -p /usr/lib64/qt6/plugins/kf6/krunner - sudo install -m755 $(BUILD_DIR)/lib/kf6/krunner/krunner_ollie.so \ + 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." @@ -112,29 +103,29 @@ 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/ - sudo install -m755 dolphin/ollie-ask /usr/local/bin/ - sudo install -m755 dolphin/ollie-session-here /usr/local/bin/ + 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/ - sudo mkdir -p /usr/lib64/qt6/qml/org/ollie/private - sudo install -m755 $(BUILD_DIR)/org/ollie/private/ollie-plasmoid-pluginplugin.so \ + 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 - sudo install -m644 $(BUILD_DIR)/org/ollie/private/ollie-plasmoid-plugin.qmltypes \ + install -m644 $(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/ + 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 - sudo ldconfig + 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 - sudo rm -rf /usr/lib64/qt6/qml/org/ollie - sudo rm -f /usr/lib64/libollie-plasmoid-plugin.so - sudo ldconfig + rm -rf /usr/lib64/qt6/qml/org/ollie + rm -f /usr/lib64/libollie-plasmoid-plugin.so + ldconfig @echo "Plasmoid uninstalled." # --- KF5 Install --- @@ -142,23 +133,23 @@ plasmoid-uninstall: kf5-install: kf5 @echo "=== Installing ollie-kde (KF5) ===" # Daemon + tray binaries - sudo install -m755 $(BUILD_DIR)/ollie-kde /usr/bin/ - sudo install -m755 $(BUILD_DIR)/ollie-tray /usr/bin/ + install -m755 $(BUILD_DIR)/ollie-kde /usr/bin/ + install -m755 $(BUILD_DIR)/ollie-tray /usr/bin/ # Go shared library - sudo install -m755 $(LIB_DIR)/libollie.so /usr/lib/x86_64-linux-gnu/ + install -m755 $(LIB_DIR)/libollie.so /usr/lib/x86_64-linux-gnu/ # KRunner plugin - sudo mkdir -p /usr/lib/x86_64-linux-gnu/qt5/plugins/kf5/krunner - sudo install -m755 $(BUILD_DIR)/lib/krunner_ollie.so \ + 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 - sudo mkdir -p /usr/lib/x86_64-linux-gnu/qt5/plugins/ktexteditor - sudo install -m755 $(BUILD_DIR)/lib/ollie_kate.so \ + 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 - sudo mkdir -p /usr/lib/x86_64-linux-gnu/qt5/qml/org/ollie/private - sudo install -m755 $(BUILD_DIR)/lib/libollieprivateplugin.so \ + 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/ - sudo install -m644 plasmoid/plugin/qmldir \ + 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 @@ -171,12 +162,12 @@ kf5-install: kf5 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 - sudo install -m755 dolphin/ollie-ask /usr/local/bin/ - sudo install -m755 dolphin/ollie-session-here /usr/local/bin/ + install -m755 dolphin/ollie-ask /usr/local/bin/ + install -m755 dolphin/ollie-session-here /usr/local/bin/ # XDG autostart - sudo install -m644 org.ollie.SessionManager.desktop /etc/xdg/autostart/ + install -m644 org.ollie.SessionManager.desktop /etc/xdg/autostart/ # Finalize - sudo ldconfig + ldconfig kquitapp5 krunner 2>/dev/null; true @echo "" @echo "=== Installation complete (KF5) ===" @@ -185,16 +176,16 @@ kf5-install: kf5 kf5-uninstall: @echo "=== Uninstalling ollie-kde (KF5) ===" pkill -u "$$(id -u)" -x ollie-kde 2>/dev/null; true - sudo rm -f /usr/bin/ollie-kde /usr/bin/ollie-tray - sudo rm -f /usr/lib/x86_64-linux-gnu/libollie.so - sudo rm -f /usr/lib/x86_64-linux-gnu/qt5/plugins/kf5/krunner/krunner_ollie.so - sudo rm -f /usr/lib/x86_64-linux-gnu/qt5/plugins/ktexteditor/ollie_kate.so - sudo rm -rf /usr/lib/x86_64-linux-gnu/qt5/qml/org/ollie + 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 - sudo rm -f /usr/local/bin/ollie-ask /usr/local/bin/ollie-session-here - sudo rm -f /etc/xdg/autostart/org.ollie.SessionManager.desktop - sudo ldconfig + 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) ==="