How to remove Change Desktop Background from right click?
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.
Solution 1:
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.
- Get basic development packages:
sudo apt-get install build-essential fakeroot dpkg-dev devscripts
- Get development dependencies for Nautilus
sudo apt-get build-dep nautilus
- 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
- 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. - Open file
src/file-manager/fm-desktop-icon-view.c
-
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.
- Back in Terminal cd to the source root (if you haven't do so already)
cd nautilus-*
And rundch -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 oflocal
, however it's important to add entry to changelog, otherwise your local build would be overridden by repository version. - Compile and build the package
debuild -i -us -uc -b
For explanation of switches see debuild man page Examples section - Go grab some coffee, this might take some time.
- 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
- Logout or restart Nautilus for great justice...
nautilus -q
Look ma', no "Change Background"!
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
- http://www.cyberciti.biz/faq/rebuilding-ubuntu-debian-linux-binary-package/
- http://www.debian-administration.org/articles/20
Solution 2:
I don't know how to do that, but I presume that the desktop background is set via a GConf key. If so, you can run gconf-editor as root, find the relevant key, and set it as mandatory. Then, users won't be allowed to change its value.