Como desativar a pesquisa GtkFileChooserDialog?

24

Se eu quiser abrir ou salvar um arquivo em um aplicativo gtk3 (por exemplo, firefox), recebo uma função de pesquisa indesejada depois de digitar um caractere.

Comportamento antigo e produtivo: digitar dme dá o primeiro arquivo com d, digitar deme dá o primeiro arquivo com de.

Comportamento novo e indesejado: a digitação dinicia um processo de pesquisa e fornece a mim /home/myuser/Downloads/somestuff/DETLEFFou a algum outro arquivo em algum lugar do sistema.

Exemplo: Gtk3FileChooser

Como posso voltar ao comportamento antigo e produtivo?

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

gj13
fonte

Respostas:

18

O recurso que você está procurando é chamado "typeahead" e está desativado GtkFileChooserDialog. gtk3-typeaheaddo AUR restaura o comportamento anterior.

O autor do pacote diz que desativar o typeahead é codificado no GTK + e, em um relatório de erro , foi declarado: "Não é um bug; a remoção da pesquisa de digitação antecipada foi muito intencional".

Observe que agora há um preenchimento de tabulação (parcialmente quebrado) no campo nome / endereço, imitando o comportamento do shell.

Markus
fonte
6

Resposta atualizada:

A partir de 2019, eu tenho esperado usar o repositório AUR do Arch (mas ainda no meu sistema Debian ). Eu também fiz isso no FreeBSD, agora, com um pequeno (um tanto trivial) patch. Esta NÃO é uma resposta "mudar para o Arch".

Foi um pouco difícil de configurar no início, mas o essencial é que você pode realmente compilar o makepkgprograma do Arch e usá-lo para compilar repositórios AUR no Debian. Fiz isso assim (embora eu possa ter esquecido algumas dependências):

Minha resposta antiga ainda está presente após o separador próximo ao fundo.

1) Construção 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) Preparação para compilar as fontes GTK3:

Agora, para construir e instalar gtk3-typeahead. Para obter todas as dependências de compilação (debian), que são mais ou menos iguais às do Arch, você deve primeiro ter umdeb-src linha em seu sources.list para que apt-get build-deppossa buscar com êxito os -devpacotes necessários .

Meu sources.listcontém a seguinte linha para fazer isso. Mude a linha com base no seu release e no servidor mais próximo.

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

3) construção gtk3-typeahead :

Em seguida, você pode executar o seguinte para criar 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

Depois disso, os binários serão empacotados em um .tar.gz arquivo um nível acima da árvore git. No meu exemplo, este seria o intodiretório

Para instalá-lo:

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"

Isso é altamente programável e um pouco menos sofisticado do que lidar com meus scripts antigos na minha humilde opinião. Também não depende mais do debian.


Resposta original:

Faz um ano e isso ainda me incomoda, desde que o pessoal do GTK3 decidiu codificar esse comportamento, sem nenhuma maneira de revertê-lo sem recompilar.

No entanto, o typeahead foi corrigido novamente no gtk3, conforme distribuído no Ubuntu.

O Ubuntu também fez com que o seletor de arquivos exigisse um clique duplo para escolher um arquivo, em vez de exigir apenas um único clique se o arquivo já estava selecionado. Se você concorda em corrigir o código-fonte gtk3, eu fiz um patch que funciona a partir do gtk + 3.22.7 combinando os patches do ubuntu e atualizando-os para uma versão mais atual do GTK.

Além disso, criei um script para o meu sistema debian que baixa automaticamente o código-fonte da versão mais recente no gerenciador de pacotes, o corrige e o compila. Funciona corretamente no Debian Sid e também deve funcionar bem em outras distribuições Debian.

Wyatt8740
fonte
3

No Debian instável, você pode obter a funcionalidade de digitação antecipada pressionando ctrl-lquando a janela está aberta (l para procurar), mas apenas para diálogos de abertura de arquivo, não para salvar diálogos de arquivo. Para diálogos de salvamento de arquivo, ctrl-lapenas realçará o nome do arquivo a ser salvo. Para navegar de uma forma mais inteligente, você pode digitar ~, /,. nas combinações corretas para obter o seu diretório home, diretório atual, ou um caminho de diretório de raiz. Pressionar também a tecla de seta para trás pode desmarcar o nome e manter o cursor na caixa para que você não perca o nome atual (como ocorreria em uma operação "Salvar como").

Parece que o comportamento antigo era muito melhor :)

Andrew Olney
fonte