A display configuration script for GNOME on Wayland, designed as a proper
replacement for the Super+P shortcut.
GNOME Shell's built-in Super+P switcher (js/ui/switchMonitor.js) cycles
through four hardcoded presets by calling
monitorManager.switch_config(Meta.MonitorSwitchConfigType.*):
- Mirror — clone all displays
- Join Displays — extend all displays in a line
- External Only — disable the built-in panel
- Built-in Only — disable all external displays
And... that's it. There's no resolution control, no refresh rate selection, no VRR toggle, no per-monitor configuration, no primary monitor choice, not even persistence beyond the current session (unlike the display switcher on GNOME Control Center). It's a blunt, barebones preset switcher that applies whatever default mode Mutter picks for each monitor.
dispctl replaces this with a guided, interactive flow that gives
you full control over every relevant setting.
- Choose any resolution and refresh rate per monitor
- VRR (Variable Refresh Rate) support
- Extend displays in any order with primary monitor selection
- Duplicate displays across monitors with a common resolution
- Configuration is persistent across reboots (written to
monitors.xmlviagdctl --persistent, the same mechanism used by GNOME Settings) - Monitor names sourced from EDID
display-nameproperty, same as the GNOME Displays panel
gdctl— GNOME Display Controllerzenity— GTK dialog toolkit- GNOME Shell with Mutter (requires
org.gnome.Mutter.DisplayConfigD-Bus API)
Run directly or bind to a keyboard shortcut (e.g. replacing Super+P):
dispctl
In GNOME Settings → Keyboard → Custom Shortcuts, add a shortcut pointing to
the script and assign Super+P to it (after disabling the default binding
under System → Switch display configuration).