The Monitor Mismatch
When you plug a new monitor into an Ubuntu system, the X11 or Wayland display server attempts to negotiate the best possible settings with the screen via EDID data. Usually, it correctly identifies the native resolution. However, some cheap monitors or KVM switches send corrupted EDID data. In these cases, Ubuntu might automatically change the display resolution to a terrible 800×600 every single time you reboot or wake the computer from sleep. Constantly opening the settings to manually drag the resolution slider back to 1080p is a frustrating daily chore.
Forcing a Static Configuration
To override the faulty EDID negotiation and stop Ubuntu from automatically changing the display resolution upon reboot, you must explicitly define a static monitor configuration.
First, open the main Ubuntu Settings app and navigate to the Displays panel. Manually set your monitor to the exact resolution and refresh rate you desire. Click “Apply” and confirm the changes. This action silently generates a hidden configuration file in your home directory. Open your terminal (Ctrl+Alt+T). You need to copy this generated file to the system-wide configuration directory so it applies during the boot sequence before the graphical login screen even appears. Type sudo cp ~/.config/monitors.xml /var/lib/gdm3/.config/ and press Enter (provide your password). Finally, ensure the system owns the copied file by typing sudo chown gdm:gdm /var/lib/gdm3/.config/monitors.xml. Ubuntu will now strictly adhere to this file on every boot.