Skip to main content

Dead simple GNOME panel status updates - inspired by ggplot2

Project description

PanelStatus 📊

Dead simple GNOME panel status updates - Inspired by ggplot2's ease of use

Display static text, scrolling messages, and more in your GNOME top panel with just one line of Python!

Installation

# From the library directory
import sys
sys.path.insert(0, '/home/maxime/panelstatus-lib')
from panelstatus import install_extension

# Install the GNOME extension
install_extension()

# Restart GNOME Shell (Alt+F2, type 'r', press Enter)

Or use the command line:

cd ~/panelstatus-lib
python3 -c "from panelstatus import install_extension; install_extension()"

Features

Static text - Show status messages 🎬 Smooth scrolling - Perfect for long messages 🎨 Colors - Named colors or custom hex codes ⚡ Fast - Minimal overhead, smooth 60fps animations 🐍 Pythonic - Simple, intuitive API 📦 Self-installing - Extension installs with one function call!

Quick Start

import sys
sys.path.insert(0, '/home/maxime/panelstatus-lib')
from panelstatus import status

# Static text
status.set("Processing...", color="blue")

# Scrolling text
status.scroll("This is a long message that scrolls smoothly!")

# Clear
status.clear()

Usage

Basic Static Status

from panelstatus import status

status.set("Processing...")
status.set("Done!", color="green")
status.clear()

Scrolling Text

# For long messages
status.scroll("This is a long message that scrolls smoothly across your panel! ")

# With color
status.scroll("Welcome to my app!", color="blue")

# Control speed (1.0 = default, 2.0 = 2x faster, 0.5 = slower)
status.scroll("Slow scroll...", speed=0.5)
status.scroll("Fast scroll!", speed=2.0)

# Adjust display width
status.scroll("Custom width", width=200)

Switch Between Modes

import time

status.set("Starting task...", color="yellow")
time.sleep(2)

status.scroll("Processing lots of data... this might take a while...")
time.sleep(5)

status.set("Complete!", color="green")

Colors

Named colors:

  • red, green, blue
  • yellow, orange, purple
  • gray, white

Custom hex codes:

status.set("Custom", color="#ff00ff")

Context Manager (Auto-clear)

with status.show("Working...", color="blue"):
    # Your code here
    do_something()
# Status automatically cleared!

API Reference

install_extension()

Install the GNOME Shell extension (one-time setup).

from panelstatus import install_extension
install_extension()

status.set(text, color=None)

Display static text in the panel.

Args:

  • text (str): Message to display
  • color (str, optional): Color name or hex code

status.scroll(text, color=None, speed=1.0, width=150)

Display scrolling text (perfect for long messages).

Args:

  • text (str): Message to scroll
  • color (str, optional): Color name or hex code
  • speed (float, optional): Scroll speed multiplier (default 1.0)
  • width (int, optional): Display width in pixels (default 150)

status.clear()

Remove status from panel.

status.show(text, color=None)

Context manager that auto-clears when done.

Real-World Examples

Long-running task:

from panelstatus import status
import requests

status.scroll("Downloading data from API... ")
data = requests.get("https://api.example.com/data").json()

status.set("Processing...", color="yellow")
results = process(data)

status.set("Complete! ✓", color="green")

Build script:

status.set("Building...", color="blue")
os.system("npm run build")
status.set("Build complete!", color="green")

Training progress:

for epoch in range(100):
    status.scroll(f"Training epoch {epoch}/100... ", color="orange")
    train_model(epoch)

status.set("Training complete!", color="green")

Philosophy

Like ggplot2 made plotting simple, PanelStatus makes status updates trivial:

  • Simple API - Just status.set() or status.scroll() and go
  • Sensible defaults - Works beautifully out of the box
  • Minimal boilerplate - No complex setup or configuration
  • Pythonic - Feels natural and intuitive
  • Versatile - Static text, scrolling, colors, auto-clear
  • Self-contained - Extension bundles with the library

Try the Demo

Run the example to see all features:

python3 ~/panelstatus-lib/example.py

Watch your panel for static messages, smooth scrolling, and color changes!


Enjoy simple status updates! 🎉

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

panelstatus-1.0.0.tar.gz (7.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

panelstatus-1.0.0-py3-none-any.whl (8.0 kB view details)

Uploaded Python 3

File details

Details for the file panelstatus-1.0.0.tar.gz.

File metadata

  • Download URL: panelstatus-1.0.0.tar.gz
  • Upload date:
  • Size: 7.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.12

File hashes

Hashes for panelstatus-1.0.0.tar.gz
Algorithm Hash digest
SHA256 8d781eac94a576a88edb12e28e1b454319201433b3b6c2733f4cf62880019846
MD5 fc8c661d6851b200c10791d855f9eb1d
BLAKE2b-256 e5825b1821c01e5fb4fd6d72242454e394cb92fcaace118cb7cfef7dde4dfae1

See more details on using hashes here.

File details

Details for the file panelstatus-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: panelstatus-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 8.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.12

File hashes

Hashes for panelstatus-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1f769c7be38befbdf18184b36de56525d95861e9a8542817d46a966a40cae24d
MD5 5d67460bf995ac7df1f8f8be05938f23
BLAKE2b-256 ac7506b64842d6c1d600062746b039e2eb5f02cde07b580d0d0d0a5a5da7f4c3

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page