kde: fix Makefile for KF6/KF5 install paths and permissions
This commit is contained in:
parent
0a3a49c920
commit
deffb92317
238
Makefile
238
Makefile
|
|
@ -4,7 +4,10 @@
|
|||
BUILD_DIR := build-cmake
|
||||
LIB_DIR := build
|
||||
|
||||
.PHONY: all lib daemon clean run
|
||||
.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
|
||||
|
||||
all: daemon
|
||||
|
||||
|
|
@ -15,10 +18,19 @@ $(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
|
||||
daemon: lib fix-build-perms
|
||||
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 && \
|
||||
|
|
@ -27,17 +39,117 @@ kf5: lib
|
|||
cmake -B $(BUILD_DIR) -S . --fresh && \
|
||||
cmake --build $(BUILD_DIR)
|
||||
|
||||
# Install the KF5 build
|
||||
kf5-install: kf5
|
||||
@echo "=== Installing ollie-kde (KF5) ==="
|
||||
# Daemon + shared library
|
||||
# --- KF6 Install (default) ---
|
||||
|
||||
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/
|
||||
# Go shared library
|
||||
sudo 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 \
|
||||
/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 \
|
||||
/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 \
|
||||
/usr/lib64/qt6/qml/org/ollie/private/libollie-plasmoid-pluginplugin.so
|
||||
sudo 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/
|
||||
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 (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
|
||||
install -m644 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/
|
||||
# XDG autostart
|
||||
sudo install -m644 org.ollie.SessionManager.desktop /etc/xdg/autostart/
|
||||
# Finalize
|
||||
sudo 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
|
||||
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
|
||||
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
|
||||
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 \
|
||||
/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
|
||||
install -m644 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/
|
||||
@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 \
|
||||
/usr/lib64/qt6/qml/org/ollie/private/libollie-plasmoid-pluginplugin.so
|
||||
sudo 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/
|
||||
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."
|
||||
|
||||
# --- KF5 Install ---
|
||||
|
||||
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/
|
||||
# Go shared library
|
||||
sudo 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 \
|
||||
/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 \
|
||||
/usr/lib/x86_64-linux-gnu/qt5/plugins/ktexteditor/
|
||||
# Plasmoid QML plugin
|
||||
|
|
@ -46,19 +158,19 @@ kf5-install: kf5
|
|||
/usr/lib/x86_64-linux-gnu/qt5/qml/org/ollie/private/
|
||||
sudo install -m644 plasmoid/plugin/qmldir \
|
||||
/usr/lib/x86_64-linux-gnu/qt5/qml/org/ollie/private/
|
||||
# Plasmoid package (use temp copy to avoid clobbering source tree ownership)
|
||||
# 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 -u /tmp/ollie-plasmoid-kf5/ 2>/dev/null || \
|
||||
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 + helpers
|
||||
# Dolphin service menus + helper scripts
|
||||
mkdir -p ~/.local/share/kio/servicemenus
|
||||
install -m755 dolphin/ollie-actions.desktop ~/.local/share/kio/servicemenus/
|
||||
install -m644 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/
|
||||
# XDG autostart (starts with Plasma session)
|
||||
# XDG autostart
|
||||
sudo install -m644 org.ollie.SessionManager.desktop /etc/xdg/autostart/
|
||||
# Finalize
|
||||
sudo ldconfig
|
||||
|
|
@ -83,114 +195,14 @@ kf5-uninstall:
|
|||
kquitapp5 krunner 2>/dev/null; true
|
||||
@echo "=== Uninstall complete (KF5) ==="
|
||||
|
||||
# Run the daemon (useful for testing)
|
||||
# --- Development helpers ---
|
||||
|
||||
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
|
||||
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/
|
||||
@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/
|
||||
# XDG autostart (starts with Plasma session)
|
||||
sudo install -m644 org.ollie.SessionManager.desktop /etc/xdg/autostart/
|
||||
# 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 daemon
|
||||
pkill -u "$(shell id -u)" -x 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
|
||||
# XDG autostart
|
||||
sudo rm -f /etc/xdg/autostart/org.ollie.SessionManager.desktop
|
||||
# Finalize
|
||||
sudo ldconfig
|
||||
kquitapp6 krunner 2>/dev/null; true
|
||||
@echo "=== Uninstall complete ==="
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ Type=Service
|
|||
X-KDE-ServiceTypes=KonqPopupMenu/Plugin
|
||||
MimeType=all/allfiles;inode/directory;
|
||||
Actions=askOllie;sessionHere;
|
||||
X-KDE-AuthorizeAction=shell_access
|
||||
|
||||
[Desktop Action askOllie]
|
||||
Name=Ask Ollie about this
|
||||
|
|
|
|||
Reference in New Issue