# Clone project
git clone https://github.com/programmersd21/pip_gui.git
cd pip_gui/src-tauri
# Frontend dependencies
npm install
# Rust backend handled by Tauri CLIEnsure all files are in place:
pip_gui/
βββ src/ # Frontend
β βββ index.html # Main HTML
β βββ css/input.css # Tailwind input
β βββ js/main.js # App logic
β
βββ src-tauri/ # Tauri/Rust backend
β βββ src/
β β βββ main.rs # App entry
β β βββ state.rs # App state
β β βββ models/ # Data structures
β β βββ commands/ # Tauri commands
β β βββ utils/ # Helpers
β βββ Cargo.toml
β βββ tailwind.config.js # Styling
β βββ tauri.conf.json
β
βββ vite.config.js # Frontend build
βββ package.json # Node dependencies
βββ SETUP.md # This file
βββ README.md # READMEnpx tailwindcss -i ./src-tauri/src/utils/css/input.css -o ./src-tauri/src/utils/css/output.csscargo install tauri-cli --version "^2.0.0" --lockednpm install
cargo tauri devcargo tauri buildThis starts:
- Vite dev server (frontend hot reload)
- Tauri app with HMR
- Rust backend compiler
Generates installers for:
- Windows (MSI + NSIS)
- macOS (DMG)
- Linux (AppImage + deb)
- Requires Microsoft Build Tools or Visual Studio Community
- Python detection checks:
C:\Python*,Program Files\Python*, AppData - Uses
.exefor executables
- Requires Xcode Command Line Tools
- Homebrew Python at
/opt/homebrew/bin/python3 - System Python at
/usr/bin/python3
- Uses system Python at
/usr/bin/python3or/usr/local/bin/python3 - Ensure
python3-devorpython3-develinstalled - May need
libssl-dev
- Auto-detection of system Python
- Custom folder browser (no OS dialogs)
- venv detection via
pyvenv.cfg - Path persistence across sessions
- Explicit validation with
python --versionandpython -m pip --version
- Auto-detects
.venv,venv,envdirectories - Scans for
pyvenv.cfgfor venv discovery - Shows venv detection in sidebar
- Quick-switch between venvs
- List installed packages (via
pip list --format=json) - Install (latest or specific version)
- Uninstall with confirmation
- Upgrade to latest
- Downgrade to specific version
- Real-time pip output streaming via event listeners
- Detects
pyproject.toml,requirements.txt,requirements-dev.txt - Parses PEP 621 and classic pip requirements
- Shows dependency status: installed, missing, version mismatch
- Supports version specifiers:
==,>=,<=,>,<
- Searches packages via PyPI JSON API
- Fetches package metadata and release history
- Displays author, license, description, version history
- No deprecated
pip search- uses modern API
- Clean, dark Tailwind design
- Responsive layout with sidebar and main content area
- Real-time pip command output modal
- Toast notifications
- Status badges for dependencies
- Smooth tab navigation
- No frameworks - pure JavaScript with Tauri IPC
- Component-based UI rendering
- Event-driven architecture
- State management via
appStateobject
- Tauri commands as async functions
- Cross-platform file system operations
- Direct pip subprocess execution
- Safe path validation and venv detection
- PyPI API client with caching ready
User Action β JavaScript Handler
β
Tauri Command (IPC) β Rust Backend
β
OS Operation (file, subprocess, network)
β
JSON Response β Frontend State Update
β
UI Re-render via DOM manipulation- Ensure Python is in standard locations (see Platform-Specific Notes)
- Or manually select Python using the folder browser
- Check Python executable has execution permissions (Unix)
- Verify:
python -m pip --versionworks in terminal - May need to reinstall pip:
python -m ensurepip --upgrade
- Ensure
pyvenv.cfgexists in venv root - Standard venvs created with
python -m venvinclude this file - If missing, venv is corrupted - recreate it
- Clear
src-tauri/target:cargo clean - Ensure Rust is up to date:
rustup update - Check Node modules:
npm install
- PyPI results cached in memory (ready to extend to disk)
- Installed packages list cached with TTL
- Project files detected once per session
- All Tauri commands are async (
#[tauri::command]) - Multiple pip operations can run in parallel
- Network requests use tokio runtime
- All paths validated before execution
- pip runs without shell (subprocess::Command direct execution)
- No shell evaluation of user input
- Configuration stored in user config directory
- No remote code execution vectors
- Poetry support (parsing
poetry.lock) - Conda environment detection
- Dependency graph visualization
- Package update notifications
- Virtual environment creation UI
- Local package index support
- Requirements freeze/export
- Dependency conflict resolution