« Commandeur de minuit », v. 4.8.19

Message
Author
User avatar
Argolance
Posts: 3767
Joined: Sun 06 Jan 2008, 22:57
Location: PORT-BRILLET (Mayenne - France)
Contact:

#16 Post by Argolance »

Mon script fonctionne comme suit : il interroge la base de données (BdD) des applis
actives en mémoire et :
-- s'il n'y a aucune mention d'un « mc » dans cette BdD, le script lance MC;
-- si cette BdD contient mention d'un mc en usage dans l'ordi, le script ferme MC.
C'est plus clair ?
J'entends bien mais ce que j'essaie de te dire c'est que le script "allume" bien l'application mais ne "l'éteint" pas, du moins chez moi?
S'il ne faut qu'une instance de mc, pourquoi ne pas en empêcher une deuxième par un simple exit (avec au besoin un message genre Xdialog ou même un beep d’avertissement), plutôt qu'un kill radical ou tout autre méthode douce d'élimination? La meilleure façon de fermer un programme n'est-elle pas encore de cliquer sur "Quitter" ou sur la petite croix à droite de la barre de titre?
Tous les usagers n'incluent pas les mêmes paramètres dans .Xdefaults ou .Xresources.
Le développeur précise des paramètres sur sa ligne de commande pour être sûr que
l'appli les utilisera en vue d'un certain résultat.
Je disais ça à simple titre indicatif!

musher0
Posts: 14629
Joined: Mon 05 Jan 2009, 00:54
Location: Gatineau (Qc), Canada

#17 Post by musher0 »

Je vois.

Remplace les lignes 10, 11 et 12 de mon script par celles-ci et ça devrait fonctionner.

Code: Select all

	kill -s 9 `psawk`
#	wID="`wmctrl -l | awk '$4=="mc" { print $1 }'`"
#	wmctrl -i -a $wID
(Si tu n'as pas l'utilitaire wmctrl, cela expliquerait le pépin.)
musher0
~~~~~~~~~~
"You want it darker? We kill the flame." (L. Cohen)

User avatar
Argolance
Posts: 3767
Joined: Sun 06 Jan 2008, 22:57
Location: PORT-BRILLET (Mayenne - France)
Contact:

#18 Post by Argolance »

(Si tu n'as pas l'utilitaire wmctrl, cela expliquerait le pépin.)
wmctrl est bien présent sur ma machine.

Icône mc.desktop sur mon bureau, la méthode kill allume et éteint le programme, comme un commutateur. Mais avec wmctr cela ne marche pas. mc se lance bien mais ne se ferme pas.
Bon je relève ce "pépin" uniquement pour quelqu'un de tes utilisateurs qui se retrouverait dans la situation.
Cette idée de bouton commutateur est singulière.
Elle peut, dans certains cas et pour certains programmes être vraiment très utile (comme lorsqu'il s'agit de lancer ponctuellement un service, puis de l'interrompre et de le relancer d'un simple clic). Et encore, à condition que le bouton soit sur le bureau, car à partir du menu, ça a beaucoup moins d'intérêt, sinon aucun, du moins à mon avis, évidemment.
En tout cas, cette idée peut aussi ne pas forcément convenir à tous les utilisateurs.
Toujours à titre indicatif (pas parce que c'est "mieux", hein, c'est bien entendu?) parce que ça correspond à ma propre configuration et aux préréglages par défaut de urxvt, j'opte pour:

Code: Select all

#!/bin/sh

#VERSION="4.8.19"

instance="`ps | awk '$4=="mc" { print $1 }'`"
[ "$instance" ] && beep -l 100 -f 400 && exit

   urxvt -g 100x40 -e mc /mnt/home /root &
qui émet juste un bip si on tente de lancer mc alors qu'il est déjà ouvert.
Si on veut un message en plus (ou à la place):

Code: Select all

