--- trinity-tdeartwork/kscreensaver/kxsconfig/update_hacks.sh.ORI 2013-07-31 11:08:50.105439282 +0200 +++ trinity-tdeartwork/kscreensaver/kxsconfig/update_hacks.sh 2013-07-31 11:22:06.146113235 +0200 @@ -1,18 +1,50 @@ #!/bin/sh -scsvs=`cd /usr/lib/xscreensaver/ && ls -1 | grep -v config` + +# Checks for Xscreensaver directory (may vary on different distributions) +if [ -d /usr/libexec/xscreensaver ]; then + XSDIR=/usr/libexec/xscreensaver +elif [ -d /usr/lib64/xscreensaver ]; then + XSDIR=/usr/lib64/xscreensaver +else + XSDIR=/usr/lib/xscreensaver +fi + +# Gets list of screensavers. Exclude 'config'. +scsvs="" +pushd "${XSDIR}" >/dev/null +for i in *; do + if [ "${i}" != "config" ]; then + scsvs="${scsvs} ${i}" + fi +done +popd >/dev/null + echo $scsvs + +# Removes useless .desktop files, if any +for f in ScreenSavers/*.desktop; do + # Gets the command line for this screensaver + Exec="$(sed -n '/^Exec=kxsconfig / s/.* \(.*\)/\1/' $f)" + if [ ! -x "${XSDIR}/${Exec}" ]; then + echo "Removing ${f}" + rm -f "${f}" + fi +done + +# Creates missing screensavers .desktop files for name in $scsvs; do - if test -f /usr/lib/xscreensaver/$name && test -f /usr/share/xscreensaver/config/$name.xml && test ! -f ScreenSavers/$name.desktop; then + if test -f "${XSDIR}/$name" && test -f "/usr/share/xscreensaver/config/$name.xml" && test ! -f "ScreenSavers/$name.desktop"; then echo "name: $name" label=`grep ' $f - if ldd /usr/lib/xscreensaver/$name 2>&1 | grep libGL; then + if ldd "${XSDIR}/$name" 2>&1 | grep libGL; then sed -e "s,@GL1@,X-KDE-Category=OpenGL Screen Savers,; s,@GL2@,X-KDE-Type=OpenGL," $f > $f.new else grep -v @GL $f > $f.new fi mv $f.new $f fi -done +done +