GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

Warum öffnet Gedit beim Öffnen von Dateien aus Nautilus zufällig neue Instanzen?

Oh, wie ich Ubuntu und all seine Funktionen liebe, aber dieser „Bug“ macht mich schon so lange wütend und ich habe mich endlich entschlossen, hier um Hilfe zu bitten.

Ich habe alle .php zugewiesen Dateien, die mit gedit geöffnet werden, wenn ich sie in Nautilus doppelklicke. Jetzt ist das Verhalten seltsam.

  1. Ich habe kein Gedit am Laufen
  2. Ich doppelklicke auf eine zu öffnende Datei
  3. Ein Gedit-Fenster öffnet sich und die Datei wird geladen
  4. Ich doppelklicke auf eine andere zu öffnende Datei

Jetzt gibt es 2 mögliche Ergebnisse:

5A) Die Datei öffnet sich im selben Gedit-Fenster in einem neuen Tab

5B) Die Datei öffnet sich in einem neuen Gedit-Fenster, was dazu führt, dass 2 Gedits ausgeführt werden.

Ob A oder B passiert, scheint völlig zufällig zu sein und geht unendlich weiter. Das bedeutet, dass ich auf 100 Dateien doppelklicke und am Ende vielleicht 60 Gedits habe, von denen einige 1 Registerkarte, einige 2 Registerkarten, einige 3 Registerkarten haben …

Das ist extrem ärgerlich und eine Lösung dafür wäre sehr dankbar. Hat schon mal jemand versucht, dieses Problem zu beheben?

Dies ist in Ubuntu 10.04, 10.10 und 11.10 passiert. Alle Ubuntu-Versionen, die ich je getestet habe.

Beste Antwort

Warum…

gedit hat einen ziemlich interessanten Algorithmus, um zu bestimmen, ob es eine neue Instanz öffnet oder ob es in einem Tab in einer bestehenden Instanz geöffnet wird.

Befindet sich in der Quelldatei gedit-app.c in der Funktion static boolean is_in_viewport , testet der Algorithmus, ob die aktuelle Gedit-Instanz

ist
  1. mit derselben Bildschirmnummer und demselben Anzeigenamen
  2. im selben Arbeitsbereich
  3. mehr als 25 % der Ränder des Darstellungsbereichs

Wenn alle wahr sind, wird gedit in derselben Instanz in einem neuen Tab geöffnet, andernfalls wird es in einem neuen Fenster geöffnet.

Zusammenfassend lässt sich sagen, dass die einzig realistische Möglichkeit, das Verhalten zu ändern, darin besteht, den Algorithmus zu ändern…

Wie…

Das Folgende ist ein schneller Weg, um gedit konsistent zu öffnen … es wird immer eine neue Instanz öffnen.

Installieren Sie die grundlegenden Entwicklungstools

sudo apt-get install devscripts build-essential fakeroot 

Quelle abrufen

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

Änderung vornehmen

Öffnen Sie gedit-app.c

gedit gedit/gedit-app.c

füge return FALSE; hinzu wie gezeigt und speichern.

Dadurch wird die Routine immer mit den Worten "Ich laufe nicht in einem Ansichtsfenster und öffne daher immer eine neue Instanz" beendet

Wenn Sie return TRUE; verwenden dies wird immer in einer bestehenden Instanz von gedit in einem neuen Tab geöffnet…

Verwandte:Wie behebt man die DNS-Auflösung, die nach dem Upgrade auf Ubuntu 13.10 (Saucy) in Ubuntu nicht funktioniert?

geben Sie ihm einen eindeutigen Paketnamen

OK, wir müssen dem Paket einen eindeutigen Namen geben, um zu verhindern, dass Repository-Updates Ihr geändertes Paket überschreiben

gedit debian/changelog

hängen Sie nun +yourname an zur obersten Zeilenversion und speichern Sie die Datei, z. B.

Beachten Sie – um ganz sicher zu gehen – nach der Installation des modifizierten Pakets unten die Version gemäß der verlinkten Frage unten zu sperren.

Bauen Sie das Paket

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

Geh auf einen Kaffee…

cd ..
sudo dpkg -i gedit*.deb

Verknüpfte Frage:

  1. Wie kann ich die Aktualisierung eines bestimmten Pakets verhindern?

Ubuntu
  1. Warum gibt Find -mtime +1 nur Dateien zurück, die älter als 2 Tage sind?

  2. Warum wacht der Bildschirmschoner bei der Verwendung von Vlc immer wieder auf?

  3. Wie greife ich auf Flash-Dateien von Streaming-Websites zu?

  4. Warum gibt Ls -l eine andere Größe als Ls -s aus?

  5. Warum erkennt Windows keine Dateien in Linux-Partitionen?

Wie kann man verhindern, dass Gedit etwas öffnet?

Warum öffnet sich Nautilus automatisch, wenn Kde geladen wird?

Wie greife ich von Ubuntu auf Windows-Dateien zu?

Stoppen Sie das Öffnen von .py in Gedit?

Lassen Sie vim symbolischen Links folgen, wenn Sie Dateien von der Befehlszeile aus öffnen

Warum verwendet rsync keine Delta-Übertragung für lokale Dateien?