web-dev-qa-db-fra.com

gnome-terminal --disable-factory support problem

$ gnome-terminal  --tab  --title="700"  --disable-factory  -e

Failed to parse arguments: Option "--disable-factory" is no longer supported in this version of gnome-terminal.

J'utilise GNOME 3.

1
Ahmed Zain El Dein

Si vous avez vraiment besoin de plusieurs instances du processus gnome-terminal en cours d'exécution (mais pourquoi le devriez-vous?), Suivez les étapes décrites à la section https://wiki.gnome.org/Apps/Terminal/Debugging sauf pour le gdb partie.

1
egmont

Pour le bénéfice du lecteur.

Le problème

Option --disable-factory got supprimé dans la V3.8 sur gnome-terminal et il y a aucun moyen d'archiver ce comportement facilement. Du moins pas un moyen, qui peut être expliqué aux personnes qui ne maîtrisent pas la syntaxe Shell.

D'où la ligne de commande

gnome-terminal  --tab  --title="700" --disable-factory -e ...

échoue avec l'erreur présentée dans la question.

Veuillez excuser cette note latérale très personnelle: je ne comprends vraiment pas pourquoi cette option cruciale a été supprimée. Même Microsoft a introduit une option pour exécuter cmd, Explorer ou powershell de manière bloquante. Microsoft écoute leurs utilisateurs. Mais Gnome ne le fait pas. Au lieu de documenter officiellement l'option cachée --disable-factory, Gnome l'a soudainement supprimée. S'ils continuent dans cette voie, ils feront gagner Microsoft sur le long terme. C'est très très triste et stupide extraordinaire. (Désolé pour ce coup de gueule, mais il faut le dire.)

BTW: Ubuntu 16.04 restauré--disable-factory en utilisant un wrapper qui émule cette fonctionnalité. (Si vous regardez la complexité de ce wrapper , mon discours s'applique encore plus qu'avant.)

Variante 0

J'appelle cela 0, parce que les deux solutions ne sont pas vraiment appropriées. Une solution appropriée est indiquée dans la variante 1.

Varriant 0a

Une première chose que vous pouvez essayer est de supprimer l’option --disable-server:

gnome-terminal --tab --title="700" -e ...

Cependant, ceci a les inconvénients suivants:

Ceci n'attend plus que gnome-terminal se termine . Si un autre gnome-terminal est en cours d'exécution, la commande revient immédiatement. Ce n’est généralement pas ce que vous voulez, car c’est pourquoi l’option --disable-factory était présente au départ.

Variante 0b

Donc, supprimer cette option n’est possible que dans le cas où vous pouvez être sûr que, dans tous les cas, aucun autre gnome-terminal ne sera en cours d’exécution.

Si ce n'est pas le cas, mais que vous êtes dans le cas où un autre exécutant gnome-terminal ne doit pas être pris en charge, vous pouvez essayer de suivre la variante de secours désespérée :

killall -9 gnome-terminal
gnome-terminal  --tab  --title="700" -e ...

Mais méfiez-vous! Ceci tue inconditionnellement tous les gnome-terminals qui sont encore ouverts. Dans un environnement de production, cela causera généralement plus de dommages que cela aide. Vous avez été prévenu!

Variante 1

Si vous n'avez pas besoin de l'exécuter dans gnome-terminal et que vous pouvez l'exécuter dans un autre émulateur de terminal. @muru a commenté un bon remplaçant.

xfce4-terminal comprend à peu près le même ensemble d'options que gnome-terminal (et ajoute d'autres options très pratiques qui manquent dans gnome-terminal pendant des années). Il a aussi une option documentée, qui fait ce que --disable-factory a fait pour gnome-terminal. L'option --tab fonctionne différemment de gnome-terminal et doit donc être supprimée également pour que quelque chose fonctionne. Le remplacement est:

xfce4-terminal --title="700" --disable-server -e ...

Vous pouvez également ajouter une option --hold, si vous souhaitez pouvoir afficher le résultat complet de la commande avant la fermeture de la fenêtre:

xfce4-terminal --hold --title="700" --disable-server -e ...

Veuillez noter que xfce4-terminal a une petite condition de concurrence critique qui tronque malheureusement la sortie. --hold n'est donc pas pleinement efficace. Corriger cela correctement (de manière à pouvoir utiliser le copier/coller) n’entre pas dans le cadre de la réponse, mais il faut généralement ajouter un peu de echo $? && read -t.1 au script exécuté avec (derrière) -e can. résolvez-le 99% du temps.

Si vous recevez le message que xfce4-terminal est manquant, vous devez d'abord l'installer. Il peut être installé en parallèle à gnome, même s'il appartient à une autre variante du bureau (Xfce):

Sudo apt-get install xfce4-terminal

Le seul inconvénient est que xfce4-terminal a un autre aspect que gnome-terminal et suit un autre

Variante 2..∞

Il existe d'innombrables autres variantes possibles pour résoudre ce problème. La plupart d'entre eux sont vraiment compliqués. Trop compliqué pour les gens normaux, ceux qui ne sont pas vraiment dans la coquille.

Alors je les laisse partir. Ma recommandation est la suivante:

Comme l'a noté @muru, essayez d'utiliser xfce4-terminal au lieu de gnome-terminal.

Note à ceux qui aiment les coquillages

Toutes les solutions simples ne sont pas vraiment parfaites, car elles ne renvoient pas la valeur de retour de la commande (gnome-terminal ne le fait pas non plus). Malheureusement. Pour résoudre ce problème, il s'agit d'une histoire complètement différente.

1
Tino

Variante 3.

https://unix.stackexchange.com/a/502498/303187 Pour éviter la publication croisée, je ne fais que laisser le lien, suivez-le et faites défiler vers le bas si vous êtes paresseux à lire - il y a un archive à placer dans /, il contient tous les fichiers à créer

0
Lauri