Omarchy Shell IPC Targets: Complete Guide to Inter-Process Communication Interfaces
The Omarchy shell exposes eleven explicit panel targets (prefixed with omarchy.), one core shell target for internal commands, and six implicit service targets (notifications, media, idle, lock, image-selector, osd) accessible via the Quickshell qs ipc utility.
The Omarchy desktop environment from basecamp/omarchy uses a specialized Inter-Process Communication (IPC) system to coordinate between its Qt Quick-based UI panels and background services. Each component that participates in this system declares an ipcTarget property in its QML definition that external scripts use to route commands through the shell's unified IPC socket at $OMARCHY_PATH/shell. These targets enable programmatic control of the desktop's weather displays, audio controls, notification management, and system monitoring features.
Explicit Panel IPC Targets in Omarchy
Panel components in Omarchy explicitly declare their IPC accessibility through the ipcTarget property defined in shell/Ui/Panel.qml. Each specialized panel in shell/plugins/panels/*/Panel.qml registers a unique string identifier under the omarchy. namespace, allowing external processes to query state and trigger actions.
Weather, Clock, and System Monitoring Targets
The following targets handle environmental and temporal information:
omarchy.weather– Declared inshell/plugins/panels/weather/Panel.qml, provides current conditions and forecast dataomarchy.clock– Defined inshell/plugins/panels/clock/Panel.qml, exposes time, calendar events, and alarm controlsomarchy.monitor– Located inshell/plugins/panels/monitor/Panel.qml, manages external display information and configurationomarchy.agents– Found inshell/plugins/agents/Panel.qml, shows background agents and allows enable/disable toggles
Network and Connectivity Targets
Network-related panels expose VPN and connection state through dedicated targets:
omarchy.tailscale– Defined inshell/plugins/panels/tailscale/Panel.qml, reports VPN connection stateomarchy.network– Located inshell/plugins/panels/network/Panel.qml, displays active interfaces and upload/download ratesomarchy.bluetooth– Declared inshell/plugins/panels/bluetooth/Panel.qml, handles device lists, pairing, and connection control
Power, Audio, and Cloud Integration
System resource panels use the following identifiers:
omarchy.power– Inshell/plugins/panels/power/Panel.qml, exposes battery level, charger status, and power actionsomarchy.audio– Defined inshell/plugins/panels/audio/Panel.qml, provides volume sliders and output device selectionomarchy.dropbox– Located inshell/plugins/panels/dropbox/Panel.qml, reports sync status and folder shortcuts
Implicit Service IPC Targets
Beyond the explicitly declared panel targets, Omarchy registers several implicit IPC targets through background service plugins. These do not appear as ipcTarget properties in QML files but are reachable through the same IPC mechanism via service registrations:
notifications– Handles desktop notifications and Do-Not-Disturb (DND) toggle functionalitymedia– Exposes playback status and media control commandsidle– Reports system idle state and manages stay-awake requestslock– Controls screen lock status and security stateimage-selector– Opens UI dialogs for image selection operationsosd– Manages On-Screen Display messages for system feedback
These targets are exercised in the repository's test suite under test/shell.d/, particularly in files like runtime-smoke-test.sh and shell-ipc-display-test.sh.
Core Shell IPC Target
The shell target serves as the primary communication endpoint for internal Omarchy commands. Implemented in the bin/omarchy-shell wrapper script, this target responds to system-level directives:
ping– Verify shell responsivenesslistPlugins– Enumerate available pluginssetPluginEnabled– Toggle plugin activation states
This core target differs from panel targets because it manages the shell runtime itself rather than UI component state.
How to Invoke IPC Targets with qs ipc
Omarchy utilizes the Quickshell qs ipc command to route messages to specific targets. The command requires the -p flag pointing to the Omarchy socket path and follows this syntax:
qs ipc -n -p "$OMARCHY_PATH/shell" call <target> <command> [args...]
Practical IPC Command Examples
Verify shell core availability:
qs ipc -n -p "$OMARCHY_PATH/shell" call shell ping
Query current weather conditions:
qs ipc -n -p "$OMARCHY_PATH/shell" call omarchy.weather status
Toggle Do-Not-Disturb mode:
qs ipc -n -p "$OMARCHY_PATH/shell" call notifications setDnd true
Check media playback status (returns JSON):
qs ipc -n -p "$OMARCHY_PATH/shell" call media status
Open the clock panel interface:
qs ipc -n -p "$OMARCHY_PATH/shell" call omarchy.clock open
Summary
- Explicit targets use the
ipcTargetproperty inshell/plugins/panels/*/Panel.qmlfiles, creating namespaced identifiers likeomarchy.weatherandomarchy.audio - Implicit targets (notifications, media, idle, lock, image-selector, osd) are registered by background services without QML declarations
- The
shelltarget inbin/omarchy-shellhandles core system commands including plugin management - All targets communicate through the Quickshell IPC socket at
$OMARCHY_PATH/shellusing theqs ipccommand-line tool - IPC contracts are validated in
test/shell.d/runtime-smoke-test.shand related test files
Frequently Asked Questions
How do I discover all available IPC targets in Omarchy?
While Omarchy does not provide a single enumeration command for implicit targets, you can query the core shell target using qs ipc -n -p "$OMARCHY_PATH/shell" call shell listPlugins to see active plugins. For explicit panel targets, inspect the ipcTarget property values in shell/plugins/panels/*/Panel.qml files.
What distinguishes explicit from implicit IPC targets?
Explicit targets declare an ipcTarget string property directly in their QML Panel definition, making their IPC interface visible in the source code. Implicit targets are registered programmatically by service plugins (like notifications or media services) without a corresponding QML property, yet remain accessible through the same qs ipc command structure.
Can I call Omarchy IPC targets from shell scripts?
Yes. Any script with access to the $OMARCHY_PATH environment variable can invoke targets using the qs ipc -n -p "$OMARCHY_PATH/shell" call <target> <command> syntax. This enables automation of desktop functions like toggling DND, checking battery status via omarchy.power, or controlling media playback.
Where does Omarchy validate IPC target behavior?
The repository includes acceptance-style tests in test/shell.d/ that verify each target's IPC contract. Files such as runtime-smoke-test.sh and shell-ipc-display-test.sh exercise both explicit panel targets and implicit service targets to ensure correct request handling and response formatting.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →