Skip to main content
Version: 1.5

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...]

Discovering IPC commands

List all available targets and functions while DMS is running:

dms ipc list # list all targets and functions
dms ipc # same
dms ipc --help # same, plus usage text
note

Live listing requires DMS to be running. If listing fails, use this page as the offline reference or start the shell with dms run.

Core Controls

audio

Manage audio output and input devices.

FunctionDescriptionParameters
setvolume <percentage>Set output volumepercentage (0-100)
increment <step>Increase output volumestep (default: 5)
decrement <step>Decrease output volumestep (default: 5)
muteToggle output mute-
setmic <percentage>Set microphone volumepercentage (0-100)
micmuteToggle microphone mute-
cycleoutputCycle through audio output devices-
statusGet 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
note

audio setmic and audio micmute remain available for backwards compatibility, but new scripts and keybinds should use the dedicated mic target below.

mic

Dedicated microphone input control with interactive OSD support.

FunctionDescriptionParameters
setvolume <percentage>Set microphone volumepercentage (0-100)
increment <step>Increase microphone volume (unmutes if muted)step (default: 5)
decrement <step>Decrease microphone volume (unmutes if muted)step (default: 5)
muteToggle microphone mute-
statusGet current microphone volume and mute state-

Examples:

dms ipc call mic setvolume 75
dms ipc call mic increment 5
dms ipc call mic decrement 10
dms ipc call mic mute
dms ipc call mic status

Notes:

  • Adjusting the microphone volume triggers an interactive OSD (when osdMicVolumeEnabled is on) with a draggable slider and a mute toggle, mirroring the speaker volume OSD.
  • increment and decrement automatically unmute the microphone before changing the level.

brightness

Control display brightness for internal and external displays.

