This seems like a simple question, yet I could not find any satisfying answer using Google or Ask Ubuntu.

So I have a triple-monitor setup. Basically what I want is simply to have a different background on each of the three monitors. Now I am not speaking about different virtual desktops (aka workspaces) here. Most of the solutions I googled were about different backgrounds on different workspaces. I have only the one workspace, but three monitors, like so:

enter image description here

Monitor 1 (on top) is my big TV that's attached to the wall above my two normal monitors.

I am using Gnome 2 with Compiz (aka gnome-session-fallback aka Gnome Classic (with effects) in the login manager dropdown list) on Ubuntu 13.04.

I tried the following methods trying to set a different background for each monitor:

  1. ccsm (compiz-config-settings-manager), that is, setting a background via the window manager (Compiz). More precisely, I used the Wallpaper plugin of Compiz.
  2. gnome-control-center, that is, setting a background via the Gnome System Settings. More precisely, I used the Background panel in the Gnome System Settings.
  3. XDG_CURRENT_DESKTOP=Unity gnome-control-center, that is, settting a background via the Gnome System Settings, but mimicking Unity behavior. More precisely, I used the Appearance panel in the Gnome System Settings.

However, none of these methods seem to enable me to select a different background for each monitor. In each case, I can only set a single background (or possibly several that can then be cycled periodically, or used for different workspaces) for all three monitors. Then, I typically have options like center, tile, crop or scale that control how this single background is rendered across the three monitors.

The workaround I have gone with so far is to use Gimp to create one "big" background that encompasses the entire virtual resolution of all three monitors together. Basically, I create one big background image of size 3840x2160, in which I paste three backgrounds at the right places. Then I set this big background as the single background for the three monitors using possibility (1) or (3) above, and use the span option to span this big background across all three monitors. This results in three different backgrounds on the three monitors, provided the three smaller backgrounds were placed correctly on the big background image (Note: possibility (2) does not offer a span option).

However, this seems like an awful hack to achieve such a simple thing as setting a different background for each of my monitors. It also has several disadvantages:

  • When I want to change the arrangement of the monitors (the big TV on top can be slided some way to the left or to the right, and I like to adjust the monitor positions accordingly using xrandr or an associated GUI such as the Displays panel in the Gnome System Settings, so as to keep mouse movement intuitive), clearly the upper background does not slide along with the monitor it's supposed to be displayed on, which means I only see part of the upper background.
  • The big background has some gray areas (dead space) in the upper corners that are uselessly loaded at login time by Compiz or Gnome when the big background is loaded.
  • Worst of all, when I want to change a single one of the three backgrounds, then I have to gimp-edit the whole big background. This is too much work considering I simply want to change a single background (yep, I know about Gimp layers, but still) - this ought to be possible with a few clicks and without a heavy-weight image manipulation program.

The first point means this workaround is not robust. The second means it is not efficient. And the third means it's a pain in the butt :)

So my question is this:

Is there some way - using either Gnome 2 or Compiz - to simply tell the system that I want a different background for each monitor? This would be the logical approach to me, as it would actually tell the system what my intention is. It would also be more efficient.

Really, it feels like this cannot be such an uncommon scenario. I would think many people have multiple monitors; and at least some of those must prefer to have different backgrounds on these monitors. So can it be true that there is no straightforward solution, and users are expected to come up with awful hacks such as creating their own custom backgrounds with heavy-weight programs in order to get this to work?

  • Is this good enough? If not PM me. – Rinzwind Jan 6 '14 at 16:14
  • Wallpaper and background meanings change wildly from question to question. I'm leaving the more relevant ones which are gnome and compiz. If I change gnome to kde the kind of answers will change totally. – Braiam Jan 6 '14 at 16:16
  • 1
    Braiam, this doesn't make a lot of sense to me. If the question "How do I set a desktop background / wallpaper?" doesn't deserve the tags "background" or "wallpaper", then which question does? Also the tags seemed to be fine for similar questions such as askubuntu.com/questions/26529/… or askubuntu.com/questions/365913/…. But then, you seem to spend a lot of your free time on askubuntu, so if it makes you happy... it's fine ;) – Malte Skoruppa Jan 6 '14 at 22:51
  • Funny how XFCE default behavior is actually what the OP needs, and I'm in the reverse case: I'd like to get with XFCE what the OP gets with gnome. At least there's an easy workaround in most cases: manually set background on all monitors to refer to the same picture. – Stéphane Gourichon Sep 27 '16 at 8:57
