From ca533a3518de741fb6df7aa4a5f3cfe24338b5c1 Mon Sep 17 00:00:00 2001 From: thePR0M3TH3AN <53631862+PR0M3TH3AN@users.noreply.github.com> Date: Thu, 21 Aug 2025 15:45:58 -0400 Subject: [PATCH] feat: add installer mode flag --- README.md | 10 +++++++--- scripts/install.sh | 37 +++++++++++++++++++++++++++++++------ 2 files changed, 38 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index b68e2f9..3f6f2d9 100644 --- a/README.md +++ b/README.md @@ -123,9 +123,9 @@ See `docs/ARCHITECTURE.md` and [Nostr Setup](docs/nostr_setup.md) for details. ### Quick Installer Use the automated installer to download SeedPass and its dependencies in one step. -The scripts can also install the BeeWare backend for your platform when requested (use `-IncludeGui` on Windows). +The scripts can also install the BeeWare backend for your platform when requested (`--mode gui` or `--mode both` on Linux/macOS, `-IncludeGui` on Windows). If the GTK `gi` bindings are missing, the installer attempts to install the -necessary system packages using `apt`, `yum`, `pacman`, or Homebrew. +necessary system packages using `apt`, `yum`, `pacman`, or Homebrew. When no display server is detected, GUI components are skipped automatically. **Linux and macOS:** ```bash @@ -136,6 +136,10 @@ bash -c "$(curl -sSL https://raw.githubusercontent.com/PR0M3TH3AN/SeedPass/main/ bash -c "$(curl -sSL https://raw.githubusercontent.com/PR0M3TH3AN/SeedPass/main/scripts/install.sh)" _ -b beta ``` Make sure the command ends right after `-b beta` with **no trailing parenthesis**. +*Install with GUI support:* +```bash +bash -c "$(curl -sSL https://raw.githubusercontent.com/PR0M3TH3AN/SeedPass/main/scripts/install.sh)" _ --mode gui +``` **Windows (PowerShell):** ```powershell @@ -152,7 +156,7 @@ The Windows installer will attempt to install Git automatically if it is not alr #### Installer Dependency Checks -The installer verifies that core build tooling—C/C++ build tools, Rust, CMake, and the imaging/GTK libraries—are available before completing. Pass `--no-gui` to skip installing GUI packages. On Linux, ensure `xclip` or `wl-clipboard` is installed for clipboard support. +The installer verifies that core build tooling—C/C++ build tools, Rust, CMake, and the imaging/GTK libraries—are available before completing. Use `--mode gui` to install only the graphical interface or `--mode both` to install both interfaces (default: `tui`). On Linux, ensure `xclip` or `wl-clipboard` is installed for clipboard support. #### Windows Nostr Sync Troubleshooting diff --git a/scripts/install.sh b/scripts/install.sh index 27b3edb..9b50431 100755 --- a/scripts/install.sh +++ b/scripts/install.sh @@ -17,7 +17,8 @@ VENV_DIR="$INSTALL_DIR/venv" LAUNCHER_DIR="$HOME/.local/bin" LAUNCHER_PATH="$LAUNCHER_DIR/seedpass" BRANCH="main" # Default branch -INSTALL_GUI=true +MODE="tui" +INSTALL_GUI=false # --- Helper Functions --- print_info() { echo -e "\033[1;34m[INFO]\033[0m" "$1"; } @@ -59,9 +60,9 @@ install_dependencies() { fi } usage() { - echo "Usage: $0 [-b | --branch ] [--no-gui] [-h | --help]" + echo "Usage: $0 [-b | --branch ] [-m | --mode ] [-h | --help]" echo " -b, --branch Specify the git branch to install (default: main)" - echo " --no-gui Skip graphical interface dependencies (default: include GUI)" + echo " -m, --mode Installation mode: tui, gui, both (default: tui)" echo " -h, --help Display this help message" exit 0 } @@ -82,9 +83,13 @@ main() { -h|--help) usage ;; - --no-gui) - INSTALL_GUI=false - shift + -m|--mode) + if [ -n "$2" ]; then + MODE="$2" + shift 2 + else + print_error "Error: --mode requires an argument (tui|gui|both)." + fi ;; *) print_error "Unknown parameter passed: $1"; usage @@ -92,6 +97,26 @@ main() { esac done + case "$MODE" in + tui|gui|both) ;; + *) + print_error "Invalid mode: $MODE. Use 'tui', 'gui', or 'both'." + ;; + esac + + DISPLAY_DETECTED=false + if [ -n "${DISPLAY:-}" ] || [ -n "${WAYLAND_DISPLAY:-}" ]; then + DISPLAY_DETECTED=true + fi + + if [[ "$MODE" == "gui" || "$MODE" == "both" ]]; then + if [ "$DISPLAY_DETECTED" = true ]; then + INSTALL_GUI=true + else + print_warning "No display detected. Skipping GUI installation." + fi + fi + # 1. Detect OS OS_NAME=$(uname -s) print_info "Installing SeedPass from branch: '$BRANCH'"