Introduce terminal-based workflows for BackTunnel via TUI scripts and service menus

Add `backtunnel-open-term`, `backtunnel-share-tui`, and `backtunnel-access-tui` scripts for terminal-based interaction. Update Dolphin service menus to enable TUI workflows, with improved terminal detection logic. Enhance installation and uninstallation scripts to handle new files. Update README with terminal workflow details and logging information.
This commit is contained in:
2025-09-19 15:30:41 +02:00
parent f42344ebe8
commit 608a6a371f
9 changed files with 276 additions and 71 deletions

View File

@@ -1,50 +1,69 @@
#!/usr/bin/env bash
# Copyright (c) 2025. LUXIM d.o.o., Slovenia - Matjaž Mozetič.
# BackTunnel uninstaller (with optional PURGE=1 to remove shared defaults)
set -euo pipefail
CONFIRM=1
while [[ $# -gt 0 ]]; do
case "$1" in
-y|--yes) CONFIRM=0; shift;;
-h|--help) echo "Usage: $(basename "$0") [--yes]"; exit 0;;
*) echo "Unknown option: $1" >&2; exit 1;;
esac
done
PREFIX=${PREFIX:-/usr}
DESTDIR=${DESTDIR:-}
PURGE=${PURGE:-0} # set PURGE=1 to remove /usr/share/backtunnel and /etc/backtunnel
if [[ $CONFIRM -ne 0 ]]; then
read -r -p "Remove BackTunnel binaries, manpage, completions, service menus, and desktop file? [y/N] " ans
case "${ans:-N}" in y|Y|yes|YES) ;; *) echo "Aborted."; exit 1;; esac
BINDIR="$DESTDIR$PREFIX/bin"
MANDIR="$DESTDIR$PREFIX/share/man/man1"
KIO_SM="$DESTDIR$PREFIX/share/kio/servicemenus"
KSVC5="$DESTDIR$PREFIX/share/kservices5/ServiceMenus"
APPDIR="$DESTDIR$PREFIX/share/applications"
BCOMP="$DESTDIR$PREFIX/share/bash-completion/completions"
SHARE_DIR="$DESTDIR$PREFIX/share/backtunnel"
ETC_DIR="$DESTDIR/etc/backtunnel"
say() { printf '[BackTunnel] %s\n' "$*"; }
say "Uninstalling from PREFIX=${PREFIX} DESTDIR=${DESTDIR} (PURGE=${PURGE})"
# --- Remove binaries ---
rm -f "$BINDIR/backtunnel-share" \
"$BINDIR/backtunnel-access" \
"$BINDIR/backtunnel-share-gui" \
"$BINDIR/backtunnel-access-gui" \
"$BINDIR/backtunnel-open-term" \
"$BINDIR/backtunnel-share-tui" \
"$BINDIR/backtunnel-access-tui"
# --- Man page ---
rm -f "$MANDIR/backtunnel.1"
# --- Bash completions ---
rm -f "$BCOMP/backtunnel-share" \
"$BCOMP/backtunnel-access"
# --- Dolphin service menus (Plasma 6 + legacy) ---
rm -f "$KIO_SM/backtunnel_share.desktop" \
"$KIO_SM/backtunnel_access.desktop" \
"$KSVC5/backtunnel_share.desktop" \
"$KSVC5/backtunnel_access.desktop"
# --- Optional desktop launcher ---
rm -f "$APPDIR/backtunnel.desktop" || true
# --- Shared defaults (only if PURGE=1) ---
if [[ "$PURGE" = "1" ]]; then
say "Purging shared defaults under $SHARE_DIR and $ETC_DIR"
rm -f "$SHARE_DIR/profiles.ini" 2>/dev/null || true
rm -f "$ETC_DIR/profiles.ini" 2>/dev/null || true
# Remove directories if empty (and prune empty parents)
rmdir -p --ignore-fail-on-non-empty "$SHARE_DIR" 2>/dev/null || true
rmdir -p --ignore-fail-on-non-empty "$ETC_DIR" 2>/dev/null || true
else
# Optionally clean up empty share dir if package manager removed files already
rmdir -p --ignore-fail-on-non-empty "$SHARE_DIR" 2>/dev/null || true
say "Keeping shared defaults: $SHARE_DIR/ and $ETC_DIR/ (set PURGE=1 to remove)"
fi
echo "🧹 Removing binaries ..."
sudo rm -f /usr/local/bin/backtunnel-share /usr/local/bin/backtunnel-access || true
echo "🧹 Removing man page ..."
sudo rm -f /usr/local/share/man/man1/backtunnel.1 || true
sudo mandb || true
echo "🧹 Removing bash completion ..."
sudo rm -f /usr/share/bash-completion/completions/backtunnel-share || true
sudo rm -f /usr/share/bash-completion/completions/backtunnel-access || true
sudo rm -f /etc/bash_completion.d/backtunnel || true
echo "🧹 Removing Dolphin service menus ..."
sudo rm -f /usr/share/kio/servicemenus/backtunnel_share.desktop || true
sudo rm -f /usr/share/kio/servicemenus/backtunnel_access.desktop || true
sudo rm -f /usr/share/kservices5/ServiceMenus/backtunnel_share.desktop || true
sudo rm -f /usr/share/kservices5/ServiceMenus/backtunnel_access.desktop || true
echo "🧹 Removing desktop launcher ..."
sudo rm -f /usr/share/applications/backtunnel.desktop || true
# Refresh desktop DB and KDE service cache (best-effort)
command -v update-desktop-database >/dev/null 2>&1 && sudo update-desktop-database -q || true
# --- Refresh desktop/KDE cache (best-effort) ---
command -v update-desktop-database >/dev/null 2>&1 && update-desktop-database -q || true
if command -v kbuildsycoca6 >/dev/null 2>&1; then
kbuildsycoca6 --noincremental >/dev/null 2>&1 || true
elif command -v kbuildsycoca5 >/dev/null 2>&1; then
kbuildsycoca5 --noincremental >/dev/null 2>&1 || true
fi
echo "Uninstall complete."
say "Uninstall complete."