web-dev-qa-db-fra.com

Fermer la fenêtre active du terminal

Savez-vous comment le faire? Je sais comment le faire depuis mon clavier (Alt + F4), je sais le faire avec ma souris (cliquez sur X), et je sais aussi que kill X devrait tuer le processus avec l'identifiant X (et killall Y devrait tuer le processus nommé Y). Mais je veux savoir comment tuer la fenêtre active du terminal.

Par conséquent, d'après ce que j'ai indiqué ci-dessus, une réponse valable serait également d'obtenir l'identifiant de la fenêtre active.

Pour le moment, j'implémente cette fonction depuis xte (en simulant Alt + F4), mais j'aimerais savoir s'il existe un moyen de ne pas impliquer l'installation d'une autre application. Merci à tous.

MODIFIER. Voici le script complet. Vous devez d’abord activer l'option "Afficher la souris lorsque vous appuyez sur Ctrl", puis vous ajoutez ce script aux commandes de CompizConfig et la liaison au coin supérieur droit. Lorsque vous touchez le coin supérieur droit, une petite notification apparaît autour de la souris. Si vous ne faites rien, la fenêtre active se fermera après 1 seconde. Toutefois, si vous touchez de nouveau le coin dans la seconde, la fenêtre active ne sera pas fermée.

xte 'key Control_R'; if [ -f ~/.fcont ]; then rm -f -r ~/.fcont; else touch ~/.fcont; sleep 1;  if [ -f ~/.fcont ]; then xkill -id `xprop -root _NET_ACTIVE_WINDOW | cut -d\# -f2`; rm -f -r ~/.fcont; fi fi

Notez que j'utilise toujours l'application xte nommée auparavant depuis this la question que j'ai posée il y a quelque temps n'a jamais reçu de réponse.

6

Et si vous voulez être vraiment poilu et éviter les applications qui ne sont pas installées par défaut:

xkill -id `xprop -root _NET_ACTIVE_WINDOW | cut -d\# -f2`

Encore une fois, cela semble fonctionner assez bien.

NOTE: Dans le cas de certaines applications (voir les commentaires), cela peut signifier que toutes les fenêtres d'une application sont fermées. gnome-terminal est l'une de ces applications mais terminator et xterm ne sont pas affectés. Je suggérerais que c'est plus un bogue (peut-être par conception) avec ces applications plutôt qu'un avec ma commande.

5
Oli

Une opération de "fermeture" de haut niveau utilisant wmctrl

La commande ci-dessous ferme également la fenêtre actuellement active à l'aide de la spécification EWMH, bien que nécessite l'installation d'un autre programme, ce que vous sembliez préférer éviter.

Détails

  • Il s'agit d'une opération "proche" de haut niveau. En d'autres termes, il envoie à l'application le même message lui demandant de fermer la fenêtre qui serait envoyée via la souris en cliquant sur le gadget "Fermer" ou le raccourci clavier.
  • Il n'émule pas de raccourci clavier, donc fonctionne quels que soient vos raccourcis clavier ou même si vous n'avez pas de raccourci configuré (ou probablement même pas configuré au clavier).

En conséquence, le comportement attendu est le suivant:

  • Il ne ferme que la fenêtre même qui est ciblée et non l'ensemble de l'application (testée avec xfce4-terminal, Chromium, Thunderbird).
  • En outre, cela donne à l’application une possibilité de réagir à l’événement de fermeture, comme demander une confirmation (confirmée avec Thunderbird avec une fenêtre dans laquelle un courrier est en cours d’écriture, et Firefox demander une confirmation avant de fermer une fenêtre avec plusieurs onglets ouverts), voire même ignorer. l'événement.

La commande

 wmctrl -c: ACTIVE: 

Référence

Depuis la page d'accueil du projet wmctrl - Un outil de ligne de commande pour interagir avec un gestionnaire de fenêtre X compatible EWMH/NetWM.

-c Ferme la fenêtre gracieusement.

et

La chaîne spéciale ": ACTIVE:" (sans les guillemets) peut être utilisée pour indiquer à wmctrl d'utiliser la fenêtre actuellement active pour l'action.

1
Stéphane Gourichon

J'utiliserais xdotool:

xdotool windowkill `xdotool getactivewindow`

Semble faire le travail rapidement et tranquillement.

1
Oli