FunctionDescriptionParameters
set <percentage> [device]Set brightness levelpercentage (1-100), device (optional)
increment <step> [device]Increase brightnessstep, device (optional)
decrement <step> [device]Decrease brightnessstep, device (optional)
statusGet current brightness status-
listList all brightness devices-
enableExponential [device]Enable exponential brightness modedevice (optional, uses current if not specified)
disableExponential [device]Disable exponential brightness modedevice (optional, uses current if not specified)
toggleExponential [device]Toggle exponential brightness modedevice (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.

FunctionDescriptionParameters
toggleToggle night mode on/off-
enableEnable night mode-
disableDisable night mode-
statusGet night mode status-
getCurrentTempGet live gamma temperature-
getTargetTempGet configured night temperature-
getDayTempGet configured day temperature-
setTargetTemp <value>Set night temperaturevalue in Kelvin (2500-6000)
setDayTemp <value>Set day temperature (applies when automation is on)value in Kelvin (2500-6000)
getScheduleGet automation details (mode, period, sun times, next transition)-
automation [mode]Get/set automation mode"manual", "time", or "location" (optional)
schedule <start> <end>Set time-based schedulestart time (HH:MM), end time (HH:MM)
location <lat> <lon>Set location coordinateslatitude, longitude

Examples:

dms ipc call night toggle
dms ipc call night getCurrentTemp
dms ipc call night setTargetTemp 4000
dms ipc call night setDayTemp 5500
dms ipc call night getSchedule
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.

FunctionDescription
listList all available media players
playStart playback
pausePause playback
playPauseToggle play/pause
previousSkip to previous track
nextSkip to next track
stopStop playback

Examples:

dms ipc call mpris playPause
dms ipc call mpris next

lock

Screen lock control and status.

FunctionDescription
lockLock the screen immediately
demoShow lock screen demo (doesn't lock)
isLockedCheck if screen is locked

Examples:

dms ipc call lock lock
dms ipc call lock isLocked

sessions

Switch between logind sessions that are already running on the current seat. Wraps loginctl list-sessions and loginctl activate.

FunctionDescriptionParameters
listList sessions as tab-separated rows (current marked *current*)-
refreshRe-enumerate sessions in the background-
openRefresh and open the Switch User picker-
activate <sessionId>Activate a session by its numeric logind IDsessionId
switchTo <target>Activate a session by username or session IDtarget (username or sessionId)

Examples:

# See what's switchable
dms ipc call sessions list

# Open the Switch User picker (good for a keybind)
dms ipc call sessions open

# Jump straight to another logged-in user
dms ipc call sessions switchTo testuser2

# Or by session ID
dms ipc call sessions activate 4
note

This only switches between sessions that already exist on the current seat. Creating a brand-new session for a user who isn't logged in needs a multi-session greeter (greetd-flexiserver / GDM / LightDM); the picker's empty state offers a Log out fallback to reach the greeter.

The dms switch-user [target] CLI command wraps the same calls with a friendlier interactive list when no target matches.

inhibit

Idle inhibitor control to prevent automatic sleep/lock.

FunctionDescription
toggleToggle idle inhibit state
enableEnable idle inhibit (prevent sleep)
disableDisable idle inhibit (allow sleep)

Examples:

dms ipc call inhibit toggle
dms ipc call inhibit enable

powerprofile

Power profile control via power-profiles-daemon. Changes stay in sync with DMS UI and trigger the power profile OSD when enabled in Settings → OSD.

Requires power-profiles-daemon to be installed and running. Works on all compositors.

FunctionDescriptionParameters
openShow the power profile picker modal-
closeClose the power profile picker modal-
toggleToggle power profile picker modal visibility-
listList available profile slugs (one per line)-
statusGet the currently active profile slug-
set <profile>Set the active power profileslug or alias (see below)
cycleCycle to the next available profile-

Profile slugs and aliases for set:

  • power-saver — also powersaver, saver, 0
  • balanced — also 1
  • performance — also 2 (only when supported by hardware)

Cycle order: power-saverbalancedperformancepower-saver (skips profiles not available on your hardware).

Examples:

dms ipc call powerprofile status
dms ipc call powerprofile list
dms ipc call powerprofile cycle
dms ipc call powerprofile set balanced
dms ipc call powerprofile set performance
dms ipc call powerprofile toggle

Notes:

  • list returns only profiles available on your system (performance is omitted when unsupported)
  • status returns the current slug: power-saver, balanced, or performance
  • Returns ERROR: power-profiles-daemon not available when the daemon is missing
  • Returns ERROR: Failed to set power profile if the profile change could not be applied

Wallpaper & Profile

wallpaper

Wallpaper management with support for global and per-monitor configurations.

Global Wallpaper Functions

FunctionDescriptionParameters
getGet current wallpaper path-
set <path>Set wallpaperpath to image file
clearClear all wallpapers-
nextCycle to next wallpaper-
prevCycle to previous wallpaper-

Per-Monitor Functions

FunctionDescriptionParameters
getFor <screen>Get wallpaper for monitormonitor name (e.g., "DP-2")
setFor <screen> <path>Set wallpaper for monitormonitor name, path to image
nextFor <screen>Cycle to next wallpapermonitor name
prevFor <screen>Cycle to previous wallpapermonitor 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.

FunctionDescriptionParameters
getImageGet current profile image path-
setImage <path>Set profile imagepath to image file
clearImageClear 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).

FunctionDescription
toggleToggle between light and dark themes
lightSwitch to light theme
darkSwitch to dark theme
getModeGet current theme mode

Examples:

dms ipc call theme toggle
dms ipc call theme dark

bar

Control individual bars using flexible selectors.

FunctionDescriptionParameters
reveal <selector> <value>Show a barselector + value
hide <selector> <value>Hide a barselector + value
toggle <selector> <value>Toggle bar visibilityselector + value
status <selector> <value>Get bar visibility statusselector + value
autoHide <selector> <value>Enable auto-hide modeselector + value
manualHide <selector> <value>Disable auto-hide modeselector + value
toggleAutoHide <selector> <value>Toggle auto-hide modeselector + value
toggleReveal <selector> <value>Toggle the runtime reveal/tuck state for an auto-hidden barselector + value
getPosition <selector> <value>Get bar positionselector + value
setPosition <selector> <value> <position>Set bar positionselector + value + position (top, bottom, left, right)

Note: toggleReveal only affects bars with auto-hide enabled. Moving the pointer into the bar reveal area clears the IPC reveal state and hands control back to normal hover auto-hide behavior.

Selectors:

  • index - Select by position (0-based)
  • id - Select by unique bar ID
  • name - 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
dms ipc call bar toggleReveal index 0

# 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

Dock visibility and behavior control.

FunctionDescription
revealShow the dock
hideHide the dock
toggleToggle dock visibility
statusGet dock visibility status
autoHideEnable auto-hide mode
manualHideDisable auto-hide mode
toggleAutoHideToggle 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, menus, and visibility (including plugins).

FunctionDescriptionParameters
toggle <widgetId>Toggle widget popout visibilitywidget ID
openWith <widgetId> <mode>Open widget popout in a specific modewidget ID, mode
toggleWith <widgetId> <mode>Toggle widget popout in a specific modewidget ID, mode
openQuery <widgetId> <query>Open widget popout with a pre-filled search querywidget ID, query text
toggleQuery <widgetId> <query>Toggle widget popout with a pre-filled search querywidget ID, query text
listList all registered widget IDs with visibility state-
status <widgetId>Get widget popout visibility statuswidget ID
visibility <widgetId>Get widget visibility statewidget ID
reveal <widgetId>Force widget to be visiblewidget ID
hide <widgetId>Force widget to be hiddenwidget ID
reset <widgetId>Clear visibility override, return to normal behaviorwidget ID

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:

  • Use list to discover available widget IDs with their current visibility state ([visible] or [hidden])
  • Widget IDs depend on which widgets are enabled in your bar settings
  • The status function returns "visible" or "hidden" for the widget popout state
  • The visibility, reveal, hide, and reset functions control the widget's bar presence (whether it appears on the bar at all)
  • Plugins can define conditional visibility via visibilityCommand — use reset to return to that behavior after overriding

These targets control various modal windows and overlays.

spotlight

Application launcher modal with search capabilities.

note

spotlight and launcher are synonymous — both targets call the same launcher modal for backwards compatibility.

FunctionDescriptionParameters
openShow launcher-
closeHide launcher-
toggleToggle launcher visibility-
openWith <mode>Open launcher in a specific modeall, apps, files, plugins
toggleWith <mode>Toggle launcher in a specific modeall, apps, files, plugins
openQuery <query>Show launcher with searchsearch text
toggleQuery <query>Toggle launcher with searchsearch text

Examples:

dms ipc call spotlight toggle
dms ipc call spotlight openQuery browser
dms ipc call spotlight toggleQuery "!"
dms ipc call spotlight openWith apps
dms ipc call spotlight toggleWith files

spotlight-bar

Spotlight Bar — a compact inline search bar that drops down from the top center of the screen. Designed for quick app launches and searches without opening the full launcher modal.

Default keybind: Alt + Space

FunctionDescription
openShow the Spotlight Bar
closeHide the Spotlight Bar
toggleToggle the Spotlight Bar

Examples:

dms ipc call spotlight-bar toggle
dms ipc call spotlight-bar open
dms ipc call spotlight-bar close

Other Modals

All these modals support open, close, and toggle functions:

  • clipboard - Clipboard history manager
  • notifications - Notification center (also supports clearAll, dismissAllPopups, toggleDoNotDisturb, getDoNotDisturb, enableDoNotDisturbIndefinitely, enableDoNotDisturbUntilTomorrowMorning, and enableDoNotDisturbUntil <timestampMs>)
  • 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 notifications dismissAllPopups
dms ipc call notifications toggleDoNotDisturb
dms ipc call notifications getDoNotDisturb
dms ipc call notifications enableDoNotDisturbIndefinitely
dms ipc call notifications enableDoNotDisturbUntilTomorrowMorning
dms ipc call notifications enableDoNotDisturbUntil 1744819200000
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.

FunctionDescriptionParameters
openShow settings modal-
openWith <tab>Open settings to specific tabtab ID
closeHide settings modal-
toggleToggle settings modal-
toggleWith <tab>Toggle settings to specific tabtab ID
focusOrToggleFocus settings if open, otherwise toggle-
focusOrToggleWith <tab>Focus/toggle to specific tabtab ID
tabsList available tab IDs-
get <key>Get a setting valuesetting key name
set <key> <value>Set a setting valuesetting 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 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.

FunctionDescriptionParameters
open [tab]Show dashboardtab: "", "overview", "media", "weather"
closeHide dashboard-
toggle [tab]Toggle dashboardtab

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.

FunctionDescriptionParameters
browse <type>Open file browser"wallpaper" or "profile"

Examples:

dms ipc call file browse wallpaper
dms ipc call file browse profile

color-picker

In-shell color picker modal for theme and settings color selection.

FunctionDescriptionParameters
openShow color picker modal-
openColor <color>Show modal with a pre-selected colorcolor string (e.g. #ff0000)
closeHide color picker modal-
closeInstantHide without animation-
toggleToggle modal visibility-
toggleInstantToggle without animation on hide-

Examples:

dms ipc call color-picker toggle
dms ipc call color-picker openColor "#3f51b5"
tip

Screen eyedropper: dms color pick is a standalone CLI command, not an IPC target. See Color Picker CLI.

dankdash

DankDash wallpaper browser control.

FunctionDescription
wallpaperToggle DankDash wallpaper browser

Examples:

dms ipc call dankdash wallpaper

welcome

First-launch welcome wizard with feature overview, system diagnostics, and configuration quick links.

FunctionDescriptionParameters
openShow wizard at Welcome page-
doctorShow wizard at System Check page-
page <num>Show wizard at specific page0=Welcome, 1=Doctor, 2=Complete

Pages:

  • 0 - Welcome: Feature overview with DMS highlights
  • 1 - System Check: Runs dms doctor with filterable results (Errors, Warnings, Info, OK)
  • 2 - Complete: Configuration quick links, keybind shortcuts, and external resources

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.

System Utilities

niri

Requires niri 25.11+

Screenshot functionality for the niri compositor. Captures are opened in your configured editor for markup and annotation.

FunctionDescription
screenshotInteractive selection screenshot
screenshotScreenCapture entire screen
screenshotWindowCapture 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.

FunctionDescriptionParameters
open <provider>Show keybinds modalprovider name (e.g., "hyprland", "sway", "mangowc")
openWithPath <provider> <path>Show keybinds modal with custom config pathprovider name, path to config
closeHide keybinds modal-
toggle <provider>Toggle keybinds modal visibilityprovider name
toggleWithPath <provider> <path>Toggle keybinds modal with custom config pathprovider 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, Miracle WM (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.

window-rules

niri only

Window rules editor modal for managing compositor window rules.

FunctionDescription
openOpen the window rules editor
closeClose the window rules editor
toggleToggle window rules editor visibility

Examples:

dms ipc call window-rules open
dms ipc call window-rules close
dms ipc call window-rules toggle
note

This feature is only available on the niri compositor.

workspace-rename

Niri and Hyprland only

Rename the currently active workspace via a dialog.

FunctionDescription
openOpen the workspace rename dialog

Examples:

dms ipc call workspace-rename open

Note: Returns an error if running on an unsupported compositor.

outputs

Monitor output profile management for switching between display configurations.

FunctionDescriptionParameters
listProfilesList all available output profiles-
currentGet the currently active profile-
setProfile <name>Switch to a specific output profileprofile name
cycleProfileCycle through configured profiles in order (wraps from last back to first)-
statusGet current output configuration status-
refreshRefresh output configuration-

Examples:

# 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"

# Cycle through profiles in order
dms ipc call outputs cycleProfile

# Get output status
dms ipc call outputs status

# Refresh configuration
dms ipc call outputs refresh
note

This feature is only available on niri, Hyprland, and MangoWC compositors.

hypr

Hyprland-only features

Hyprland-specific workspace overview control.

FunctionDescription
openOverviewShow Hyprland workspace overview
closeOverviewHide Hyprland workspace overview
toggleOverviewToggle 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.

FunctionDescriptionParameters
listList all available plugins with status-
status <pluginId>Check if a plugin is loadedplugin ID
reload <pluginId>Hot-reload a plugin without restartingplugin ID
enable <pluginId>Enable a disabled pluginplugin ID
disable <pluginId>Disable a loaded pluginplugin 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 widget control and background update checks.

FunctionDescription
toggleToggle the system updater popout open/closed
openOpen the system updater popout
closeClose the system updater popout
updatestatusTrigger a background update check

Examples:

dms ipc call systemupdater toggle
dms ipc call systemupdater open
dms ipc call systemupdater close
dms ipc call systemupdater updatestatus

defaultApp

Launch the applications configured in Settings → Default Apps. Each function resolves the default handler for the associated MIME type and launches it.

FunctionDescription
browserLaunch the default web browser
fileManagerLaunch the default file manager
textEditorLaunch the default text editor
pdfReaderLaunch the default PDF reader
imageViewerLaunch the default image viewer
videoPlayerLaunch the default video player
musicPlayerLaunch the default music player
mailLaunch the default mail client
calendarLaunch the default calendar application

Examples:

dms ipc call defaultApp browser
dms ipc call defaultApp fileManager
dms ipc call defaultApp textEditor

Note: Returns a launch-request confirmation. If no default is configured (or its desktop entry can't be found) for the requested type, a warning is logged and nothing launches.

desktopWidget

Control desktop widget instances (clocks, system monitors, etc.).

FunctionDescriptionParameters
listList all widget instances with ID, type, name, and status-
status <instanceId>Get widget status (enabled, overlay, clickThrough, etc.)instance ID
enable <instanceId>Enable the widgetinstance ID
disable <instanceId>Disable the widgetinstance ID
toggleEnabled <instanceId>Toggle widget enabled/disabledinstance ID
toggleOverlay <instanceId>Toggle show on overlay layerinstance ID
setOverlay <instanceId> <bool>Set overlay visibilityinstance ID, true/false
toggleClickThrough <instanceId>Toggle click-through modeinstance ID
setClickThrough <instanceId> <bool>Set click-through modeinstance ID, true/false
toggleSyncPosition <instanceId>Toggle position sync across screensinstance ID
setSyncPosition <instanceId> <bool>Set position sync across screensinstance ID, true/false

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:

  • Use list to discover widget instance IDs
  • Click-through mode allows mouse clicks to pass through the widget to windows below
  • Position sync keeps the widget at the same relative position across multiple monitors

toast

Display toast notifications for user feedback and scripted alerts.

FunctionDescriptionParameters
info <message>Show info toast (1.5s)message text
infoWith <message> <details> <command> <category>Info toast with extrasmessage, details, command, category
warn <message>Show warning toast (3s)message text
warnWith <message> <details> <command> <category>Warning toast with extrasmessage, details, command, category
error <message>Show error toast (5s)message text
errorWith <message> <details> <command> <category>Error toast with extras (8s, expandable)message, details, command, category
hideHide current toast-
dismiss <category>Dismiss toasts by categorycategory name
statusGet current toast state-

Examples:

# 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:

  • The *With variants accept optional details (expandable in UI), a command string, and a category
  • Use empty strings ("") for optional parameters you want to skip
  • Categories allow grouping related toasts for batch dismissal
  • The status function returns hidden or visible:level:message

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

# Cycle power profile only when not in performance mode
if [ "$(dms ipc call powerprofile status)" != "performance" ]; then
dms ipc call powerprofile cycle
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.