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".
Unity no longer has an equivalent of primary desktop. You can set "Launcher placement" to either of your displays, or all displays.
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.
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)
Worked for Xubuntu 14.04 Trusty tahr nvidia gtx 760 using proprietary driver 331.38 on x86_64.
"Settings manager" -> "Session and Startup" -> "Application Autostart" register -> add following command:
xrandr --output HDMI-0 --primary
specify title yourself so you recognize if changed later on. You can give even further arguments to it.
To know which monitor is which you can either call xrandr -q
on the commandline or install arandr (available in the settings-manager too) to list the monitors.