Universal keyboard shortcuts keymap that automatically detects and displays keybindings for Hyprland or Niri compositors.
Universal keyboard shortcuts cheatsheet plugin for Noctalia that automatically detects your compositor (Hyprland or Niri) and displays your keybindings with recursive config parsing.

source (Hyprland) and include (Niri) directives~/.config/hypr/*.conf style includes| Compositor | Default Config | Format |
|---|---|---|
| Hyprland | ~/.config/hypr/hyprland.conf |
Hyprland config format |
| Niri | ~/.config/niri/config.kdl |
KDL format |
cp -r keybind-cheatsheet ~/.config/noctalia/plugins/
Add the plugin to your bar configuration in Noctalia settings. Click the keyboard icon to open the cheatsheet.
Add to your config:
bind = $mod, F1, exec, qs -c noctalia-shell ipc call plugin:keybind-cheatsheet toggle
You can specify your custom Super key variable (e.g., $mainMod) in the plugin settings.
Add to your config:
binds {
Mod+F1 { spawn "qs -c noctalia-shell ipc call plugin:keybind-cheatsheet toggle"; }
}
The plugin recursively parses your main config and all source includes.
Keybind format:
# 1. APPLICATIONS
bind = $mainMod, T, exec, alacritty #"Terminal"
bind = $mainMod, B, exec, firefox #"Browser"
# 2. WINDOW MANAGEMENT
bind = $mainMod, Q, killactive, #"Close window"
bind = $mainMod, F, fullscreen, #"Toggle fullscreen"
# 3. WORKSPACES
bind = $mainMod, 1, workspace, 1 #"Workspace 1"
bind = $mainMod SHIFT, 1, movetoworkspace, 1 #"Move to workspace 1"
Requirements:
# N. CATEGORY NAME (where N is a number)#"description" at end of bind line$mod, SHIFT, CTRL, ALTSource directives (automatically followed):
source = ~/.config/hypr/keybinds.conf
source = ~/.config/hypr/apps/*.conf
The plugin parses the binds { } block and follows all include directives.
Keybind format:
binds {
// #"Applications"
Mod+T hotkey-overlay-title="Terminal" { spawn "alacritty"; }
Mod+B hotkey-overlay-title="Browser" { spawn "firefox"; }
// #"Window Management"
Mod+Q hotkey-overlay-title="Close window" { close-window; }
Mod+F hotkey-overlay-title="Fullscreen" { fullscreen-window; }
// #"Workspaces"
Mod+1 { focus-workspace 1; }
Mod+2 { focus-workspace 2; }
}
Requirements:
// #"Category Name" (must use this exact format)hotkey-overlay-title="description" attributeInclude directives (automatically followed):
include "~/.config/niri/binds.kdl"
When no category comment is provided, keybindings are grouped by action:
| Action prefix | Category |
|---|---|
spawn |
Applications |
focus-column-* |
Column Navigation |
focus-window-* |
Window Focus |
focus-workspace-* |
Workspace Navigation |
move-column-* |
Move Columns |
move-window-* |
Move Windows |
close-window, fullscreen-window |
Window Management |
maximize-column |
Column Management |
set-column-width |
Column Width |
screenshot* |
Screenshots |
power-off-monitors |
Power |
quit |
System |
XF86 and other special keys are automatically formatted:
| Raw Key | Display |
|---|---|
XF86AudioRaiseVolume |
Vol Up |
XF86AudioLowerVolume |
Vol Down |
XF86AudioMute |
Mute |
XF86MonBrightnessUp |
Bright Up |
XF86MonBrightnessDown |
Bright Down |
Print |
PrtSc |
Prior / Next |
PgUp / PgDn |
Access settings via the gear icon in the panel header:
[KeybindCheatsheet]Hyprland: Categories must start with # 1., # 2., etc.
Niri: Use // #"Category Name" format for custom categories.
The plugin follows source (Hyprland) and include (Niri) directives automatically. Check logs to see which files are being parsed.
MIT