[ "$instance" ] && Xdialog --title " v$VERSION" --beep --icon /usr/local/lib/X11/pixmaps/error.png --msgbox "$(gettext 'Midnight Commander is already running...')" 0 0 && exit
Et puis:

Code: Select all

Terminal=false
dans le fichier desktop, sinon y a deux fenêtres de console qui s'ouvrent.

Cordialement.
Attachments
171118_163042_806x536_easyshot.jpg
(149.9 KiB) Downloaded 103 times

musher0
Posts: 14629
Joined: Mon 05 Jan 2009, 00:54
Location: Gatineau (Qc), Canada

#19 Post by musher0 »

Salut, Argolance.

Si tu veux suggérer un 2e ou même un 3e scipt de lancement pour MC, libre à toi.

Le développeur ne peut pas deviner ce qu'il y a dans les fichiers .Xdefaults et
.Xresources d'un utilisateur. C'est pourquoi les lignes de commande avec
paramètres de configuration ont toujours leur place et ne doivent jamais être
considérées comme des erreurs. Selon moi, il est même préférable de livrer un
produit avec de telles lignes pour s'assurer du résultat voulu.

Pour ma part, j'ai refait l'archive *.pet en corrigeant les faux pas et oublis notés
ci-dessus. J'ai totalement éliminé du script la solution avec wmctrl en fin de compte.

En attendant de pouvoir entrer avec xenialPup7* par ftp dans le dépôt qu'augras
met si aimablement à ma disposition, voici, valide pour les prochains 30 jours,
l'archive corrigée :
mc-4.8.19_exec1.pet http://www95.zippyshare.com/v/F4Xmu66R/file.html

Merci, Argolance, de ces échanges qui ont permis d'améliorer le produit.

À+

~~~~~~~~~~~~~
* (Il faut je sois absolument dans DPupStretch-7fr pour téléverser des archives
dans le dépôt. Je vais en parler à augras.)

~~~~~~~~~~~~~
Au sujet de

Code: Select all

#!/bin/sh
#VERSION="4.8.19"
instance="`ps | awk '$4=="mc" { print $1 }'`"
[ "$instance" ] && beep -l 100 -f 400 && exit
   urxvt -g 100x40 -e mc /mnt/home /root &
ce n'est pas parce que c'est toi, on voit ça souvent chez BarryK et d'autres, mais
j'ai toujours trouvé que ce genre de formule avec « && exit » était une entorse à
la logique.

Tu pourrais avoir une forme
if...then...else...fi

Code: Select all

#!/bin/sh
#VERSION="4.8.19"
instance="`ps | awk '$4=="mc" { print $1 }'`"
if [ "$instance" ];then
     beep -l 100 -f 400
else
     urxvt -g 100x40 -e mc /mnt/home /root &
fi
ou

[ "$variable" ] && telle chose || autre chose.

Code: Select all

#!/bin/sh
#VERSION="4.8.19"
instance="`ps | awk '$4=="mc" { print $1 }'`"
[ "$instance" ] && beep -l 100 -f 400 || urxvt -g 100x40 -e mc /mnt/home /root &
Ces formes permettent de sortir normalement du « raisonnement » sans y couper
court.
Last edited by musher0 on Fri 01 Dec 2017, 00:32, edited 1 time in total.
musher0
~~~~~~~~~~
"You want it darker? We kill the flame." (L. Cohen)

User avatar
Argolance
Posts: 3767
Joined: Sun 06 Jan 2008, 22:57
Location: PORT-BRILLET (Mayenne - France)
Contact:

#20 Post by Argolance »

