51

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?

5
  • Is this good enough? If not PM me.
    – Rinzwind
    Jan 6, 2014 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, 2014 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 ;) Jan 6, 2014 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. Sep 27, 2016 at 8:57
  • I came here for kubuntu (KDE) and realized that per monitor bg setup comes out of the box in it. Right click and configure
    – ijuneja
    Jun 14, 2021 at 17:23

7 Answers 7

62
+150

Edit (2019): Nitrogen is no longer maintained. Nitrogen doesn't fully work on newer Ubuntu distros.

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)

9
  • I tested this method with 2 monitors in Ubuntu 13.10 using Unity and it works great! Jan 6, 2014 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. Jan 7, 2014 at 22:24
  • 1
    Also see wiki.archlinux.org/index.php/nitrogen. Jan 7, 2014 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. Jan 7, 2014 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" Feb 5, 2015 at 2:16
8

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.

5
  • 2
    Do you really have multiple monitors there? It looks like. Workspaces...
    – Seth
    Jan 6, 2014 at 16:19
  • 1
    I just installed syncwall; it doesn't have any option to set a different wallpaper for each monitor... Jan 6, 2014 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? Jan 6, 2014 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. Jan 7, 2014 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, 2014 at 2:37
6

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 : https://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.

4

HydraPaper is the best option since 2020.

2

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!!

0
1
sudo apt-get install feh

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

No need to hide your icons from desktop

1
  • 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.) May 29, 2018 at 13:54
0

I'm looking for a command line method of doing this. Hyrdapaper's OK but I don't want to have to start a GUI to pick my images. I have a script that already handles all of that, setting images are predetermined intervals. I just need to know how to set each monitor separately and/or span an image. feh looked like it might be a solution however it doesn't actually set the wallpaper. Or rather it says it but doesn't show it until the terminal I'm typing the command in loses focus (I have pointer focus on). Then the background changes for a second then goes back to my current background.

Note I'm using Mate with Compiz if that matters.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .