Oh come amo Ubuntu e tutte le sue funzionalità, ma questo "bug" mi ha fatto arrabbiare per così tanto tempo e finalmente ho deciso di chiedere aiuto qui.
Ho assegnato tutti i .php
file da aprire con gedit ogni volta che faccio doppio clic su di essi in nautilus. Ora, il comportamento è strano.
- Non ho gedit in esecuzione
- Faccio doppio clic su un file da aprire
- Si apre una finestra di gedit e il file viene caricato
- Faccio doppio clic su un altro file da aprire
Ora, ci sono 2 possibili risultati:
5A) Il file si apre nella stessa finestra di gedit in una nuova scheda
5B) Il file si apre in una nuova finestra di gedit, risultando in 2 gedit in esecuzione.
Se accade A o B sembra essere totalmente casuale e continua all'infinito. Ciò significa che faccio doppio clic su 100 file e potrei finire con 60 gedit, alcuni dei quali avranno 1 scheda, alcuni avranno 2 schede, alcuni avranno 3 schede...
Questo è estremamente fastidioso e una soluzione per questo sarebbe molto apprezzata. Qualcuno ha mai provato a risolvere questo problema?
Questo è successo in Ubuntu 10.04, 10.10 e 11.10. Tutte le versioni di Ubuntu che abbia mai testato.
Migliore risposta
Perché...
gedit
ha un algoritmo piuttosto interessante per determinare se apre una nuova istanza o se si apre in una scheda in un'istanza esistente.
Situato nel file sorgente gedit-app.c
nella funzione static boolean is_in_viewport
, l'algoritmo verifica se l'istanza gedit corrente è
- nello stesso numero di schermo e nome visualizzato
- nello stesso spazio di lavoro
- superiore al 25% dei bordi del viewport
Se sono tutti veri, gedit si apre nella stessa istanza in una nuova scheda, altrimenti si apre in una nuova finestra.
In sintesi, l'unico modo realistico per modificare il comportamento è cambiare l'algoritmo...
Come...
Quello che segue è un modo rapido per aprire gedit in modo coerente... aprirà sempre una nuova istanza.
installa gli strumenti di sviluppo di base
sudo apt-get install devscripts build-essential fakeroot
ottenere la fonte
cd ~/Downloads
mkdir build
cd build
apt-get source gedit
cd gedit-3.2*
apporta la modifica
Apri gedit-app.c
gedit gedit/gedit-app.c
aggiungi return FALSE;
come mostrato e salva.
Ciò che fa è uscire sempre dalla routine dicendo "non sono in esecuzione in un viewport e quindi apro sempre una nuova istanza"
Se usi return TRUE;
questo si aprirà sempre in un'istanza esistente di gedit in una nuova scheda...
assegnagli un nome di pacchetto univoco
OK, dobbiamo assegnare al pacchetto un nome univoco per evitare che gli aggiornamenti del repository sovrascrivano il pacchetto modificato
gedit debian/changelog
ora aggiungi +yourname
alla versione della riga superiore e salva il file, ad es.
Nota – per essere assolutamente sicuro – dopo aver installato il pacchetto modificato di seguito, blocca la versione come da domanda collegata di seguito.
crea il pacchetto
sudo apt-get build-dep gedit
debuild -i -us -uc -b
Vai a prendere un caffè...
cd ..
sudo dpkg -i gedit*.deb
Domanda collegata:
- Come impedire l'aggiornamento di un pacchetto specifico?