Bonsoir musher0,
Si tu veux suggérer un 2e ou même un 3e scipt de lancement pour MC, libre à toi.
Je n'avais pas autre chose en tête: suggérer pour information et non pas vouloir substituer un script à un autre! Les points de vue peuvent se compléter sans se contredire.
Merci, Argolance, de ces échanges qui ont permis d'améliorer le produit.
C'est un plaisir, en espérant qu'il soit partagé? En tout cas utile...
J'utilise indifféremment le if et consorts, ainsi que les && et ||, des fois les deux. J'ai en tout cas remarqué que les comportements ne sont pas les mêmes, malgré un semblant d'équivalence. Les && ont cet avantage je crois, de ne continuer la commande que si celle qui précède est exécutée avec succès, ce qui n'est pas le cas avec if.
Bon, je n'ai pas de leçon à donner mais bien plutôt à prendre (mais pas à "recevoir"! :wink:), n'étant pas un expert, loin de là et n'ayant d'ailleurs aucune formation, si ce n'est celle du "on-the-job"! 8)
[EDIT]: n'empêche, et si je peux me permettre, le fait de "flinguer" une application sans sommation est, à moins d'y être contraint, une sorte "d'entorse à la logique" qui n'a jamais été très recommandée! :roll:
Au bout du compte, l'important reste que ça fonctionne, n'est-ce-pas?

À la tienne, Étienne et à la revoyure! :D

musher0
Posts: 14629
Joined: Mon 05 Jan 2009, 00:54
Location: Gatineau (Qc), Canada

#21 Post by musher0 »

Rebonjour, la compagnie !

Voici un 2e script pour lancer Midnight Commander, inspiré de la suggestion
d'Argolance ci-dessus.

Sur mon ordi, rien à faire, beep ne fonctionne pas.

Alors j'ai concocté une onde carrée avec sox. Rien de bien original, les recettes se
trouvent ici et là dans Internet.

Code: Select all

sox -n notette7.wav synth 0.20 square 111
(C'est un la en clé de fa, 1er espace, que peut chanter un bariton ou une basse,
mais avec un vague timbre de clarimette. Oui-oui, de « clarimette ». :lol: Didier a
fait bien pire sur le fil DeepL !!!) MDR

Ensuite, à l'exécution, on module ce son avec l'utilitaire play de sox:

Code: Select all

play notette7.wav echos 0.8 0.7 700.0 0.25 900.0 0.3 chorus 0.7 0.9 55.0 0.4 0.25 2.0 -t
en se servant des effets chorus et echos.

Il faut, bien sûr, avoir le progiciel sox sur son Toutou. (2e de la liste)
http://augras.eu/puppy_linux/?dir=mushe ... et_Musique

Sinon, aplay jouera ce court la grave sans effet sonore.

Finalement, il faut aemenu. Un petit menu pour fermer MC s'affichera si MC est
en activité. (Voir illustration.)

Alors voici :

Code: Select all

#!/bin/sh
# mc2.sh # Pour lancer Midnight Commander
# Dép. : / Dep.: awk, aemenu ordinaire, aplay.  # Optionnel : / Optional: play (from / de sox)
#
# © Christian L'Écuyer, Gatineau (Qc), Canada, 30 août 2016 # (Alias musher0 [forum Puppy].)
# Rév.  15 sept. 2016; 19 et 27 févr. 2017, 21 nov. 2017.
################# # https://opensource.org/licenses/GPL-3.0
#    This program is free software: you can redistribute it and/or modify
#    it under the terms of the GNU General Public License as published by
#    the Free Software Foundation, either version 3 of the License, or
#    (at your option) any later version.
#    	This program is distributed in the hope that it will be useful,
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#    GNU General Public License for more details.
#    	You should have received a copy of the GNU General Public License
#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
##########
#    Ce programme est libre : vous pouvez le redistribuer ou modifier
#    selon les termes de la Licence Publique Générale GNU publiée par la
#    Free Software Foundation (v. 3 ou toute version ultérieure choisie par
#    vous).
#        Ce programme est distribué dans l'espoir qu'il sera utile, mais SANS
#    AUCUNE GARANTIE, ni explicite ni implicite, y compris des garanties de
#    commercialisation ou d'adaptation à un but spécifique. Pour obtenir plus
#    de détails, veuillez vous reporter au texte de cette licence à
#    https://opensource.org/licenses/GPL-3.0 pour le texte officiel, à
#    http://www.linux-france.org/article/these/gpl.html pour une traduction et à
#    https://fr.wikipedia.org/wiki/Licence_publique_générale_GNU pour une
#    explication en français.
################
psawk () { ps | awk '$4=="mc" { print $1 }'; }

