|
|
|
@ -1,14 +1,45 @@
|
|
|
|
|
#!/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 '<screensaver.*_label' /usr/share/xscreensaver/config/$name.xml | sed -e 's#^.*_label=\"\(.*\)\".*$#\1#'`
|
|
|
|
|
echo "label: $label"
|
|
|
|
|
f=ScreenSavers/$name.desktop
|
|
|
|
|
sed -e "s#@NAME@#$name#; s#@LABEL@#$label#" ScreenSavers/xscreensaver.template > $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-TDE-Category=OpenGL Screen Savers,; s,@GL2@,X-TDE-Type=OpenGL," $f > $f.new
|
|
|
|
|
else
|
|
|
|
|
grep -v @GL $f > $f.new
|
|
|
|
@ -16,3 +47,4 @@ for name in $scsvs; do
|
|
|
|
|
mv $f.new $f
|
|
|
|
|
fi
|
|
|
|
|
done
|
|
|
|
|
|
|
|
|
|