OrbitKeys is a native COSMIC / Wayland desktop application that displays context-aware keyboard shortcuts for the currently focused application.
It listens to COSMIC toplevel focus events and dynamically loads shortcut definitions from JSON files based on the active app’s app_id.
This project is intentionally COSMIC-only:
output.mp4
- Context-aware keyboard shortcut display
- Automatically updates when application focus changes
- Manual “Home / Root” mode for desktop-level shortcuts
- Minimal settings overlay
- JSON-based shortcut definitions
- Native Wayland + COSMIC protocols
- COSMIC Desktop Environment
- Wayland
- Rust toolchain (for building from source)
OrbitKeys depends on:
libcosmicCOSMIC Wayland protocolsext-foreign-toplevel-listzcosmic_toplevel_info
It will not work on GNOME, KDE, X11, or other compositors.
cargo build --releaseInstall with the ./install script.
at root.
mkdir -p ~/.local/bin
cp target/release/orbitkeys ~/.local/bin/mkdir -p ~/.local/share/applications
cp orbitkeys.desktop ~/.local/share/applications/xyz.fonzi.orbitkeys.desktopmkdir -p ~/.local/share/orbitkeys
cp -r shortcuts ~/.local/share/orbitkeys/OrbitKeys loads shortcuts based on the focused application's app_id.
Support is driven by JSON files in the shortcuts/ directory.
Currently included shortcut sets:
- Chromium
- Firefox
- Visual Studio Code
- Obsidian
- LibreOffice Writer
- LibreOffice Calc
- LibreOffice Impress
- LibreOffice Draw
- COSMIC Desktop (global / root) on shortcut
- COSMIC Files
- COSMIC Terminal
- COSMIC Editor
- GIMP
- Inkscape
- OBS Studio
- VLC
- Discord
- Slack
- Thunderbird/BetterBird
- Spotify
- Goose (Desktop Goose)
Adding support for new applications is simple:
- Create a new
<app_id>.jsonfile in theshortcuts/directory - Re-install
- Restart OrbitKeys
Contributions are welcome.
Shortcut files are stored at:
~/.local/share/orbitkeys/shortcuts/<app_id>.json
Example:
{
"shortcuts": [
{
"keys": "Ctrl+C",
"description": "Copy selection",
"category": "Editing"
},
{
"keys": "Ctrl+V",
"description": "Paste clipboard",
"category": "Editing"
}
]
}Notes:
<app_id>must match the Waylandapp_idcategoryis optional- Files are loaded dynamically on focus change
Launch OrbitKeys from the COSMIC launcher
OrbitKeys is early but functional.
APIs and behavior may evolve alongside COSMIC.
Contributions and shortcut packs are welcome.
- Window close (❌) may not fully terminate the process
In some cases, closing the window does not immediately exit the OrbitKeys process. This is currently believed to be caused by the background Wayland focus watcher keeping the process alive after the window is closed. This will be addressed in a future update.
GNU General Public License v2.0 (GPL-2.0)