TuxMate

![Linux](https://img.shields.io/badge/Linux-FCC624?style=for-the-badge&logo=linux&logoColor=black) ![Website](https://img.shields.io/website?url=https://tuxmate.abusov.com&style=for-the-badge) ![Maintained](https://img.shields.io/badge/Maintained-Yes-green?style=for-the-badge) [![GitHub issues](https://img.shields.io/github/issues/abusoww/tuxmate?color=red&style=for-the-badge)](https://github.com/abusoww/tuxmate/issues) [![GitHub stars](https://img.shields.io/github/stars/abusoww/tuxmate?color=green&style=for-the-badge)](https://github.com/abusoww/tuxmate/stargazers) [![GitHub license](https://img.shields.io/github/license/abusoww/tuxmate?color=yellow&style=for-the-badge)](https://github.com/abusoww/tuxmate/blob/main/LICENSE)
## 🐧 The only Mate you need for setup **TuxMate** is a web-based Linux application installer that generates distro-specific shell scripts, that aims to be the simplest way to bulk-install applications on a fresh Linux system. Maybe you've just installed a fresh Linux distro. Perhaps you're setting up a new machine or can't remember all the package names for your favorite apps? ## πŸ“¦ Supported Package Managers - Ubuntu / Debian (apt) - Arch Linux (pacman + AUR) - Fedora (dnf) - openSUSE (zypper) - Nix (nix-env) - Flatpak - Snap - Homebrew (macOS + Linux) ## ✨ Features 🌟 ### **Application Catalog** 180+ applications across 15 categories: browsers, communication, dev tools, terminals, media, creative software, gaming, office, VPN/network, security, and more. ### **Smart Script Generation** - Detects already-installed packages - Handles AUR packages automatically on Arch - Homebrew formula/cask separation for macOS - Parallel installation for Flatpak - Network retry with exponential backoff - Progress bars with ETA - Colored output and summary reports ## πŸ“Έ Screenshots ![1](src/screenshots/1.png) ![2](src/screenshots/2.png) ![3](src/screenshots/3.png)

πŸ’» Development

```bash npm install npm run dev ``` Open [http://localhost:3000](http://localhost:3000) ### Build ```bash npm run build npm start ```

πŸ—‚οΈ Project Structure

``` src/ β”œβ”€β”€ app/ # Next.js app router β”‚ β”œβ”€β”€ page.tsx # Main page component β”‚ β”œβ”€β”€ layout.tsx # Root layout with meta tags β”‚ β”œβ”€β”€ globals.css # Tailwind styles β”‚ β”œβ”€β”€ error.tsx # Error boundary β”‚ └── favicon.ico # Site favicon β”œβ”€β”€ components/ β”‚ β”œβ”€β”€ app/ # App cards & categories β”‚ β”œβ”€β”€ command/ # Command footer & AUR settings β”‚ β”œβ”€β”€ common/ # Tooltips, loading states β”‚ β”œβ”€β”€ distro/ # Distribution selector β”‚ β”œβ”€β”€ header/ # Header links & info β”‚ β”œβ”€β”€ search/ # Search overlay β”‚ └── ui/ # Theme toggle β”œβ”€β”€ hooks/ # React hooks β”‚ β”œβ”€β”€ useLinuxInit.ts # Main app state management β”‚ β”œβ”€β”€ useKeyboardNavigation.ts β”‚ β”œβ”€β”€ useTheme.tsx β”‚ β”œβ”€β”€ useTooltip.ts β”‚ └── useDelayedTooltip.ts β”œβ”€β”€ lib/ β”‚ β”œβ”€β”€ data.ts # Apps, distros, icons β”‚ β”œβ”€β”€ aur.ts # AUR package detection β”‚ β”œβ”€β”€ analytics.ts # Umami tracking β”‚ β”œβ”€β”€ utils.ts # Utility functions β”‚ β”œβ”€β”€ generateInstallScript.ts β”‚ └── scripts/ # Per-distro script generators └── __tests__/ # Vitest unit tests ```

🐳 Docker Deployment

### Quick Start with Docker ```bash # Build the Docker image docker build -t tuxmate:latest . # Run the container docker run -p 3000:3000 tuxmate:latest ``` ### Using Pre-built Images Pre-built Docker images are automatically published to GitHub Container Registry: ```bash # Pull and run the latest image docker pull ghcr.io/abusoww/tuxmate:latest docker run -p 3000:3000 ghcr.io/abusoww/tuxmate:latest # Or use a specific version docker pull ghcr.io/abusoww/tuxmate:v1.0.0 docker run -p 3000:3000 ghcr.io/abusoww/tuxmate:v1.0.0 ``` ### Using Docker Compose (Recommended) ```bash # Start the application docker-compose up -d # View logs docker-compose logs -f # Stop the application docker-compose down ``` Open [http://localhost:3000](http://localhost:3000) ### Configuration The Docker container exposes port 3000 by default. You can customize the port mapping: ```bash docker run -p 8080:3000 tuxmate:latest ``` ### Environment Variables The following environment variables are configured by default: - `NODE_ENV=production` - Run in production mode - `PORT=3000` - Application port - `NEXT_TELEMETRY_DISABLED=1` - Disable Next.js anonymous telemetry You can override these when running the container: ```bash docker run -p 3000:3000 \ -e PORT=3000 \ -e NEXT_TELEMETRY_DISABLED=1 \ tuxmate:latest ```

πŸ› οΈ Tech Stack

- [Next.js](https://nextjs.org/) 16 (App Router) - [React](https://react.dev/) 19 - [TypeScript](https://www.typescriptlang.org/) - [Tailwind CSS](https://tailwindcss.com/) 4 - [Framer Motion](https://www.framer.com/motion/) - [GSAP](https://gsap.com/) - [Vitest](https://vitest.dev/) (testing) - [Lucide React](https://lucide.dev/) (icons)
### ⌨️ Keyboard Shortcuts | Key | Action | |-----|--------| | `↑` `↓` `←` `β†’` / `h` `j` `k` `l` | Navigate apps | | `Space` | Toggle app selection | | `Esc` | Clear focus | | `/` | Focus search | | `y` | Copy command | | `d` | Download script | | `t` | Toggle theme | | `c` | Clear all selections | | `Tab` | Toggle preview drawer | ## 🀝 Contribution See [CONTRIBUTING.md](CONTRIBUTING.md) for contribution guidelines. ## 🎯 Roadmap ### Completed - [x] Multi-distro support (Ubuntu, Debian, Arch, Fedora, openSUSE) - [x] Nix, Flatpak & Snap universal package support - [x] 180+ applications across 15 categories - [x] Smart script generation with error handling - [x] Dark / Light theme toggle with smooth animations - [x] Copy command & Download script - [x] Custom domain - [x] Docker support - [x] CI/CD shortcuts & workflow - [x] Search & filter applications (Real-time) - [x] AUR Helper selection (yay/paru) + Auto-detection - [x] Keyboard navigation (Vim keys, Arrows, Space, Esc, Enter) - [x] Package availability indicators (including AUR badges) - [x] Homebrew support (macOS + Linux) ### Planned - [ ] Winget support (Windows) - [ ] Save custom presets / profiles - [ ] Share configurations via URL - [ ] More distros (Gentoo, Void, Alpine) - [ ] PWA support for offline use - [ ] Companion CLI tool - [ ] Expand application catalog (200+) - [ ] Dotfiles integration

πŸ”— Related Projects

- **[LinuxToys](https://github.com/psygreg/linuxtoys)** – User-friendly collection of tools for Linux with an intuitive interface - **[Nixite](https://github.com/aspizu/nixite)** – Generates bash scripts to install Linux software, inspired by Ninite - **[tuxmate-cli](https://github.com/Gururagavendra/tuxmate-cli)** – CLI companion for tuxmate, uses tuxmate's package database

πŸ’³ Monetary Contributions

No tips jar here. I’m happy just knowing you’re using Linux. If you want to earn some real life karma points, consider donating to the following organizations: * [KDE e.V.](https://kde.org/community/donations/) * [Gnome Foundation](https://www.gnome.org/donate/) * [Arch Linux](https://archlinux.org/donate/) * [The Tor Project](https://donate.torproject.org/) Comments, suggestions, bug reports and contributions are welcome.
## πŸ“œ License Licensed under the [GPL-3.0 License](LICENSE)
Free software β€” you can redistribute and modify it under the terms of the GNU General Public License.