The Marchyo CLI
Every Marchyo system ships one command: marchyo. It’s the single control surface
for the desktop. When you press a keybinding, click a segment on the top bar, or open
a menu, it’s marchyo doing the work behind the scenes — and you can run the same
actions yourself from any terminal.
Run marchyo status any time for a dashboard of how your system is currently set up.
Runtime now, or persist forever
Section titled “Runtime now, or persist forever”Here’s the idea that makes the CLI worth learning. Marchyo is a declarative system — normally you change things by editing your configuration and rebuilding. But you don’t always want to rebuild just to try a darker theme or toggle the gaps between windows. So every command that changes something offers three modes:
- By default, it changes things live. The effect is instant — no rebuild — and it’s remembered across compositor restarts. This is the mode you’ll use constantly: fast, reversible, low-stakes. A live change resets on the next full rebuild.
--applymakes it stick. Add this flag and the change is also written down and rebuilt into your system, so it survives reboots. Your hand-written configuration still wins if it disagrees —--applysets a default, not an override.--revertundoes it. Drops the live change, puts the declared value back, and cleans up anything--applypersisted.
So the rhythm is: try it live, and if you love it, run the same command with
--apply. A few commands (install, remove, webapp, security) always rebuild,
because there’s no meaningful “live” version of installing software.
What you can do
Section titled “What you can do”Theme and wallpaper
Section titled “Theme and wallpaper”marchyo theme list # switchable themes, active one markedmarchyo theme set <name> # switch now (dark / light alias the Jylhis pair)marchyo theme next # cyclemarchyo bg set <path> # set the wallpapermarchyo bg next # cycle wallpapersToggles
Section titled “Toggles”marchyo toggle <name> flips a desktop feature on or off, live. The switches include
gaps, transparency, nightlight, waybar, touchpad, touchscreen, idle,
screensaver, notifications, and suspend. Add --status to check one, or
--apply to make it permanent:
marchyo toggle nightlight # on/off nowmarchyo toggle gaps off --apply # and keep it that wayCapture
Section titled “Capture”marchyo capture screenshot [--target area|active|output|screen] [--edit]marchyo capture record [--audio none|desktop|mic] # run again to stopmarchyo capture ocr # select a region, copy the recognized textmarchyo capture color # color picker, hex to clipboardMenus, launching, and session
Section titled “Menus, launching, and session”marchyo menu [power] # the central system menu, or the power menumarchyo keybindings # searchable cheat sheetmarchyo launch <app> # launch an app detached from the terminalmarchyo lock # also: logout, suspend, hibernate, reboot, shutdownmarchyo powerprofile set <p> # eco / balanced / performanceUtilities
Section titled “Utilities”marchyo reminder set|show|clear # reminders on lightweight timersmarchyo info datetime|battery # quick pop-up notificationsmarchyo transcode [file] [--to mp4|webm|gif]marchyo font set <family> # switch the terminal font liveManaging the system
Section titled “Managing the system”marchyo status # current config + system infomarchyo rebuild # rebuild against your flakemarchyo update # update your flake inputsmarchyo upgrade # update, then rebuildmarchyo rollback # switch to the previous generationmarchyo gc # collect old generationsmarchyo diff # what changed between generationsThe update and rollback commands are covered in more depth in
Updating. You can also flip whole feature groups on and off —
marchyo install development, marchyo remove media — and add web-app windows with
marchyo webapp add <url>; those always rebuild.
Text or JSON, quiet or loud
Section titled “Text or JSON, quiet or loud”Most commands take --format text|json (or --json) if you want to script against
them, plus --plain, --no-color, -q for quiet and -v for verbose. Data goes to
standard output and diagnostics to standard error, so piping works cleanly.
A stable contract
Section titled “A stable contract”As of 1.0, the command names, arguments, and flags are frozen until 2.0 — new things may be added in 1.x, but nothing you learn here will be renamed or removed under you. You can build habits and scripts on it safely.