Skip to content

HaSh3003/Amper---Linux-Control-Panel

Repository files navigation

Amper

Amper Linux Control Panel

Open-source desktop control panel for Apache, PHP, MySQL, Nginx, and systemd services on Linux.

MIT License Version Python PySide6 Linux

Website · Snap Store · GitHub


Overview

Amper is a lightweight PySide6 desktop app that helps you manage a local Linux development stack from one place — similar to XAMPP or Laragon on Windows, but built natively for Linux with systemd, polkit, and your system package manager.

Start / Stop services Apache, Nginx, MySQL, MariaDB, PostgreSQL, Redis, MongoDB, PHP, phpMyAdmin
Install / Remove Uses apt, dnf, yum, pacman, or zypper automatically
Monitor ports Live port table with conflict detection
Open configs & logs One click via xdg-open
System tray Control services without keeping the window open

Visit the Amper website for screenshots, features, and install options.


Table of contents


Requirements

Requirement Why
Python 3.10+ Runtime
systemd Service state and start/stop
polkit (pkexec) Privileged actions when sudo is not configured
libxcb-cursor0 Required by PySide6 6.5+ on X11
# Ubuntu / Debian
sudo apt install libxcb-cursor0

# Fedora
sudo dnf install libxcb-cursor

# Arch
sudo pacman -S libxcb-cursor

Quick start

git clone https://github.com/HaSh3003/Amper---Linux-Control-Panel.git
cd Amper---Linux-Control-Panel
python3 -m venv env
source env/bin/activate
pip install -r requirements.txt
python main.py

One-time permissions

Without setup, every Start/Stop/Install action opens a polkit password dialog. Run once:

In the app: About → Grant Permissions (once)

Or manually:

pkexec bash setup_permissions.sh
newgrp amper

This creates the amper group and /etc/sudoers.d/amper so systemctl and package managers work with sudo -n (no password).


Supported services

Module Detection
Apache apache2 / httpd systemd unit
Nginx nginx unit
MySQL mysql / mysqld unit
MariaDB mariadb unit
PostgreSQL postgresql unit
Redis redis / redis-server unit
MongoDB mongod / mongodb unit
PHP Filesystem (php binary)
phpMyAdmin Filesystem install path

Services not present on your system appear as Not installed with an Install button.


Project structure

Amper/
├── main.py                 # Entry point
├── ui_main.py              # All UI (window, tabs, tray, tables)
├── service_manager.py      # Service catalog + systemd discovery
├── port_scanner.py         # Port scan + conflict detection (psutil)
├── package_manager.py      # apt / dnf / yum / pacman / zypper commands
├── privileged.py           # sudo / pkexec wrapper
├── service_assets.py       # Config, log, and admin paths per service
├── apache_welcome.py       # Auto-deploy welcome page to Apache
├── platform_check.py       # libxcb-cursor pre-flight check
├── setup_permissions.sh    # One-time sudoers setup (root)
├── requirements.txt        # PySide6, psutil
├── Amper.desktop           # Desktop shortcut (local dev)
│
├── assets/
│   ├── icons/              # App icon + social SVGs
│   └── welcome/            # Apache welcome HTML
│
├── styles/
│   └── dark.qss            # Dark theme (Qt Style Sheet)
│
└── snap/                   # Snap Store packaging
    ├── snapcraft.yaml
    ├── gui/                # Desktop file + icon for snap
    └── local/              # build.sh, publish.sh, amper-launch

Build artifacts (safe to delete)

These folders are generated by Snapcraft — not source code:

Folder Created by
parts/ Snapcraft — per-part build
stage/ Snapcraft — staged files
prime/ Snapcraft — final snap contents
overlay/ Snapcraft
*.snap Output of snapcraft pack

Clean snap build: sudo snapcraft clean


How it works

main.py
  └── ui_main.py (MainWindow)
        ├── ModulesDashboard  → service_manager + package_manager
        ├── PortMonitorPanel  → port_scanner
        ├── AboutPanel
        ├── ActivityLogPanel
        └── SystemTrayManager

User clicks Start/Stop/Install
  └── privileged.py
        ├── sudo -n  (if permissions configured)
        └── pkexec     (fallback)
              └── systemctl / apt / dnf / ...

Install options

From source

Best for development and contributors.

python3 -m venv env && source env/bin/activate
pip install -r requirements.txt
python main.py

Snap

sudo snap install amper --classic
amper

Classic confinement is required for host systemctl and package manager access.


Build Snap package

sudo snapcraft pack --destructive-mode
# or: bash snap/local/build.sh

bash snap/local/publish.sh   # upload to Snap Store (after snapcraft login)

Contributing

Contributions are welcome — bug reports, ideas, and pull requests.

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Test with python main.py
  5. Open a pull request

License

This project is open source under the MIT License.

Copyright © 2026 Hesham Yasser


Author

Hesham Yasser — Software Engineer

Website amper-linux-control-panel.netlify.app
LinkedIn hesham-yasser
X @HaSh_Perfecto
GitHub HaSh3003