up vote 45 down vote accepted
+150

You can use nitrogen

To install it, run the following command in terminal:

sudo apt-get install nitrogen

Because nitrogen doesn't have a desktop file by default when is installed, you need to run the following command from terminal to start it:

nitrogen

How to use it?

In it's Preferences, add your wallpaper folder, then at the bottom [...] select Screen 1, 2, etc., to set a different wallpaper for each monitor:

nitrogen

To be able to set a different wallpaper for each monitor, you must disable the file manager from handling the desktop. This means you'll no longer have folders on the desktop.

In GNOME / Unity, install GNOME Tweak Tool:

sudo apt-get install gnome-tweak-tool

Then open GNOME Tweak Tool and on the Desktop section, set Icons on Desktop (previously Have file manager handle the desktop) to OFF.

And finally, to have the wallpapers restored each time you log in, add the following command:

nitrogen --restore

to your Startup Applications.

Source: UBUNTU MULTI-MONITOR TWEAKS (FULL SCREEN FLASH FIXES, SPAN WALLPAPER ACROSS MONITORS, MORE)

  • I tested this method with 2 monitors in Ubuntu 13.10 using Unity and it works great! – Radu Rădeanu Jan 6 '14 at 16:50
  • Guys, two things: First, I noted that backgrounds set in nitrogen do not get restored automatically when you log in. To achieve that, we have to run nitrogen --restore. So in order to make the changes permanent we have to create an executable script that runs this command at login, using Autostart. Please update your answers with instructions on how to do that. – Malte Skoruppa Jan 7 '14 at 22:24
  • 1
    Also see wiki.archlinux.org/index.php/nitrogen. – Malte Skoruppa Jan 7 '14 at 22:29
  • 1
    @MalteSkoruppa You don't need to create an executable script that runs nitrogen --restore at login. Just open Startup Applications and add this command (nitrogen --restore). For Name and Comment write whatever you want. – Radu Rădeanu Jan 7 '14 at 22:46
  • 10
    It should be noted that this option is now known as "Icons on Desktop" instead of "Have file manager handle the desktop" – anon58192932 Feb 5 '15 at 2:16

From webupd8.org it seems there are 2 options. (copy from the website plus some extra things added by me):

The default Ubuntu Appearance settings doesn't let you span a single large wallpaper across both monitors or use a different wallpaper for each monitor, but there are two applications that you can use to do this.

  1. The first one is SyncWall. Install it in Ubuntu using the following commands:

    sudo add-apt-repository ppa:nilarimogard/webupd8
    sudo apt-get update
    sudo apt-get install syncwall
    

    enter image description here

    Here's how my desktops looks like after using SyncWall:

    enter image description here

    Current Features

    • Scheduling : you can change wallpaper at start-up, by interval or at fixed time
    • Ability to use/define system hot-keys to change wallpaper manually.
    • Basic multi-monitor support in order to share the wallpaper across screens
    • Ability to add some special effects (emboss, edge, blur, ...) to the displayed wallpaper.
    • Ability to rate images in order to display them more often (if random order is selected)
    • Several resizing methods and background filling
    • Network synchronization of wallpaper change by defining a server and clients. Display parameters are shared across the network (same resizing type on all the desktops)
    • Supported files :SyncWall uses Qt plugins to load image, so by default it can read basic formats as BMP, PNG, JPG. You can add more formats if needed by using bridge plugins to the FreeImage or the Devil libraries.
    • For linux platform, the common windows managers are supported (Gnome, Gnome3, KDE3, KDE4, XFCE, ...).
  2. Another such tool is nitrogen Install nitrogen, which besides being able to set the same wallpaper to extend across displays, it can also be used to set a different wallpaper to each monitor.

    Nitrogen is available in the official Ubuntu repositories so to install it, search for it in Ubuntu Software Center or use the following command:

     sudo apt-get install nitrogen
    

    Nitrogen doesn't have a desktop file, so run it from the command line:

    nitrogen
    

    enter image description here

    To be able to set a different wallpaper for each monitor, you must disable the file manager from handling the desktop. This means you'll no longer have folders on the desktop.

    In GNOME / Unity, install GNOME Tweak Tool:

     sudo apt-get install gnome-tweak-tool
    

    Then open GNOME Tweak Tool and on the "Desktop" section, set "Have file manager handle the desktop" to OFF.

    And finally, to have the wallpapers restored each time you log in, add "nitrogen --restore" to your startup applications.

    Here's how my desktop looks like with different wallpapers for each monitor:

    enter image description here

    Features :

    • Multihead and Xinerama support.
    • Recall mode to restore wallpapers via startup script.
    • Uses freedesktop.org standard for thumbnails.
    • Can set GNOME background.
    • Command line set modes for script usage.
    • Inotify monitoring of browsed directories.
    • Lazy loading of thumbnails - conserves memory (new in 1.3).
    • "Automatic" set mode - determines best mode to set an image based on its size. (new in 1.4).
    • Display preview images in a tiled icon layout (new in 1.5).

    Install via the software center


