██████╗ ███╗ ███╗███████╗ ██╔══██╗████╗ ████║██╔════╝ ██║ ██║██╔████╔██║███████╗ ██║ ██║██║╚██╔╝██║╚════██║ ██████╔╝██║ ╚═╝ ██║███████║ ╚═════╝ ╚═╝ ╚═╝╚══════╝
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...]
Manage audio output and input devices.
setvolume <percentage>increment <step>decrement <step>mutesetmic <percentage>micmutecycleoutputstatusExamples:
dms ipc call audio setvolume 50
dms ipc call audio increment 10
dms ipc call audio mute
dms ipc call audio cycleoutput
Control display brightness for internal and external displays.
set <percentage> [device]increment <step> [device]decrement <step> [device]statuslistenableExponential [device]disableExponential [device]toggleExponential [device]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 mode (gamma/color temperature) control.
toggleenabledisablestatustemperature [value]automation [mode]schedule <start> <end>location <lat> <lon>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
Media player control via MPRIS interface.
listplaypauseplayPausepreviousnextstopExamples:
dms ipc call mpris playPause
dms ipc call mpris next
Screen lock control and status.
lockdemoisLockedExamples:
dms ipc call lock lock
dms ipc call lock isLocked
Idle inhibitor control to prevent automatic sleep/lock.
toggleenabledisableExamples:
dms ipc call inhibit toggle
dms ipc call inhibit enable
Wallpaper management with support for global and per-monitor configurations.
getset <path>clearnextprevgetFor <screen>setFor <screen> <path>nextFor <screen>prevFor <screen>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.
User profile image management.
getImagesetImage <path>clearImageExamples:
dms ipc call profile setImage /path/to/avatar.png
dms ipc call profile clearImage
Theme mode control (light/dark mode switching).
togglelightdarkgetModeExamples:
dms ipc call theme toggle
dms ipc call theme dark
Control individual bars using flexible selectors.
reveal <selector> <value>hide <selector> <value>toggle <selector> <value>status <selector> <value>autoHide <selector> <value>manualHide <selector> <value>toggleAutoHide <selector> <value>getPosition <selector> <value>setPosition <selector> <value> <position>Selectors:
index - Select by position (0-based)id - Select by unique bar IDname - Select by bar nameExamples:
# 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
# Position controls
dms ipc call bar getPosition index 0
dms ipc call bar getPosition id default
dms ipc call bar setPosition index 0 top
dms ipc call bar setPosition id default left
Dock visibility and behavior control.
revealhidetogglestatusautoHidemanualHidetoggleAutoHideExamples:
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
Control bar widget popouts, menus, and visibility (including plugins).
toggle <widgetId>openWith <widgetId> <mode>toggleWith <widgetId> <mode>openQuery <widgetId> <query>toggleQuery <widgetId> <query>liststatus <widgetId>visibility <widgetId>reveal <widgetId>hide <widgetId>reset <widgetId>Examples:
dms ipc call widget list
dms ipc call widget toggle clock
dms ipc call widget status weather
# Open widget popout in a specific mode (e.g., launcher tabs)
dms ipc call widget openWith launcherButton all
dms ipc call widget openWith launcherButton files
dms ipc call widget openWith launcherButton apps
dms ipc call widget openWith launcherButton plugins
dms ipc call widget toggleWith launcherButton files
# Open widget popout with a pre-filled search query
dms ipc call widget openQuery launcherButton "browser"
dms ipc call widget toggleQuery launcherButton "settings"
# Control widget visibility on the bar
dms ipc call widget visibility weather
dms ipc call widget hide weather
dms ipc call widget reveal weather
dms ipc call widget reset weather
Notes:
list to discover available widget IDs with their current visibility state ([visible] or [hidden])status function returns "visible" or "hidden" for the widget popout statevisibility, reveal, hide, and reset functions control the widget's bar presence (whether it appears on the bar at all)visibilityCommand — use reset to return to that behavior after overridingThese targets control various modal windows and overlays.
Application launcher modal with search capabilities.
openclosetoggleopenQuery <query>toggleQuery <query>Examples:
dms ipc call spotlight toggle
dms ipc call spotlight openQuery browser
dms ipc call spotlight toggleQuery "!"
All these modals support open, close, and toggle functions:
clearAll, dismissAllPopups, toggleDoNotDisturb, and getDoNotDisturb)focusOrToggle)Examples:
dms ipc call clipboard toggle
dms ipc call notifications open
dms ipc call notifications clearAll
dms ipc call notifications dismissAllPopups
dms ipc call notifications toggleDoNotDisturb
dms ipc call notifications getDoNotDisturb
dms ipc call processlist open
dms ipc call powermenu toggle
dms ipc call control-center toggle
dms ipc call notepad open
Settings modal with additional read/write access to configuration values.
openopenWith <tab>closetoggletoggleWith <tab>focusOrTogglefocusOrToggleWith <tab>tabsget <key>set <key> <value>Available Tab IDs:
personalization, wallpaper, theme, typography, time_weather, soundsdankbar, dankbar_settings, dankbar_widgetsworkspaces_widgets, workspaces, media_player, notifications, osd, running_apps, updaterdock_launcher, dock, launcherkeybinds, displays, network, printerspower_security, lock_screen, power_sleepplugins, aboutExamples:
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 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.
Dashboard popup with multiple tabs.
open [tab]closetoggle [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 browser controls for selecting wallpapers and profile images.
browse <type>Examples:
dms ipc call file browse wallpaper
dms ipc call file browse profile
DankDash wallpaper browser control.
wallpaperExamples:
dms ipc call dankdash wallpaper
First-launch welcome wizard with feature overview, system diagnostics, and configuration quick links.
opendoctorpage <num>Pages:
dms doctor with filterable results (Errors, Warnings, Info, OK)Examples:
dms ipc call welcome open
dms ipc call welcome doctor
dms ipc call welcome page 2
Settings Integration: Available in Settings → About → Tools as "Show Welcome" and "System Check" buttons.
Requires niri 25.11+
Screenshot functionality for the niri compositor. Captures are opened in your configured editor for markup and annotation.
screenshotscreenshotScreenscreenshotWindowExamples:
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.
Dynamic keybinds cheatsheet modal that works with multiple providers.
open <provider>openWithPath <provider> <path>closetoggle <provider>toggleWithPath <provider> <path>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:
~/.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.
niri only
Window rules editor modal for managing compositor window rules.
openclosetoggleExamples:
dms ipc call window-rules open
dms ipc call window-rules close
dms ipc call window-rules toggle
This feature is only available on the niri compositor.
Niri and Hyprland only
Rename the currently active workspace via a dialog.
openExamples:
dms ipc call workspace-rename open
Note: Returns an error if running on an unsupported compositor.
Monitor output profile management for switching between display configurations.
listProfilescurrentsetProfile <name>statusrefreshExamples:
# List available profiles
dms ipc call outputs listProfiles
# Check current profile
dms ipc call outputs current
# Switch to a specific profile
dms ipc call outputs setProfile "docked"
dms ipc call outputs setProfile "laptop-only"
# Get output status
dms ipc call outputs status
# Refresh configuration
dms ipc call outputs refresh
This feature is only available on niri, Hyprland, and MangoWC compositors.
Hyprland-only features
Hyprland-specific workspace overview control.
openOverviewcloseOverviewtoggleOverviewExamples:
dms ipc call hypr toggleOverview
Workspace Overview:
The workspace overview shows all your workspaces across all monitors with live window previews:
Note: All hypr functions return HYPR_NOT_AVAILABLE if not running Hyprland.
Manage plugins at runtime - useful for development and troubleshooting.
liststatus <pluginId>reload <pluginId>enable <pluginId>disable <pluginId>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
System updater external check request.
updatestatusExamples:
dms ipc call systemupdater updatestatus
Control desktop widget instances (clocks, system monitors, etc.).
liststatus <instanceId>enable <instanceId>disable <instanceId>toggleEnabled <instanceId>toggleOverlay <instanceId>setOverlay <instanceId> <bool>toggleClickThrough <instanceId>setClickThrough <instanceId> <bool>toggleSyncPosition <instanceId>setSyncPosition <instanceId> <bool>Examples:
# List all desktop widgets
dms ipc call desktopWidget list
# Get widget status
dms ipc call desktopWidget status dw_1234567890_abc123
# Toggle overlay visibility (useful for keybinds)
dms ipc call desktopWidget toggleOverlay dw_1234567890_abc123
# Enable click-through mode
dms ipc call desktopWidget setClickThrough dw_1234567890_abc123 true
# Toggle position sync
dms ipc call desktopWidget toggleSyncPosition dw_1234567890_abc123
Notes:
list to discover widget instance IDsDisplay toast notifications for user feedback and scripted alerts.
info <message>infoWith <message> <details> <command> <category>warn <message>warnWith <message> <details> <command> <category>error <message>errorWith <message> <details> <command> <category>hidedismiss <category>statusExamples:
# Simple messages
dms ipc call toast info "Build complete"
dms ipc call toast warn "Disk space low"
dms ipc call toast error "Connection failed"
# With details (expandable in UI)
dms ipc call toast errorWith "Git push failed" "Permission denied (publickey)" "git push origin main" "git"
# With category for later dismissal
dms ipc call toast warnWith "Downloading update..." "" "" "updater"
dms ipc call toast dismiss "updater"
# Check current state
dms ipc call toast status
# Force hide
dms ipc call toast hide
Notes:
*With variants accept optional details (expandable in UI), a command string, and a category"") for optional parameters you want to skipstatus function returns hidden or visible:level:messageIPC commands are designed for integration with keybindings, scripts, and automation tools.
#!/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
# Check if screen is locked before performing action
if dms ipc call lock isLocked | grep -q "false"; then
dms ipc call notifications open
fi
# 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
Most IPC functions return string messages indicating:
Functions that return void (like media controls) execute the action but don't provide feedback. Check the application state through other means if needed.
See compositor-specific keybinding configuration in your compositor's documentation to integrate these IPC commands with your workflow.