2017-03-25 1 views
2

J'ai des scripts bash qui ouvrent des terminaux graphiques (Gnome-terminal, LXTerminal, Konsole, etc.).Existe-t-il un moyen idiomatique d'ouvrir un terminal graphique sous linux?

Cependant, je me demande s'il existe une manière idiomatique d'ouvrir un terminal? Quelque chose comme la norme XDG pour les types de fichiers? Sinon, je suis codage en dur une référence à la manière spécifique d'ouvrir un terminal, par exemple:

lxterminal -e "ls" 

Une façon plus propre serait d'avoir une fonction «openTerminal je suppose, qui prend la commande à exécuter comme un des paramètres.

+0

Je pense que la solution canonique consisterait à permettre à l'utilisateur de configurer la commande du terminal via un fichier de configuration ou une variable d'environnement, et par défaut à quelque chose comme 'xterm'. – larsks

Répondre

2

Debian fait avec le x-terminal-emulatorpaquet virtuel, décrit dans 11.8.3 Packages providing a terminal emulator

Les paquets fournissant un émulateur de terminal pour le système X Window qui répondent aux critères énumérés ci-dessous doivent déclarer dans leur offre un champ de contrôle qu'ils fournissent le paquet virtuel x-terminal-emulator. Ils devraient également s'enregistrer comme une alternative pour /usr/bin/x-terminal-emulator, avec une priorité de 20. Cette alternative devrait avoir une alternative esclave pour /usr/share/man/man1/x-terminal-emulator.1.gz pointant vers la page de manuel correspondante.

être un émulateur de terminal X, un programme doit:

  • être en mesure d'émuler un terminal DEC VT100 ou un terminal compatible.

  • Support de l'option de ligne de commande -e, qui crée une nouvelle fenêtre de terminal [106] et exécute la commande spécifiée, interprétant l'intégralité du reste de la ligne de commande comme une commande à passer directement à exec, dans la façon dont xterm fait.

  • Prise en charge de l'option de ligne de commande -T title, qui crée une nouvelle fenêtre de terminal avec le titre du titre de la fenêtre.

C'est, la politique décrit une compatibilité minimale avec xterm depuis le milieu des années 1990.

Il a été un succès limité:

  • certains emballeurs abusent du domaine prioritaire, en utilisant des valeurs bien au-dessus 20.
  • la compatibilité des options -e est faible avec certains des terminaux que vous avez mentionnés.

En dehors de Debian (et des distributions dérivées comme Ubuntu), cette approche n'est pas très utilisée. Je me souviens d'avoir répondu à cela avant, mais je ne le vois pas pour le moment.Voici une liste de mon Debian/testing, notant que chacun des paquets avec 40 priorité ne suit pas la politique:

$ sudo update-alternatives --config x-terminal-emulator 

    Selection Path        Priority Status 
------------------------------------------------------------ 
* 0   /usr/bin/xterm-dev    60  auto mode 
    1   /usr/bin/evilvte     20  manual mode 
    2   /usr/bin/gnome-terminal.wrapper 40  manual mode 
    3   /usr/bin/koi8rxterm    20  manual mode 
    4   /usr/bin/konsole     40  manual mode 
    5   /usr/bin/lxterm     30  manual mode 
    6   /usr/bin/lxterminal    40  manual mode 
    7   /usr/bin/mate-terminal.wrapper 30  manual mode 
    8   /usr/bin/mlterm     20  manual mode 
    9   /usr/bin/mrxvt-full    10  manual mode 
    10   /usr/bin/pterm     20  manual mode 
    11   /usr/bin/stterm     15  manual mode 
    12   /usr/bin/terminology    40  manual mode 
    13   /usr/bin/urxvt     20  manual mode 
    14   /usr/bin/uxterm     20  manual mode 
    15   /usr/bin/xfce4-terminal.wrapper 40  manual mode 
    16   /usr/bin/xterm     20  manual mode 
    17   /usr/bin/xterm-dev    60  manual mode 

Press <enter> to keep the current choice[*], or type selection number: 

(Le paquet « xterm-dev » est bien sûr un programme de développement local, non publié).