¿Cómo deshabilitar la búsqueda de GtkFileChooserDialog?


24

Si quiero abrir o guardar un archivo en una aplicación gtk3 (p. Ej., Firefox), obtengo una función de búsqueda no deseada después de dar un tip.

Comportamiento antiguo y productivo: mecanografía dme da el primer archivo que comienza d, mecanografía deme da el primer archivo de.

Comportamiento nuevo y no deseado: escribir dcomienza un proceso de búsqueda y me da a mí /home/myuser/Downloads/somestuff/DETLEFFo algún otro archivo en algún lugar del sistema.

Ejemplo: Gtk3FileChooser

¿Cómo puedo volver al comportamiento antiguo y productivo?

Mi sistema: archliux64, Gtk3: 3.18.6, windowmanager: fluxbox

Respuestas:


18

La característica que está buscando se llama "typeahead" y está deshabilitada GtkFileChooserDialog. gtk3-typeaheaddesde el AUR restaura el comportamiento anterior.

El autor del paquete dice que deshabilitar typeahead está codificado en GTK + y en un informe de error se dijo: "No es un error; la eliminación de la búsqueda de escritura anticipada fue muy intencional".

Tenga en cuenta que ahora hay alguna finalización de tabulación (parcialmente rota) en el campo de nombre / dirección que imita el comportamiento del shell.


6

Respuesta actualizada:

A partir de 2019, he esperado usar el repositorio AUR de Arch (pero aún en mi sistema Debian ). También he hecho esto en FreeBSD, ahora, con un parche pequeño (algo trivial). Esta NO es una respuesta de "cambiar a Arch".

Al principio fue un poco difícil de configurar, pero lo esencial es que de hecho puedes compilar el makepkgprograma de Arch y usarlo para compilar repositorios AUR en Debian. Lo hice así (aunque puede que haya olvidado algunas dependencias):

Mi vieja respuesta todavía está presente después del separador cerca del fondo.

1) Edificio makepkg:

sudo apt-get install bsdtar # pacman depends on bsdtar (libarchive) these days
git clone git://projects.archlinux.org/pacman.git
cd pacman
./configure --sysconfdir=/etc --localstatedir=/var --prefix=/opt/arch # Put built program outside of the usual '/usr/local' when installed to avoid conflicts
make
sudo make install # Install pacman/makepkg

# Make a directory pacman expects to exist to dodge makepkg errors
sudo mkdir -p /var/cache/pacman/pkg

2) Preparación para compilar las fuentes GTK3:

Ahora, para construir e instalar gtk3-typeahead. Para obtener todas las dependencias de compilación (debian), que son más o menos las mismas que las de Arch, primero debe tener una deb-srclínea en su sources.list para que apt-get build-depobtenga los -devpaquetes necesarios con éxito .

Mi sources.listcontiene la siguiente línea para hacer eso. Cambie la línea según su versión y el servidor más cercano.

deb-src http://ftp.us.debian.org/debian/ sid main contrib

3) Edificio gtk3-typeahead:

Luego, puede ejecutar lo siguiente para compilar gtk3-typeahead:

sudo apt-get update
sudo apt-get build-dep 'gtk+3.0' # install gtk3 build dependencies

mkdir /path/to/put/arch/git/repo/into
cd /path/to/put/arch/git/repo/into
git clone https://aur.archlinux.org/gtk3-typeahead.git gtk3-typeahead
cd gtk3-typeahead

# Tack onto configure script arguments so that libraries overwrite the official
# Debian ones in /usr/lib/x86_64-linux-gnu, instead of installing to /usr/lib. 
# CHANGE THIS APPROPRIATELY IF RUNNING 32-BIT (or some other architecture like POWER/MIPS)
sed '/\-\-sysconfdir=/a\
        --libdir=/usr/lib/x86_64-linux-gnu \\' PKGBUILD > PKGBUILD2
mv PKGBUILD2 PKGBUILD

# temporarily add archlinux programs to PATH so we can use 'makepkg'
PATH="/opt/arch/bin:""$PATH"

# Don't check pacman dependencies, since our dependency libraries weren't
# installed via pacman like makepkg expects!
makepkg --nodeps

Después de hacer esto, los binarios se empaquetarán en un .tar.gzarchivo un nivel por encima del árbol git. En mi ejemplo, este sería el intodirectorio.

Para instalarlo:

TARBALLPATH="$(readlink -f gtk3-typeahead-*.tar.gz | sort | tail -n 1)" # get full path to tarball of most recent build, if multiple are available
cd /
bsdtar xf "$TARBALLPATH"

Esto es altamente programable, y un poco menos fastidioso que tratar con mis viejos guiones en mi humilde opinión. Tampoco depende de Debian.


Respuesta original:

Ha pasado un año y esto todavía me molesta, ya que la gente de GTK3 decidió codificar este comportamiento, sin forma de revertirlo sin recompilarlo.

Sin embargo, typeahead fue parcheado nuevamente en gtk3 como se distribuyó en Ubuntu.

Ubuntu también hizo que el selector de archivos requiriera un doble clic para elegir un archivo, en lugar de solo requerir un solo clic si el archivo ya estaba seleccionado. Si está de acuerdo con parchear el código fuente gtk3, he creado un parche que funciona a partir de gtk + 3.22.7 combinando los parches de ubuntu y actualizándolos a una versión más actual de GTK.

Además, hice un script para mi sistema Debian que descarga automáticamente la fuente de la última versión en el administrador de paquetes, lo parchea y lo compila. Se ejecuta correctamente en Debian Sid, y también debería funcionar bien para otras distribuciones de Debian.


3

En Debian inestable, puede obtener la funcionalidad de escritura anticipada presionando ctrl-lcuando la ventana está abierta (l para búsqueda anticipada), pero solo para diálogos de apertura de archivos, no para diálogos de guardar archivos. Para los diálogos de guardar archivos, ctrl-lsolo resaltará el nombre del archivo que se guardará. Para navegar de una manera más inteligente, puede escribir ~, /, .en las combinaciones correctas para obtener su directorio personal, directorio actual, o una ruta de directorio de raíz. También presionar la tecla de flecha hacia atrás puede deseleccionar el nombre y mantener el cursor en el cuadro para que no pierda el nombre actual (como ocurriría en una operación "Guardar como").

Parece ser que el comportamiento anterior era mucho mejor :)

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.