Using a second monitor has been shown to increase productivity by 42% on average. Linux dual monitor support, however, is heavily fragmented. Although support is available, it differs greatly depending on the desktop environment being used.
Dual monitor features
Supporting a second monitor can vary from mirroring the first display to extending the existing desktop and providing fine-grained control over components such as panels and menus. The features that a dual monitor implementation support have a big affect on its usability.
Mirroring is the most basic dual monitor support. With mirroring, the image displayed on the primary monitor is duplicated on the secondary monitor.
The desktop extends from the primary monitor to the secondary monitor. The user is able to move the mouse/drag windows from one monitor to the next.
On an extended desktop with duplicate panels, the secondary monitor has the same panels as found on the primary monitor.
On an extended desktop with individual panels, the secondary monitor is capable of housing panels independently of the panels that appear on the primary monitor.
On an extended desktop with a duplicate taskbar, the secondary monitor taskbar shows the same running tasks as the primary monitor.
On an extended desktop with an individual taskbar, the secondary monitor taskbar only shows the tasks running on the secondary monitor.
The table below shows the current state of dual monitor support for 6 of the most popular Linux desktop environments. These tests were performed on an NVIDIA GeForce GTX 260 graphics card using the open source nouveau driver.
|Cinnamon 1.8||Gnome 3.6.2||KDE 4.10||MATE 1.6||Unity 13.04||XFCE 4.10|
Cinnamon provides only basic extended desktop support for dual monitors. It’s not even possible to add duplicate panels to the secondary monitor.
The following issue on github describes some of the missing features: Taskbar on second monitor (issue #130). At the time of writing, this issue is still open.
The default installation of Gnome is very restrictive, supporting only mirroring and desktop extension. The features marked partially supported are made available by installing the Multiple Monitor Panels gnome-shell extension. Even with the extension, however, integration isn’t perfect. For example, the activities menu appears on the primary monitor when selected from the secondary monitor.
Update: A few people pointed out in the comments that it is indeed possible to duplicate a display: “In System settings/Display: in the Position drop-down list of the secondary screen settings, you will find the Clone option.”
Surprising KDE doesn’t support mirroring the display. It does, however, support all features of an extended desktop. KDE was the only desktop to get my monitor configuration the wrong way around, but fixing it was a simple process. Finally, setting up individual taskbars was a confusing affair because the taskbar on the primary monitor has different default settings than the taskbar added to the secondary monitor.
MATE provides the most complete support of all the desktop environments reviewed, but it defaults to mirroring and once extended desktop is enabled, the defaults are poor and setting up all the features is not trivial.
Configuring MATE to use individual panels and taskbars is well-hidden but easy once you know how. First you add a new panel by right-clicking on an existing panel and selecting ¨New Panel¨. The panel appears on one of the edges of the primary monitor.
To place the panel on the secondary monitor you have to hold down the ALT key, then hold down the left mouse button over the panel and drag it to the secondary monitor.
You can add applets to taskbars individually, and the window list (taskbar) automatically shows windows on the current desktop. The applet can show all windows regardless of desktop by selecting “Show windows from all workspaces” in the preferences.
Unity provides good dual monitor support by default. The secondary monitor has duplicated panels from the primary monitor.
The launcher panel on the left of the screen doubles as a partial individual taskbar in the form of very subtle arrows which indicate whether the running task is on the current desktop or not; however, because running tasks are combined into a single icon, it’s not clear which desktop multiple instances of an application are running on.
There is no support in Unity for individual panels. You cannot add new panels, and changes to existing panels are duplicated across all monitors.
Although XFCE does have support for an extended desktop, it’s not trivial to setup. You need to run the xrandr command to configure the relative positions of the monitors. Changes made using this command are not saved between sessions. In order to make it permanent, you need to create a shell script to automate the process during login. There is also a graphical user interface called ‘arandr’ which makes this process easier.
Additional panels can be added via the panel manager (Application Menu -> Settings -> Panel). Each panel has an option to specify the monitor it should appear on, and even offers an additional feature of stretching a single panel across multiple monitors. In addition, each panel can house it’s own set of widgets, and the window list widget can be configured to show either all windows or just windows from the current display.
Linux desktop environments provide good support for a dual monitor setup. Each environment tested provides the crucial extended desktop; however, in most cases the defaults lean towards single monitor use in spite of the presence of a second monitor.
When the extended desktop is enabled configuring the environment to use the second monitor effectively isn’t always clear. Gnome’s lack of built-in support is suprising, and XFCE’s requirement to create a script to run at boot puts novice users out of reach.
In future I hope that Linux desktop environments work on becoming more feature complete for dual monitors, but also make configuring the displays more straight-forward.