Bagaimana cara menonaktifkan pencarian GtkFileChooserDialog?

24

Jika saya ingin membuka atau menyimpan file di aplikasi gtk3 (mis. Firefox) saya mendapatkan fungsi pencarian yang tidak diinginkan setelah mengetikkan karakter.

Perilaku lama dan produktif: mengetik dmemberi saya file pertama dimulai dengan d, mengetik dememberi saya file pertama dengannya de.

Perilaku baru dan tidak diinginkan: mengetik dmemulai proses pencarian dan memberi saya /home/myuser/Downloads/somestuff/DETLEFFatau file lain di suatu tempat dalam sistem.

Contoh: Gtk3FileChooser

Bagaimana saya bisa berubah kembali ke perilaku lama dan produktif?

Sistem saya: archliux64, Gtk3: 3.18.6, windowmanager: fluxbox

gj13
sumber

Jawaban:

18

Fitur yang Anda cari disebut "typeahead" dan dinonaktifkan di GtkFileChooserDialog. gtk3-typeaheaddari AUR mengembalikan perilaku sebelumnya.

Penulis paket mengatakan menonaktifkan typeahead di hardcoded di GTK + dan dalam laporan bug dinyatakan: "Ini bukan bug; penghapusan pencarian tipe-depan sangat disengaja."

Catatan sekarang ada beberapa (sebagian rusak) tab-penyelesaian di bidang nama / alamat meniru perilaku shell.

Markus
sumber
6

Jawaban yang diperbarui:

Pada 2019, saya sejak itu menggunakan repositori Arch's AUR (Tapi masih di sistem Debian saya ). Saya juga melakukan ini di FreeBSD, sekarang, dengan patch kecil (agak sepele). Ini BUKAN jawaban "beralih ke Lengkungan".

Agak sulit untuk mengatur pada awalnya, tetapi intinya adalah bahwa Anda sebenarnya bisa mengkompilasi makepkgprogram Arch dan menggunakannya untuk mengkompilasi repositori AUR pada Debian. Saya melakukan ini seperti itu (walaupun saya mungkin telah melupakan beberapa dependensi):

Jawaban lama saya masih ada setelah pemisah di dekat bagian bawah.

1) Bangunan 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) Persiapan untuk mengkompilasi sumber GTK3:

Sekarang, untuk membangun dan menginstal gtk3-typeahead. Untuk mendapatkan semua dependensi build (debian), yang kurang lebih sama dengan yang di Arch, Anda harus terlebih dahulu memiliki deb-srcbaris di sources.list Anda sehingga apt-get build-depakan berhasil mengambil -devpaket yang diperlukan .

My sources.listberisi baris berikut untuk melakukan itu. Ubah jalur berdasarkan rilis Anda dan server terdekat.

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

3) Bangunan gtk3-typeahead:

Kemudian, Anda dapat menjalankan yang berikut ini untuk membangun 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

Setelah melakukan ini, binari akan dikemas dalam .tar.gzarsip satu tingkat di atas pohon git. Dalam contoh saya, ini akan menjadi intodirektori.

Untuk menginstalnya:

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"

Ini sangat bisa dituliskan, dan sedikit lebih sulit daripada berurusan dengan skrip lama saya menurut pendapat saya yang sederhana. Itu juga tidak lagi tergantung pada debian.


Jawaban asli:

Sudah setahun dan ini masih mengganggu saya, karena orang-orang GTK3 memutuskan untuk melakukan hardcode perilaku ini, dengan tidak ada cara untuk mengembalikannya tanpa kompilasi ulang.

Namun, typeahead di-patch kembali ke gtk3 yang didistribusikan di Ubuntu.

Ubuntu juga membuat pemilih file memerlukan klik dua kali untuk memilih file, alih-alih hanya memerlukan satu klik jika file sudah dipilih. Jika Anda setuju dengan menambal kode sumber gtk3, saya telah membuat tambalan yang berfungsi pada gtk + 3.22.7 menggabungkan tambalan ubuntu dan memutakhirkannya ke versi GTK yang lebih terkini.

Selain itu, saya membuat skrip untuk sistem debian saya yang secara otomatis mengunduh sumber untuk versi terbaru di manajer paket, menambalnya, dan mengompilasinya. Berjalan dengan benar di Debian Sid, dan seharusnya berfungsi dengan baik untuk distro Debian lainnya juga.

Wyatt8740
sumber
3

Pada Debian tidak stabil, Anda bisa mendapatkan fungsionalitas typeahead dengan menekan ctrl-lketika jendela terbuka (l untuk lookahead), tetapi hanya untuk dialog buka file, bukan dialog penyimpanan file. Untuk dialog penyimpanan file, ctrl-lhanya akan menyorot nama file yang akan disimpan. Untuk menavigasi dengan cara yang lebih cerdas, Anda bisa mengetik ~, /, .dalam kombinasi yang benar untuk mendapatkan direktori rumah Anda, direktori saat ini, atau jalur direktori dari root. Menekan tombol panah belakang juga dapat membatalkan pilihan nama dan menyimpan kursor di dalam kotak sehingga Anda tidak kehilangan nama saat ini (seperti yang akan terjadi dalam operasi "Simpan Sebagai").

Tampaknya perilaku lama itu jauh lebih baik :)

Andrew Olney
sumber