Nitrogen seems to be the best option. Syncwall seems to be using the hack you described (large image to split across several monitors.

  • 2
    Do you really have multiple monitors there? It looks like. Workspaces... – Seth Jan 6 '14 at 16:19
  • I just installed syncwall; it doesn't have any option to set a different wallpaper for each monitor... – Radu Rădeanu Jan 6 '14 at 19:10
  • The nitrogen solution, also described by Radu, works great! You would both deserve the bounty :) To decide which answer is better I am trying to assess the usability of the Syncwall solution. However I have been unable to get it to work. In Preferences -> Display Parameters, I see the option "Extend image then crop (one file per monitor)", however I can't figure how to actually add several files. Even with this option set, Syncwall uses only one file. It behaves the same as with "Extend image then crop (one file for all monitors)". Could you elaborate on how to add several files in Syncwall? – Malte Skoruppa Jan 6 '14 at 22:38
  • 1
    @Rinzwind One thing I don't understand: if syncwall seems to use the hack described in the question, what is the reason to add it as an answer? The question is clear: different wallpapers on multiple monitors. And another thing: if you would tested nitrogen on two monitors, you wouldn't say that the last image is photoshoped; try it yourself, make a desktop print screen when you use two monitors and you will understand what I mean. – Radu Rădeanu Jan 7 '14 at 10:22
  • Syncwall seems to work but not to replicate the screen layout from the original question.. it doesn't let me stack screens on top of anotner but just left and right :/ – bksunday Apr 3 '14 at 2:37

the XFCE Desktop Manager Plugin (that comes in the xubuntu-desktop package) allows you to edit each display individually while still retaining the folders on your desktops.

A screenshot of my 2 desktops with the manager open : http://i.stack.imgur.com/Bzg7G.jpg

in the yellow box it says "Move this dialog to the display you want to edit the settings for."

I'm sorry i cant be more help as to giving instruction on to how to install it, nor what the actual plug in is called ( I tried to find it but decided to re-install the whole package instead ) - But hopefully this leads you or somebody on the right track, and this answer can be improved through edits.

I was glad to see there actual was a Gnome/Unity answer.

That said, I still feel switching to KDE might offer a more consistent experence.

KDE's native settings manager not only allows for multiple wallpapers across multiple monitors, it allows them to be set differently for each virtual desktop AND Activity. (Activity's a like virtual desktops that contain virtual desktops and can be configured to have different settings, such as a screen-saver after 5 minutes of stillness in one activity, but no timeout when switched to another, say for presentations or movies.)

Moreover, it handles the addition and subtraction of monitors on the fly (via plugging and unplugging HDMI) without issue!!

sudo apt-get install feh

feh --bg-center <path_to_big_image> --no-xinerama

No need to hide your icons from desktop

  • 1
    Welcome to Ask Ubuntu! I recommend to edit this answer to expand it with specific details about what this command does. A plain command or command sequence is rarely considered an answer. (See also How do I write a good answer? for general advice about what sorts of answers are considered most valuable on Ask Ubuntu.) – David Foerster May 29 at 13:54

Your Answer

 

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.