|
Lines 1-18
Link Here
|
| 1 |
#!/bin/sh |
1 |
#!/bin/sh |
| 2 |
scsvs=`cd /usr/lib/xscreensaver/ && ls -1 | grep -v config` |
2 |
|
|
|
3 |
# Checks for Xscreensaver directory (may vary on different distributions) |
| 4 |
if [ -d /usr/libexec/xscreensaver ]; then |
| 5 |
XSDIR=/usr/libexec/xscreensaver |
| 6 |
elif [ -d /usr/lib64/xscreensaver ]; then |
| 7 |
XSDIR=/usr/lib64/xscreensaver |
| 8 |
else |
| 9 |
XSDIR=/usr/lib/xscreensaver |
| 10 |
fi |
| 11 |
|
| 12 |
# Gets list of screensavers. Exclude 'config'. |
| 13 |
scsvs="" |
| 14 |
pushd "${XSDIR}" >/dev/null |
| 15 |
for i in *; do |
| 16 |
if [ "${i}" != "config" ]; then |
| 17 |
scsvs="${scsvs} ${i}" |
| 18 |
fi |
| 19 |
done |
| 20 |
popd >/dev/null |
| 21 |
|
| 3 |
echo $scsvs |
22 |
echo $scsvs |
|
|
23 |
|
| 24 |
# Removes useless .desktop files, if any |
| 25 |
for f in ScreenSavers/*.desktop; do |
| 26 |
# Gets the command line for this screensaver |
| 27 |
Exec="$(sed -n '/^Exec=kxsconfig / s/.* \(.*\)/\1/' $f)" |
| 28 |
if [ ! -x "${XSDIR}/${Exec}" ]; then |
| 29 |
echo "Removing ${f}" |
| 30 |
rm -f "${f}" |
| 31 |
fi |
| 32 |
done |
| 33 |
|
| 34 |
# Creates missing screensavers .desktop files |
| 4 |
for name in $scsvs; do |
35 |
for name in $scsvs; do |
| 5 |
if test -f /usr/lib/xscreensaver/$name && test -f /usr/share/xscreensaver/config/$name.xml && test ! -f ScreenSavers/$name.desktop; then |
36 |
if test -f "${XSDIR}/$name" && test -f "/usr/share/xscreensaver/config/$name.xml" && test ! -f "ScreenSavers/$name.desktop"; then |
| 6 |
echo "name: $name" |
37 |
echo "name: $name" |
| 7 |
label=`grep '<screensaver.*_label' /usr/share/xscreensaver/config/$name.xml | sed -e 's#^.*_label=\"\(.*\)\".*$#\1#'` |
38 |
label=`grep '<screensaver.*_label' /usr/share/xscreensaver/config/$name.xml | sed -e 's#^.*_label=\"\(.*\)\".*$#\1#'` |
| 8 |
echo "label: $label" |
39 |
echo "label: $label" |
| 9 |
f=ScreenSavers/$name.desktop |
40 |
f=ScreenSavers/$name.desktop |
| 10 |
sed -e "s#@NAME@#$name#; s#@LABEL@#$label#" ScreenSavers/xscreensaver.template > $f |
41 |
sed -e "s#@NAME@#$name#; s#@LABEL@#$label#" ScreenSavers/xscreensaver.template > $f |
| 11 |
if ldd /usr/lib/xscreensaver/$name 2>&1 | grep libGL; then |
42 |
if ldd "${XSDIR}/$name" 2>&1 | grep libGL; then |
| 12 |
sed -e "s,@GL1@,X-TDE-Category=OpenGL Screen Savers,; s,@GL2@,X-TDE-Type=OpenGL," $f > $f.new |
43 |
sed -e "s,@GL1@,X-TDE-Category=OpenGL Screen Savers,; s,@GL2@,X-TDE-Type=OpenGL," $f > $f.new |
| 13 |
else |
44 |
else |
| 14 |
grep -v @GL $f > $f.new |
45 |
grep -v @GL $f > $f.new |
| 15 |
fi |
46 |
fi |
| 16 |
mv $f.new $f |
47 |
mv $f.new $f |
| 17 |
fi |
48 |
fi |
| 18 |
done |
49 |
done |
|
|
50 |
|