Chordarchy
"Play your desktop" means mapping Omarchy shortcuts and commands to chords played on a physical MIDI keyboard. Play and release a chord to launch an app, switch workspaces, control media, open an Omarchy menu, or trigger another mapped desktop action. Chordarchy also renders held and sustained notes on a live grand staff and plays a warm velocity-sensitive tone.
The built-in 49-key piano makes the mapping workflow easy to explore without MIDI hardware. On-screen previews and Practice are command-safe; a MIDI controller is required for live chord-command performance.
<p align="center"> <img src="preview.png" alt="Chordarchy on the Omarchy desktop with a live C minor grand staff, mapped setlist, and on-screen piano"> </p>Demo
Watch Chordarchy trigger mapped Omarchy shortcuts from a physical MIDI keyboard on X.
Features
- Chord recognition by pitch class, including inversions and octave changes.
- Release-based gestures that wait for the complete chord before acting.
- Theme-aware grand staff with held, sustained, and target notes.
- Low-latency PipeWire synthesizer with velocity response and a soft limiter.
- Guided mapping for 47 common Omarchy actions and native shortcuts.
- Full-width on-screen piano for chord selection and safe audio preview.
- Compact live setlist built from hearted mappings.
- Command-safe Practice with named chord tones and staff targets.
- Persistent mappings, chord suggestions, MIDI selection, volume, and staff profile.
- Confirmation protection for sensitive actions.
Requirements
- Omarchy with the Quattro plugin system.
- Python 3.
alsa-utils, which providesaseqdumpfor MIDI input.- PipeWire tools, which provide
pw-catfor audio output. - An ALSA sequencer-compatible MIDI controller for live command performance. USB and Bluetooth controllers are supported when exposed through ALSA.
These runtime tools are included in a standard Omarchy installation. Chordarchy has no build step and no third-party Python or Node packages.
Install
Review the source, then install and enable the plugin:
omarchy plugin add https://github.com/ctl0v0/chordarchy.git --enable
Chordarchy appears in the right section of the Omarchy bar. Plugins run as unsandboxed user code inside omarchy-shell; install only source you are willing to run.
Update an existing installation with:
omarchy plugin update io.github.ctl0v0.chordarchy
Quick start
- Click the Chordarchy bar icon, then open Studio with the cog.
- Open
Mappings. - Click at least three notes on the on-screen piano and choose
USE CHORD, or selectLEARN A NEW CHORDand play it on MIDI. - Filter or browse Available Key Bindings, then click one to create the mapping.
- Heart the mapping to include it in the compact live setlist.
- Keep commands armed, then play and release that chord on your MIDI controller.
Available Chords shows three suggestions at a time and scrolls independently. Mapped Chords remains visible below it and has its own scrollable list.
Safety and behavior
- Commands start armed on each shell launch and can be disarmed independently from note recognition.
- Sound starts enabled at the saved volume and can be muted independently from commands.
- On-screen previews, setlist previews, Studio demos, and Practice never execute mapped desktop actions.
- Opening Practice disarms commands. Leaving Practice keeps them disarmed until explicitly re-armed.
- Confirmation actions must be played twice within three seconds.
- The first note release freezes the complete gesture, preventing a triad from firing while a seventh chord is still being formed.
- Sustain affects the synthesizer and staff but is excluded from command matching.
- Built-in actions and custom commands are launched as argument arrays without a shell.
See SECURITY.md for the trust model and private vulnerability reporting.
Controls
- Left-click the bar widget to open the compact performance panel.
- Right-click the bar widget to mute or unmute Chordarchy sound.
- Click a compact setlist row to preview that chord one octave higher.
- Use the compact-panel cog to open the detached Studio.
- In Studio, use
Mfor sound,Afor command arming,Dfor a safe demo,Pfor panic, andEscapeto close. - In Mappings, use
PLAYto preview a saved chord, the heart to change setlist membership, andUNMAPto return it to Available Chords. - Filter key bindings by action name, category, or native shortcut.
MIDI
List ALSA sequencer inputs with:
aconnect -i
Chordarchy automatically selects inputs containing Korg or microKEY. Select any other detected input from Studio Settings.
The persistent audio stream requests a 128-frame quantum at 48 kHz, uses a 3 ms click-free attack and 20 ms volume smoothing, and reports estimated software-path latency in Settings. MIDI transport and controller hardware latency are not included in that estimate; USB MIDI is normally faster than Bluetooth.
Configuration
Mappings and preferences are written atomically to:
~/.config/chordarchy/config.json
Advanced users can add custom mappings with a customCommand argument array. Custom commands have the same authority as the logged-in user and should be reviewed carefully.
IPC
omarchy-shell io.github.ctl0v0.chordarchy status
omarchy-shell io.github.ctl0v0.chordarchy arm
omarchy-shell io.github.ctl0v0.chordarchy disarm
omarchy-shell io.github.ctl0v0.chordarchy mute
omarchy-shell io.github.ctl0v0.chordarchy unmute
omarchy-shell io.github.ctl0v0.chordarchy volume 1.0
omarchy-shell io.github.ctl0v0.chordarchy demo
omarchy-shell io.github.ctl0v0.chordarchy demoHold 3
omarchy-shell io.github.ctl0v0.chordarchy panic
omarchy-shell io.github.ctl0v0.chordarchy profile 49 60
omarchy-shell io.github.ctl0v0.chordarchy studio
omarchy-shell io.github.ctl0v0.chordarchy mappings
omarchy-shell io.github.ctl0v0.chordarchy practice
omarchy-shell io.github.ctl0v0.chordarchy settings
omarchy-shell io.github.ctl0v0.chordarchy.panel open
omarchy-shell io.github.ctl0v0.chordarchy.panel close
omarchy-shell io.github.ctl0v0.chordarchy.panel toggle
Remove
Remove the plugin checkout with:
omarchy plugin remove io.github.ctl0v0.chordarchy
The removal command preserves user configuration. To remove mappings and preferences as well:
rm -r ~/.config/chordarchy
Development
python3 -m unittest discover -s tests -p 'test_*.py'
node tests/test_music.js
omarchy plugin validate .
See CONTRIBUTING.md for the local workflow and docs/DEMO.md for the release recording storyboard and GIF tooling.
License
MIT copyright 2026 ctl0v0.