Pourquoi gedit continue-t-il à ouvrir aléatoirement de nouvelles instances lors de l'ouverture de fichiers à partir de nautilus?

30

Oh, comment j'aime Ubuntu et toutes ses fonctionnalités, mais ce "bug" me rend furieux depuis si longtemps et j'ai finalement décidé de demander de l'aide ici.

J'ai assigné tous les fichiers .php à ouvrir avec gedit chaque fois que je double-clique dessus dans nautilus. Maintenant, le comportement est étrange.

  1. Je n'ai pas de gedit en cours d'exécution
  2. Je double-clique sur un fichier à ouvrir
  3. Une fenêtre gedit s'ouvre et le fichier se charge
  4. Je double-clique sur un autre fichier à ouvrir

Maintenant, il y a 2 résultats possibles:

5A) Le fichier s'ouvre dans la même fenêtre gedit dans un nouvel onglet

5B) Le fichier s'ouvre dans une nouvelle fenêtre gedit, entraînant l’exécution de 2 GEDITS.

Si A ou B se produit semble être totalement aléatoire et continue à aller à l'infini. Cela signifie que je double-clique sur 100 fichiers et que je peux me retrouver avec 60 gedits, dont certains auront 1 onglet, certains auront 2 onglets, certains auront 3 onglets ...

Ceci est extrêmement ennuyeux et un correctif pour cela serait très apprécié. Quelqu'un a-t-il déjà essayé de résoudre ce problème?

Cela s’est produit dans Ubuntu 10.04, 10.10 et 11.10. Toutes les versions d'Ubuntu que j'ai testées.

    
posée Richard Rodriguez 05.11.2011 - 05:08
la source

4 réponses

35

Pourquoi ...

gedit a un algorithme assez intéressant pour déterminer s'il ouvre une nouvelle instance ou s'il s'ouvre dans un onglet dans une instance existante.

Situé dans le fichier source gedit-app.c dans la fonction static boolean is_in_viewport , l'algorithme teste si l'instance actuelle de gedit est

  1. dans le même numéro d'écran et le même nom d'affichage
  2. dans le même espace de travail
  3. plus de 25% des bords du port de vue

Si tout est vrai, gedit s'ouvre dans la même instance dans un nouvel onglet, sinon il s'ouvre dans une nouvelle fenêtre.

En résumé - le seul moyen réaliste de modifier le comportement consiste à modifier l’algorithme ...

Comment ...

Ce qui suit est un moyen rapide d’obtenir un moyen cohérent d’ouvrir gedit ... il ouvrira toujours une nouvelle instance.

installer les outils de développement de base

sudo apt-get install devscripts build-essential fakeroot 

obtenir la source

cd ~/Downloads
mkdir build
cd build
apt-get source gedit
cd gedit-3.2*

apportez les modifications

Ouvrez gedit-app.c

gedit gedit/gedit-app.c

ajoutez return FALSE; comme indiqué et enregistrez.

Cela a pour effet de toujours quitter la routine en disant "je ne suis pas exécuté dans une fenêtre et donc de toujours ouvrir une nouvelle instance"

Si vous utilisez return TRUE; , cela s’ouvrira toujours dans une instance existante de gedit dans un nouvel onglet ...

donnez-lui un nom de package unique

OK, nous devons attribuer un nom unique au package pour empêcher les mises à jour du référentiel de remplacer votre package modifié

gedit debian/changelog

maintenant, ajoutez +yourname à la version de ligne supérieure et enregistrez le fichier par exemple.

Remarque: pour être absolument sûr, après l’installation du package modifié ci-dessous, verrouillez la version selon la question liée ci-dessous.

créer le package

sudo apt-get build-dep gedit
debuild -i -us -uc -b

Allez prendre un café ...

cd ..
sudo dpkg -i gedit*.deb

Question liée:

  1. Comment empêcher la mise à jour d'un package spécifique?
réponse donnée fossfreedom 14.11.2011 - 21:55
la source
10

Je voulais que tous les fichiers soient ouverts dans une seule fenêtre gedit. Je n'ai pas trouvé cette information ailleurs, mais avec les modifications suivantes, j'ai réussi à ouvrir tous les fichiers texte dans une seule fenêtre en tant que nouveaux onglets, et non pas à les ouvrir (via launcher, via nautilus, via Gnome DO). / p>

  1. Obtenir le numéro d’affichage: tapez echo $DISPLAY dans la ligne de commande. par exemple. vous obtenez :0 comme numéro d'affichage.

  2. Ouvrez /usr/share/applications/gedit.desktop en tant que superutilisateur avec un éditeur de texte.

  3. Changer la ligne en disant:

    Exec=gedit %U
    

    à

    Exec=gedit --display=:0 %U
    

    :0 est votre numéro d'affichage.

réponse donnée Tim Banchi 09.10.2013 - 12:16
la source
2

Cela n'arrive pas au hasard

Par défaut, Gedit n'est pas conçu pour ouvrir de nombreuses instances, mais une seule pour chaque affichage. Si vous ouvrez l'écran où Gnt n'ouvrira pas encore les fichiers, Gedit, qui existe maintenant dans cet écran depuis lequel le fichier est ouvert.

Vous pouvez donc faire en sorte que la 1ère instance de gedit soit sur Tous les espaces de travail, de manière à suivre votre affichage actif. Ou travailler sur chaque espace de travail avec chaque projet et chacun avec son propre Gedit ouvert. Dans les raccourcis clavier, vous pouvez créer un nouveau raccourci pour basculer la fenêtre sur tous les espaces de travail.

OU il est possible de le rendre toujours ouvert dans une nouvelle instance en utilisant la commande de raccourci dans Open With .. gedit --new-window

Vous pouvez donc essayer les propriétés php ouvertes avec reset et mettre une nouvelle ouverture avec juste Gedit

en utilisant gedit --help-all ull voir une autre option d'ouverture avec gedit.

Et vous pouvez également essayer de supprimer gedit avec tous les fichiers de configuration et de l’installer avec sudo apt-get purge gedit && sudo apt-get clean && sudo apt-get update && sudo apt-get install gedit

MISE À JOUR: J'ai été en mesure de reproduire-lors du déplacement de la fenêtre un peu hors de l'écran, puis l'ouverture de certains fichiers s'ouvre dans une nouvelle fenêtre. Il pense en quelque sorte que c'est dans un autre affichage.

    
réponse donnée Kangarooo 09.11.2011 - 15:58
la source
0

Cela a commencé à m'arriver. Je n'ai pas trouvé de fichier de configuration pertinent, et j'ai même essayé de purger + nettoyer. Enfin trouvé ce que c'était. La fenêtre de Gedit s’ouvrait de telle sorte qu’elle semblait avoir été optimisée, mais ce n’était pas le cas. J'ai appuyé sur le bouton d'agrandissement de la fenêtre pour résoudre le problème! Notez que la fenêtre n'a pas changé de taille, seuls les coins sont passés de rond en carré. Il semble que ce soit un bogue dans l’algorithme @fossfreedom décrit ci-dessus .

Remarque: Lorsque vous fermez la fenêtre, l'état maximiser / minimiser doit être stocké dans une configuration utilisateur quelque part. Cet état survit à la purge + clean, et ce n’est pas non plus dans les confits par utilisateur de Gedit.

    
réponse donnée spinkus 11.06.2018 - 13:08
la source

Lire d'autres questions sur les étiquettes