Jak wyłączyć wyszukiwanie GtkFileChooserDialog?

24

Jeśli chcę otworzyć lub zapisać plik w aplikacji gtk3 (np. Firefox), po napiwku znaku dostaję niepożądaną funkcję wyszukiwania.

Stare i produktywne zachowanie: pisanie ddaje mi pierwszy plik zaczynający się od d, pisanie dedaje mi pierwszy plik od de.

Nowe i niepożądane zachowanie: pisanie drozpoczyna proces wyszukiwania i daje mi /home/myuser/Downloads/somestuff/DETLEFFlub inny plik gdzieś w systemie.

Przykład: Gtk3FileChooser

Jak mogę wrócić do starego i produktywnego zachowania?

Mój system: archliux64, Gtk3: 3.18.6, menedżer okien: fluxbox

gj13
źródło

Odpowiedzi:

18

Funkcja, której szukasz, nosi nazwę „typeahead” i jest wyłączona w GtkFileChooserDialog. gtk3-typeaheadz AUR przywraca poprzednie zachowanie.

Autor pakietu twierdzi, że wyłączenie GTC + jest zakodowane na stałe, aw raporcie o błędzie stwierdzono: „To nie jest błąd; usunięcie wyszukiwania z wyprzedzeniem typu było bardzo celowe”.

Zauważ, że teraz w polu nazwa / adres występuje pewne (częściowo zepsute) uzupełnianie tabulatorów, naśladujące zachowanie powłoki.

Markus
źródło
6

Zaktualizowana odpowiedź:

Od 2019 roku mam nadzieję, że skorzystam z repozytorium AUR Archa (ale nadal na moim systemie Debian ). Zrobiłem to również na FreeBSD, teraz z małą (nieco banalną) łatką. To NIE jest odpowiedź „przejdź do Arch”.

Początkowo było to trochę trudne, ale jego sedno polega na tym, że w rzeczywistości można skompilować makepkgprogram Archa i użyć go do skompilowania repozytoriów AUR na Debianie. Zrobiłem to tak (chociaż mogłem zapomnieć o pewnych zależnościach):

Moja stara odpowiedź jest nadal obecna po separatorze w pobliżu dna.

1) Budynek 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) Przygotowanie do kompilacji źródeł GTK3:

Teraz, aby zbudować i zainstalować gtk3-typeahead. Aby uzyskać wszystkie zależności kompilacji (debian), które są mniej więcej takie same jak Arch, musisz najpierw mieć deb-srclinię w pliku sources.list, aby apt-get build-deppomyślnie pobrać niezbędne -devpakiety.

Mój sources.listzawiera następujący wiersz, aby to zrobić. Zmień linię w zależności od wydania i najbliższego serwera.

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

3) Budynek gtk3-typeahead:

Następnie możesz uruchomić następujące polecenie, aby skompilować 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

Po wykonaniu tej czynności pliki binarne zostaną spakowane do .tar.gzarchiwum jeden poziom powyżej drzewa git. W moim przykładzie byłby to intokatalog.

Aby zainstalować:

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"

Jest to wysoce skryptowalne i nieco mniej skomplikowane niż radzenie sobie z moimi starymi skryptami w mojej skromnej opinii. To także nie zależy już od debiana.


Oryginalna odpowiedź:

Minął rok i nadal mnie to denerwuje, ponieważ ludzie z GTK3 zdecydowali się na stałe zakodować to zachowanie, bez możliwości jego przywrócenia bez ponownej kompilacji.

Jednak typeahead został załatany z powrotem do gtk3 w postaci dystrybuowanej w Ubuntu.

Ubuntu sprawiło również, że wybranie pliku wymaga dwukrotnego kliknięcia, aby wybrać plik, zamiast wymagać tylko jednego kliknięcia, jeśli plik został już wybrany. Jeśli nie masz nic przeciwko łataniu kodu źródłowego gtk3, stworzyłem łatkę, która działa od gtk + 3.22.7, łącząc łatki ubuntu i aktualizując je do bardziej aktualnej wersji GTK.

Dodatkowo stworzyłem skrypt dla mojego systemu Debian, który automatycznie pobiera źródło najnowszej wersji w menedżerze pakietów, łata je i kompiluje. Działa poprawnie na Debian Sid i powinien działać również w przypadku innych dystrybucji Debiana.

Wyatt8740
źródło
3

W niestabilnej Debianie możesz uzyskać dostęp do funkcji typowania, naciskając, ctrl-lgdy okno jest otwarte (l dla lookahead), ale tylko dla dialogów otwierania plików, a nie dla dialogów zapisywania plików. W przypadku dialogów zapisywania pliku ctrl-lpodświetli tylko nazwę pliku, który ma zostać zapisany. Aby poruszać się w bardziej inteligentny sposób, można wpisać ~, /, .w odpowiednich kombinacjach, aby uzyskać swój katalog domowy, aktualny katalog lub ścieżkę od korzenia. Również naciśnięcie klawisza strzałki wstecz może odznaczyć nazwę i przytrzymać kursor w polu, aby nie stracić bieżącej nazwy (jak to bywało w operacji „Zapisz jako”).

Wygląda na to, że stare zachowanie było znacznie lepsze :)

Andrew Olney
źródło