summaryrefslogtreecommitdiffstats
path: root/redhat/tdeartwork/tdeartwork-3.5.13.2-fix_update_screensaver_list.patch
blob: 4277d685656201f7544f2298b681b4f5c2c4cc87 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
--- 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 '<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-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
+