A simple GTK power menu styled after hyprland.
Project description
HyprPwr
A minimal power/session menu for Hyprland written in Python and GTK3.
HyprPwr provides a small keyboard-friendly popup for common session management actions:
- Logout
- Shutdown
- Restart
- Suspend
Features
- Lightweight GTK3 interface
- Keyboard navigation (
↑/↓,j/k) - Mouse support
- Clean floating window design
- Designed specifically for Hyprland
- No external menu launcher required
Requirements
- Python 3
- GTK3
- PyGObject
- Hyprland
Dependencies
Runtime Dependencies
| Dependency | Purpose |
|---|---|
| Python 3.8+ | Application runtime |
| GTK 3 | User interface |
| PyGObject | Python GTK bindings |
| Hyprland | Session management integration |
| systemd | Shutdown, reboot, and suspend actions |
Distribution Packages
Arch Linux
sudo pacman -S python python-gobject gtk3
Debian / Ubuntu
sudo apt install python3 python3-gi gir1.2-gtk-3.0
Fedora
sudo dnf install python3 python3-gobject gtk3
openSUSE
sudo zypper install python3-gobject gtk3
Gentoo
sudo emerge dev-python/pygobject x11-libs/gtk+
Support Matrix
| Component | Status |
|---|---|
| Hyprland | ✅ Supported |
| GTK 3 | ✅ Supported |
| Wayland | ✅ Supported |
| X11 | ⚠️ Untested |
| systemd | ✅ Supported |
| elogind | ⚠️ Suspend/Reboot may require customization |
| seatd | ⚠️ Untested |
Distribution Support
| Distribution | Status |
|---|---|
| Arch Linux | ✅ Tested |
| EndeavourOS | ✅ Expected to work |
| CachyOS | ✅ Expected to work |
| Manjaro | ✅ Expected to work |
| Fedora | ✅ Expected to work |
| openSUSE Tumbleweed | ✅ Expected to work |
| Debian 12+ | ✅ Expected to work |
| Ubuntu 22.04+ | ✅ Expected to work |
| NixOS | ⚠️ Untested |
| Alpine Linux | ❌ Not supported (no systemd) |
Notes
- Logout functionality requires
hyprctl. - Shutdown, reboot, and suspend functionality require
systemctl. - The application is intended for Hyprland sessions and has not been tested on other Wayland compositors.
- Running as a normal user is recommended.
Installation
Make the script executable:
git clone https://github.com/jacobjuneau6/hyprpwr
cd hyprpwr
chmod +x hyprpwr.py
Optionally install it system-wide:
sudo install -Dm755 hyprpwr.py /usr/local/bin/hyprpwr
Usage
Run:
hyprpwr
or
python3 hyprpwr.py
Keyboard Controls
| Key | Action |
|---|---|
Up / k |
Move selection up |
Down / j |
Move selection down |
| Enter | Execute selected action |
| Space | Execute selected action |
| Esc | Close menu |
Available Actions
| Action | Command |
|---|---|
| Logout | hyprctl dispatch exit |
| Shutdown | systemctl poweroff |
| Restart | systemctl reboot |
| Suspend | systemctl suspend |
Hyprland Binding
Example keybind for launching HyprPwr:
bind = SUPER, X, exec, hyprpwr
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
hyprpwr-0.1.0.tar.gz
(17.2 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
hyprpwr-0.1.0-py3-none-any.whl
(17.5 kB
view details)
File details
Details for the file hyprpwr-0.1.0.tar.gz.
File metadata
- Download URL: hyprpwr-0.1.0.tar.gz
- Upload date:
- Size: 17.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
679a6c00bb29501d7d166f6ef55a31b1354341dc802c23c4d99199f577675690
|
|
| MD5 |
e97d7e0ce87f1468cd5bf6950402ae94
|
|
| BLAKE2b-256 |
8835352fd607f7c62fd5c2f1fd13fdba5809c4b97f5bf3148547dbe64cd25b2f
|
File details
Details for the file hyprpwr-0.1.0-py3-none-any.whl.
File metadata
- Download URL: hyprpwr-0.1.0-py3-none-any.whl
- Upload date:
- Size: 17.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5e3b0f7eeb14c31c3fffc36dfd29e9d33d4ac73ae7a70d06d1ed0802cde5f29e
|
|
| MD5 |
e2ccfc6ec4301d40b95a9b1121f4ba1d
|
|
| BLAKE2b-256 |
8b0f8b704b0d7de3415c22b6da9b838ff367b956bd98e64f62ad7e517f3ba527
|