Как отключить поиск GtkFileChooserDialog?


24

Если я хочу открыть или сохранить файл в приложении gtk3 (например, Firefox), я получаю нежелательную функцию поиска после подсказки персонажа.

Старое и продуктивное поведение: ввод dпервого файла дает мне начало d, а ввод deпервого - de.

Новое и нежелательное поведение: набор текста dзапускает процесс поиска и дает мне /home/myuser/Downloads/somestuff/DETLEFFили какой-то другой файл где-то в системе.

Пример: Gtk3FileChooser

Как я могу вернуться к старому и продуктивному поведению?

Моя система: archliux64, Gtk3: 3.18.6, менеджер окон: fluxbox

Ответы:


18

Функция, которую вы ищете, называется «typeahead» и в ней отключена GtkFileChooserDialog. gtk3-typeaheadот AUR восстанавливает предыдущее поведение.

Автор пакета говорит, что отключение typeahead жестко закодировано в GTK +, и в отчете об ошибке было сказано: «Это не ошибка; удаление поиска с опережением было очень намеренным».

Обратите внимание, что теперь в поле имени / адреса есть некоторое (частично нарушенное) завершение табуляции, имитирующее поведение оболочки.


6

Обновленный ответ:

С 2019 года я перешел к использованию AUR-репозитория Arch (но все еще в моей системе Debian ). Я также сделал это на FreeBSD, теперь с небольшим (несколько тривиальным) патчем. Это НЕ ответ «переключиться на арку».

Сначала это было немного сложно настроить, но суть в том, что вы можете скомпилировать makepkgпрограмму Arch и использовать ее для компиляции репозиториев AUR в Debian. Я сделал это так (хотя, возможно, я забыл некоторые зависимости):

Мой старый ответ все еще присутствует после разделителя внизу.

1) Здание 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) Подготовка к компиляции источников GTK3:

Теперь собирать и устанавливать gtk3-typeahead. Чтобы получить все зависимости (debian) для сборки, которые более или менее совпадают с зависимостями Arch, вы должны сначала добавить deb-srcстроку в ваш sources.list, чтобы apt-get build-depуспешно получить нужные -devпакеты.

Мой sources.listсодержит следующую строку, чтобы сделать это. Измените строку в зависимости от вашего выпуска и ближайшего сервера.

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

3) Здание gtk3-typeahead:

Затем вы можете запустить следующее для сборки 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

После этого двоичные файлы будут упакованы в .tar.gzархив на один уровень выше дерева мерзавцев. В моем примере это будет intoкаталог.

Чтобы установить это:

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"

Это очень хорошо подходит для написания сценариев, и, по моему скромному мнению, это немного менее требовательно, чем работа со старыми сценариями. Это также больше не зависит от Debian.


Оригинальный ответ:

Это был год, и это до сих пор меня раздражает, так как ребята из GTK3 решили жестко закодировать это поведение без возможности отменить его без перекомпиляции.

Однако typeahead был исправлен обратно в gtk3, как он был распространен в Ubuntu.

Ubuntu также заставил средство выбора файлов требовать двойной щелчок для выбора файла, вместо того, чтобы требовать только один щелчок, если файл уже был выбран. Если у вас все в порядке с исправлением исходного кода gtk3, я сделал патч, который работает с gtk + 3.22.7, комбинируя патчи ubuntu и обновляя их до более новой версии GTK.

Кроме того, я создал скрипт для своей системы Debian, который автоматически загружает исходный код для последней версии в диспетчере пакетов, исправляет его и компилирует. Правильно работает на Debian Sid и должен нормально работать и на других дистрибутивах Debian.


3

В нестабильном Debian вы можете получить функциональность typeahead, нажав, ctrl-lкогда окно открыто (l для просмотра в будущее), но только для диалогов открытия файлов, а не диалогов сохранения файлов. Для диалогов сохранения файла ctrl-lбудет выделено только имя файла, который будет сохранен. Для того, чтобы перейти в более разумном способе, вы можете ввести ~, /, .в правильных комбинациях , чтобы получить ваш домашний каталог, текущий каталог или путь к каталогу от корня. Также нажатие клавиши со стрелкой назад может отменить выбор имени и удерживать курсор в поле, чтобы не потерять текущее имя (как это происходит в операции «Сохранить как»).

Похоже, что старое поведение было намного лучше :)

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.