PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Per Shell-Script Wallpaper ändern



Schlüpfknoten
26.05.10, 13:11
Hi,

ich habe mir ein Script geschrieben, welches in der zuständigen Datei ~/.kde/share/config/kdesktoprc das Hintergrundbild neu schreibt.

Hier der Code:


#!/bin/bash
SOURCELOC="$HOME/Desktop/wallchanger/papers/"
OPTS="s#^Wallpaper=.*#Wallpaper=${SOURCELOC}all.jpg#"
sed -ie "${OPTS}" $HOME/.kde/share/config/kdesktoprc


funktioniert, allerdings erst nach einem Neustart. Wie also bekomme ich den Desktop (KDE3.5) dazu, sich neu aufzubauen bzw. das Hintergrundbild neu zu laden?
Wenn ich es über "Arbeitsfläche einrichten" mache und auf "Anwenden" klicke wird es ja auch sofort geladen...

Vielen Dank für eure Hilfe!

tomes
26.05.10, 20:02
Hi,

ich glaub du suchst dcop.

mfg
tomes

L00NIX
27.05.10, 18:17
Hi,

Ich habe ein Skript geschrieben, was ein zufälliges Hintergrundbild aus einem Verzeichnis auswählt und dann als Hintergrund setzt.

Werde nachher mal danach suchen und es dann hier posten.

Ja, es verwendet dcop, ist allerdings nur für KDE3 getestet.

Gruß
L00NIX

L00NIX
27.05.10, 20:25
Hi,

So, here we are:


#!/bin/bash

# Darin befinden sich die Hintergrundbilder
wallpaper_base="/usr/local/share/wallpapers"

/usr/bin/dcop --user ${LOGNAME} kdesktop KBackgroundIface \
setWallpaper "$( ls ${wallpaper_base}/*/*.* | sort -R | head -1 )" 6


Am besten platziert man das in $HOME/.kde/Autostart (z.B. als symbolic link).


Auch ganz nett: Ein sich änderndes KDM-Logo (/usr/local/sbin/random_kdm_logo.sh):


#!/bin/bash

KDM_PIXMAP_DIR=/usr/share/apps/kdm/pics
KDM_LINKED_LOGO=/var/share/apps/kdm/pics/logo.jpg

# binaries
BIN_LS=/bin/ls
BIN_SORT=/usr/bin/sort
BIN_HEAD=/usr/bin/head
BIN_LN=/bin/ln
BIN_RM=/bin/rm

# get a random file as logo source
LOGO=$( $BIN_LS $KDM_PIXMAP_DIR/*.* | $BIN_SORT -R | $BIN_HEAD -1 )

$BIN_RM -f "$KDM_LINKED_LOGO"
$BIN_LN -s "$LOGO" "$KDM_LINKED_LOGO"


Einfach das Logo auf den Symbolischen Link setzen: /var/share/apps/kdm/pics/logo.jpg dann ändert sich das bei jedem Bootvorgang, sofern:

Es über ein init-Skript (/etc/init.d/random-kdm-logo) aufgerufen wird:


#! /bin/sh
### BEGIN INIT INFO
# Provides: random-kdm-logo
# Required-Start: $remote_fs
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop:
# Short-Description: Run /usr/local/sbin/random_kdm_logo.sh if it exist
### END INIT INFO


PATH=/sbin:/usr/sbin:/bin:/usr/bin

. /lib/init/vars.sh
. /lib/lsb/init-functions

do_start() {
if [ -x /usr/local/sbin/random_kdm_logo.sh ]; then
[ "$VERBOSE" != no ] && log_begin_msg "Switching to a new KDM logo (/usr/local/sbin/random_kdm_logo.sh)"
/usr/local/sbin/random_kdm_logo.sh
ES=$?
[ "$VERBOSE" != no ] && log_end_msg $ES
return $ES
fi
}

case "$1" in
start)
do_start
;;
restart|reload|force-reload)
echo "Error: argument '$1' not supported" >&2
exit 3
;;
stop)
;;
*)
echo "Usage: $0 start|stop" >&2
exit 3
;;
esac


Einfach noch die Links in /etc/rc2.d setzen:


# cd /etc/rc2.d
# ln -s ../init.d/random-kdm-logo ./S95random-kdm-logo


Gruß
L00NIX