Une seule instance du terminal GNOME?


8

J'aimerais savoir ou il est possible de configurer le terminal GNOME de manière à ce que lorsque j'ouvre le terminal et qu'il y ait déjà une instance ouverte, il affiche cette instance et n'en ouvre pas une toute nouvelle.


quelle version d'ubuntu utilisez-vous et quel environnement? Je demande, parce que ce que vous décrivez est la configuration par défaut dans Unity et gnome-shell.
martin

J'utilise Ubuntu 11.10 avec Unity-2D. Je n'ai pas fait une installation propre mais une mise à niveau à partir de 11.04.
Humeur

Utilisez-vous Ctrl + Alt + T comme raccourci?
int_ua

Oui, c'est le cas. Je démarre un terminal en tapant «ter» enter »dans Kupfer. Ce sont les 2 méthodes que j'utilise. Parce que je ne regarde pas trop souvent le lanceur Unity, je me retrouve avec 3, 4 terminaux différents.
Mood

Réponses:


8

J'ai écrit un script shell simple en utilisant wmctrl pour donner le focus au terminal. Il fait exactement ce que je veux.

Tout d'abord, installez wmctrl sudo apt-get install wmctrl.

Ensuite, lancez un éditeur de texte, copiez les lignes suivantes.

#!/bin/sh
SERVICE='gnome-terminal'

if ps ax | grep -v grep | grep $SERVICE > /dev/null
then
  wmctrl -xa $SERVICE
else
  $SERVICE
fi

Enregistrez le fichier quelque part où vous conservez habituellement vos scripts shell. Dans mon cas, j'ai fait: ~/bin/single_instance.sh

cd dans le répertoire ( cd ~/bin) et rendre le fichier exécutablechmod +x single_instance.sh

Maintenant, ouvrez le menu principal, sélectionnez Accessoires » Propriétés de la presse du terminal et remplacez la commande par le script:~/bin/single_instance.sh

Ouvrez Paramètres système »Clavier» Raccourcis . Désactivez le raccourci Launch Terminal en lui donnant un retour arrière. Créez un raccourci personnalisé. Remplissez à nouveau le chemin et le nom du script et donnez-lui la combinaison de touches ctrl + alt + t .

Vous avez terminé, terminal à instance unique ...


Pourquoi ne pas simplement faire de votre script le lanceur de terminal par défaut? Pourquoi toutes les étapes pour ajouter des raccourcis et tout? +1 pour le script, -1 pour l'implémentation.
Bruno Pereira

Sincèrement… je ne sais pas comment faire ça. J'ai regardé les applications par défaut et je n'ai pas vu de terminal. Je suis également convaincu que la version précédente d'Ubuntu avait des champs de texte où les commandes pouvaient être entrées. Cette version des applications par défaut comprend tous les menus déroulants.
Mood

2

Ajoutez --tab à la commande du lanceur. Ensuite, vous vous retrouvez avec une seule application. ouvert.

~$ gnome-terminal --help-all
:
--tab       Open a new tab in the last-opened window with the default profile

Non, je ne veux pas de nouvel onglet. Je veux que le terminal passe au premier plan dans l'état où je l'ai quitté pour la dernière fois.
Mood

1
Cela ouvre juste de nouvelles fenêtres pour moi sur Ubuntu 16.04
beruic

0

C'est le comportement par défaut si vous utilisez le raccourci Mod4+#( Mod4= Super = "Windows", #est le numéro dans le lanceur) pour ouvrir n'importe quelle application.


Oui, j'en suis conscient. Pourtant, je dois avoir un terminal ouvert pour commencer. Je voulais dire quand j'appuie sur control + alt + t ou que je l'ouvre dans Kupfer. Je recherche le même comportement que - par exemple - Chrome: si une instance est ouverte, montrez-moi cette instance, s'il n'y a pas d'instance, ouvrez une nouvelle instance.
Mood

0

J'ai généralisé et simplifié un peu le script de @Mood. Maintenant, il prend un paramètre de ligne de commande et utilise pgrep à la place.

sudo apt-get install procps

Le scénario:

#!/usr/bin/env bash

if pgrep $1
then
    wmctrl -xa $1
else
    $1
fi

0

Je voudrais ajouter mon propre script, car je le trouve extrêmement utile:

  1. S'il y a un gnome-terminal dans l'espace de travail actuel, alors il l'amène à l'avant et lui donne le focus
  2. S'il n'y a pas de gnome-terminal dans l'espace de travail actuel, il commute l'espace de travail et met en avant le premier gnome-terminal existant qu'il trouve et lui donne le focus
  3. S'il n'y a aucune instance de gnome-terminal en cours d'exécution, il ouvre une nouvelle instance, la met en avant et lui donne le focus

J'ai configuré le raccourci Ctrl + Alt + T pour exécuter ce script et je le trouve encore plus confortable que Guake ou Tilda.

#!/usr/bin/env sh

# APP is the binary name you see when you do ps
APP="gnome-terminal"
# WIN_CLASS is the window class you see when you do wmctrl -lx
WIN_CLASS="gnome-terminal-server.Gnome-terminal"

# Use the app from current workpace first, or any if not available
WORKSPACE=$(wmctrl -d | grep '\*' | cut -d ' ' -f1)
TPID=$(ps aux | pgrep $APP)
if [ "$TPID" ]
then
  QTERM_WIN=$(wmctrl -lx | grep $WIN_CLASS | grep $WORKSPACE  | awk 'NR == 1 {print $1}')
  if [ "$QTERM_WIN" ]
  then
    wmctrl -ia $QTERM_WIN
  else
    # No valid app found in the current workspace, switch to any
    QTERM_WIN=$(wmctrl -lx | grep $WIN_CLASS | awk 'NR == 1 {print $1}')
    wmctrl -ia $QTERM_WIN
  fi
else
  $APP &
fi

Je l'utilise avec QTerminal mais j'ai modifié pour l'adapter à vos besoins. Bonne chance

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.