MERDE(1) General Commands Manual MERDE(1)

merdeMOUSE Wayland desktop session

merde [-c path]

merde -h

merde -v

merde starts the MERDE Wayland compositor and window manager. It creates the session display and control socket, installs configured key bindings, starts enabled desktop companions, and optionally opens the terminal. Under LiDM it is normally run through the private /usr/libexec/merde-session wrapper and /usr/libexec/swc-launch.

Without -c, configuration is searched in this order: $XDG_CONFIG_HOME/merde/config.lua, $HOME/.config/merde/config.lua, /etc/merde/config.lua, then the stock /usr/share/merde/merde.default.lua.

path, --config path
Load only the named configuration file.
, --help
Print usage and exit.
, --version
Print the MERDE version and exit.

Current configurable bindings are shown by merde-run-dialog(1) in key binding mode. MERDE also reserves these fixed bindings:

Move the focused window.
Resize the focused window.
Select workspace 1 through 10.
Move the focused window to workspace 1 through 10.
, Logo+mouse-left
Move a window with the pointer.
, Alt+Ctrl+mouse-left
Resize a window with the pointer.
Clicking any window button focuses that window before forwarding the click.

Selects the first user configuration directory.
Holds the private merde runtime directory.
Set by merde for programs started inside the session.
Passed to MERDE companions and points at the session runtime directory.

The runtime directory is private to the logged-in user. Its text files are replaced atomically, so readers see either the previous complete version or the next one.

state.txt is a line-oriented, space-separated list of key=value fields. Its first line is format=1. It then contains one session line, one focus line, zero or more output lines, and zero or more window lines:

workspace=N workspaces=N
focused=ID windows=N
output=ID workspace=N x=N y=N w=N h=N usable_x=N ...
window=ID workspace=N title=TEXT app=TEXT x=N y=N ...

Every line begins with its record type. Consumers must ignore unknown records and fields so the format can be extended. The title and app values use percent encoding: ASCII letters, digits, -._~ appear literally and every other byte is %HH with uppercase hexadecimal digits.

The bar, wallpaper, and notifier are long-lived companions. merde starts each enabled command once, records its process identifier, and stops it when the session ends. An exited companion is not automatically restarted; use merdectl restart to start it again. Shutdown sends SIGTERM, waits up to 250 milliseconds, then sends SIGKILL.

Companions inherit the session environment and receive MERDE_RUNTIME_DIR, MERDE_SESSION_SOCKET, MERDE_NOTIFY_FIFO, MERDE_SCREENSHOT_DIRECTORY, MERDE_WALLPAPER_IMAGE, and MERDE_COMPONENT. The launcher is a compositor popup, not a companion. The screenshot command is started on demand and is not monitored afterward.

$XDG_RUNTIME_DIR/merde/session.sock
Datagram control socket used by merdectl(1).
$XDG_RUNTIME_DIR/merde/state.txt
Current output, workspace, and window state.
$XDG_RUNTIME_DIR/merde/keybindings.txt
Rendered key binding help.
$XDG_RUNTIME_DIR/merde/notifications.fifo
Input for the notification companion.
$XDG_RUNTIME_DIR/merde/screenshots.log
Paths written by the screenshot tool.

The merde utility exits 0 on success, and >0 if an error occurs.

When started by LiDM, session standard output and standard error are written to $XDG_RUNTIME_DIR/merde-session.log. Companion start and exit failures, malformed configuration, control failures, and compositor errors appear there. LiDM authentication and session-launch failures appear in /var/log/lidm.log.

The long-lived visual components run outside the session process so their failure cannot take down the compositor and each can be replaced without changing MERDE's window-management code. The launcher remains inside the session because it controls compositor-owned popup state; screenshots are short-lived requests rather than services.

havoc(1), merde-bar(1), merde-notify(1), merde-run-dialog(1), merde-screenshot(1), merde-wallpaper(1), merdectl(1), merde-config(5)

MOUSE August 17, 2026 MERDE(1)