#1 Le 02/01/2013, à 01:48
[Résolu]Voyager, aide pour changement dynamique des bureaux
Merci à tous ceux qui voudront bien m'apporter de l'aide concernant le problème évoqué ici dont voici un extrait
Déjà si l'un de vous pourrais m'orienter pour le bug du terminal. Je récupère le PID de l'application avec
pidranger=$((ps -x | grep 'ranger') | sed 's/^ //' | cut -d " " -f1)Pas de souci, ça fonctionne sans terminal mais quand un terminal est ouvert avant, plus moyen de trouver le PID. J'ai cru comprendre que c'était un problème de processus père/fils, aussi si quelqu'un à une idée de comment récupérer proprement le PID du processus fils.
A ceux qui m'apporteront leur aide, je n'aurai pas beaucoup le temps, ne le prenez pas mal si je mets du temps à répondre.
@rodofr
Encore merci pour m'avoir fais découvrir Xfce. Cet environnement permet plein de chose et c'est un formidable terrain d'apprentissage pour le bash. Donc pas grave si tu trouves que ce que j'essaye de faire ne sert à rien, en attendant ça me permet de progresser en script même si j'ai beaucoup de difficulté (pas tous l'esprit aussi vif que toi Didier-T
).
Dernière modification par metalux (Le 13/01/2013, à 15:30)
Voyager 12.04 LTS (Xubuntu) sur HP Pavilion t728.fr
Precise Pangolin 64 bits sur Acer aspire 5738ZG
Faîtes la mise à jour de vos P.P.A. automatiquement
Hors ligne
#2 Le 02/01/2013, à 06:44
Re : [Résolu]Voyager, aide pour changement dynamique des bureaux
Bonjour,
Peut-être ceci
pidranger=$(ps x | grep 'ranger'|sed 's/^ //' | cut -d " " -f1)ou
pidranger=$(ps x | awk '/ranger/{print $1}'):
Hors ligne
#3 Le 02/01/2013, à 07:47
Re : [Résolu]Voyager, aide pour changement dynamique des bureaux
ou même ceci
pidranger=$(ps cx | awk '/ranger/{print $1}')l'option c limite les informations transmises par ps au nom de l'application lancé, donc plus de donnée parasite lié aux ligne de commande.
Hors ligne
#4 Le 02/01/2013, à 07:53
Re : [Résolu]Voyager, aide pour changement dynamique des bureaux
On a aussi :
pidranger=$(pgrep ranger)Hors ligne
#5 Le 02/01/2013, à 07:55
Re : [Résolu]Voyager, aide pour changement dynamique des bureaux
On a aussi :
pidranger=$(pgrep ranger)
jolie, je connaissais pas ![]()
J'adopte ![]()
Dernière modification par Didier-T (Le 02/01/2013, à 07:57)
Hors ligne
#6 Le 02/01/2013, à 09:18
Re : [Résolu]Voyager, aide pour changement dynamique des bureaux
pingouinux a écrit :On a aussi :
pidranger=$(pgrep ranger)jolie, je connaissais pas
J'adopte
pgrep est quand plus pratique (et plus joli) qu'un ps|grep ! à utiliser sans modération !
Linux-Mint Maya 64 Cinnamon sur Toshiba Satellite P200-1BY. Linux-Mint Nadia 64 Cinnamon sur Compaq Presario SR5617FR
Hors ligne
#7 Le 03/01/2013, à 21:17
Re : [Résolu]Voyager, aide pour changement dynamique des bureaux
Merci pour vos réponse, en fait elles m'ont surtout permises de voir que mon problème ne vient apparemment pas de là. J'avais essayé un peu de tout dont l'usage de pgrep et j'avais retenu ps -x | grep tout simplement car le retour est détaillé et me permet de filtrer sur un mot du retour et pas forcément sur le nom de l'application. Je n'étais pas complètement à côté de la plaque et pgrep est effectivement le plus approprié (voire pidof).
Donc retour à zéro, nouveau problème ![]()
Je vais reprendre dans les jours prochains sur une autre base en récupérant les infos avec xwininfo. Suite à la remarque de ljere sur le topic dédié à Voyager 12.10, j'ai décidé de répartir l'ouverture de ranger,Moc et terminal sur 3 bureaux différents tout en gardant la possibilité de les garder ouverts en même temps. voici l'ébauche 2 scripts, j'ai commenté le 1er mais le 2ème est identique:
#!/bin/bash
# License GPL
# by rodofr Live Voyager
# Modified by metalux for dynamic change wallpapers
# Display the action selector
bureau=~/.scripts/Wall/wall3
#######Teste si Ranger est ouvert et le ferme si c'est le cas
xwininfo -name 'Voyager File Manager'
if [ $? -eq 0 ];then
wmctrl -c 'Voyager File Manager'
else
########sinon bascule sur le bureau 3 et l'ouvre
wmctrl -s2
wall="xfconf-query -c xfce4-desktop -p \"/backdrop/screen0/monitor0/image-path\" -s \"/usr/share/xfce4/backdrops/Wall-003.jpeg\""
sed -i 's/^xfconf/#xfconf/' $bureau
sed -i "/^#xfconf/a $wall" $bureau
$bureau
xfce4-terminal --title="Voyager File Manager" --maximize --hide-menubar --hide-borders -x "ranger"
#######Le script est alors en pause et le code qui suit se déroule que si on ferme ranger.
sed -i '/^xfconf/d' $bureau
sed -i 's/^#xfconf/xfconf/' $bureau
$bureau
fi
exit 0#!/bin/bash
# License GPL
# by rodofr Live Voyager
# Modified by metalux for dynamic change wallpapers
# Display the action selector
bureau=~/.scripts/Wall/wall2
xwininfo -name 'Voyager Terminal'
if [ $? -eq 0 ];then
wmctrl -c 'Voyager Terminal'
else
wmctrl -s1
wall="xfconf-query -c xfce4-desktop -p \"/backdrop/screen0/monitor0/image-path\" -s \"/usr/share/xfce4/backdrops/Wall-008.jpeg\""
sed -i 's/^xfconf/#xfconf/' $bureau
sed -i "/^#xfconf/a $wall" $bureau
$bureau
xfce4-terminal --title="Voyager Terminal" --geometry 1920x25 --hide-menubar --hide-borders
sed -i '/^xfconf/d' $bureau
sed -i 's/^#xfconf/xfconf/' $bureau
$bureau
fiPas de souci, tout fonctionne correctement,SAUF, si l'un des 2 scripts est déjà lancé. Dans ce cas, le code devant se déroulé uniquement après la fermeture semble ne pas se faire ou se faire avant même la fermeture de l'application. Une idée???
Voyager 12.04 LTS (Xubuntu) sur HP Pavilion t728.fr
Precise Pangolin 64 bits sur Acer aspire 5738ZG
Faîtes la mise à jour de vos P.P.A. automatiquement
Hors ligne
#8 Le 03/01/2013, à 22:09
Re : [Résolu]Voyager, aide pour changement dynamique des bureaux
Bonsoir,
Ton problème se produit-il quand tu lances script1 puis script2, ou script1 puis de nouveau script1 ?
Remarque :
Tu peux remplacer
xwininfo -name 'Voyager File Manager'
if [ $? -eq 0 ];then
wmctrl -c 'Voyager File Manager'
else
………par
if xwininfo -name 'Voyager File Manager'; then
wmctrl -c 'Voyager File Manager'
else
………Hors ligne
#9 Le 03/01/2013, à 23:00
Re : [Résolu]Voyager, aide pour changement dynamique des bureaux
Ton problème se produit-il quand tu lances script1 puis script2, ou script1 puis de nouveau script1 ?
Script 1 lance ranger avec son fond d'écran dédié, puis à nouveau script 1, ranger se ferme et le fond d'écran du bureau3 est bien restauré. Comportement souhaité.
Script 1 lance ranger avec son fond d'écran dédié, puis script2, le bureau bascule sur bureau2 et le terminal s'ouvre mais le fond d'écran reste celui du bureau 2 au lieu du fond d'écran associé au terminal. J'ai ajouté un sleep 20 juste avant la fin du code comme cela
xfce4-terminal --title="Voyager Terminal" --geometry 1920x25 --hide-menubar --hide-borders
sleep 20
sed -i '/^xfconf/d' $bureau
sed -i 's/^#xfconf/xfconf/' $bureau
$bureau
fiJ'ai pu vérifié les changements dans le script wall3 déterminé par la variable bureau au début du script, et maintenant je suis sûr que le script ne se met pas en pause après le lancement de l'application si l'autre script est déjà en cours d'exécution.Le fond d'écran souhaité s'affiche bien dans ce cas pendant 20 secondes avant de changer.
C'est le même problème que lorsque je laissais ranger et terminal sur le même bureau. Comme je tuais un avant de lancer l'autre, il n'y avais qu'un terminal d'ouvert et çà fonctionnait. Si je lançais un terminal avant, le code continuait jusqu'à la fin, alors que je croyais que je récupérais mal le Pid.
Pour la remarque, je note et t'en suis reconnaissant, d'ailleurs j'utilise déjà des enseignements que tu m'a transmis sur un autre topic.
Voyager 12.04 LTS (Xubuntu) sur HP Pavilion t728.fr
Precise Pangolin 64 bits sur Acer aspire 5738ZG
Faîtes la mise à jour de vos P.P.A. automatiquement
Hors ligne
#10 Le 04/01/2013, à 09:12
Re : [Résolu]Voyager, aide pour changement dynamique des bureaux
J'ai trouvé ça, peut-être que je peux mettre mon code de fin dans une fonction et utiliser la commande trap pour l'appeler à la fermeture de la fenêtre. L'un de vous connaît cette commande et comment l'utiliser?
J'ai fais un man trap mais rien, je suppose que ça se trouve dans le man bash. Y-a-t-il moyen de lancer man bash et de se rendre directement à un endroit donné du manuel en filtrant sur un mot comme trap dans ce cas?
Voyager 12.04 LTS (Xubuntu) sur HP Pavilion t728.fr
Precise Pangolin 64 bits sur Acer aspire 5738ZG
Faîtes la mise à jour de vos P.P.A. automatiquement
Hors ligne
#11 Le 04/01/2013, à 09:49
Re : [Résolu]Voyager, aide pour changement dynamique des bureaux
Bonjour,
trap est une "shell builtin command" de bash. Pour voir directement son utilisation, sans passer par man bash :
help trapVoici quelques exemples d'utilisation.
Ajouté :
Dans script1, par exemple, si tu fermes 'Voyager File Manager', tu sors du script sans rien faire d'autre. Est-ce volontaire ?
Dernière modification par pingouinux (Le 04/01/2013, à 09:53)
Hors ligne
#12 Le 04/01/2013, à 20:19
Re : [Résolu]Voyager, aide pour changement dynamique des bureaux
Pour script 1, oui c'est volontaire de ne rien mettre d'autre. Je suis obligé de laisser à la fin les commandes qui rétablissent le fond d'écran du bureau car autrement la fermeture de la fenêtre par la croix ou alt+F4 n'a plus le même comportement que la fermeture par le script.Si le script est lancé une première fois, il exécute les commandes jusqu'à l'ouverture de ranger(renommé Voyager file manager pour l'occasion) et se met en pause. Quand on le lance une seconde fois, il détecte que ranger est ouvert et ferme celui-ci et alors le 1er lancement du script exécute les commandes de fin. Si un terminal est déjà ouvert, il n'attend pas la fermeture de la fenêtre pour continuer les commandes et c'est bien là le problème. C'est comme si j'avais ajouté & à la fin de la ligne d'ouverture de ranger.
Pour le manuel je faisais l'inverse, soit trap --help et je n'avais aucun détail. Maintenant à voir si je comprends bien car il n'y a pas de pages Fr
. A priori.
Edit: trap sert à exécuter des commandes en fonction de signal reçu par le script et non par une fenêtre choisie, donc je ne penses pas que ça me soit utile.
.
Dernière modification par metalux (Le 05/01/2013, à 08:58)
Voyager 12.04 LTS (Xubuntu) sur HP Pavilion t728.fr
Precise Pangolin 64 bits sur Acer aspire 5738ZG
Faîtes la mise à jour de vos P.P.A. automatiquement
Hors ligne
#13 Le 06/01/2013, à 13:36
Re : [Résolu]Voyager, aide pour changement dynamique des bureaux
Finalement je me suis résigné à utiliser une boucle pour surveiller l'état de la fenêtre,ouverte ou fermée. Celle-ci ne sert que si il y a déjà un terminal d'ouvert, dans le cas contraire, le script est en pause tant que la fenêtre de Ranger n'est pas fermée. Je voulais éviter cette façon de faire car elle m'a été déconseillée par Didier-T, et qu'il est à priori préférable d'utiliser un autre langage pour ce type d'usage afin de limiter la consommation CPU.
Voici le script modifié et largement commenté:
#!/bin/bash
# License GPL
# by rodofr Live Voyager
# Modified by metalux for dynamic change wallpapers
# Display the action selector
bureau=~/.scripts/Wall/wall3
#######Teste si Ranger est ouvert et le ferme si c'est le cas
if xwininfo -name 'Voyager File Manager';then
wmctrl -c 'Voyager File Manager'
else
########sinon bascule sur le bureau 3
wmctrl -s2
########et modifie le script wall3 qui gère l'affichage du fond d'écran de sorte que celui-ci soit celui choisi lors de l'ouverture de ranger.
wall="xfconf-query -c xfce4-desktop -p \"/backdrop/screen0/monitor0/image-path\" -s \"/usr/share/xfce4/backdrops/Wall-003.jpeg\""
sed -i 's/^xfconf/#xfconf/' $bureau
sed -i "/^#xfconf/a $wall" $bureau
$bureau
########Lance ranger
xfce4-terminal --title="Voyager File Manager" --maximize --hide-menubar --hide-borders -x "ranger"
#######1-Pas de terminal ouvert:Le script est alors en pause et le code qui suit se déroule que si on ferme ranger.###########
#######2-Un terminal ouvert: Le script continue et la boucle suivante attend la fermeture de la fenêtre pour continuer le script##########
while xwininfo -name 'Voyager File Manager'
do
sleep 1
done
########Rétabli le fond d'écran du bureau 3
sed -i '/^xfconf/d' $bureau
sed -i 's/^#xfconf/xfconf/' $bureau
$bureau
########Sortie de la boucle if/then et fin du script
fi
exit 0Merci pour votre aide et surtout pour m'avoir ouvert les yeux que je faisais fausse route sur l'origine du bug.
Dernière modification par metalux (Le 13/01/2013, à 15:40)
Voyager 12.04 LTS (Xubuntu) sur HP Pavilion t728.fr
Precise Pangolin 64 bits sur Acer aspire 5738ZG
Faîtes la mise à jour de vos P.P.A. automatiquement
Hors ligne
Pages : 1
- Accueil
- » Forum
- » Terminal, scripts et ligne de commande
- » [Résolu]Voyager, aide pour changement dynamique des bureaux
