Yui is a CLI (Command Line Interface) tool designed to manage AppImage applications on Linux. With Yui, you can install, update, remove, and list AppImage applications directly from GitHub repositories. It also handles automatic integration with your Linux desktop menu.
- Easy Installation - Just provide the GitHub
owner/repo, and Yui automatically downloads the latest AppImage version. - Desktop Integration - Automatically extracts
.desktopfiles and icons so applications appear in your application launcher. - Bulk Updates - Update all installed AppImage applications with a single command.
- Local Repo Management - Stores application metadata in a local repository (JSON) for version tracking.
- Python
- argparse - CLI argument parsing.
- requests - HTTP client for interacting with the GitHub API.
- filelock - File locking for secure repository access.
- pytest & pytest-mock - Testing framework.
- subprocess - Mounts AppImages for metadata extraction.
- Python 3.9 or newer
- Linux
- The target application must have AppImage files available as release assets in its GitHub repository
You can install Yui using the provided Makefile (recommended) or manually.
- Clone this repository:
git clone https://github.com/garpra/yui.git
cd yui- Setup the environment and install dependencies:
make setup- (Optional) Build a standalone executable:
make buildThis will create a single yui binary that can be run without requiring Python or a virtual environment.
- Clone this repository:
git clone https://github.com/garpra/yui.git
cd yui- Create and activate a virtual environment (optional, but recommended):
python -m venv venv
source venv/bin/activate- Install dependencies:
pip install -r requirements.txt- Run Yui:
python app.py --help| Command | Description |
|---|---|
make setup |
Create virtual environment and install dependencies |
make build |
Build a standalone executable using Nuitka |
make clean |
Remove virtual environment and build artifacts |
Install an AppImage from a GitHub repository using the owner/repo format:
python app.py install owner/repoExample:
python app.py install jmeter/jmeterDisplay all applications managed by Yui:
python app.py listUpdate all installed AppImage applications to their latest versions:
python app.py updateUninstall a managed application:
python app.py remove owner/repoYui stores its data in ~/.local/share/yui/ (customizable via the YUI_DATA_DIR environment variable):
| Path | Description |
|---|---|
~/.local/share/yui/appimage/ |
Downloaded AppImage files |
~/.local/share/yui/repos.json |
Metadata for installed applications |
~/.local/share/applications/ |
.desktop files (Linux menu integration) |
~/.local/share/icons/ |
Application icons |
Run the full suite of unit tests:
pytest