Hi,
Mich hat schon lange mal Interessiert, wie das bei Ubuntu mit den Bilderwechsel funktioniert. Wie das zum Beispiel bei der Diaschau Weltraum bei den Hintergrundbildern der Fall ist.
Nach langen suchen, hab ich herausgefunden, dass das ganze in einer xml - Datei steckt. Nun wollte ich natürlich ein Programm/Skript haben welches mir automatisch die xml - Datei erstellt, kam aber zu keinem zufriedenstellenden Ergebnis. Also hab ich mich selbst daran gesetzt und mir ein kleine bash - Datei geschrieben: (hab ihn auch noch mal im Anhang)
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 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 | #!/bin/bash # erstellt eine xml - Datei für die Automatische Hintergrundbilder # Hilfeausgabe if echo "$1" | grep -q "^\-h$" || echo "$1" | grep -q "^\-\-help$"; then echo echo Erstellt eine xml - Datei die für die Hintergrund Diaschau, in Ubuntu, ihre Verwendung finden kann. echo echo -e "\e[1;4mÜbersicht:\e[0m" echo -e "$0 [\e[1m-b\e[0m \e[1mSEC\e[0m \e[1m-d\e[0m \e[1mDATE\e[0m \e[1m-q\e[0m \e[1m-s\e[0m \e[1mSEC\e[0m] \e[1mDEST\e[0m \e[1mFILE\e[0m [\e[1mFILE\e[0m ...]" echo -e "$0 \e[1m-h\e[0m" echo -e "$0 \e[1m--help\e[0m" echo echo -e "\e[1;4mArgument:\e[0m" echo -e '\t \e[1mDEST\e[0m\t Beschreibt den Namen der Ausgabedatei. Wenn sie schon existiert wird sie überschrieben.' echo -e '\t \e[1mFILE\e[0m\t Beschreibt die einzelnen Dateien.' echo -e '\t \e[1m-b\e[0m \e[1mSEC\e[0m\n\t\t Wie lange eine Überblendung dauern soll in Sekunden (Standart: 1.5 Sekunden)' echo -e '\t \e[1m-d\e[0m \e[1mDATE\e[0m\n\t\t Gibt das Datum und Zeit (JJJJ-MM-DD#hh:mm:ss) bis auf die Sekunde genau an, wann der Bilderwechsel beginnen soll. Standard ist das aktuelle Datum.' echo -e '\t \e[1m-q\e[0m\n\t\t Es wird keine Ausgabe im Terminal gemacht.' echo -e '\t \e[1m-s\e[0m \e[1mSEC\e[0m\n\t\t Wie lange ein Bild angezeigt werden soll dauern soll in Sekunden (Standard: 20 Minuten)' echo -e '\t \e[1m-h\e[0m, \e[1m--help\e[0m\n\t\t Hilfe wird angezeigt mit der Parameter Liste' echo echo -e "\e[1;4mNützlich Befehlskombinationen:\e[0m" echo -en "\t" echo "ls -1 ~/Bilder | sed 'i\n ~\/Bilder\/' | tr -d '\n' | xargs $0 out.xml" echo -e '\t\t Alle Dateien aus einem entfernten Verzeichnis (z.B. ~/Bilder) als FILE Parameter übernehmen. ' echo -en "\t" echo "ls -b | $0 out.xml" echo -e '\t\t Alle Dateien des Aktuellen Ordners. Das -b damit eventuelle Leerzeichen geslasht werden.' else # Vordefinitionen JJJJ=$(date +%Y) MM=$(date +%m) DD=$(date +%d) hh=$(date +%H) mm=$(date +%M) ss=$(date +%S) b=1.5 s=1200 DESTFILE="" FILE="" FILETEMP="" # Parametercheck argb=0 d=0 q=0 args=0 DEST=0 FirstFILE=0 for para in "$@"; do # Parameterabfrage if echo "$para" | grep -q "^\-[bdqs]*$"; then if [ $DEST -eq 1 ] ; then if [ $q -eq 0 ] ; then echo FEHLER: Argument wurden an falscher Stelle geschrieben. 1>&2; fi; exit 1; fi if echo "$para" | grep -q "b"; then argb=1; fi if echo "$para" | grep -q "d"; then d=1; fi if echo "$para" | grep -q "q"; then q=1; fi if echo "$para" | grep -q "s"; then args=1; fi elif [ $argb -eq 1 ] ; then if echo "$para" | egrep -q "^[0-9]+(\.[0-9]+)?$"; then b=$para argb=0 else if [ $q -eq 0 ] ; then echo FEHLER: Argument -b wurde ein falscher Wert übergeben - \"$para\" 1>&2; fi exit 1 fi elif [ $args -eq 1 ] ; then if echo "$para" | egrep -q "^[0-9]+(\.[0-9]+)?$"; then s=$para args=0 else if [ $q -eq 0 ] ; then echo FEHLER: Argument -s wurde ein falscher Wert übergeben - \"$para\" 1>&2; fi exit 1 fi elif [ $d -eq 1 ] ; then if echo "$para" | egrep -q "^[0-9]{4}-[0-9]{2}-[0-9]{2}#[0-9]{2}:[0-9]{2}:[0-9]{2}$"; then JJJJ=${arg:0:4} MM=${arg:5:2} DD=${arg:8:2} hh=${arg:11:2} mm=${arg:14:2} ss=${arg:17:2} d=0 else if [ $q -eq 0 ] ; then echo FEHLER: Argument -d wurde ein falscher Wert übergeben - \"$para\" 1>&2; fi exit 1 fi else # Dateien überprüfen -> da keine weiteren Parameter erwartet werden if [ $q -eq 0 ] ; then if [ $DEST -eq 0 ] ; then echo -e "\n\t Parameter wurden gesetzt." else echo -e "\t Datei \e[1m$para\e[0m wird hinzugefügt." fi fi if [ -e "$para" -o $DEST -eq 0 ] ; then para=$(readlink -m "$para") # Schreibe in die Ausgabedatei if [ $DEST -eq 0 ] ; then touch "$para" DESTFILE="$para" FILETEMP="<background>\n <starttime>\n <year>$JJJJ</year>\n <month>$MM</month>\n <day>$DD</day>\n <hour>$hh</hour>\n <minute>$mm</minute>\n <second>$ss</second>\n </starttime>" DEST=1; else # Schreibe die einzelnen Dateien ins File if [ $FirstFILE -eq 0 ] ; then FirstFILE=1 FILE="$para" else FILETEMP="$FILETEMP\n <to>$para</to>\n </transition>" fi FILETEMP="$FILETEMP\n <static>\n <duration>$s</duration>\n <file>$para</file>\n </static>\n <transition>\n <duration>$b</duration>\n <from>$para</from>" fi else if [ $q -eq 0 ] ; then echo FEHLER: Datei existiert nicht - \"$para\" 1>&2; fi exit 1 fi fi done if [ $q -eq 0 ] ; then echo -e "\t Schreibe in Ausgabedatei: \e[1m$DESTFILE\e[0m\n"; fi echo -e "$FILETEMP\n <to>$FILE</to>\n </transition>\n</background>" > $DESTFILE fi exit |
Bei mir hat es bis jetzt Funktioniert und hoffe auf nun auf positives Feedback. 😉
Wenn jemand Probleme oder Verbesserungsvorschläge hat sind sie gerne Willkommen.
Viele Grüße
Mr. Lotte