Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 15/04/2019, à 22:27

abecidofugy

[Résolu] Fermer plusieurs programmes en ligne de commande

Salut,

Je suis tombé sur un fil du forum parlant de wmctrl pour fermer un programme

Je fais donc un :

wmctrl -c firefox dolphin amarok kontact soundkonverter kate

Mais seul Firefox se ferme.

Mon terminal est en zsh, mais je ne pense pas que ça vienne de ça comme j’ai mis la commande dans un script bash.

J’ai consulté le man, mais je ne trouve rien dedans… Du coup je me demande si cette commande est celle qu’il me faut… ?

Merci de votre attention.

Dernière modification par abecidofugy (Le 15/04/2019, à 23:11)

Hors ligne

#2 Le 15/04/2019, à 22:53

melixgaro

Re : [Résolu] Fermer plusieurs programmes en ligne de commande

Salut,

Ben peut-être que ça n'accepte qu'une seule fenêtre à la fois. Tu dois boucler sur tes programmes et appliquer wmctrl à chacun.

for window in firefox truc muche
do
  wmctrl -c "${window}"
done

PS : Je suis surpris que ça marche avec le nom du programme directement. Ne faut-il pas passer l'identifiant de la fenêtre à wmctrl ?


Linux depuis ~2007. Xubuntu seulement.

Hors ligne

#3 Le 15/04/2019, à 23:11

abecidofugy

Re : [Résolu] Fermer plusieurs programmes en ligne de commande

Merci, ça marche avec ta boucle smile

Hors ligne

#4 Le 16/04/2019, à 00:23

kamaris

Re : [Résolu] Fermer plusieurs programmes en ligne de commande

melixgaro a écrit :

Je suis surpris que ça marche avec le nom du programme directement. Ne faut-il pas passer l'identifiant de la fenêtre à wmctrl ?

D'après la page de manuel, il suffit que le nom de la fenêtre (tel que le donne wmctrl -l) contienne le mot que tu lui donnes dans wmctrl -c mot, sans tenir compte de la casse.
Par contre, c'est plutôt la commande kill qu'on utilise pour terminer les programmes en général.

Hors ligne

#5 Le 16/04/2019, à 01:06

Watael

Re : [Résolu] Fermer plusieurs programmes en ligne de commande

en bash :

xargs -n1 wmctrl -c <<<"firefox dolphin amarok kontact soundkonverter kate"

?


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#6 Le 16/04/2019, à 02:03

melixgaro

Re : [Résolu] Fermer plusieurs programmes en ligne de commande

kamaris a écrit :

D'après la page de manuel, il suffit que le nom de la fenêtre (tel que le donne wmctrl -l) contienne le mot que tu lui donnes dans wmctrl -c mot, sans tenir compte de la casse.
Par contre, c'est plutôt la commande kill qu'on utilise pour terminer les programmes en général.

ah donc si tu es avec Firefox sur une page à propos de l'éditeur kate, en faisant

wmctrl -c kate

tu fermes firefox ?

Sinon, pour une appli graphique, wmctrl peut permettre une fermeture plus propre que kill -TERM.


Linux depuis ~2007. Xubuntu seulement.

Hors ligne

#7 Le 16/04/2019, à 08:00

serged

Re : [Résolu] Fermer plusieurs programmes en ligne de commande

kamaris a écrit :

Par contre, c'est plutôt la commande kill qu'on utilise pour terminer les programmes en général.

kill (et pkill, killall...) tue la tâche, alors que wmctrl ferme la fenêtre :
Par exemple un :

pkill firefox

Va fermer firefox "salement", alors que

wmctrl -c firefox

va le faire proprement (FF posera la question "peut-on fermer tous les onglets" par exemple).


LinuxMint Vera Cinnamon et d'autres machines en MATE, XFCE... 20.x , 21.x ou 19.x
Tour : Asus F2A55 / AMD A8-5600K APU 3,6GHz / RAM 16Go / Nvidia GeForce GT610 / LM21.1 Cinnamon
Portable : LDLC Mercure MH : Celeron N3450 /RAM 4Go / Intel HD graphics 500 i915 / biboot Win 10 (sur SSD) - LM21.1 MATE (sur HDD)

En ligne

#8 Le 16/04/2019, à 08:28

abecidofugy

Re : [Résolu] Fermer plusieurs programmes en ligne de commande

Watael a écrit :

en bash :

xargs -n1 wmctrl -c <<<"firefox dolphin amarok kontact soundkonverter kate"

?

Oui ça marche aussi. Merci.

Hors ligne

#9 Le 16/04/2019, à 08:55

kamaris

Re : [Résolu] Fermer plusieurs programmes en ligne de commande

melixgaro a écrit :

ah donc si tu es avec Firefox sur une page à propos de l'éditeur kate, en faisant

wmctrl -c kate

tu fermes firefox ?

Ben oui, voilà ce que dit man wmctrl :

<WIN> : This argument specifies a window that is the target of an action. By default the argument is treated as if were a string, and windows are examined until one is found with a title the contains the specified string as a substring. The substring matching is done in a case insensitive manner.

Donc si tu as kate d'ouvert et que wmctrl tombe dessus avant Firefox, alors il fermera kate, mais si kate n'est pas ouvert ou que wmctrl tombe dessus après, il fermera Firefox. Par exemple moi, après une recherche « kate » dans DuckDuckGo j'ai :

$ wmctrl -l
0x02e00010  1 mon_ordi kate at DuckDuckGo - Mozilla Firefox

Et si je fais wmctrl -c KaTe, il essaie bien de fermer Firefox (mais il ne le fait car plusieurs onglets wink ).

Hors ligne

#10 Le 16/04/2019, à 09:00

kamaris

Re : [Résolu] Fermer plusieurs programmes en ligne de commande

serged a écrit :

kill (et pkill, killall...) tue la tâche, alors que wmctrl ferme la fenêtre

Oui, précisément, or @abecidofugy disait :

abecidofugy a écrit :

Je suis tombé sur un fil du forum parlant de wmctrl pour fermer un programme

D'où ma remarque.

Hors ligne

#11 Le 16/04/2019, à 11:47

melixgaro

Re : [Résolu] Fermer plusieurs programmes en ligne de commande

merci kamaris d'avoir testé, j'avais la flemme hier soir vue l'heure… wink


Linux depuis ~2007. Xubuntu seulement.

Hors ligne