Desktop widgets for Linux β analog clock, task list, weather, music now-playing, system monitor, and quick notes. All widgets are draggable, resizable, and persist their positions across sessions.
| Widget | Description |
|---|---|
| π Analog Clock | Smooth analog hands + digital time + date |
| β Task List | Todo list with checkboxes, add/delete/clear done |
| π€ Weather | Current temp, feels-like, humidity, wind (Open-Meteo) |
| π΅ Now Playing | MPRIS integration β Spotify, VLC, mpv, Firefox, etc. |
| β System Monitor | CPU, RAM, disk, process count, uptime |
| π Quick Note | Sticky note with auto-save |
- Python 3.8+
- GTK3 runtime libraries
- PyGObject β Python GTK3 bindings
- A Wayland compositor (GNOME/KDE) or X11 session
Fedora / RHEL / CentOS:
sudo dnf install -y python3-gobject python3-psutil python3-requests python3-dbus gtk3 python3-cairoUbuntu / Debian:
sudo apt install -y python3-gi python3-gi-cairo python3-psutil python3-requests python3-dbus gir1.2-gtk-3.0Arch Linux:
sudo pacman -S python-gobject python-psutil python-requests python-dbus gtk3openSUSE:
sudo zypper install python3-gobject python3-psutil python3-requests python3-dbus gtk3git clone https://github.com/log1-codes/linux-widget-app.git
cd widget-app
./run.shOr manually:
python3 main.pyRun the interactive installer:
./install.shOr use the Makefile directly:
make installThis copies files to /usr/share/widget-app/, creates a /usr/bin/widget-app launcher, installs the .desktop file, and enables autostart.
make rpm
# or
./install.sh # then choose option 2Then install the resulting RPM:
sudo dnf install ./widget-app-*.rpm# Copy sources
sudo mkdir -p /usr/share/widget-app/manager /usr/share/widget-app/widgets
sudo cp main.py /usr/share/widget-app/
sudo cp manager/*.py /usr/share/widget-app/manager/
sudo cp widgets/*.py /usr/share/widget-app/widgets/
# Create launcher
sudo bash -c 'cat > /usr/bin/widget-app << "EOF"
#!/bin/sh
export GDK_BACKEND=x11
exec /usr/bin/python3 /usr/share/widget-app/main.py "$@"
EOF'
sudo chmod 0755 /usr/bin/widget-app
# Optional: desktop entry & autostart
sudo mkdir -p /usr/share/applications
sudo cp widget-app.desktop /usr/share/applications/
sudo mkdir -p /etc/xdg/autostart
sudo cp widget-app-autostart.desktop /etc/xdg/autostart/widget-app.desktop- Run
widget-app(installed) or./run.sh(source) - A tray icon appears in the system tray β click it to toggle the Widget Manager
- In the manager, click + Add to place widgets on your desktop
- Drag widgets by their title bar
- Resize widgets by the bottom-right corner
- Close widgets with the Γ button or Escape key
- Right-click the tray icon β Quit to exit
Widgets and task lists persist automatically.
This app forces GDK_BACKEND=x11 (XWayland) automatically when run on Wayland. This is required because:
- GTK window
DOCK/KEEP_BELOWhints behave correctly under XWayland - Keyboard input is delivered to task/note widgets (Wayland security model blocks it otherwise)
No manual configuration is needed β run.sh and the installed widget-app launcher handle this.
If installed via Makefile or install.sh:
make uninstallManual:
sudo rm -rf /usr/share/widget-app
sudo rm -f /usr/bin/widget-app
sudo rm -f /usr/share/applications/widget-app.desktop
sudo rm -f /etc/xdg/autostart/widget-app.desktopRemove config data (optional):
rm -rf ~/.config/widget-appMIT