gj1*_*j13 32 linux firefox gtk arch-linux
如果我想在 gtk3 应用程序(例如 firefox)中打开或保存文件,我会在提示字符后获得不需要的搜索功能。
旧的和高效的行为:打字d
给我第一个以.开头的文件d
,打字de
给我第一个文件de
.
新的和不需要的行为:打字d
开始搜索过程,并/home/myuser/Downloads/somestuff/DETLEFF
在系统中的某处提供我或其他一些文件。
我怎样才能改回旧的和富有成效的行为?
我的系统:archliux64,Gtk3:3.18.6,windowmanager:fluxbox
Mar*_*kus 22
您正在寻找的功能称为“typeahead”,它在GtkFileChooserDialog
. gtk3-typeahead
从 AUR 恢复以前的行为。
包作者说禁用预先输入是硬编码在 GTK+ 中,在错误报告中指出:“这不是错误;删除预先输入搜索是非常有意的。”
请注意,名称/地址字段中现在有一些(部分损坏的)制表符完成功能,以模仿 shell 的行为。
从 2019 年开始,我开始使用Arch 的 AUR 存储库(但仍在我的 Debian 系统上)。我也在 FreeBSD 上做了这个,现在,有一个小的(有点微不足道的)补丁。这不是“切换到 Arch”的答案。
起初设置有点困难,但它的要点是您实际上可以编译 Arch 的makepkg
程序并使用它来编译 Debian 上的 AUR 存储库。我是这样做的(虽然我可能忘记了一些依赖项):
在底部附近的分隔符之后,我的旧答案仍然存在。
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
Run Code Online (Sandbox Code Playgroud)
现在,构建和安装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
Run Code Online (Sandbox Code Playgroud)
gtk3-typeahead
:然后,您可以运行以下命令来构建gtk3-typeahead
:
deb-src http://ftp.us.debian.org/debian/ sid main contrib
Run Code Online (Sandbox Code Playgroud)
执行此操作后,二进制文件将打包在.tar.gz
git 树上一级的存档中。在我的示例中,这将是into
目录。
要安装它:
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
Run Code Online (Sandbox Code Playgroud)
以我的拙见,这是高度可编写脚本的,并且比处理我的旧脚本要少一些。它也不再依赖于 debian。
一年过去了,这仍然让我很恼火,因为 GTK3 的人决定硬编码这种行为,如果不重新编译就无法恢复它。
但是,在 Ubuntu 中分发的 typeahead 被修补回 gtk3。
Ubuntu 还让文件选择器需要双击才能选择文件,而不是在文件已经被选择的情况下只需要单击一次。如果您可以修补 gtk3 源代码,我已经制作了一个从 gtk+ 3.22.7 开始工作的补丁,结合了 ubuntu 补丁并将它们更新到更新的 GTK 版本。
此外,我为我的 debian 系统制作了一个脚本,它会自动在包管理器中下载最新版本的源代码、修补它并编译它。可以在 Debian Sid 上正确运行,也应该适用于其他 Debian 发行版。
小智 5
在 Debian 不稳定版上,您可以通过ctrl-l
在窗口打开时按下(l 表示先行)来获得预输入功能,但仅适用于文件打开对话框,而不适用于文件保存对话框。对于文件保存对话框,ctrl-l
只会突出显示要保存的文件的名称。为了以更智能的方式浏览,你可以输入~
,/
,.
在正确的组合,让你的主目录,当前目录,或从根目录路径。同样按后退箭头键可以取消选择名称并将光标保持在框中,这样您就不会丢失当前名称(就像在“另存为”操作中发生的那样)。
似乎旧的行为要好得多:)
归档时间: |
|
查看次数: |
2540 次 |
最近记录: |