GNU/Linux >> Tutoriales Linux >  >> Ubuntu

¿Por qué Gedit sigue abriendo aleatoriamente nuevas instancias al abrir archivos desde Nautilus?

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.

  1. No tengo gedit ejecutándose
  2. Hago doble clic en un archivo para abrirlo
  3. Se abre una ventana de gedit y se carga el archivo
  4. 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

  1. en el mismo número de pantalla y nombre para mostrar
  2. en el mismo espacio de trabajo
  3. 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...

Relacionado:¿Cómo arreglar la resolución de DNS que no funciona después de actualizar a Ubuntu 13.10 (Saucy) en Ubuntu?

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:

  1. ¿Cómo evitar la actualización de un paquete específico?

Ubuntu
  1. Cómo mantener intactos los permisos de propiedad y archivo al copiar archivos o directorios

  2. Hacer que vim siga los enlaces simbólicos al abrir archivos desde la línea de comandos

  3. ¿Por qué Windows no reconoce los archivos dentro de las particiones de Linux?

  4. ¿Por qué `xdg-mime query filetype...` no encuentra un nuevo tipo de archivo agregado?

  5. ¿Por qué rsync no puede copiar archivos de /sys en Linux?

¿Cómo evitar que Gedit abra algo?

¿Por qué Nautilus se abre automáticamente cuando se carga Kde?

¿Cómo acceder a los archivos de Windows desde Ubuntu?

¿Detener la apertura de .py en Gedit?

¿Por qué rsync no usa transferencia delta para archivos locales?

¿Por qué dd de /dev/random da diferentes tamaños de archivo?