#!/usr/bin/env bash # Dikte installer: dependency check, launchers, KDE shortcut. set -euo pipefail DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PY="$(command -v python3)" BIN_DIR="$HOME/.local/bin" APP_DIR="$HOME/.local/share/applications" AUTOSTART_DIR="$HOME/.config/autostart" SHORTCUT="${1:-Ctrl+Space}" say() { printf ' %s\n' "$1"; } ok() { printf ' \033[32m✓\033[0m %s\n' "$1"; } warn() { printf ' \033[33m!\033[0m %s\n' "$1"; } echo echo "Installing Dikte" echo "────────────────" # 1. Dependencies ---------------------------------------------------------- missing=() for cmd in pw-record wl-copy wl-paste ydotool ffmpeg; do command -v "$cmd" >/dev/null || missing+=("$cmd") done python3 -c 'import PyQt6.QtWidgets' 2>/dev/null || missing+=("python-pyqt6") if ((${#missing[@]})); then warn "Missing: ${missing[*]}" say "Arch/CachyOS: sudo pacman -S --needed pipewire-audio wl-clipboard ydotool ffmpeg python-pyqt6" echo else ok "All dependencies present" fi # 2. ydotoold -------------------------------------------------------------- if command -v ydotool >/dev/null; then if systemctl --user is-active --quiet ydotool 2>/dev/null \ || systemctl --user is-active --quiet ydotoold 2>/dev/null; then ok "ydotoold is running (auto-paste ready)" else warn "ydotoold is not running, auto-paste will not work" say "systemctl --user enable --now ydotool" fi fi # 3. Launchers ------------------------------------------------------------- mkdir -p "$BIN_DIR" "$APP_DIR" "$AUTOSTART_DIR" ln -sf "$DIR/dikte.py" "$BIN_DIR/dikte" chmod +x "$DIR/dikte.py" ok "Command installed: $BIN_DIR/dikte" case ":$PATH:" in *":$BIN_DIR:"*) ;; *) warn "$BIN_DIR is not on your PATH. For fish: fish_add_path $BIN_DIR" ;; esac cat > "$APP_DIR/dikte.desktop" < "$AUTOSTART_DIR/dikte.desktop" < "$APP_DIR/dikte-toggle.desktop" </dev/null; then kwriteconfig6 --notify --file kglobalshortcutsrc \ --group services --group dikte-toggle.desktop \ --key _launch "$SHORTCUT" ok "KDE shortcut registered: $SHORTCUT" warn "KWin only reads this at startup, so the shortcut goes live after your" say "next login. Until then open Settings → Shortcut and turn on the" say "built-in listener to use it right away." else warn "kwriteconfig6 not found. Add the shortcut via System Settings > Shortcuts" fi echo ok "Done. Start it with: dikte" say "The settings window opens on first run; add your OpenAI and OpenRouter keys." echo