gnome-cleanup revision 15607
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder#!/bin/ksh
25cc5fbba63f84b47e389af749f55abbbde71c8cChristian Maeder#
25cc5fbba63f84b47e389af749f55abbbde71c8cChristian Maeder# Cleans up the GNOME Desktop user configuration files. This
25cc5fbba63f84b47e389af749f55abbbde71c8cChristian Maeder# will return the user to the default desktop configuration.
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder# Useful if the user's configuration has become corrupted.
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder#
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder# By: Brian Cameron <Brian.Cameron@sun.com>
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder# The first argument can be a user name. If so, then the script
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder# will clean up the files for that specified user (if file
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder# permissions permit). If no argument is given, the default value
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder# is the current user.
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder#
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maederif [ $# -ge 1 ]; then
b9625461755578f3eed04676d42a63fd2caebd0cChristian Maeder LOGNAME="$1"
b9625461755578f3eed04676d42a63fd2caebd0cChristian Maeder USRHOME=`echo ~$1`
327a9b9bf44b6e33f71fee7526dc1c0035251591Christian Maederelse
ac0bbbcb2774629bb87986e69cf53d3402c5f575Christian Maeder USRHOME="$HOME"
76712faeb5ffeb3ff704404a34f2b8d284aa92bcChristian Maeder if [ -z "$LOGNAME" ]; then
88c800932dd7053322501ea2039d9f234be6866cKlaus Luettich LOGNAME=`/usr/bin/logname`
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder fi
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maederfi
d67a33b40578beef2e255a274f89bb9c34aaf056Christian Maeder
ac0bbbcb2774629bb87986e69cf53d3402c5f575Christian Maeder# Error if the directory for this user does not exist.
ac0bbbcb2774629bb87986e69cf53d3402c5f575Christian Maeder#
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maederif [ ! -d "$USRHOME" ]; then
ac0bbbcb2774629bb87986e69cf53d3402c5f575Christian Maeder echo ""
c55a0f77be7e88d3620b419ec8961f4379a586e3Klaus Luettich echo "Error: user $LOGNAME does not exist on this system."
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder echo ""
857992065be4ed40a72c6296b6c0aec62ab4c5b9Christian Maeder exit 1
857992065be4ed40a72c6296b6c0aec62ab4c5b9Christian Maederfi
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder# If USRHOME is the root directory, just set USRHOME to nothing
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder# to avoid double-slash in the output since we refer to files
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder# as $USRHOME/.gconf, for example.
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder#
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maederif [ "$USRHOME" = "/" ]; then
5d4038657f6a63e131f5804af2f7957b69e15a43Klaus Luettich USRHOME=""
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maederfi
b0294d73dcefc502ddaa13e18b46103a5916971fTill Mossakowski
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder# Check if GNOME is running:
77a65251ee036c6aaf09c2775315a4ee24259fbdJorina Freya Gerken#
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian MaederGNOME_PROCESSES='(gnome-session|gconfd|gconfd-2|metacity|esd)'
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian MaederRUNNING_PROCESSES=`/usr/bin/pgrep -l -U $LOGNAME "$GNOME_PROCESSES"`
ed9207cf24e96b0d6f59985822054ae28cb69b2eChristian Maederrc=$?
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maederif [ $rc -ge 2 ]; then
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder echo ""
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder echo "Error getting user process information for user $LOGNAME..."
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder echo ""
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder exit 1
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maederfi
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maederif [ ! -z "$RUNNING_PROCESSES" ]; then
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder echo ""
8b0f493ae42bad8b94918cc0957f1af57096cda4Felix Reckers echo "The following GNOME processes are still running for user $LOGNAME:"
ac0bbbcb2774629bb87986e69cf53d3402c5f575Christian Maeder echo ""
ac0bbbcb2774629bb87986e69cf53d3402c5f575Christian Maeder echo "$RUNNING_PROCESSES"
33d042fe6a9eb27a4c48f840b80838f3e7d98e34Christian Maeder echo ""
ac0bbbcb2774629bb87986e69cf53d3402c5f575Christian Maeder echo "Please log out user $LOGNAME from GNOME, so this user has no"
ce50fe187cdae64e75e510daafb78156280bdb91Christian Maeder echo "GNOME processes running before using gnome-cleanup. For example,"
ebe517300051f765f2ed856a789dd5613d681ab0Klaus Luettich echo "log out, and log into a failsafe session to run gnome-cleanup."
8b0f493ae42bad8b94918cc0957f1af57096cda4Felix Reckers echo ""
c55a0f77be7e88d3620b419ec8961f4379a586e3Klaus Luettich exit 1
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maederfi
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder# tmp files
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder#
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maedertmp_dirs="/var/tmp $TEMPDIR $TMP $TEMP"
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maedertmp_files=""
ebe517300051f765f2ed856a789dd5613d681ab0Klaus Luettich
8b0f493ae42bad8b94918cc0957f1af57096cda4Felix Reckerstmp_cleanup="gconfd-${LOGNAME} mapping-${LOGNAME} orbit-${LOGNAME} gvfs-${LOGNAME}*"
8b0f493ae42bad8b94918cc0957f1af57096cda4Felix Reckers
c55a0f77be7e88d3620b419ec8961f4379a586e3Klaus Luettichfor dir in $tmp_dirs; do
ac0bbbcb2774629bb87986e69cf53d3402c5f575Christian Maeder for cleanup in $tmp_cleanup; do
ac0bbbcb2774629bb87986e69cf53d3402c5f575Christian Maeder tmp_files="$dir/$cleanup $tmp_files"
ac0bbbcb2774629bb87986e69cf53d3402c5f575Christian Maeder done
ac0bbbcb2774629bb87986e69cf53d3402c5f575Christian Maederdone
ce50fe187cdae64e75e510daafb78156280bdb91Christian Maeder
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder# GNOME 2.x files
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder#
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maedergnome_files="$USRHOME/.dbus $USRHOME/.gconf $USRHOME/.gconfd $USRHOME/.gnome $USRHOME/.gnome-desktop $USRHOME/.gnome2 $USRHOME/.gnome2_private $USRHOME/.metacity $USRHOME/.nautilus $USRHOME/.esd_auth $USRHOME/.gtkrc $USRHOME/.gtkrc-1.2-gnome2 $USRHOME/.nautilus-metafile.xml $USRHOME/.gstreamer-0.10/registry.* $USRHOME/.local/share"
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder
8b0f493ae42bad8b94918cc0957f1af57096cda4Felix Reckers# GNOME 1.4 files
8b0f493ae42bad8b94918cc0957f1af57096cda4Felix Reckers#
8b0f493ae42bad8b94918cc0957f1af57096cda4Felix Reckersgnome_14_files="$USRHOME/.gnome-help-browser $USRHOME/.gnome_private $USRHOME/.thumbnails $USRHOME/Nautilus"
5d4038657f6a63e131f5804af2f7957b69e15a43Klaus Luettich
5d4038657f6a63e131f5804af2f7957b69e15a43Klaus Luettichhas_files=`/bin/ls -1d $tmp_files $gnome_files $gnome_14_files 2> /dev/null`
857992065be4ed40a72c6296b6c0aec62ab4c5b9Christian Maeder
c432483b64662e8db604a58758cd18ea7fa65659Christian Maederif [ ! -z "$has_files" ]
857992065be4ed40a72c6296b6c0aec62ab4c5b9Christian Maederthen
857992065be4ed40a72c6296b6c0aec62ab4c5b9Christian Maeder echo ""
857992065be4ed40a72c6296b6c0aec62ab4c5b9Christian Maeder echo "User $LOGNAME currently has the following GNOME configuration files:"
e8d782e6e650b71a2b0ee8461fd8d9fa31525591Christian Maeder echo ""
857992065be4ed40a72c6296b6c0aec62ab4c5b9Christian Maeder echo "$has_files"
857992065be4ed40a72c6296b6c0aec62ab4c5b9Christian Maeder echo ""
96ef2e46d048c357927f2795a40e9e66f21b85fbSonja Gröning echo "Do you wish to remove these files (Y/N) \c"
8659594bb40eb5f3da5439692f0908300947191eSonja Gröning read input;
857992065be4ed40a72c6296b6c0aec62ab4c5b9Christian Maeder
857992065be4ed40a72c6296b6c0aec62ab4c5b9Christian Maeder if [ "$input" = "Y" -o "$input" = "y" ]
96ef2e46d048c357927f2795a40e9e66f21b85fbSonja Gröning then
96ef2e46d048c357927f2795a40e9e66f21b85fbSonja Gröning /bin/rm -fR $has_files
96ef2e46d048c357927f2795a40e9e66f21b85fbSonja Gröning rc=$?
7d09621f989f5e6dfbf603b36b2fccbacf639a3cTill Mossakowski if [ $rc = 0 ]; then
7d09621f989f5e6dfbf603b36b2fccbacf639a3cTill Mossakowski echo "Removed..."
8b0f493ae42bad8b94918cc0957f1af57096cda4Felix Reckers else
857992065be4ed40a72c6296b6c0aec62ab4c5b9Christian Maeder echo "Error removing files..."
8b0f493ae42bad8b94918cc0957f1af57096cda4Felix Reckers fi
857992065be4ed40a72c6296b6c0aec62ab4c5b9Christian Maeder else
857992065be4ed40a72c6296b6c0aec62ab4c5b9Christian Maeder echo "Not removed..."
857992065be4ed40a72c6296b6c0aec62ab4c5b9Christian Maeder fi
7d09621f989f5e6dfbf603b36b2fccbacf639a3cTill Mossakowski echo ""
7d09621f989f5e6dfbf603b36b2fccbacf639a3cTill Mossakowskielse
8b0f493ae42bad8b94918cc0957f1af57096cda4Felix Reckers echo ""
8b0f493ae42bad8b94918cc0957f1af57096cda4Felix Reckers echo "User $LOGNAME does not have any GNOME configuration files."
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder echo ""
327a9b9bf44b6e33f71fee7526dc1c0035251591Christian Maederfi
b49276c9f50038e0bd499ad49f7bd6444566a834Christian Maeder