Skip to content

Repository files navigation

Amper

Amper Linux Control Panel

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

MIT LicenseVersionPythonPySide6Linux

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 servicesApache, Nginx, MySQL, MariaDB, PostgreSQL, Redis, MongoDB, PHP, phpMyAdmin
Install / RemoveUses apt, dnf, yum, pacman, or zypper automatically
Monitor portsLive port table with conflict detection
Open configs & logsOne click via xdg-open
System trayControl services without keeping the window open

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


Table of contents


Requirements

RequirementWhy
Python 3.10+Runtime
systemdService state and start/stop
polkit (pkexec)Privileged actions when sudo is not configured
libxcb-cursor0Required 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

ModuleDetection
Apacheapache2 / httpd systemd unit
Nginxnginx unit
MySQLmysql / mysqld unit
MariaDBmariadb unit
PostgreSQLpostgresql unit
Redisredis / redis-server unit
MongoDBmongod / mongodb unit
PHPFilesystem (php binary)
phpMyAdminFilesystem 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:

FolderCreated by
parts/Snapcraft — per-part build
stage/Snapcraft — staged files
prime/Snapcraft — final snap contents
overlay/Snapcraft
*.snapOutput 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

Websiteamper-linux-control-panel.netlify.app
LinkedInhesham-yasser
X@HaSh_Perfecto
GitHubHaSh3003