An open API service indexing awesome lists of open source software.

https://github.com/swadhinbiswas/linuxy

One click AppImage Runner
https://github.com/swadhinbiswas/linuxy

appimage linux linux-app linuxapplication

Last synced: 3 months ago
JSON representation

One click AppImage Runner

Awesome Lists containing this project

README

          


Linuxy Mascot

Linuxy

The Modern AppImage Manager for Linux


MIT License
Release
Tauri
Rust
CI


Install, organize, sandbox, and update AppImages — all from one place.

Drag-and-drop simplicity backed by Rust-powered performance.




Linuxy Library View

---

## 🎬 Demo Video



Linuxy Demo Video

Watch the full demo on YouTube


---

## Features

| | Feature | Description |
| ----- | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **1** | **One-Click Install** | Drag & drop any `.AppImage` onto the window, or browse for it with the file picker. Linuxy validates the ELF header, extracts metadata and icons from the SquashFS, creates a `.desktop` entry, and copies everything to `~/.local/`. |
| **2** | **App Discovery** | Browse the [AppImageHub](https://appimage.github.io) catalog or search GitHub's `appimage` topic -- then install directly in one click. |
| **3** | **Firejail Sandboxing** | Toggle per-app sandboxing with a single click. When enabled, the app runs under `firejail --appimage` with restricted filesystem and network access. |
| **4** | **Delta Updates** | Checks for updates via the bundled `appimageupdatetool` sidecar. Only downloads binary diffs -- not the entire AppImage. |
| **5** | **Downloads Watcher** | Automatically detects new `.AppImage` files appearing in `~/Downloads` and prompts you to install them. A "Later" option suppresses repeated notifications. |
| **6** | **Theming** | Switch between Dark, Light, and System-follow themes. Preferences persist across sessions via `localStorage`. |
| **7** | **Storage Dashboard** | Settings panel shows total disk usage and installed app count at a glance. |
| **8** | **CLI Mode** | Headless installation and management from the terminal: `linuxy install `, `linuxy list`, `linuxy help`. |
| **9** | **Desktop Integration** | Automatic `.desktop` file creation, icon extraction, and `update-desktop-database` for native menu integration. |

---

## Screenshots

| Library | Discover |
| ------------------------------------------------------------------------- | ----------------------------------------------------------------- |
| Installed Apps | AppImage Hub |

| Settings | Auto-Discovery |
| ------------------------------------------------------------------ | ---------------------------------------------------------------------------- |
| Settings | Auto Discovery |

---

## 📺 Video Walkthrough



Linuxy Walkthrough

See Linuxy in action -- from installing your first AppImage to managing sandboxed applications.


---

## Quick Start

### Prerequisites

| Requirement | Minimum | Notes |
| ------------ | ------------ | ----------------------------------------- |
| **OS** | Linux x86_64 | Tested on Ubuntu 22.04+, Fedora 38+, Arch |
| **Node.js** | 18+ | For building from source |
| **Rust** | 1.70+ | For building from source |
| **Firejail** | Any | _Optional_ -- enables sandboxing |

### Install from .deb (Debian / Ubuntu)

#### Option 1: Official APT Repository (Recommended)

Add the official repository to automatically receive updates via your package
manager:

```bash
# Add the repository signing key
curl -fsSL https://swadhinbiswas.github.io/linuxy/apt/linuxy.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/linuxy.gpg

# Add the repository to sources
echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/linuxy.gpg] https://swadhinbiswas.github.io/linuxy/apt /" | sudo tee /etc/apt/sources.list.d/linuxy.list

# Install Linuxy
sudo apt update
sudo apt install linuxy
```

#### Option 2: Manual Download

```bash
# Download the latest release
wget https://github.com/swadhinbiswas/linuxy/releases/latest/download/linuxy_1.2.0_amd64.deb

# Install
sudo apt install ./linuxy_1.2.0_amd64.deb
```

### Install from .rpm (RHEL / Fedora / openSUSE)

```bash
# Download the latest release
wget https://github.com/swadhinbiswas/linuxy/releases/latest/download/linuxy-1.2.0-1.x86_64.rpm

# Install
sudo dnf install ./linuxy-1.2.0-1.x86_64.rpm # Fedora / RHEL
sudo zypper install ./linuxy-1.2.0-1.x86_64.rpm # openSUSE
```

### Install from AUR (Arch Linux)

```bash
yay -S linuxy
```

#### Option 2: Manual Download

```bash
# Download the latest release
wget https://github.com/swadhinbiswas/linuxy/releases/latest/download/linuxy_1.0.0_amd64.deb

# Install
sudo apt install ./linuxy_1.0.0_amd64.deb
```

### Build from Source

```bash
git clone https://github.com/swadhinbiswas/linuxy.git
cd linuxy
npm install
npm run tauri build

# Binary output -> src-tauri/target/release/linuxy
# DEB package -> src-tauri/target/release/bundle/deb/
```

### Run in Development

```bash
git clone https://github.com/swadhinbiswas/linuxy.git
cd linuxy
npm install
npm run tauri dev
```

> [!TIP] On Wayland, Linuxy forces the X11/XWayland backend to work around a
> WebKitGTK compositing crash. No manual intervention required.

---

## Usage

### GUI

1. **Library** -- Your home screen. Drag an `.AppImage` here or click the
drop-zone to browse.
2. **Discover** -- Search and install from AppImageHub or trending GitHub
projects.
3. **Settings** -- Toggle themes, view storage stats, check Firejail /
update-tool status, and open the AppImage directory.

Each installed app shows action buttons:

- **Launch** -- Run the AppImage (through Firejail if sandbox is toggled on).
- **Sandbox** -- Enable / disable Firejail isolation.
- **Update** -- Check for and apply delta updates.
- **Remove** -- Delete the AppImage, its `.desktop` entry, and cached icons.

### CLI

```bash
linuxy install ~/Downloads/App.AppImage # Install an AppImage
linuxy list # List installed AppImages
linuxy help # Show available commands
```

You can also pass an AppImage path directly:

```bash
linuxy ~/Downloads/App.AppImage
```

---

## Architecture

```
linuxy/
├── src/ # React + TypeScript frontend
│ ├── App.tsx # Root component -- views, modals, state
│ ├── components/
│ │ ├── Sidebar.tsx # Navigation (Library / Discover / Settings)
│ │ ├── AppGrid.tsx # Installed app cards with actions
│ │ ├── DropZone.tsx # Drag-and-drop install area
│ │ └── Storefront.tsx # AppImageHub + GitHub discovery
│ ├── styles/
│ │ └── main.css # CSS custom-property theme system
│ └── main.tsx # React entry point

├── src-tauri/ # Rust backend
│ ├── src/
│ │ ├── main.rs # Tauri builder, handler registration
│ │ ├── installer.rs # SquashFS extraction, .desktop creation
│ │ ├── manager.rs # CRUD ops, launch, sandbox toggle
│ │ ├── updater.rs # Sidecar-based delta update commands
│ │ ├── watcher.rs # ~/Downloads polling for new AppImages
│ │ ├── downloader.rs # Streaming HTTP download + install
│ │ └── cli.rs # Headless CLI subcommands
│ ├── icons/ # App icons (all sizes + .ico/.icns)
│ ├── bin/ # Bundled sidecar (appimageupdatetool)
│ └── Cargo.toml # Rust dependencies

├── packaging/ # Distribution configs
│ ├── deb/ # Debian package metadata
│ ├── rpm/ # RPM spec (planned)
│ ├── aur/ # AUR PKGBUILD (planned)
│ └── appimage/ # Meta-AppImage build (planned)

├── docs/ # Extended documentation
│ ├── images/ # Application screenshots
│ ├── INSTALL.md
│ ├── USAGE.md
│ ├── MAINTENANCE.md
│ ├── CODE_SIGNING.md
│ └── PRODUCTION_READINESS.md

└── assets/ # Branding
└── linuxy-icon.png # Mascot icon
```

---

## Configuration

### Storage Locations

| Purpose | Path |
| ----------------- | ------------------------------ |
| AppImage binaries | `~/.local/appimages/` |
| Desktop entries | `~/.local/share/applications/` |
| Extracted icons | `~/.local/share/icons/` |

### Firejail Sandboxing

Install Firejail with your distro's package manager:

```bash
sudo apt install firejail # Debian / Ubuntu
sudo dnf install firejail # Fedora
sudo pacman -S firejail # Arch
```

When sandbox is toggled on for an app, Linuxy rewrites its `.desktop` file to
prepend `firejail --appimage` to the `Exec=` line. Toggle it off to restore
direct execution.

### Delta Updates

Linuxy bundles `appimageupdatetool` as a Tauri sidecar. If the tool is present
in `src-tauri/bin/`, update checks and apply are available per-app. The Settings
panel shows the current detection status.

---

## Development

### System Dependencies

```bash
# Ubuntu / Debian
sudo apt install libwebkit2gtk-4.0-dev build-essential curl wget file \
libxdo-dev libssl-dev libayatana-appindicator3-dev librsvg2-dev

# Fedora
sudo dnf install webkit2gtk4.1-devel openssl-devel libappindicator-gtk3-devel

# Arch
sudo pacman -S webkit2gtk-4.1 openssl libappindicator-gtk3
```

### Scripts

| Command | Description |
| ---------------------- | ------------------------------------- |
| `npm run dev` | Start Vite dev server (frontend only) |
| `npm run tauri dev` | Start full Tauri dev app |
| `npm run build` | Build frontend for production |
| `npm run tauri build` | Build the complete application |
| `npm run lint` | Run ESLint |
| `npm run lint:fix` | Auto-fix lint issues |
| `npm run format` | Format with Prettier |
| `npm run format:check` | Check formatting |
| `npm run typecheck` | TypeScript type check |
| `npm run check` | Run all quality checks |

### Rust Quality

```bash
cd src-tauri && cargo fmt # Format
cd src-tauri && cargo clippy # Lint
cd src-tauri && cargo test # Run unit tests
```

---

## Contributing

Contributions are welcome! Please see the [Contributing Guide](CONTRIBUTING.md)
for full details.

```bash
# 1. Fork & clone
git clone https://github.com/YOUR_USERNAME/linuxy.git && cd linuxy

# 2. Branch
git checkout -b feat/your-feature

# 3. Develop & commit (Conventional Commits)
git commit -m "feat: add your feature"

# 4. Push & open a PR
git push origin feat/your-feature
```

### Tech Stack

| Layer | Technology |
| --------- | --------------------------------------- |
| Frontend | React 18, TypeScript, Lucide Icons |
| Backend | Rust, Tauri v1, Tokio, Reqwest |
| Build | Vite 5, ESLint, Prettier |
| Packaging | DEB, RPM, AUR (all platforms supported) |

---

## Troubleshooting

AppImage won't launch

Ensure the file is executable:

```bash
chmod +x ~/.local/appimages/your-app.AppImage
```

Firejail not found

Install Firejail with your package manager:

```bash
sudo apt install firejail # Debian / Ubuntu
sudo dnf install firejail # Fedora
sudo pacman -S firejail # Arch
```

Build fails with missing WebKit headers

Install the WebKitGTK development package:

```bash
# Ubuntu 24.04+
sudo apt install libwebkit2gtk-4.1-dev

# Ubuntu 20.04-22.04
sudo apt install libwebkit2gtk-4.0-dev
```

Icons not showing after install

Re-install the AppImage through Linuxy to re-extract icons, or manually copy an
icon to `~/.local/share/icons/`.

---

## Documentation

Full documentation is available in the [`docs/`](docs/) directory:

- [Installation Guide](docs/INSTALL.md)
- [Usage Guide](docs/USAGE.md)
- [Maintenance Guide](docs/MAINTENANCE.md)
- [Code Signing](docs/CODE_SIGNING.md)
- [Security Policy](SECURITY.md)
- [Changelog](CHANGELOG.md)

---

## License

This project is licensed under the [MIT License](LICENSE).

Copyright (c) 2025 [Swadhin Biswas](https://github.com/swadhinbiswas)

---

## Acknowledgments

- [Tauri](https://tauri.app) -- Native app framework
- [AppImage](https://appimage.org) -- Universal Linux package format
- [Firejail](https://firejail.wordpress.com) -- Linux sandbox
- [AppImageHub](https://appimage.github.io) -- App catalog feed
- [React](https://react.dev) -- UI library
- [Lucide](https://lucide.dev) -- Icon set

---


Made with care for the Linux community


Back to top