Scotch Linux arbre1 fly maison ScotchLinux... arbre

Remarque: Ce script, dont la partie calcul pour la taille du fond d'écran est difficile (des sed imbriqué et plusieur outils utilisés), permet de démarrer et redémarrer des composant du bureau. l'utilisation de switch et de fonction contribue à ça clarté.

Remarque: On observe aussi que dans les cas bbkeys et background, une fonction prenant un argument est passée en tant qu'argument.


#!/bin/bash
function help(){
echo "desktop.sh"
echo "arguments:"
echo "ALL: restart all"
echo "conky | background | bbkeys | xscreensaver | idesk: restart process"
}
function on_display(){
for screen in ":0.0" ":0.1" ; do
$1 $screen
done;
}
function bbkeys_fn(){
DISPLAY=$1 bbkeys -c /home/thomas/.idesktop/bbkeysrc &
}
function backgrounds_fn(){
local BG
case $1 in
":0.0")
BG="/home/thomas/.idesktop/backgrounds/image1.jpg"
;;
":0.1")
BG="/home/thomas/.idesktop/backgrounds/image2.jpg"
;;
esac
#mise à l'échelle de l'image.
#DISPLAY=$1 xrandr | sed -r -e '/current/! d':
#récupération la ligne contenant "current" de la commande "xrandr".
#identify $BG | sed -r 's/.*JPEG ([0-9]+)x.*/\1/g')/g":
#Récupération de la longueur de l'image
#\1*101\/$(identify...: met en place la sortie ce qui permet le calcule du zoom (\1=([0-9]+) de sed).
#le 101 est délibérer car à 100% l'arrondi peut rendre l'image plus petite que l'écran.
/usr/bin/xsetbg \
-onroot \
-xzoom $(DISPLAY=$1 xrandr |
sed -r -e '/current/! d' -e "s/.*current ([0-9]+) x ([0-9]+),.*/\1*101\/$(identify $BG |
sed -r 's/.*JPEG ([0-9]+)x.*/\1/g')/g" |
bc -l) \
-yzoom $(DISPLAY=$1 xrandr |
sed -r -e '/current/! d' -e "s/.*current ([0-9]+) x ([0-9]+),.*/\2*101\/$(identify $BG |
sed -r 's/.*JPEG [0-9]+x([0-9]+).*/\1/g')/g" |
bc -l) \
-center \
-display $1 $BG;
}
if [ $1 = "all" ] ;then
RESTART="bbkeys background idesk conky xscreensaver"
else
RESTART=$1
fi;
for GO_ON in $RESTART ;do
case $GO_ON in
bbkeys)
test -n "$(pidof bbkeys)" && killall -9 bbkeys
on_display bbkeys_fn
;;
background)
on_display backgrounds_fn
;;
conky)
test -n "$(pidof conky)" && killall -9 conky
conky -q -d -c /home/thomas/.idesktop/conkyrc
;;
idesk)
test -n "$(pidof idesk)" && killall -9 idesk
idesk &
;;
xscreensaver)
test -n "$(pidof xscreensaver)" && xscreensaver-command -exit
/usr/bin/xscreensaver -no-splash -display :0.0 &
;;
esac
done;