Pages : 1
#1 Le 18/02/2014, à 14:55
- rsuinux
un fond d'écran différent par bureau sur XFCE4
bonjour,
Je vous propose un petit script sans aucune prétention pour avoir un fond d'écran différent sur chaque bureau de xfce4 (sur ubuntu 13.10)
Seule restriction (pour le moment?) utiliser les touches ctrl-Fx pour changer de bureau.
J'ai fait une petite doc dans l'entête du script. En fait, ce n'est guère compliqué. Il faut juste contourner quelques fonctions.
voila le script:
#!/bin/bash
# -------------------------------------------------------------------------
# R. Suinot <remi <at> suinot.org>
# 17 Fev. 2014
# un fond d'écran différent quand on utilise la touche ctrl-Fx
# Utilisation:
# placer le script dans ~/bin/
# chmod +x ~/bin/xfce4-multi-walpaper.sh
# créer des liens correspondant à vos bureaux, autant de lien que de bureaux:
# ln -s ~/bin/xfce4-multi-walpaper.sh ~/bin/F1.sh
# ln -s ~/bin/xfce4-multi-walpaper.sh ~/bin/F2.sh
# etc...
# éditer à la main (je n'ai pas trouver comment le faire via l'utilitaire d'xfce)
# le fichier ~/.config/xfce4/xfconf/xfce-perchannel-xml
# supprimer les références F3, F4 ...
# Ce sont des lignes du type (supprimer ces lignes):
# <property name="<Control>F3" type="string" value="workspace_3_key"/>
# et dans le même fichier remplacer les lignes
# <property name="<Primary><Super>F3" type="string" value="/home/remi/bin/F3"/>
# par
# <property name="<Primary>F3" type="string" value="/home/remi/bin/F3"/>
# pareil pour F4, ...
# ----------------
# étrangement, cela ne marche pas pour les bureaux 1 et 2, ceux ci ont une référence dans
# <property name="xfwm4" type="empty">
# et impossible de les modifier.
# -------------------------------------------------------------------------
# dépendances:
# notify-send (pour le débug si besoin)
# wmctrl (attention, celui ci compte les bureaux à partir de zéro)
# -------------------------------------------------------------------------
param=$1
appel=$0
# debug:
# notify-send "Commande= $appel / $# "
# echo "param: $appel " >> /tmp/xfce4-prso.txt
if [[ $appel == *F1* ]]
then
# Nous supprimons le lien du fond d'écran défini en parametre standard (fait en premier via 'parametre du bureau')
rm ~/Images/fond-d-ecran.jpg
# et nous recréons le lien, même nom, avec une autre image comme source
ln -s ~/Images/image-paysage-feerique-68-1920-1080.php.jpeg ~/Images/fond-d-ecran.jpg
# xfce4, peux tu me rechager le bureau s'l te plait?
xfdesktop --reload
# je m'en vais sur le bureau numéro zéro , bye bye!
wmctrl -s 0
elif [[ $appel == *F2* ]]
then
rm ~/Images/fond-d-ecran.jpg
ln -s ~/Images/miyazaki_byou-1513408.jpg ~/Images/fond-d-ecran.jpg
xfdesktop --reload
wmctrl -s 1
elif [[ $appel == *F3* ]]
then
rm ~/Images/fond-d-ecran.jpg
ln -s ~/Images/Le-Chateau-Ambulant.jpg ~/Images/fond-d-ecran.jpg
xfdesktop --reload
wmctrl -s 2
elif [[ $appel == *F4* ]]
then
rm ~/Images/fond-d-ecran.jpg
ln -s ~/Images/paysage-manga-1.jpg ~/Images/fond-d-ecran.jpg
xfdesktop --reload
wmctrl -s 3
fi
exit 0
N'oubliez pas la principale dépendance.
C'est largement améliorable (utilisation de case à la place de if/then/else/fi) et d'autre raccourci clavier via d'autre lien .
Et celui qui me donne l'astuce pour que cela marche avec la touche F1 et F2 je lui paye une bière sur Limoges
Vos avis/suggestions sont les bienvenues.
Rémi.
Dernière modification par rsuinux (Le 18/02/2014, à 21:53)
Si tu ne sais pas: demande; si tu sais: partage!
Hors ligne
#2 Le 18/02/2014, à 18:25
- rsuinux
Re : un fond d'écran différent par bureau sur XFCE4
j'ai remarqué qu'au redémarrage, mes modification n'étaient pas gardées lorsqu'on supprime les lignes
<property name="<Control>F3" type="string" value="workspace_3_key"/>
Il faut donc contourner ça, c'est tout simple:
Trouver le bloc:
<property name="<Control>F1" type="empty"/>
<property name="<Control>F2" type="empty"/>
<property name="<Control>F3" type="empty"/>
<property name="<Control>F4" type="empty"/>
<property name="<Control>F5" type="empty"/>
<property name="<Control>F6" type="empty"/>
<property name="<Control>F7" type="empty"/>
<property name="<Control>F8" type="empty"/>
<property name="<Control>F9" type="empty"/>
<property name="<Control>F10" type="empty"/>
<property name="<Control>F11" type="empty"/>
<property name="<Control>F12" type="empty"/>
et le faire précéder par
<code>
<!--
</code>
puis finir par
<code>
-->
</code>
Cela donne ça (je montre le début et la fin):
<!--
<property name="<Control>F1" type="empty"/>
<property name="<Control>F2" type="empty"/>
.../...
<property name="<Control>F11" type="empty"/>
<property name="<Control>F12" type="empty"/>
-->
Cela fonctionne après reboot de l'interface, mais toujours pas pour Ctrl-F1 et Ctrl-F2 ! C'est codé en dur ou quoi?
Si tu ne sais pas: demande; si tu sais: partage!
Hors ligne
#3 Le 18/02/2014, à 22:50
- rsuinux
Re : un fond d'écran différent par bureau sur XFCE4
j'ai trouvé comment résoudre le problème de la stabilité et des raccourcis F1 et F2:
La méthode n'est possible que parce que je suis seul sur ma machine!
Il faut mettre les caractères "<!--" et "-->" dans /etc/xdg/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml
de cette façon:
<!--
<property name="<Control>F1" type="string" value="workspace_1_key"/>
<property name="<Control>F2" type="string" value="workspace_2_key"/>
.../...
<property name="<Control>F11" type="string" value="workspace_11_key"/>
<property name="<Control>F12" type="string" value="workspace_12_key"/>
-->
tout en gardant les modifications citées dans les messages précédant.
Je suis en train de faire, parallèlement, un script d'installation. ce sera plus simple.
Si tu ne sais pas: demande; si tu sais: partage!
Hors ligne
#4 Le 20/02/2014, à 22:35
- rsuinux
Re : un fond d'écran différent par bureau sur XFCE4
script amélioré!
on peut demander (configuration dans le script même uniquement) à afficher une image particulière par bureau, ou une image aléatoire à chaque changement de bureau.
Les touches F1 à Fx selon le nombre de bureu fonctionne, et les touches 'Alt flèche droites' et 'Alt flèche gauche' aussi.
Reste à trouvé pour chaque clique dans le "changeur d'espace de travail" comment faire la même chose avec xfconf.
Si tu ne sais pas: demande; si tu sais: partage!
Hors ligne
#5 Le 01/03/2014, à 16:11
- rsuinux
Re : un fond d'écran différent par bureau sur XFCE4
nouvelle version:
#!/bin/bash
# -------------------------------------------------------------------------
# R. Suinot <remi@suinot.org>
# 23 Fev. 2014
# un fond d'écran différent quand on utilise la touche ctrl-Fx
# ou ctrl-alt-droite, ctrl-alt-gauche
# Utilisation:
# placer le script dans ~/bin/
# chmod +x ~/bin/xfce4-multi-walpaper.sh
# créer des liens correspondants à vos bureaux, autant de lien que de bureaux:
# ln -s ~/bin/xfce4-multi-walpaper.sh ~/bin/F1.sh
# ln -s ~/bin/xfce4-multi-walpaper.sh ~/bin/F2.sh
# etc...
# ln -s ~/bin/xfce4-multi-walpaper.sh ~/bin/Left.sh
# ln -s ~/bin/xfce4-multi-walpaper.sh ~/bin/Right.sh
#
# éditer à la main (je n'ai pas trouver comment le faire via l'utilitaire d'xfce)
# le fichier ~/.config/xfce4/xfconf/xfce-perchannel-xml
# mettre en commentaire les références F3, F4 ...
# Ce sont des lignes du type (commencez par '<--' et finissez par '-->')
# <property name="<Control>F3" type="string" value="workspace_3_key"/>
# et dans le même fichier remplacer les lignes
# <property name="<Primary><Super>F3" type="string" value="/home/remi/bin/F3"/>
# par
# <property name="<Primary>F3" type="string" value="/home/remi/bin/F3"/>
# pareil pour F4, ...
#
# -------------------------------------------------------------------------
# dépendances:
# notify-send (pour le débug si besoin)
# wmctrl (attention, celui ci compte les bureaux à partir de zéro)
# pour info: wmctrl -d = affiche les bureaux et une étoile devant celui actif
# -s 1 = se déplace sur le bureau n° 1
# -------------------------------------------------------------------------
###########################################################################
#### code:
### ramdom -> une image aléatoire à chaque changement de bureau
### nop -> une image définie pour chaque bureau
###########################################################################
# Déclarations de fonctions
###########################################################################
Changementbureau ()
{
# Nous supprimons le lien du fond d'écran défini en parametre standard (fait en premier via 'parametre du bureau')
rm $lien_fond_d_ecran
# et nous recréons le lien, même nom, avec une autre image comme source
ln -s $repertoire/$image $lien_fond_d_ecran
# xfce4, peux tu me rechager le bureau s'l te plait?
xfdesktop --reload
var1=$1
if [[ $var1 == *F1* ]]
then
# je m'en vais sur le bureau numéro zéro , bye bye!
a=0
elif [[ $var1 == *F2* ]]
then
a=1
elif [[ $var1 == *F3* ]]
then
a=2
elif [[ $var1 == *F4* ]]
then
a=3
elif [[ $var1 == *F5* ]]
then
a=4
elif [[ $var1 == *Left* ]]
then
a=0
elif [[ $var1 == *Right* ]]
then
if [ $b_actuel -eq $b_max ]
then
a=0
else
a=$(($b_actuel+1))
fi
else
# Si on arrive là, c'est que le script n'a pas été appelé comme il faut
notify-send "Commande= $appel / $# "
exit 1
fi
wmctrl -s $a
}
# Fin des fonctions
###########################################################################
###########################################################################
# Variables globales
code="ramdom"
param=$1
appel=$0
b_actuel=`wmctrl -d | grep \* | awk '{print $1}'`
# nombre de bureau:
b_max=`xfconf-query -c xfwm4 -p /general/workspace_count -v`
# b_max=`wmctrl -d | wc -l `
let b_max--
repertoire="$HOME/Images/Wallpapers"
lien_fond_d_ecran="$HOME/Images/fond-d-ecran.jpg"
image=""
# Fin des variables globales
###########################################################################
# debug:
# notify-send "Commande= $appel / $# "
# echo "param: $appel " >> /tmp/xfce4-prso.txt
if [[ $code -eq "ramdom" ]]
then
# une image aléatoirement à chaque changement de bureau
line=$(($RANDOM%`ls $repertoire | wc -l`))
line=$((line + 1))
image=""
# echo "line= "$line
while read tmp
do
# echo $tmp
echo "$tmp" | grep -qi "^$line"
if [ $? == 0 ]
then
image=$(echo $tmp | cut -f2 -d " ")
Changementbureau $appel $image
break
fi
done < <(ls $repertoire | nl)
# echo "image= "$image
else
# ici, chaque bureau a sa propre image
if [[ $appel == *F1* ]]
then
image=$repertoire/image-paysage-feerique-68-1920-1080.php.jpeg
elif [[ $appel == *F2* ]]
then
image=$repertoire/miyazaki_byou-1513408.jpg
elif [[ $appel == *F3* ]]
then
image=$repertoire/Le-Chateau-Ambulant.jpg
elif [[ $appel == *F4* ]]
then
image=$repertoire/paysage-manga-1.jpg
elif [[ $appel == *F5* ]]
then
image=$repertoire/borg_01.jpg
elif [[ $appel == *Left* ]]
then
image=$repertoire/ncc-94155.jpg
elif [[ $appel == *Right* ]]
then
image=$repertoire/scene-of-the-cartoon-nausicaa-c58c-diaporama.jpg
else
exit 0
fi
Changementbureau $appel $image
fi
exit 0
En espérant que cela vous amuse un peu.
Si tu ne sais pas: demande; si tu sais: partage!
Hors ligne
Pages : 1