Niri Monitor Manager

Manage your connected displays without leaving the launcher. Turn monitors on or off, switch resolutions, adjust scale, and rotate a display — all from a single command, built for the niri window manager.

Features

  • See every connected monitor at a glance, with its model, resolution, refresh rate, current rotation, and scale
  • Make quick, one-off changes that apply immediately and reset on restart
  • Save settings that persist across restarts, written directly to your niri config
  • Turn any monitor on or off
  • Power off every monitor at once
  • Copy a monitor's name, model, or resolution to the clipboard

Requirements

  • Niri as your Wayland compositor
  • The niri msg command available on your PATH (installed automatically with niri)

Usage

Run Monitor Settings to see a list of your connected displays. Each row shows the monitor's current rotation and scale at a glance, so you can check your setup without opening the action panel.

Select a monitor to choose between two ways of changing its settings:

Quick actions

Runtime-only changes that apply instantly via niri msg and reset the next time niri restarts. Good for testing a setting or a temporary change.

Note: Quick actions apply directly to your active session and take precedence over saved configuration until you restart or reload Niri.

ActionShortcut
Enable / disable monitorCmd + D
Set scaleCmd + S
Rotate displayCmd + R
Set resolutionShift + R
Refresh listCmd + Shift + R
Power off all monitorsCmd + Shift + P
Copy monitor nameCmd + C
Copy modelShift + C
Copy resolutionCmd + Shift + C

The enable/disable action only appears when more than one monitor is connected, since you can't disable your only display.

Edit Persistent Settings

Opens a form to set resolution, scale, rotation, and (with more than one monitor connected) enabled state. Submitting asks for confirmation, then writes an output "<name>" { ... } block into your niri config file — creating it if one doesn't exist yet, or updating just that monitor's block if it does. Everything else in your config file is left untouched.

niri live-reloads its config on save, so the change applies immediately with no restart needed. If the write ever produced invalid config, niri keeps your last working configuration and shows its own notification rather than breaking your session.

How it works

Quick actions run entirely through niri's IPC interface (niri msg). Persistent settings are written straight to your niri config file, found in the same place niri itself looks: the $NIRI_CONFIG environment variable if set, otherwise $XDG_CONFIG_HOME/niri/config.kdl, falling back to ~/.config/niri/config.kdl.

Development

npm install
npm run dev    # Development mode
npm run build  # Production bundle