Як відключити пошук 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 рік я з того часу сподівався використовувати сховище Arch AUR (але все ще в моїй системі 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рядок у своєму source.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архів на одному рівні над деревом git. У моєму прикладі це був би 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.