Làm cách nào để tắt tìm kiếm GtkFileChooserDialog?


24

Nếu tôi muốn mở hoặc lưu tệp trong ứng dụng gtk3 (ví dụ: firefox), tôi nhận được một chức năng tìm kiếm không mong muốn sau khi tip một ký tự.

Hành vi cũ và hiệu quả: gõ dcho tôi tệp đầu tiên bắt đầu d, gõ decho tôi tệp đầu tiên với de.

Hành vi mới và không mong muốn: gõ dbắt đầu một quá trình tìm kiếm và đưa cho tôi /home/myuser/Downloads/somestuff/DETLEFFhoặc một số tệp khác ở đâu đó trong hệ thống.

Thí dụ: Gtk3FileChooser

Làm thế nào tôi có thể thay đổi trở lại hành vi cũ và năng suất?

Hệ thống của tôi: archliux64, Gtk3: 3.18.6, windowmanager: fluxbox

Câu trả lời:


18

Tính năng bạn đang tìm kiếm được gọi là "typeahead" và nó bị vô hiệu hóa GtkFileChooserDialog. gtk3-typeaheadtừ AUR khôi phục hành vi trước đó.

Tác giả gói nói rằng việc vô hiệu hóa kiểu chữ được mã hóa cứng trong GTK + và trong một báo cáo lỗi, nó đã được ghi rõ: "Đó không phải là một lỗi; việc loại bỏ tìm kiếm trước loại rất có chủ ý."

Lưu ý rằng bây giờ có một số hoàn thành tab (bị hỏng một phần) trong trường tên / địa chỉ bắt chước hành vi của trình bao.


6

Cập nhật câu trả lời:

Kể từ năm 2019, tôi đã hy vọng sử dụng kho lưu trữ AUR của Arch (Nhưng vẫn còn trên hệ thống Debian của tôi ). Bây giờ tôi cũng đã thực hiện điều này trên FreeBSD, với bản vá nhỏ (hơi tầm thường). Đây KHÔNG phải là câu trả lời "chuyển sang Arch".

Ban đầu hơi khó cài đặt, nhưng ý chính của nó là trên thực tế bạn có thể biên dịch makepkgchương trình của Arch và sử dụng nó để biên dịch các kho lưu trữ AUR trên Debian. Tôi đã làm như vậy (mặc dù tôi có thể đã quên một số phụ thuộc):

Câu trả lời cũ của tôi vẫn còn sau khi dải phân cách gần phía dưới.

1) Tòa nhà 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) Chuẩn bị biên dịch các nguồn GTK3:

Bây giờ, để xây dựng và cài đặt gtk3-typeahead. Để có được tất cả các phụ thuộc xây dựng (debian), ít nhiều giống với Arch, trước tiên bạn phải có một deb-srcdòng trong nguồn.list để có apt-get build-depthể tìm nạp thành công các -devgói cần thiết .

My sources.listchứa dòng sau để làm điều đó. Thay đổi dòng dựa trên bản phát hành của bạn và máy chủ gần nhất.

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

3) Tòa nhà gtk3-typeahead:

Sau đó, bạn có thể chạy các bước sau để xây dựng 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

Sau khi làm điều này, các nhị phân sẽ được đóng gói trong .tar.gzkho lưu trữ một cấp trên cây git. Trong ví dụ của tôi, đây sẽ là intothư mục.

Để cài đặt nó:

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"

Điều này có tính kịch bản cao, và ít rắc rối hơn so với việc xử lý các kịch bản cũ của tôi theo quan điểm khiêm tốn của tôi. Nó cũng không còn phụ thuộc vào debian.


Câu trả lời gốc:

Đã một năm và điều này vẫn làm tôi khó chịu, vì những người GTK3 đã quyết định mã hóa hành vi này, không có cách nào để hoàn nguyên nó mà không biên dịch lại.

Tuy nhiên, kiểu chữ đã được vá lại thành gtk3 như được phân phối trong Ubuntu.

Ubuntu cũng làm cho trình chọn tệp yêu cầu doubleclick để chọn tệp, thay vì chỉ yêu cầu một lần nhấp nếu tệp đã được chọn. Nếu bạn đồng ý với việc vá mã nguồn gtk3, tôi đã tạo một bản vá hoạt động kể từ gtk + 3.22.7 kết hợp các bản vá ubfox và cập nhật chúng lên phiên bản GTK mới hơn.

Ngoài ra, tôi đã tạo một tập lệnh cho hệ thống debian của mình, nó tự động tải xuống nguồn cho phiên bản mới nhất trong trình quản lý gói, vá nó và biên dịch nó. Chạy chính xác trên Debian Sid và cũng hoạt động tốt đối với các bản phát hành Debian khác.


3

Trên Debian không ổn định, bạn có thể có được chức năng đánh máy bằng cách nhấn ctrl-lkhi cửa sổ đang mở (l cho cái nhìn), nhưng chỉ cho các hộp thoại mở tệp chứ không phải các hộp thoại lưu tệp. Đối với ctrl-lcác hộp thoại lưu tệp, sẽ chỉ tô sáng tên của tệp sẽ được lưu. Để điều hướng một cách thông minh hơn, bạn có thể gõ ~, /, .trong những sự kết hợp chính xác để có được thư mục nhà của bạn, thư mục hiện hành, hoặc một đường dẫn thư mục từ gốc. Ngoài ra, nhấn phím mũi tên lùi có thể bỏ chọn tên và giữ con trỏ trong hộp để bạn không mất tên hiện tại (như sẽ xảy ra trong thao tác "Lưu dưới dạng").

Có vẻ như hành vi cũ đã tốt hơn nhiều :)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.