Keybinds & IPC
██████╗ ███╗ ███╗███████╗ ██╔══██╗████╗ ████║██╔════╝ ██║ ██║██╔████╔██║███████╗ ██║ ██║██║╚██╔╝██║╚════██║ ██████╔╝██║ ╚═╝ ██║███████║ ╚═════╝ ╚═╝ ╚═╝╚══════╝
DankMaterialShell provides comprehensive IPC (Inter-Process Communication) functionality that allows external control of the shell through command-line commands. All IPC commands follow the format:
dms ipc call <target> <function> [parameters...]
Core Controls
audio
Manage audio output and input devices.
| Function | Description | Parameters |
|---|---|---|
setvolume <percentage> | Set output volume | percentage (0-100) |
increment <step> | Increase output volume | step (default: 5) |
decrement <step> | Decrease output volume | step (default: 5) |
mute | Toggle output mute | - |
setmic <percentage> | Set microphone volume | percentage (0-100) |
micmute | Toggle microphone mute | - |
cycleoutput | Cycle through audio output devices | - |
status | Get current audio status | - |
Examples:
dms ipc call audio setvolume 50
dms ipc call audio increment 10
dms ipc call audio mute
dms ipc call audio cycleoutput
brightness
Control display brightness for internal and external displays.
| Function | Description | Parameters |
|---|---|---|
set <percentage> [device] | Set brightness level | percentage (1-100), device (optional) |
increment <step> [device] | Increase brightness | step, device (optional) |
decrement <step> [device] | Decrease brightness | step, device (optional) |
status | Get current brightness status | - |
list | List all brightness devices | - |
enableExponential [device] | Enable exponential brightness mode | device (optional, uses current if not specified) |
disableExponential [device] | Disable exponential brightness mode | device (optional, uses current if not specified) |
toggleExponential [device] | Toggle exponential brightness mode | device (optional, uses current if not specified) |
Examples:
dms ipc call brightness set 80
dms ipc call brightness increment 10 ""
dms ipc call brightness decrement 5 "intel_backlight"
dms ipc call brightness disableExponential "backlight:intel_backlight"
dms ipc call brightness toggleExponential
night
Night mode (gamma/color temperature) control.
| Function | Description | Parameters |
|---|---|---|
toggle | Toggle night mode on/off | - |
enable | Enable night mode | - |
disable | Disable night mode | - |
status | Get night mode status | - |
temperature [value] | Get/set color temperature | value in Kelvin (2500-6000, optional) |
automation [mode] | Get/set automation mode | "manual", "time", or "location" (optional) |
schedule <start> <end> | Set time-based schedule | start time (HH:MM), end time (HH:MM) |
location <lat> <lon> | Set location coordinates | latitude, longitude |
Examples:
dms ipc call night toggle
dms ipc call night temperature 4000
dms ipc call night automation time
dms ipc call night schedule 20:00 06:00
dms ipc call night location 40.7128 -74.0060
mpris
Media player control via MPRIS interface.
| Function | Description |
|---|---|
list | List all available media players |
play | Start playback |
pause | Pause playback |
playPause | Toggle play/pause |
previous | Skip to previous track |
next | Skip to next track |
stop | Stop playback |
Examples:
dms ipc call mpris playPause
dms ipc call mpris next
lock
Screen lock control and status.
| Function | Description |
|---|---|
lock | Lock the screen immediately |
demo | Show lock screen demo (doesn't lock) |
isLocked | Check if screen is locked |
Examples:
dms ipc call lock lock
dms ipc call lock isLocked
inhibit
Idle inhibitor control to prevent automatic sleep/lock.
| Function | Description |
|---|---|
toggle | Toggle idle inhibit state |
enable | Enable idle inhibit (prevent sleep) |
disable | Disable idle inhibit (allow sleep) |
Examples:
dms ipc call inhibit toggle
dms ipc call inhibit enable
Wallpaper & Profile
wallpaper
Wallpaper management with support for global and per-monitor configurations.
Global Wallpaper Functions
| Function | Description | Parameters |
|---|---|---|
get | Get current wallpaper path | - |
set <path> | Set wallpaper | path to image file |
clear | Clear all wallpapers | - |
next | Cycle to next wallpaper | - |
prev | Cycle to previous wallpaper | - |
Per-Monitor Functions
| Function | Description | Parameters |
|---|---|---|
getFor <screen> | Get wallpaper for monitor | monitor name (e.g., "DP-2") |
setFor <screen> <path> | Set wallpaper for monitor | monitor name, path to image |
nextFor <screen> | Cycle to next wallpaper | monitor name |
prevFor <screen> | Cycle to previous wallpaper | monitor name |
Examples:
# Global wallpaper mode
dms ipc call wallpaper set /path/to/image.jpg
dms ipc call wallpaper next
# Per-monitor wallpaper mode
dms ipc call wallpaper setFor DP-2 /path/to/image1.jpg
dms ipc call wallpaper setFor eDP-1 /path/to/image2.jpg
dms ipc call wallpaper nextFor eDP-1
# Clear and return to global mode
dms ipc call wallpaper clear
Note: When per-monitor mode is enabled, legacy global functions will return error messages directing you to use the per-monitor equivalents.
profile
User profile image management.
| Function | Description | Parameters |
|---|---|---|
getImage | Get current profile image path | - |
setImage <path> | Set profile image | path to image file |
clearImage | Clear profile image | - |
Examples:
dms ipc call profile setImage /path/to/avatar.png
dms ipc call profile clearImage
Appearance Controls
theme
Theme mode control (light/dark mode switching).
| Function | Description |
|---|---|
toggle | Toggle between light and dark themes |
light | Switch to light theme |
dark | Switch to dark theme |
getMode | Get current theme mode |
Examples:
dms ipc call theme toggle
dms ipc call theme dark
bar
Control individual bars using flexible selectors.
| Function | Description | Parameters |
|---|---|---|
reveal <selector> <value> | Show a bar | selector + value |
hide <selector> <value> | Hide a bar | selector + value |
toggle <selector> <value> | Toggle bar visibility | selector + value |
status <selector> <value> | Get bar visibility status | selector + value |
autoHide <selector> <value> | Enable auto-hide mode | selector + value |
manualHide <selector> <value> | Disable auto-hide mode | selector + value |
toggleAutoHide <selector> <value> | Toggle auto-hide mode | selector + value |
Selectors:
index- Select by position (0-based)id- Select by unique bar IDname- Select by bar name
Examples:
# By index
dms ipc call bar hide index 0
dms ipc call bar reveal index 1
dms ipc call bar toggle index 0
# By name
dms ipc call bar toggle name "Main Bar"
dms ipc call bar status name "Secondary"
# By ID
dms ipc call bar reveal id abc123
# Auto-hide controls
dms ipc call bar autoHide index 0
dms ipc call bar manualHide name "Main Bar"
dms ipc call bar toggleAutoHide index 1
dock
Dock visibility and behavior control.
| Function | Description |
|---|---|
reveal | Show the dock |
hide | Hide the dock |
toggle | Toggle dock visibility |
status | Get dock visibility status |
autoHide | Enable auto-hide mode |
manualHide | Disable auto-hide mode |
toggleAutoHide | Toggle auto-hide mode |
Examples:
dms ipc call dock toggle
dms ipc call dock hide
dms ipc call dock reveal
dms ipc call dock status
# Auto-hide controls
dms ipc call dock autoHide
dms ipc call dock manualHide
dms ipc call dock toggleAutoHide
widget
Control bar widget popouts and menus, including plugins.
| Function | Description | Parameters |
|---|---|---|
toggle <widgetId> | Toggle widget popout visibility | widget ID |
list | List all registered widget IDs | - |
status <widgetId> | Get widget popout visibility status | widget ID |
Examples:
dms ipc call widget list
dms ipc call widget toggle clock
dms ipc call widget status weather
Notes:
- Use
listto discover available widget IDs on your current bar configuration - Widget IDs depend on which widgets are enabled in your bar settings
- The
statusfunction returns "visible" or "hidden" for the widget popout state
Modal Controls
These targets control various modal windows and overlays.
spotlight
Application launcher modal with search capabilities.
| Function | Description | Parameters |
|---|---|---|
open | Show launcher | - |
close | Hide launcher | - |
toggle | Toggle launcher visibility | - |
openQuery <query> | Show launcher with search | search text |
toggleQuery <query> | Toggle launcher with search | search text |
Examples:
dms ipc call spotlight toggle
dms ipc call spotlight openQuery browser
dms ipc call spotlight toggleQuery "!"
Other Modals
All these modals support open, close, and toggle functions:
- clipboard - Clipboard history manager
- notifications - Notification center (also supports
clearAll) - processlist - System process list and performance monitor (also supports
focusOrToggle) - powermenu - Power menu for system actions
- control-center - Quick settings (network, bluetooth, audio, etc.)
- notepad - Quick notepad/scratchpad
Examples:
dms ipc call clipboard toggle
dms ipc call notifications open
dms ipc call notifications clearAll
dms ipc call processlist open
dms ipc call powermenu toggle
dms ipc call control-center toggle
dms ipc call notepad open
settings
Settings modal with additional read/write access to configuration values.
| Function | Description | Parameters |
|---|---|---|
open | Show settings modal | - |
openWith <tab> | Open settings to specific tab | tab ID |
close | Hide settings modal | - |
toggle | Toggle settings modal | - |
toggleWith <tab> | Toggle settings to specific tab | tab ID |
focusOrToggle | Focus settings if open, otherwise toggle | - |
focusOrToggleWith <tab> | Focus/toggle to specific tab | tab ID |
tabs | List available tab IDs | - |
get <key> | Get a setting value | setting key name |
set <key> <value> | Set a setting value | setting key, new value |
Available Tab IDs:
- Personalization:
personalization,wallpaper,theme,typography,time_weather,sounds - Dankbar:
dankbar,dankbar_settings,dankbar_widgets - Widgets:
workspaces_widgets,workspaces,media_player,notifications,osd,running_apps,updater - Dock & Launcher:
dock_launcher,dock,launcher - System:
keybinds,displays,network,printers - Power & Security:
power_security,lock_screen,power_sleep - Other:
plugins,about
Examples:
dms ipc call settings toggle
dms ipc call settings openWith theme
dms ipc call settings toggleWith dock
dms ipc call settings tabs
dms ipc call settings get barPosition
dms ipc call settings set showSeconds true
dms ipc call settings set opacity 0.9
Note: The set function supports boolean, number, and string values. Objects and arrays are not currently supported.
dash
Dashboard popup with multiple tabs.
| Function | Description | Parameters |
|---|---|---|
open [tab] | Show dashboard | tab: "", "overview", "media", "weather" |
close | Hide dashboard | - |
toggle [tab] | Toggle dashboard | tab |
Examples:
dms ipc call dash toggle ""
dms ipc call dash open overview
dms ipc call dash toggle media
dms ipc call dash open weather
file
File browser controls for selecting wallpapers and profile images.
| Function | Description | Parameters |
|---|---|---|
browse <type> | Open file browser | "wallpaper" or "profile" |
Examples:
dms ipc call file browse wallpaper
dms ipc call file browse profile
dankdash
DankDash wallpaper browser control.
| Function | Description |
|---|---|
wallpaper | Toggle DankDash wallpaper browser |
Examples:
dms ipc call dankdash wallpaper
System Utilities
niri
Requires niri 25.11+
Screenshot functionality for the niri compositor. Captures are opened in your configured editor for markup and annotation.
| Function | Description |
|---|---|
screenshot | Interactive selection screenshot |
screenshotScreen | Capture entire screen |
screenshotWindow | Capture focused window |
Examples:
dms ipc call niri screenshot
dms ipc call niri screenshotScreen
dms ipc call niri screenshotWindow
Configuration:
Set the DMS_SCREENSHOT_EDITOR environment variable to choose your preferred screenshot editor backend:
# Use Swappy (default)
export DMS_SCREENSHOT_EDITOR=swappy
# Use Satty
export DMS_SCREENSHOT_EDITOR=satty
Requirements: niri compositor and your chosen screenshot editor (Swappy or Satty) must be installed.
keybinds
Dynamic keybinds cheatsheet modal that works with multiple providers.
| Function | Description | Parameters |
|---|---|---|
open <provider> | Show keybinds modal | provider name (e.g., "hyprland", "sway", "mangowc") |
openWithPath <provider> <path> | Show keybinds modal with custom config path | provider name, path to config |
close | Hide keybinds modal | - |
toggle <provider> | Toggle keybinds modal visibility | provider name |
toggleWithPath <provider> <path> | Toggle keybinds modal with custom config path | provider name, path to config |
Examples:
dms ipc call keybinds toggle hyprland
dms ipc call keybinds toggle sway
dms ipc call keybinds toggle mangowc
dms ipc call keybinds open tmux
# With custom config paths
dms ipc call keybinds openWithPath hyprland /custom/path/to/hypr
dms ipc call keybinds toggleWithPath sway /etc/sway/config
Supported Providers:
The keybinds modal supports all providers available through the dms keybinds CLI:
- Built-in providers: Hyprland, Sway, MangoWC (automatically parse compositor configs)
- Custom cheatsheets: Any JSON-based cheatsheet in
~/.config/DankMaterialShell/cheatsheets/
The modal automatically parses configuration files and displays keybinds organized by category with optional subcategories. See the Keybinds & Cheatsheets documentation for more details on providers and creating custom cheatsheets.
hypr
Hyprland-only features
Hyprland-specific workspace overview control.
| Function | Description |
|---|---|
openOverview | Show Hyprland workspace overview |
closeOverview | Hide Hyprland workspace overview |
toggleOverview | Toggle Hyprland workspace overview visibility |
Examples:
dms ipc call hypr toggleOverview
Workspace Overview:
The workspace overview shows all your workspaces across all monitors with live window previews:
- Multi-monitor support - Shows workspaces from all connected monitors with monitor name labels
- Live window previews - Real-time screen capture of all windows on each workspace
- Drag-and-drop - Move windows between workspaces and monitors by dragging
- Keyboard navigation - Use Left/Right arrow keys to switch between workspaces on current monitor
- Visual indicators - Active workspace highlighted when it contains windows
- Click to switch - Click any workspace to switch to it
- Click outside or press Escape - Close the overview
Note: All hypr functions return HYPR_NOT_AVAILABLE if not running Hyprland.
plugins
Manage plugins at runtime - useful for development and troubleshooting.
| Function | Description | Parameters |
|---|---|---|
list | List all available plugins with status | - |
status <pluginId> | Check if a plugin is loaded | plugin ID |
reload <pluginId> | Hot-reload a plugin without restarting | plugin ID |
enable <pluginId> | Enable a disabled plugin | plugin ID |
disable <pluginId> | Disable a loaded plugin | plugin ID |
Examples:
# See what plugins are available
dms ipc call plugins list
# Check if a specific plugin is running
dms ipc call plugins status myPlugin
# Hot-reload during development (no shell restart needed)
dms ipc call plugins reload myPlugin
# Toggle plugins on/off
dms ipc call plugins enable myPlugin
dms ipc call plugins disable myPlugin
systemupdater
System updater external check request.
| Function | Description |
|---|---|
updatestatus | Trigger system update check |
Examples:
dms ipc call systemupdater updatestatus
Scripting and Automation
IPC commands are designed for integration with keybindings, scripts, and automation tools.
Time-based Automation
#!/bin/bash
# Toggle night mode based on time of day
hour=$(date +%H)
if [ $hour -ge 20 ] || [ $hour -le 6 ]; then
dms ipc call night enable
else
dms ipc call night disable
fi
Status Checking
# Check if screen is locked before performing action
if dms ipc call lock isLocked | grep -q "false"; then
dms ipc call notifications open
fi
Conditional Logic
# Increase brightness only if below threshold
current=$(dms ipc call brightness status | grep -oP '\d+')
if [ "$current" -lt 50 ]; then
dms ipc call brightness set 50
fi
Return Values
Most IPC functions return string messages indicating:
- Success confirmation with current values
- Error messages if operation fails
- Status information for query functions
- Empty/void return for simple action functions
Functions that return void (like media controls) execute the action but don't provide feedback. Check the application state through other means if needed.
Next Steps
See compositor-specific keybinding configuration in your compositor's documentation to integrate these IPC commands with your workflow.