Oh, cómo amo Ubuntu y todas sus características, pero este "error" me ha estado enfadando durante tanto tiempo y finalmente he decidido pedir ayuda aquí.
He asignado todo .php
archivos que se abrirán con gedit cada vez que haga doble clic en ellos en nautilus. Ahora, el comportamiento es extraño.
- No tengo gedit ejecutándose
- Hago doble clic en un archivo para abrirlo
- Se abre una ventana de gedit y se carga el archivo
- Hago doble clic en otro archivo para abrirlo
Ahora, hay 2 resultados posibles:
5A) El archivo se abre en la misma ventana de gedit en una nueva pestaña
5B) El archivo se abre en una nueva ventana de gedit, lo que genera 2 gedit en ejecución.
Si sucede A o B parece ser totalmente aleatorio y continúa infinitamente. Eso significa que hago doble clic en 100 archivos y podría terminar con 60 gedits, algunos de los cuales tendrán 1 pestaña, algunos tendrán 2 pestañas, algunos tendrán 3 pestañas...
Esto es extremadamente molesto y una solución para esto sería muy apreciada. ¿Alguien ha intentado solucionar este problema?
Esto ha sucedido en Ubuntu 10.04, 10.10 y 11.10. Todas las versiones de Ubuntu que he probado.
Mejor respuesta
Por qué…
gedit
tiene un algoritmo bastante interesante para determinar si abre una nueva instancia o si se abre en una pestaña en una instancia existente.
Ubicado en el archivo fuente gedit-app.c
en la función static boolean is_in_viewport
, el algoritmo prueba si la instancia actual de gedit es
- en el mismo número de pantalla y nombre para mostrar
- en el mismo espacio de trabajo
- más del 25 % de los bordes de la ventana
Si todo es cierto, gedit se abre en la misma instancia en una nueva pestaña; de lo contrario, se abre en una nueva ventana.
En resumen, la única forma realista de cambiar el comportamiento es cambiar el algoritmo...
¿Cómo...?
La siguiente es una forma rápida de obtener una forma consistente de abrir gedit... siempre abrirá una nueva instancia.
instalar las herramientas básicas de desarrollo
sudo apt-get install devscripts build-essential fakeroot
obtener la fuente
cd ~/Downloads
mkdir build
cd build
apt-get source gedit
cd gedit-3.2*
hacer el cambio
Abra gedit-app.c
gedit gedit/gedit-app.c
agregar return FALSE;
como se muestra y guardar.
Lo que esto hace es salir siempre de la rutina diciendo "No estoy ejecutando en una ventana gráfica y, por lo tanto, siempre abro una nueva instancia"
Si usa return TRUE;
esto siempre se abrirá en una instancia existente de gedit en una nueva pestaña...
asígnele un nombre de paquete único
De acuerdo, debemos darle al paquete un nombre único para evitar que las actualizaciones del repositorio sobrescriban su paquete modificado
gedit debian/changelog
ahora agrega +yourname
a la versión de primera línea y guarde el archivo, es decir,
Nota:para estar absolutamente seguro, después de instalar el paquete modificado a continuación, bloquee la versión según la pregunta vinculada a continuación.
crear el paquete
sudo apt-get build-dep gedit
debuild -i -us -uc -b
Ve a tomar un café…
cd ..
sudo dpkg -i gedit*.deb
Pregunta vinculada:
- ¿Cómo evitar la actualización de un paquete específico?