A GNOME Shell extension that allows you to execute HTTP/HTTPS REST API requests directly from the top bar menu.
- 🚀 Quick access to API endpoints from the GNOME Shell top bar
- 🔧 Full HTTP method support (GET, POST, PUT, PATCH, DELETE)
- 🔐 Custom HTTP headers for authentication
- 📝 JSON request body support for POST/PUT/PATCH
- 🔔 Desktop notifications for success/failure responses
- ⚙️ Easy-to-use settings dialog
- 💾 Import/Export shortcuts for backup and sharing
- 📊 Debug logging for troubleshooting
-
Clone or download this repository
-
Run the installation script:
./install.sh-
Restart GNOME Shell:
- On X11: Press
Alt+F2, typer, and press Enter - On Wayland: Log out and log back in
- On X11: Press
-
Enable the extension:
gnome-extensions enable api-shortcuts@guilhem-lavaux.eu- Create the extension directory:
mkdir -p ~/.local/share/gnome-shell/extensions/api-shortcuts@your-domain.com- Copy all files to the extension directory:
cp -r * ~/.local/share/gnome-shell/extensions/api-shortcuts@your-domain.com/- Compile the GSettings schema:
glib-compile-schemas ~/.local/share/gnome-shell/extensions/api-shortcuts@your-domain.com/schemas/- Restart GNOME Shell and enable the extension
-
Click the network icon in the top bar
-
Select "⚙ Settings"
-
Click "Add New Shortcut"
-
Fill in the details:
- Label: Display name for the menu
- URL: Full API endpoint URL
- HTTP Method: GET, POST, PUT, PATCH, or DELETE
- HTTP Headers (optional): One per line in format
Header-Name: value - Request Body (optional): JSON body for POST/PUT/PATCH requests
-
Click "Save"
Simple GET request:
- Label:
Check API Status - URL:
https://api.example.com/status - Method:
GET
POST with authentication:
- Label:
Create User - URL:
https://api.example.com/users - Method:
POST - Headers:
Content-Type: application/json Authorization: Bearer your-token-here - Body:
{ "name": "John Doe", "email": "john@example.com" }
Export shortcuts:
- Open Settings
- Click "Export Shortcuts"
- Choose where to save the JSON file
Import shortcuts:
- Open Settings
- Click "Import Shortcuts"
- Select a JSON file
- Choose to either replace all shortcuts or add to existing ones
# View extension logs (API requests, notifications)
journalctl -f -o cat /usr/bin/gnome-shell | grep "API Shortcuts"
# View preferences logs (import/export, settings)
gnome-extensions prefs api-shortcuts@your-domain.comNo notifications appear:
- Check the logs for error messages
- Verify your API endpoint is accessible
- Check that the URL includes the protocol (http:// or https://)
Extension doesn't appear in top bar:
- Ensure the extension is enabled:
gnome-extensions list - Check for errors:
journalctl -f -o cat /usr/bin/gnome-shell - Try restarting GNOME Shell
Import doesn't work:
- Verify the JSON file has the correct format (see exported file for reference)
- Check the terminal output when running:
gnome-extensions prefs api-shortcuts@your-domain.com
api-shortcuts@your-domain.com/
├── extension.js # Main extension code
├── prefs.js # Preferences/settings UI
├── metadata.json # Extension metadata
├── schemas/
│ └── org.gnome.shell.extensions.api-shortcuts.gschema.xml
├── README.md
├── install.sh # Installation script
└── pack.sh # Packaging script
./pack.shThis creates api-shortcuts@your-domain.com.shell-extension.zip ready for distribution.
- GNOME Shell 48 or later
- GLib 2.0
- Soup 3.0
This extension is provided as-is for personal and commercial use.
Contributions are welcome! Please feel free to submit issues or pull requests.
- Initial release
- HTTP/HTTPS REST API support
- All HTTP methods (GET, POST, PUT, PATCH, DELETE)
- Custom headers support
- JSON request body support
- Desktop notifications
- Import/Export functionality
- Debug logging