Skip to content

Commit d2a8699

Browse files
author
samarcher
committed
feat: improve cross-distro install and GUI support
- reorganize archpkg modules into interfaces, search, config, integrations, and package management packages - replace pipx-first installer with user-local venv install flow - install git and Python venv support when missing - create global shell launcher via ~/.local/bin and update shell startup PATH - install PyQt5 GUI support and add `archpkg add gui` fallback - register desktop launcher only on graphical systems - improve GUI source handling for cross-distro package managers - add Kali and Mint distro mapping - update README installation and GUI docs
1 parent 81d038f commit d2a8699

46 files changed

Lines changed: 4104 additions & 4916 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

README.md

Lines changed: 57 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ A cross-distro command-line utility that helps you search for packages and gener
2121
- [About](#about)
2222
- [Features](#features)
2323
- [Quick Start (install.sh)](#quick-start-installsh)
24-
- [Installation (Recommended: pipx)](#installation-recommended-pipx)
25-
- [Alternative Installation (pip)](#alternative-installation-pip)
24+
- [Installation (Recommended: install.sh)](#installation-recommended-installsh)
25+
- [Alternative Installation (venv)](#alternative-installation-venv)
2626
- [Usage](#usage)
2727
- [🔄 Auto-Update System](#🔄-auto-update-system)
2828
- [🏗️ Architecture](#🏗️-architecture)
@@ -36,7 +36,7 @@ archpkg-helper is designed to work across Linux distributions. While originally
3636
## Features
3737

3838
- **Native Desktop GUI**: Professional PyQt5-based graphical interface for package management
39-
- Cross-distro support (Arch, Debian, Ubuntu, Fedora, openSUSE, etc.)
39+
- Cross-distro support (Arch, Debian, Ubuntu, Kali, Mint, Fedora, openSUSE, etc.)
4040
- Search, install, and remove packages with visual feedback
4141
- Real-time trust scores for AUR packages
4242
- System maintenance tools (updates, cleanup, snapshots)
@@ -72,79 +72,54 @@ wget -qO- https://raw.githubusercontent.com/AdmGenSameer/archpkg-helper/main/ins
7272
```
7373

7474
Notes:
75-
- The installer ensures Python, pip, pipx, and PyQt5 are available
76-
- Installs both CLI and GUI automatically
77-
- You may be prompted for sudo to install prerequisites on your distro.
78-
- On Arch-based systems, installer now asks for a profile:
75+
- The installer creates a private virtual environment, installs ArchPkg there, and adds a launcher to `~/.local/bin`
76+
- Installs both CLI and GUI automatically
77+
- On Arch-based systems, installer asks for a profile:
7978
- `normal` (recommended): automatic advice + news/trust-aware updates
8079
- `advanced`: manual control
8180

82-
## Installation (Recommended: pipx)
83-
84-
On Arch and many other distros, system Python may be “externally managed” (PEP 668), which prevents global pip installs. pipx installs Python CLIs into isolated environments and puts their executables on your PATH—this is the easiest, safest method.
85-
86-
1) Install pipx
87-
- Arch Linux:
88-
```sh
89-
sudo pacman -S pipx
90-
pipx ensurepath
91-
```
92-
- Debian/Ubuntu:
93-
```sh
94-
sudo apt update
95-
sudo apt install pipx
96-
pipx ensurepath
97-
```
98-
- Fedora:
99-
```sh
100-
sudo dnf install pipx
101-
pipx ensurepath
102-
```
103-
- openSUSE:
104-
```sh
105-
sudo zypper install python3-pipx
106-
pipx ensurepath
107-
```
108-
109-
2) Install archpkg-helper with pipx
110-
- Directly from GitHub:
111-
```sh
112-
pipx install git+https://github.com/AdmGenSameer/archpkg-helper.git
113-
```
114-
- From a local clone:
115-
```sh
116-
git clone https://github.com/AdmGenSameer/archpkg-helper.git
117-
cd archpkg-helper
118-
pipx install .
119-
```
120-
121-
Upgrade later with:
122-
```sh
123-
pipx upgrade archpkg-helper
124-
```
125-
126-
Ensure your shell session has pipx’s bin path in PATH (pipx prints instructions after `pipx ensurepath`, typically `~/.local/bin`).
127-
128-
## Alternative Installation (pip)
129-
130-
If you prefer pip, install in user scope to avoid system conflicts:
131-
132-
- From a local clone:
133-
```sh
134-
git clone https://github.com/AdmGenSameer/archpkg-helper.git
135-
cd archpkg-helper
136-
python3 -m pip install --user .
137-
```
138-
- Directly from GitHub:
139-
```sh
140-
python3 -m pip install --user git+https://github.com/AdmGenSameer/archpkg-helper.git
141-
```
142-
143-
If your distro enforces PEP 668 protections for global installs, you may see errors. You can bypass with:
144-
```sh
145-
python3 -m pip install --break-system-packages .
146-
```
147-
However, using pipx is strongly recommended instead of breaking system protections.
81+
## Installation (Recommended: install.sh)
82+
83+
The installer now follows one path on every supported distro:
84+
85+
1) It creates a private virtual environment under `~/.local/share/archpkg-helper`
86+
2) It installs ArchPkg into that environment
87+
3) It installs PyQt5 for the GUI
88+
4) It drops a launcher in `~/.local/bin/archpkg`
89+
5) It updates common shell startup files so `archpkg` is available in new shells
90+
6) On graphical systems, it creates a desktop entry in `~/.local/share/applications`
91+
92+
From a cloned repository:
93+
```sh
94+
git clone https://github.com/AdmGenSameer/archpkg-helper.git
95+
cd archpkg-helper
96+
bash install.sh
97+
```
98+
99+
Or run it from the repository contents you already have:
100+
```sh
101+
bash install.sh
102+
```
103+
104+
## Alternative Installation (venv)
105+
106+
If you prefer to manage the environment yourself:
107+
108+
```sh
109+
git clone https://github.com/AdmGenSameer/archpkg-helper.git
110+
cd archpkg-helper
111+
python3 -m venv .venv
112+
.venv/bin/pip install --upgrade pip
113+
.venv/bin/pip install .
114+
.venv/bin/pip install PyQt5
115+
```
116+
117+
Then launch:
118+
```sh
119+
.venv/bin/archpkg gui
120+
```
121+
122+
If you still want a pipx-managed install, `pipx install .` works from a local clone.
148123

149124
## Usage
150125

@@ -162,7 +137,7 @@ archpkg gui
162137
# Look for "archpkg helper" in System/Package Manager category
163138
```
164139

165-
The GUI appears in your desktop environment's application menu (GNOME Activities, KDE Application Menu, XFCE Application Finder, etc.) after installation.
140+
On graphical systems, the GUI appears in your desktop environment's application menu (GNOME Activities, KDE Application Menu, XFCE Application Finder, etc.) after installation. On CLI-only systems, the installer skips the menu entry and leaves the `archpkg` command-line launcher available.
166141

167142
**GUI Features:**
168143
- **Search & Install Tab**: Search packages across all sources with real-time trust scores
@@ -187,7 +162,8 @@ The GUI appears in your desktop environment's application menu (GNOME Activities
187162
**Notes:**
188163
- PyQt5 is automatically installed when using `install.sh`
189164
- Both CLI and GUI are available immediately after installation
190-
- For manual pip/pipx installs: `pip install PyQt5` or `pipx install archpkg[gui]`
165+
- For manual venv installs: `pip install PyQt5`
166+
- If GUI dependencies are ever missing, run `archpkg add gui`
191167

192168
The GUI works on all distributions and automatically adapts to your system's package manager.
193169

@@ -228,6 +204,12 @@ Search for a package across all supported package managers:
228204
archpkg search firefox
229205
```
230206

207+
Sort AUR results with Paru-style fields:
208+
209+
```sh
210+
archpkg search firefox --aur-sortby popularity
211+
```
212+
231213

232214
This command will search for the `firefox` package across multiple package managers (e.g., pacman, AUR, apt).
233215

0 commit comments

Comments
 (0)