Wie deaktiviere ich die GtkFileChooserDialog-Suche?

24

Wenn ich eine Datei in einer gtk3-App (zB Firefox) öffnen oder speichern möchte, erhalte ich nach dem Tippen eines Zeichens eine unerwünschte Suchfunktion.

Altes und produktives Verhalten: Tippen dgibt mir die erste Datei, die mit beginnt d, Tippen degibt mir die erste Datei, mit de.

Neues und unerwünschtes Verhalten: Durch Eingabe wird dein Suchvorgang gestartet und ich erhalte eine /home/myuser/Downloads/somestuff/DETLEFFoder mehrere andere Dateien im System.

Beispiel: Gtk3FileChooser

Wie kann ich zum alten und produktiven Verhalten zurückkehren?

Mein System: archliux64, Gtk3: 3.18.6, Windowmanager: Fluxbox

gj13
quelle

Antworten:

18

Die gesuchte Funktion heißt "typeahead" und ist in deaktiviert GtkFileChooserDialog. gtk3-typeaheadvom AUR stellt das vorherige Verhalten wieder her.

Der Autor des Pakets gibt an, dass das Deaktivieren von Typeahead in GTK + fest programmiert ist. In einem Fehlerbericht heißt es: "Es ist kein Fehler, das Entfernen der Typ-Ahead-Suche war sehr beabsichtigt."

Beachten Sie, dass das Feld Name / Adresse nun einige (teilweise unterbrochene) Tab-Vervollständigungen enthält, die das Verhalten der Shell nachahmen.

Markus
quelle
6

Aktualisierte Antwort:

Seit 2019 habe ich das AUR-Repository von Arch verwendet (aber immer noch auf meinem Debian-System ). Ich habe das jetzt auch unter FreeBSD mit einem kleinen (etwas trivialen) Patch gemacht. Dies ist KEINE Antwort auf "Zu Arch wechseln".

Es war anfangs etwas schwierig einzurichten, aber das Wesentliche ist, dass Sie das makepkgProgramm von Arch kompilieren und es verwenden können, um AUR-Repositorys unter Debian zu kompilieren. Ich habe das so gemacht (obwohl ich vielleicht einige Abhängigkeiten vergessen habe):

Meine alte Antwort ist immer noch nach dem Trennzeichen im unteren Bereich vorhanden.

1) Gebäude 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) Vorbereitung zum Kompilieren der GTK3-Quellen:

Nun bauen und installieren gtk3-typeahead. Um alle (Debian-) Build-Abhängigkeiten zu erhalten, die mehr oder weniger mit den Arch-Abhängigkeiten identisch sind, müssen Sie zuerst eine deb-srcZeile in Ihrer sources.list haben, damit apt-get build-depdie erforderlichen -devPakete erfolgreich abgerufen werden können.

Meine sources.listenthält die folgende Zeile, um das zu tun. Ändern Sie die Zeile basierend auf Ihrer Version und dem nächsten Server.

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

3) Gebäude gtk3-typeahead:

Anschließend können Sie Folgendes ausführen, um zu erstellen 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

Danach werden die Binärdateien .tar.gzeine Ebene über dem Git-Baum in ein Archiv gepackt . In meinem Beispiel wäre dies das intoVerzeichnis.

So installieren Sie es:

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"

Dies ist in hohem Maße skriptfähig und meiner bescheidenen Meinung nach etwas weniger finnisch als der Umgang mit meinen alten Skripten. Es hängt auch nicht mehr von Debian ab.


Ursprüngliche Antwort:

Es ist ein Jahr vergangen und das ärgert mich immer noch, da die GTK3-Leute beschlossen haben, dieses Verhalten fest zu codieren, ohne es ohne Neukompilierung rückgängig zu machen.

Typeahead wurde jedoch wieder in gtk3 gepatcht, wie es in Ubuntu verteilt wurde.

Ubuntu veranlasste die Dateiauswahl auch, einen Doppelklick zur Auswahl einer Datei zu erfordern, anstatt nur einen einzigen Klick zu erfordern, wenn die Datei bereits ausgewählt war. Wenn Sie mit dem Patchen des gtk3-Quellcodes einverstanden sind, habe ich einen Patch erstellt, der ab gtk + 3.22.7 funktioniert. Dabei werden die Ubuntu-Patches kombiniert und auf eine aktuellere Version von GTK aktualisiert.

Zusätzlich habe ich ein Skript für mein Debian-System erstellt, das automatisch die Quelle für die neueste Version im Paketmanager herunterlädt, sie patcht und kompiliert. Läuft korrekt auf Debian Sid und sollte auch für andere Debian-Distributionen funktionieren.

Wyatt8740
quelle
3

Unter Debian Unstable können Sie die Typeahead-Funktionalität erhalten, indem Sie drücken, ctrl-lwenn das Fenster geöffnet ist (l für Lookahead), aber nur für Dialoge zum Öffnen von Dateien, nicht für Dialoge zum Speichern von Dateien. Heben Sie bei Dialogfeldern zum Speichern ctrl-lvon Dateien nur den Namen der zu speichernden Datei hervor. Um auf intelligentere Weise zu navigieren, können Sie geben ~, /, .in den richtigen Kombinationen erhalten Ihr Home - Verzeichnis, aktuelles Verzeichnis oder einen Verzeichnispfad von der Wurzel. Wenn Sie auch die Zurück-Pfeiltaste drücken, können Sie die Auswahl des Namens aufheben und den Cursor im Feld belassen, damit Sie den aktuellen Namen nicht verlieren (wie dies bei einem "Speichern unter" -Vorgang der Fall wäre).

Es scheint, dass das alte Verhalten viel besser war :)

Andrew Olney
quelle