Ubuntu – How to remove Change Desktop Background from right click

administrationscriptswallpaper

I want to restrict users on changing wallpapers and themes. So can anyone say me how to remove
Change Desktop Background option from right click?

Note:

I just totally want to remove that option from right click.

Best Answer

If you can live without icons on your desktop, you can disable right click menu entirely through Nautilus' show_desktop option like this:

gconftool-2 -t bool -s /apps/nautilus/preferences/show_desktop false

Edit: Getting rid only of that menu entry would require patching the Nautilus source. The menu definition is in src/file-manager/fm-desktop-icon-view.c inside desktop_view_entries[] (or just search for Change Desktop _Background). Edit2: See below for HowTo.

Other option would be to use different file manager to draw desktop icons. Maybe PCMan File Manager doesn't have this entry in right-click menu?

Minimal guide to editing & rebuilding Nautilus

As I've noted before, the menu entry is hardcoded to Nautilus, so as far as I know, the only way how to remove it AND keep all other functionality is to edit Nautilus' source and recompile it. Be warned that it will take some time and you'll need some space for all the development packages and compilation itself.

The process was tested with Nautilus Elementary 2.32.2.2, however there shouldn't be any differences for stock Nautilus 2.32.

  1. Get basic development packages:
    sudo apt-get install build-essential fakeroot dpkg-dev devscripts
  2. Get development dependencies for Nautilus
    sudo apt-get build-dep nautilus
  3. Download Nautilus source - note that this command doesn't require sudo; also, it'll place multiple files to current directory so it's usually good idea to create an extra dir for that.
    mkdir nautilus
    cd nautilus
    apt-get source nautilus
  4. The source will be downloaded and extracted to nautilus-VERSION* folder (VERSION is, of course some version number, most probably 2.32.something). Get into that folder.
  5. Open file src/file-manager/fm-desktop-icon-view.c
  6. Search for GtkActionEntry desktop_view_entries[] - in my case it's on line 721 however it may differ for your version. It should look like this:

    static const GtkActionEntry desktop_view_entries[] = {
        /* name, stock id */
        { "New Launcher Desktop", NULL,
          /* label, accelerator */
          N_("Create L_auncher..."), NULL,
          /* tooltip */
          N_("Create a new launcher"),
          G_CALLBACK (action_new_launcher_callback) },
        /* name, stock id */
        { "Change Background", NULL,
          /* label, accelerator */
          N_("Change Desktop _Background"), NULL,
          /* tooltip */
          N_("Show a window that lets you set your desktop background's pattern or color"),
          G_CALLBACK (action_change_background_callback) },
        /* name, stock id */
        { "Empty Trash Conditional", NULL,
          /* label, accelerator */
          N_("Empty Trash"), NULL,
          /* tooltip */
          N_("Delete all items in the Trash"),
          G_CALLBACK (action_empty_trash_conditional_callback) },
    };
    

    Note that the second array contains Change Background - remove it, so you get something like that:

    static const GtkActionEntry desktop_view_entries[] = {
        /* name, stock id */
        { "New Launcher Desktop", NULL,
          /* label, accelerator */
          N_("Create L_auncher..."), NULL,
          /* tooltip */
          N_("Create a new launcher"),
          G_CALLBACK (action_new_launcher_callback) },
        /* Change Background was here */
        /* name, stock id */
        { "Empty Trash Conditional", NULL,
          /* label, accelerator */
          N_("Empty Trash"), NULL,
          /* tooltip */
          N_("Delete all items in the Trash"),
          G_CALLBACK (action_empty_trash_conditional_callback) },
    };
    

    Save the file.

  7. Back in Terminal cd to the source root (if you haven't do so already)
    cd nautilus-*
    And run
    dch -l local
    This will execute the default $EDITOR (probably Nano) with the changelog file prepared to input your changes. Write something descriptive after the *, keep everything else intact. Note that -l local option is to note local build, you can use anything else instead of local, however it's important to add entry to changelog, otherwise your local build would be overridden by repository version.
  8. Compile and build the package
    debuild -i -us -uc -b
    For explanation of switches see debuild man page Examples section
  9. Go grab some coffee, this might take some time.
  10. Once the build finishes (hopefully with success), you'll find bunch of .deb packages in the parent directory. Install them all.
    cd ..
    sudo dpkg -i *.deb
  11. Logout or restart Nautilus for great justice...
    nautilus -q

Look ma', no "Change Background"!

nautilus desktop menu

To be 100% sure, it's probably good idea to lock nautilus package in Synaptic.

Edit: Once you've verified that everything is working fine, you can get rid of build-dep packages using this nifty command. You just need to install aptitude...

References