if [ "`psawk`" ];then # Si actif / If active
	if [ -f /usr/bin/sox ];then
		play -q /usr/share/audio/notette5.wav echos 0.8 0.7 700.0 0.25 900.0 0.3 chorus 0.7 0.9 55.0 0.4 0.25 2.0 -t &
	else
		aplay /usr/share/audio/notette5.wav &
	fi

	echo -e "	cmd \"   _________________________\" \" \"
menu \"-=> MC est en activité. <=- \"
	cmd \" \" \" \"
	cmd \"Si oui, cliquer sur la ligne ci-contre.\" \" \"
#	cmd \"          sinon, cliquer ailleurs.\" \" \"
	cmd \" \" \" \"
end
cmd \"            Fermer MC ?           \" \"killall -q mc\"
cmd \"         -------------------\" \" \"" > /tmp/menuMC # -s 9 `psawk`\""
	aemenu -rc /tmp/menuMC 2>/dev/null
	rm -f /tmp/menuMC

else # Sinon
	FnT="fn xft:Monaco:pixelsize=14:antialias=true:autohint=true"
# Monaco # LiberationMono # DejaVuSansMono # ok
	FadE="fade 70 -fadecolor "#94A495""
	TrnsP="tr -sh 45 -tint bisque4"
	ColoR="fg cornsilk -bg SaddleBrown -cr green"
	IcoN="icon /usr/share/icons/MidnightCommander.png"
	HoriZ="`xwininfo -root | awk '$1=="Width:" { print $2/6 }'`"
	GeoM="g 133x37+$HoriZ+110";BrdR="sr +st -b 20"

#	wmctrl -s 1 # optionnel
# Avec transparence :
	urxvt +sb -$IcoN -$FnT -$TrnsP -$GeoM -$ColoR -bc -$BrdR +tcw -e mc /mnt/home /root/.wmx
# "$@"
# Sans :
#	urxvt +sb -$IcoN -$FnT +tr -$GeoM -$ColoR -bc -$BrdR +tcw -e mc /mnt/home /root/.wmx
# "$@"
fi
Bonne fin de journée !
Attachments
mc2.sh.zip
Le script ci-dessus, zippé. Déballer dans /root/my-applications/bin et rendre exécutable.
(1.83 KiB) Downloaded 57 times
Fermer-MC-2.jpg
(135.19 KiB) Downloaded 60 times
notette5.wav.zip
Déballer dans /usr/share/audio.
(1.3 KiB) Downloaded 56 times
musher0
~~~~~~~~~~
"You want it darker? We kill the flame." (L. Cohen)

did18
Posts: 417
Joined: Wed 19 Nov 2014, 22:27

#22 Post by did18 »

Bonjour
Didier a fait bien pire sur le fil DeepL !!!) MDR
Ce n'est pas de ma faute, c'est ma "boite à 1" qui a fait des sienne...
Elle a probablement attrapé un coup de froid, heu... Un virus... ça semble logique ne cette saison.

Bonne journée.

musher0
Posts: 14629
Joined: Mon 05 Jan 2009, 00:54
Location: Gatineau (Qc), Canada

#23 Post by musher0 »

did18 wrote:Bonjour
Didier a fait bien pire sur le fil DeepL !!!) MDR
Ce n'est pas de ma faute, c'est ma "boite à 1" qui a fait des sienne...
Elle a probablement attrapé un coup de froid, heu... Un virus... ça semble logique ne cette saison.

Bonne journée.
:lol: ;)
musher0
~~~~~~~~~~
"You want it darker? We kill the flame." (L. Cohen)

Post Reply