About
Umbriel Monitor Control
Place and tune your monitors from the Noctalia bar: move a display left, right, above or below the others, and change its resolution and refresh rate. Every change is written into the Umbriel config file (validated before it lands, restored if invalid) and reloaded live, so settings persist across reboots.
Umbriel only. This plugin drives the Umbriel compositor through its CLI and its config file; it does nothing under niri, Hyprland, Sway or any other compositor, and hides its widget outside an Umbriel session.
Plugin
| Field | Value |
|---|---|
| ID | muhammadessam/umbriel-monitor-control |
| Entries | Bar widget: monitor; panel: panel; service: service |
Requirements
- An Umbriel session (the
umbrielCLI and its IPC socket must be present; the plugin hides its widget outside Umbriel). [output.*]sections are managed in the file at theconfig_pathsetting (default~/.config/umbriel/config.toml).
Usage
Add the monitor widget to the bar: it shows the focused output's current
mode; click opens the panel. Or open the panel directly:
noctalia msg panel-toggle muhammadessam/umbriel-monitor-control:panel
The panel opens with an arrangement map: every enabled output drawn as a
rectangle where the compositor actually has it, scaled to keep its real
proportions, with a legend row per monitor (name, mode, x, y in logical
pixels). An output placed above another draws above it, side-by-side displays
draw in one row. The focused output's rectangle carries the thicker border.
In the panel, each monitor card has a resolution dropdown, a refresh-rate
dropdown and an Apply button, plus four placement buttons (left / right / up /
down). A placement moves one axis only: the monitor lands just outside the
others' edge on that side and level with them on the other axis, so left/right
produce a row and up/down a column. With the other monitors at the origin that
is the plain -x / +x / -y / +y move (y stays 0, x stays 0).
Below them, a Position row takes the two coordinates by hand — logical
pixels, x then y, as the legend and the map show them (mode size / scale;
negative y is above the origin). Enter in either box or the crosshair button
applies them. The placement buttons stay the coarse move: press one and the
fields update to whatever it landed on.
Settings
| Setting | Type | Default | Description |
|---|---|---|---|
config_path |
string |
~/.config/umbriel/config.toml |
Umbriel config file the plugin patches. |
auto_reload |
bool |
true |
Reload the compositor after writing; off = persist-only. |
show_text |
bool |
true |
Bar widget shows resolution + Hz next to the glyph. |
glyph |
glyph |
device-desktop |
Bar widget icon. |
IPC
noctalia msg panel-toggle muhammadessam/umbriel-monitor-control:panel
Notes
- Files written: the configured Umbriel config (patched
[output.*]sections only; comments and other keys are preserved) and a rolling backupconfig.toml.bakin the plugin's data dir, used to restore if a patched file failsumbriel validateor for the revert request. - Commands spawned:
umbriel outputs --json(inventory),umbriel validate -c <file>(pre-reload gate),umbriel msg config-reload(live apply). No network access. - Resolution/refresh options come from the modes the display advertises, so the dropdowns only ever offer something the monitor can do. Umbriel falls back to the preferred mode if a saved mode cannot be applied later.
- Placement uses logical layout coordinates (mode size divided by scale),
matching Umbriel's own
positionsemantics. - Known limitation:
[output.*]headers with the quoted monitor-name form are matched case-insensitively like Umbriel, but the plugin writes sections keyed by connector name (theumbriel outputsnamefield).
Versions
| Version | Plugin API | Updated |
|---|---|---|
| v0.1.5 latest | 24 | Sep 11, 2026 |
Older versions stay installable on a Noctalia release whose plugin API is below the latest version's.