Change Primary monitor

Until Ubuntu Brainstorm Idea #17526 becomes a reality, it seems there is no way for non-NVIDIA users to change the primary display (not just move the panels) without resorting to the command line.


Edit 2014-05-30: That answer is a little outdated now. Ubuntu Brainstorm no longer exists. And other answers to this question have better solutions, both for Ubuntu, and other distros.

In MATE, "Preferences > Monitors" has a "Make Default" button. That's what you're looking for.

In GNOME 3, "Settings > Display" doesn't have a "Make Default" button. Instead it has a toolbar-looking bar at the top of one of the displays. Drag that to the display that you want to be primary.

I believe Unity is similar to GNOME 3, but the toolbar is on the side -- I don't know for sure though; I'm not running Unity myself.

In KDE, under "System Settings > Display and Monitor" there is a star on each display that you can click to set which is primary.


Edit 2015-02-25: It's heart-warming to know that Linux desktop environments are progressing.

Ubuntu GNOME 14.10 features GNOME 3.12. Open Displays, and choose the secondary display. A list on the left lets you set the display to "Primary", "Secondary Display" (selected), "Mirror", or "Turn Off".

enter image description here

Unity no longer has an equivalent of primary desktop. You can set "Launcher placement" to either of your displays, or all displays.

enter image description here

Ubuntu MATE and Kubuntu are unchanged.


I was having problems with the primary monitor reverting on reboot. Was getting pretty annoying. So I did some searching around and was able to find a solution of my own.

First select your primary display.

Select primary display

Make sure you save your settings, then close.

Next you need to edit the monitors configuration file.

gedit ~/.config/monitors.xml

Find the display you wish to make primary, and change to

<primary>yes</primary>

And make sure to change the other monitor to

<primary>no</primary>

Now save the files, and reboot.

Example config

<monitors version="1">
  <configuration>
      <clone>no</clone>
      <output name="DVI-I-0">
      </output>
      <output name="DVI-I-1">
      </output>
      <output name="TV-0">
      </output>
      <output name="DVI-I-2">
          <vendor>SYN</vendor>
          <product>0x0022</product>
          <serial>0x00000326</serial>
          <width>1360</width>
          <height>768</height>
          <rate>60</rate>
          <x>0</x>
          <y>312</y>
          <rotation>normal</rotation>
          <reflect_x>no</reflect_x>
          <reflect_y>no</reflect_y>
          <primary>no</primary>
      </output>
      <output name="DVI-I-3">
          <vendor>ACI</vendor>
          <product>0x24f2</product>
          <serial>0x01010101</serial>
          <width>1920</width>
          <height>1080</height>
          <rate>60</rate>
          <x>1360</x>
          <y>0</y>
          <rotation>normal</rotation>
          <reflect_x>no</reflect_x>
          <reflect_y>no</reflect_y>
          <primary>yes</primary>
      </output>
  </configuration>
</monitors>

Now when you reboot the display should be selected as primary.

My setup is as follows:

  • Ubuntu 12.04.1 (64-bit)
  • nVidia GTX 260 (using latest drivers)