Monitor your Uptime Kuma services directly from your GNOME desktop.
Features β’ Installation β’ Configuration β’ Screenshots β’ Contributing
Uptime Kuma Indicator is a lightweight GNOME Shell extension that brings real-time monitoring data from your Uptime Kuma instance directly into your top panel. Stay informed about your services' health without opening a browser.
- π― Real-time Monitoring: Live status updates displayed in your GNOME top panel
- π¨ Visual Status Indicator: Colored health dot with textual summary (Up/Down/Total monitors)
- π Detailed Popup: Scrollable list showing each monitor's status, latency, and last check time
- π Flexible Authentication: Support for:
- Public status page JSON (no authentication)
- Private REST API (token-based)
- Prometheus metrics endpoint (API key via Secret Service)
- βοΈ Highly Configurable:
- Customizable refresh intervals
- Adjustable monitor display limits
- Toggle latency visibility
- Normal or compact appearance modes
- Debug logging levels
- π Internationalized: Full localization support (English, German, Swedish, Japanese)
- π‘οΈ Robust Error Handling: Graceful failures with informative tooltips and automatic retry logic
- π§ͺ Demo Mode: Test the UI with mock data before connecting to your instance
- π Keyboard-First Search: Quickly filter monitors inside the dropdown via inline search with substring matching
- π€ Full translation refresh. All locales (English, German, Japanese, Swedish) now include the latest service-selection UI text and the About dialog links, so no strings fall back to English.
- π Suspend/resume improvements from 1.5 are, of course, still included: automatic network session rebuild after wake and extra logging around recovery.
Upgrading from earlier releases still includes the monitor picker and UI refinements introduced in 1.3/1.4.
- GNOME Shell: Version 46, 47, 48, or 49
- Dependencies: GJS with Soup 3 and libadwaita 1.4+
- Uptime Kuma: Version 0.10+ with one of:
- Public status page enabled
- API access token
- Prometheus metrics endpoint with authentication
Install directly from extensions.gnome.org:
- Visit the extension page
- Click the ON/OFF toggle to install
- The extension will be automatically downloaded and enabled
- Configure via the preferences dialog (click the extension icon β settings gear)
From the project root directory:
make installThen reload GNOME Shell:
- Xorg: Press Alt + F2, type
r, and press Enter - Wayland: Log out and log back in
Finally, enable the extension:
gnome-extensions enable uptime-kuma-indicator@uptime.dumke.me-
Copy the extension files:
mkdir -p ~/.local/share/gnome-shell/extensions cp -r uptime-kuma-indicator ~/.local/share/gnome-shell/extensions/uptime-kuma-indicator@uptime.dumke.me
-
Compile the GSettings schema:
glib-compile-schemas ~/.local/share/gnome-shell/extensions/uptime-kuma-indicator@uptime.dumke.me/schemas -
Reload GNOME Shell (see above)
-
Enable the extension:
- Via command line:
gnome-extensions enable uptime-kuma-indicator@uptime.dumke.me - Or use GNOME Extensions app
- Via command line:
Access the preferences dialog by clicking the extension icon and selecting the settings gear icon.
| Setting | Description |
|---|---|
| Base URL | Full URL of your Uptime Kuma instance (e.g., https://status.example.com) |
| API Mode | Choose your authentication method: β’ Status page JSON (public) β’ Private API (token) β’ Prometheus metrics (API key) |
| Status Page Slug | Slug for public status pages (e.g., status-main) |
| API Endpoint | Relative path for REST API (default: api/monitor) |
| API Token/Key | Securely stored in Secret Service (never in plain text) |
Note: When using metrics mode the endpoint path is always the default
metricsroute to avoid accidental misconfiguration.
| Setting | Description |
|---|---|
| Refresh Interval | Update frequency in seconds (minimum: 10s) |
| Maximum Monitors | Limit number of monitors shown in popup |
| Show Latency | Display response times for each monitor |
| Appearance | Toggle between normal and compact mode |
| Demo Data | Enable test data when no URL is configured |
| Log Level | Control logging verbosity (Errors/Info/Debug) |
# Clone the repository
git clone https://github.com/danst0/gnome-uptime-kuma.git
cd gnome-uptime-kuma
# Work in the extension directory
cd uptime-kuma-indicator
# Compile schemas after making changes
glib-compile-schemas schemas# View extension logs
journalctl -f -o cat /usr/bin/gnome-shell | grep -i "kuma-indicator"
# Test preferences dialog standalone
gnome-extensions prefs uptime-kuma-indicator@uptime.dumke.me# From project root
make build
# The packaged extension will be in uptime-kuma-indicator/build/- Ensure GNOME Shell was reloaded after installation
- Check that the extension is enabled:
gnome-extensions list - View logs for errors:
journalctl -f -o cat /usr/bin/gnome-shell
- Verify your Base URL is correct and accessible
- Check that the selected API mode matches your Uptime Kuma configuration
- For private API/metrics, ensure your token/key is valid
- Try enabling Demo Data to verify the UI is working
- Confirm your Uptime Kuma instance is running and reachable
- Check firewall settings if connecting to a remote instance
- For custom deployments, adjust status page or REST API endpoints as needed (metrics mode always uses the default path)
Contributions are welcome! Here's how you can help:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- π Additional language translations
- π Bug fixes and error handling improvements
- β¨ New features (please open an issue first to discuss)
- π Documentation improvements
- π¨ UI/UX enhancements
uptime-kuma-indicator/
βββ extension.js # Main extension logic and panel indicator
βββ prefs.js # Preferences dialog UI
βββ metadata.json # Extension metadata
βββ stylesheet.css # Custom styling
βββ schemas/ # GSettings schema definitions
βββ locale/ # Translations (en, de, sv, ja)
βββ utils/ # Helper modules
βββ network.js # HTTP client and parsers
βββ parsers.js # Data parsing utilities
βββ i18n.js # Internationalization helpers
- Polling automatically stops when the extension is disabled or removed
- Network requests timeout after 8 seconds with exponential backoff (3 retries)
- Failed endpoints turn the indicator grey and show error details in tooltip
- Relative timestamps refresh with each poll cycle
- Tokens are stored in GNOME Keyring via Secret Service (never in GSettings)
This project is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. See the LICENSE file for details.
- Uptime Kuma - The fantastic self-hosted monitoring tool
- GNOME Shell Extension developers for excellent documentation
- All contributors and users who provide feedback
- Repository: github.com/danst0/gnome-uptime-kuma
- Uptime Kuma: github.com/louislam/uptime-kuma
- Report Issues: github.com/danst0/gnome-uptime-kuma/issues
Made with β€οΈ for the GNOME and Uptime Kuma communities
If you find this extension useful, please β star the repository!

