mmsg(1)

πŸ“¦
version 0.18.4 Β· 2 versions
, in arch rolling, nixpkgs unstable

πŸ’… mmsg(1) β€” the mmsg manual, bestie edition πŸŽ€

okay so real talk, this is the page for mmsg, from the mmsg manual. it's giving "little CLI that could" and honestly? it ate. let's get into it ✨


🌸 NAME 🌸

mmsg β€” send commands to the mango Wayland compositor and receive JSON responses. literally that's the whole gig, and she does it flawlessly πŸ’–


πŸ¦‹ SYNOPSIS πŸ¦‹

mmsg <command> [args...]
mmsg --help | -h | help

✨ DESCRIPTION ✨

so mmsg connects to a running mango(1) compositor through the UNIX domain socket that's specified by the MANGO_INSTANCE_SIGNATURE environment variable. she sends whatever command you gave her and prints the JSON reply straight to standard output. slay.

in watch mode she keeps the connection open and prints a stream of updates as they happen β€” like a live feed but for your compositor, no cap πŸ‘‘

if you hit her with --help, -h or help, she prints a complete usage summary and exits with success. iconic behavior, honestly.


πŸ”₯ COMMANDS πŸ”₯

πŸ’« One-shot queries (get) πŸ’«

all the get commands print a single JSON object and then close the connection. one and done, periodt.

  • get version β€” return compositor version.
  • get cursorpos β€” return the global pointer position (x, y) and the monitor under it (null if it's over no output).
  • get keymode β€” return current keymode.
  • get keyboardlayout β€” return current keyboard layout.
  • get last_open_surface [monitor] β€” return the last open surface (application) for the given monitor. if monitor is omitted, the focused monitor is used.
  • get monitor <name> β€” return details of the named monitor.
  • get focusing-client β€” return details of the currently focused client.
  • get client <id> β€” return details of the client with the given numeric ID.
  • get tag <monitor> <index> β€” return details of a specific tag (1-based index) on the named monitor.
  • get all-clients β€” list all clients.
  • get all-monitors β€” list all monitors.
  • get all-devices β€” list physical input devices, grouped by device, with their types, vendor/product IDs, interface count and matched device rule, if any.
  • get all-layers β€” list all open layer surfaces with their monitor, layer and namespace name.
  • get all-tags β€” list tags for all monitors.
  • get layouts β€” list all available window layouts (symbol and name).
  • get tags <monitor> β€” list tags for a specific monitor.
  • dispatch <func>[,arg...] [client,<id>] β€” invoke an internal compositor function. the function name and its arguments are separated by commas. optionally add client,<id> (before or after the function) to target a specific client.

examples, because we love a demo πŸ’…:

  • mmsg dispatch togglefloating
  • mmsg dispatch movewin,10,100
  • mmsg dispatch movewin,10,100 client,4

🌈 Persistent streams (watch) 🌈

watch commands keep the connection open and continuously output JSON updates. the initial state is sent immediately, followed by updates whenever relevant changes occur. it's giving main character energy that never leaves the group chat 🫢

  • watch monitor <name> β€” stream updates for the named monitor.
  • watch focusing-client β€” stream updates for the focused client.
  • watch client <id> β€” stream updates for the client with the given ID.
  • watch tags <monitor> β€” stream tag updates for the named monitor.
  • watch all-monitors β€” stream updates for all monitors.
  • watch all-tags β€” stream updates for all tags.
  • watch all-clients β€” stream updates for all clients.
  • watch all-devices β€” stream the last input device that triggered an event.
  • watch keymode β€” stream keymode changes.
  • watch keyboardlayout β€” stream keyboard layout changes.
  • watch last_open_surface [monitor] β€” stream last open surface changes for a specific monitor (or the focused one).

🧚 ENVIRONMENT 🧚

  • MANGO_INSTANCE_SIGNATURE β€” path to the compositor's IPC socket. set automatically by mango(1). if it's unset, mmsg prints an error and exits. so like… don't leave her hanging πŸ™ˆ

πŸ‘‘ EXIT STATUS πŸ‘‘

  • 0 β€” success (or help message printed). we love a win πŸ’–
  • EXIT_FAILURE β€” an error occurred (connection refused, send/receive error, etc.). it happens to the best of us 😭

πŸ“ SEE ALSO πŸ“

  • mango(1)

πŸ’€ BUGS πŸ’€

report issues at the project's issue tracker. do it, bestie, she wants to be her best self πŸ”₯


mmsg 0.18.4 Β· 2026-05-31 β€” that's the source/version and the date, bestie, immortalized in a cute lil sign-off. mwah πŸ’‹βœ¨

πŸ“¦ where this page comes from