Gnome

From Blue-IT.org Wiki

Revision as of 09:46, 28 September 2010 by Apos (talk | contribs) (Third approach)

General Gnome Configuration

AT gnome.org: All about GDM Configuration

Gnome Hacks

Fore the more advanced user (!) you should read

the rss-feed gnome-hacks.org/gnome-hacks.

Be careful, not everything here is very good coding style, it's hacking. So be warned.

Use desktop wallpaper for gdm login

First approach

According to skweez.net you can tweak your gdm login screen to automatically match your desktop wallpaper.

Write a little script that links the actual wallpaper to a hidden link (.wallpaper):

> vim ~/.wallpaper.sh

#!/bin/bash
ln -s -f "$(gconftool-2 --get /desktop/gnome/background/picture_filename)" "${HOME}/.wallpaper"
exit

Assure, that the script will be run after you logged out:

> sudo vim /etc/gdm/PostSession/Default

[...] 
if [ ${USERNAME} = "YOUR_USER_NAME" ]; then
   su $USERNAME -c /home/$USERNAME/.wallpaper.sh
fi
[...]

Change the default settings for the gdm background

> sudo -u gdm gconftool-2 --type str --set /desktop/gnome/background/picture_filename /home/${USER}/.wallpaper

My approach

> sudo vim /etc/gdm/PostSession/Default

# DBUS Socket Adress
export DBUS_SESSION_BUS_ADDRESS=$(grep -z DBUS_SESSION_BUS_ADDRESS= /proc/$(pgrep -u "$(whoami)" gnome-session)/environ | sed -e 's/DBUS_SESSION_BUS_ADDRESS=//') 
MYWALLPAPER="$(su ${USER} -c "gconftool-2 --get /desktop/gnome/background/picture_filename")"
GDMWALLPAPER="$(su gdm -c "gconftool-2 --get /desktop/gnome/background/picture_filename")"
MYBASENAME="$(basename "${MYWALLPAPER}")"

if [ "${MYWALLPAPER}" = "${GDMWALLPAPER}" ];
then
         echo ""

else
       if ! test -f "/usr/share/backgrounds/${MYBASENAME}"; then
               cp "${MYWALLPAPER}" /usr/share/backgrounds
               # chown root:root "/usr/share/backgrounds/${MYBASENAME}"
       fi

       sudo -u gdm gconftool-2 --type str --set /desktop/gnome/background/picture_filename \
                                                "/usr/share/backgrounds/${MYBASENAME}"
 
fi

Third approach

# DBUS Socket Adress
export DBUS_SESSION_BUS_ADDRESS=$(grep -z DBUS_SESSION_BUS_ADDRESS= /proc/$(pgrep -u "$(whoami)" gnome-session)/environ | sed -e 's/DBUS_SESSION_BUS_ADDRESS=//')

MYWALLPAPER="$(su ${USER} -c "gconftool-2 --get /desktop/gnome/background/picture_filename")"
cp "${MYWALLPAPER}" /usr/share/backgrounds/.wallpaper

Session Handling

If you are annoyed by a starting application, do

> cd .config/gnome-session/saved-session/
> ls

105365cb3fec4e88f1127582280344861300000091890036.desktop
107482eb5d30b1bbe128551215818094300000020620022.desktop
105ecfdb1415f95acf128559095441896100000166390046.desktop
10825fadb7fb155c31128041056164622500000015840043.desktop

Edit the .desktop-files and look into them. Find the appropriate annoying program an delete the corresponding file.

Logout / login an see that you are happy again ;)

Custom Panel Clock

From: [1]

Edit

/apps/panel/clock_screen0/prefs/custom_format

like this:

 <span size="small" color="#666">%a %d %b</span> <b>%H:%M </b>

Main menu

A very quick way to make launchers

Open the application run dialog with Alt+F2.

Then just drag & drop the icon onto your desktop or in the panel. ;) Gnome application run dialog.png

Restore original menu

cd ~/.config/menus

Here you find all menu files (ending: .menu). Delete them.

You also might delete all entries under

/etc/xdg

Install the packages

apt-get install menu-xgd menu

As root with

dpkg-reconfigure menu-xdg menu

you will trigger the reload of the menu entries.

Crossover Office Menu vanished

If you are configuring crossover settings (extended settings), you can choose a different name for the applications root directory - default is /Windows Applications. If the menu entries in your gnome menu disappear, simply change this, and a new menu will be created.

See: Wine - Crossover Office.

Gnome notification

You can send informations to the notification area of the gnome panel. You need the following package

apt-get install libnotify-bin

I do this with a little script

vim ~/bin/send_message
# !/bin/bash
#
# See man notify-send
# for more informations

# Params
# -t seconds : waits until vanish

notify_params=" -u critical -t 300000 "
title="$1"
text="$2"
/usr/bin/notify-send $notify_params $title $text"


More informations you will find on galago-project.org, in the manual or help:

man notify-send
notify-send --help

Troubleshooting

There is an option DBUS_SESSION_BUS_ADDRESS= to pass in front of a call to notify-send. You can get this adress like this (taken and CORRECTED from here:

vim send_message
# !/bin/bash
#
user=$(/usr/bin/whoami)
pids=$(pgrep -u ${user} gnome-session)
title="$1"
text="$2"

for pid in $pids; do
  # find DBUS session bus for this session 
  DBUS_SESSION_BUS_ADDRESS=$(grep -z DBUS_SESSION_BUS_ADDRESS \
  /proc/$pid/environ | sed -e 's/DBUS_SESSION_BUS_ADDRESS=//')

  # use it 
  DBUS_SESSION_BUS_ADDRESS=$DBUS_SESSION_BUS_ADDRESS \
  /usr/bin/notify-send -u low -t 30000 "$title" "$text"
done
chmod 755 send_message

Disable shutdown/logout for normal users

According to: Disable Shutdown For Normal Users

Upate: there are problems under ubuntu to use /etc/shutdown.allow

Via gdmsetup

The easiest way is to disable the action menu in the gdmsetup utility, that you'll find in the system menu. Or simply start

gksudo gdmsetup

This prevents showing shutdow/reboot button in the login and logout screen.

It does NOT prevent shutting down the machine via the power button, pressed when logged out!

Completly disable

gdm.conf

Open

vim /etc/X11/gdm/gdm.conf 

in a text editor and find the [greeter] section. Make sure that there is a line which says

SystemMenu = false

This line will ensure that the gdm login screen will not have the option for shutting down the system etc.

Acpi

If you have a laptop, or an acpi system on your computer, then go to

/etc/acpi 

and disable the power button, so that, when someone presses the power button, the system does not shutdown. You can disable this easily by doing

chmod 000 /etc/acpi/powerbtn.sh

inittab

Now edit

vim /etc/inittab

and find the lines that say:

#Trap CTRL-ALT-DELETE
ca::ctrlaltdel:/sbin/shutdown -t3 -r now

And change it to read:

#Disallow CTRL-ALT-DELETE
ca::ctrlaltdel:/bin/echo “ctrl-alt-delete has been disabled” .

This will effectively prevent users from changing to a console screen and using ctrl+alt+delete to shutdown the system.

Permissions

Execute the following commands:

sudo chgrp admin /sbin/halt /sbin/shutdown
sudo chmod 550 /sbin/halt /sbin/shutdown

Gconf-Editor

Use the Configuration Editor (Applications -> System Tools -> Configuration Editor) to edit the preference apps->gnome-session->options->logout_option to “logout” instead of “shutdown”.

That’s it! Now only you, or another superuser (Admin) can shutdown the system, using the command:

$sudo shutdown -t3 -r no