Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- ########################################################################
- #
- # 16.02.2016
- # mario.q59
- #
- # Questo script bash cambia l'immagine (.jpg|.png) del desktop
- # prendendone una a caso dal Folder impostato
- # nella variabile "IMG_FOLDER" qui nella prossima riga.
- IMG_FOLDER="/usr/share/backgrounds/"
- #IMG_FOLDER="/home/mario.q/Immagini/canon/DCIM/100CANON/"
- #
- # Se avviato con il parametro "key", aggiunge la
- # combinazione di tasti "Alt+b" che cambia
- # l'immagine di sfondo del desktop.
- # "changeImgDesktop key"
- #
- # Rendere eseguibile questo file "changeImgDesktop", ed avviarlo.
- #
- # PROBLEMI NOTI:
- # Non viene fatto nessun controllo se è già presente una
- # combinazione di tasti "Alt+b"
- # Prima di eseguire questo script verificare se la combinazione
- # di tasti "Alt+b" è già in uso.
- #
- # Su "ubuntu desktop" la combinazione di tasti "Alt+b"
- # è disponibile all'uso.
- #
- # Distributed under the terms of the GNU General Public License
- # http://www.gnu.org/licenses/gpl.html
- #
- ########################################################################
- # #
- # da qui in giù non dovresti cambiare niente #
- # #
- ########################################################################
- ECHO_LINE=" ------------------------------------------"
- DC="`which dconf`"
- DC_ERROR=$?
- if [ $DC_ERROR -eq 1 ]; then
- echo "$ECHO_LINE"
- echo " installa \"dconf-editor\""
- echo "$ECHO_LINE"
- exit $DC_ERROR
- else
- DW="$DC write"
- DR="$DC read"
- fi
- if [ ! -d "$IMG_FOLDER" ] ; then
- echo "$ECHO_LINE"
- echo " \"$IMG_FOLDER\" "
- echo " il folder specificato nella"
- echo " variabile \"\$IMG_FOLDER\" "
- echo " non va bene (non è una cartella)"
- echo "$ECHO_LINE"
- exit 1
- fi
- FIND_IMG="`find -L $IMG_FOLDER \! -executable -readable -type f -iregex '.*\.jpg$\|.*\.jpeg\|.*\.png$'`"
- COUNT_IMG_DESKTOP="`echo "$FIND_IMG" | wc -l`"
- if [ $COUNT_IMG_DESKTOP -eq 0 ]; then
- echo "$ECHO_LINE"
- echo " Il folder \"$IMG_FOLDER\" "
- echo " non contiene immagini \".jpg | .jpeg | .png\""
- echo "$ECHO_LINE"
- exit 1
- fi
- RANDOM_X(){
- # restituisce un numero a caso tra 1 e $1
- random_1=`echo $RANDOM`
- random_2=`echo $RANDOM`
- random_3=`echo $RANDOM`
- echo $((random_1*random_2*random_3%$1+1))
- }
- # un'immagine a caso
- IMG_DESKTOP="`echo "$FIND_IMG" | sort -r -R | shuf -n $(RANDOM_X $COUNT_IMG_DESKTOP) | shuf -n 1`"
- THIS_FILE_FULL_PATH="`readlink -m $(type -a $0 | awk '{print $3}')`"
- THIS_FILE_FOLDER="`dirname $THIS_FILE_FULL_PATH`"
- THIS_FILE="`basename $0`"
- XML_WALLPAPER_FILE="$HOME/.$THIS_FILE.`date +%N`.xml"
- # XML_WALLPAPER_FILE="$THIS_FILE_FOLDER/$THIS_FILE.xml"
- CUSTOM_KEYBINDINGS_VALUE="`$DR /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings`"
- MY_CUSTOM_KEYBINDINGS_VALUE="/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/$THIS_FILE/"
- DCONF_WRITE_PICTURE_URI(){
- rm -f $HOME/.$THIS_FILE.*.xml
- echo "<!--
- $ECHO_LINE
- `date`
- file scritto dallo script bash
- \"$THIS_FILE_FULL_PATH\"
- $(ECHO_INFO)
- -->
- <background>
- <static>
- <file>$IMG_DESKTOP</file>
- <options>zoom</options>
- </static>
- </background>" > $XML_WALLPAPER_FILE
- $DW /org/gnome/desktop/background/picture-options \"zoom\"
- $DW /org/gnome/desktop/background/picture-uri \"file://$XML_WALLPAPER_FILE\"
- }
- ECHO_INFO(){
- if [ "$1" == "key" ]; then
- echo "$ECHO_LINE"
- exit 0
- else
- cat <<EOF
- "`basename $IMG_DESKTOP`"
- un'immagine a caso tra $COUNT_IMG_DESKTOP
- dal folder "$IMG_FOLDER"
- $ECHO_LINE
- EOF
- fi
- }
- # Inserisco una combinazione di tasti per cambiare l'immagine del desktop
- CUSTOM_KEYBINDINGS(){
- GUI_NAME="Cambia immagine di sfondo del Desktop"
- name="name"
- command="command '$THIS_FILE_FULL_PATH'"
- binding="binding \"\<Alt\>b\""
- # quando è vuota "-z $CUSTOM_KEYBINDINGS_VALUE" oppure ha questo valore "@as []",
- # se grep trova "@as \[\]" esce con il codice 0, true
- if [ -z "$CUSTOM_KEYBINDINGS_VALUE" -o "`echo "$CUSTOM_KEYBINDINGS_VALUE" | grep "@as \[\]"`" ]; then
- if [ "$1" == "key" ]; then
- $DW /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings "['$MY_CUSTOM_KEYBINDINGS_VALUE']"
- $DW $MY_CUSTOM_KEYBINDINGS_VALUE$command
- $DW $MY_CUSTOM_KEYBINDINGS_VALUE$name "'$GUI_NAME'"
- $DW $MY_CUSTOM_KEYBINDINGS_VALUE$binding
- echo "$ECHO_LINE"
- echo " ALT+b cambia l'immagine sul desktop "
- fi
- ECHO_INFO $1
- DCONF_WRITE_PICTURE_URI
- exit 0
- fi
- # grep restituisce 0, true de trova la corrispondenza esatta di $MY_CUSTOM_KEYBINDINGS_VALUE
- if [ `echo "$CUSTOM_KEYBINDINGS_VALUE" | grep -o "'$MY_CUSTOM_KEYBINDINGS_VALUE'"` ]; then
- if [ "$1" == "key" ]; then
- $DW $MY_CUSTOM_KEYBINDINGS_VALUE$command
- $DW $MY_CUSTOM_KEYBINDINGS_VALUE$name "'$GUI_NAME'"
- $DW $MY_CUSTOM_KEYBINDINGS_VALUE$binding
- echo "$ECHO_LINE"
- echo " La combinazione di tasti è già presente "
- echo " ALT+b cambia l'immagine sul desktop "
- fi
- ECHO_INFO $1
- DCONF_WRITE_PICTURE_URI
- exit 0
- fi
- if [ true ]; then
- if [ "$1" == "key" ]; then
- CUSTOM_KEYBINDINGS_VALUE=`echo $CUSTOM_KEYBINDINGS_VALUE | sed 's,\[,,g'`
- CUSTOM_KEYBINDINGS_VALUE="['$MY_CUSTOM_KEYBINDINGS_VALUE',$CUSTOM_KEYBINDINGS_VALUE"
- $DW /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings "$CUSTOM_KEYBINDINGS_VALUE"
- $DW $MY_CUSTOM_KEYBINDINGS_VALUE$command
- $DW $MY_CUSTOM_KEYBINDINGS_VALUE$name "'$GUI_NAME'"
- $DW $MY_CUSTOM_KEYBINDINGS_VALUE$binding
- echo "$ECHO_LINE"
- echo " ALT+b cambia l'immagine sul desktop "
- echo " Combinazione dei tasti aggiunta "
- echo " alle altre già presenti "
- fi
- ECHO_INFO $1
- DCONF_WRITE_PICTURE_URI
- exit 0
- fi
- }
- if [ "$1" == "key" ]; then
- CUSTOM_KEYBINDINGS $1
- else
- echo " |"$ECHO_LINE
- echo " | avviando questo script "
- echo " | \"$THIS_FILE_FULL_PATH\" "
- echo " | con l'argomento \"key\" "
- echo " | viene agginta la combinazione "
- echo " | di tasti ALT+b che lo esegue "
- echo " | \"$THIS_FILE_FULL_PATH key\" "
- echo " |"$ECHO_LINE
- ECHO_INFO
- DCONF_WRITE_PICTURE_URI
- fi
Add Comment
Please, Sign In to add comment