#!/usr/bin/env bash # Install Blitztext for Linux (no root needed). # # Creates a self-contained venv at ~/.local/lib/blitztext (outside any CIFS # share, using --copies so no symlinks are needed), copies the package into it, # and writes a launcher to ~/.local/bin/blitztext. The source folder can be # deleted after this script finishes. set -euo pipefail cd "$(dirname "$0")" APPDIR="$HOME/.local/lib/blitztext" VENV="$APPDIR/venv" BIN="$HOME/.local/bin/blitztext" echo "==> Checking host tools" need_pkg=() # python3-gi (PyGObject) must come from apt — it can't be pip-installed. python3 -c "import gi" 2>/dev/null || need_pkg+=("python3-gi python3-gi-cairo gir1.2-gtk-3.0 gir1.2-appindicator3-0.1") command -v xdotool >/dev/null || need_pkg+=("xdotool") command -v notify-send >/dev/null || need_pkg+=("libnotify-bin") if ! command -v pw-record >/dev/null && ! command -v arecord >/dev/null && ! command -v parecord >/dev/null; then need_pkg+=("pipewire-bin") fi if (( ${#need_pkg[@]} )); then echo " Missing system packages — installing now (requires sudo):" echo " sudo apt install ${need_pkg[*]}" sudo apt-get install -y "${need_pkg[@]}" fi echo "==> Creating venv at $VENV" mkdir -p "$APPDIR" # --copies avoids lib64->lib symlinks that fail on CIFS/SMB shares. # --system-site-packages lets the venv see apt-installed python3-gi for the tray. python3 -m venv --copies --system-site-packages "$VENV" "$VENV/bin/pip" install --upgrade pip -q "$VENV/bin/pip" install -q -r requirements.txt echo "==> Installing blitztext package" # Copy the package into site-packages so this source folder can be deleted. cp -r blitztext "$VENV/lib/python"*/site-packages/ echo "==> Writing default config (if absent)" "$VENV/bin/python" -m blitztext config-path echo "==> Installing launcher → $BIN" mkdir -p "$(dirname "$BIN")" cat > "$BIN" </dev/null || true cat <