我能否阻止应用程序在文件选择对话框中默认选择“最近使用”?

在Ubuntu和Kubuntu 11.10中,我注意到GTK文件选择对话框的行为发生了变化。当我尝试打开新文件(第二个、第三个等,而不是编辑器中的第一个文件)时,对话框会显示“最近使用”部分。这对我来说非常不方便,在10.04中,对话框会显示上次打开文件所在的文件夹。有人知道如何恢复旧的行为吗?

4虽然我尚未测试以了解确切情况,但几乎可以肯定这是由于11.10使用GTK3而不是GTK2造成的。如果您认为这不是正常行为,请建议您将此问题报告为错误。 - Oli
在某些情况下,这是可以的,但我希望能够在某些配置中进行更改。 - Dim_K
4这个功能真的很烦人!我已经尝试过修改~/.config/gtk-2.0/gtkfilechooser.ini,但迄今为止没有成功。 - Tzury Bar Yochay
1在此之前,11.10版本默认为"文件系统",即"/",如果我没记错,之前的版本默认为"主页"。能够配置一个默认选项对我来说很有帮助,因为我大部分工作都在一个"进行中"的文件夹中进行。 - fragos
文件选择对话框的最近使用部分显示了我最近使用的文件,尽管我已经清除了KDE启动应用程序启动器中的“最近使用”列表。它会将这些文件的列表存储在哪里呢?它不是~/.recently-used.xbel,那么是什么呢?我很困惑,请帮忙!:) - user36631
3这个问题是否有任何活跃的Launchpad错误报告?我想要关注它们并为合理的默认设置和/或可定制性提供支持。 - weberc2
Gnome的bug链接是:https://bugzilla.gnome.org/show_bug.cgi?id=658280 - fgb
6个回答

据我所知,这是GTK+ 3.x的一个“特性”,我不确定它是否可以改变。
如果我找到解决方案,我会更新我的答案,但目前我不知道任何解决方法(除了报告错误)。
更新:
我相信我可能已经找到了一个部分解决方案。不幸的是,这不是一个永久性的解决方案。
1. 安装dconf-tools。 2. 运行dconf-editor。 3. 导航到org.gtk.settings.file-chooser。 4. 将last-folder-uri值更改为您选择的文件夹,例如file:///home/rolandixor/Desktop。 5. 现在,您的文件选择对话框应默认使用此文件夹。然而,如果您使用对话框但实际上没有打开/保存文件,它们将恢复到最近使用的文件夹。
更新2:
由于这个问题相当棘手,这里还有另一个可能的解决方案(部分解决)。
  1. 打开 gedit
  2. 打开一个文件(从你想要使用的文件夹中)。
  3. 保存一个文件(另存为)到你想要使用的文件夹中。
  4. 关闭 gedit。只有在你实际上从文件夹中打开一个文件并保存到文件夹中时,这个方法才有效。如果你打开对话框但不做任何操作,关闭后会恢复原样。没有其他办法可以绕过这个问题。

好的,我本来就担心会是这样。我会等几天看看是否有人能提出一个聪明的解决方案,否则我会给你奖励。 - Kris Harper
@root45:我打算对这个问题进行一些搜索,并更新我的答案。 - RolandiXor
@root45:现在来看一下我的更新吧:) - RolandiXor
1嗯,对我来说似乎不起作用。我仍然看到了“最近使用”的文件夹。 - Kris Harper
@root45:在gedit中对我有效,但正如我所说,这只是一个部分解决方案。我将在我的答案中更新另一种可能性。 - RolandiXor
新的解决方案似乎有效,但并不是永久性的。如果我从想要使用的文件夹中打开一个文件,那么所有的文件选择对话框都会使用该文件夹。但一旦我退出并重新打开gedit,它就会恢复默认设置。 - Kris Harper
@root45:就像我说的那样,这只是部分的 - 而且如果没有 cron 作业,这已经是最好的了。 - RolandiXor
很遗憾,在Kubuntu中,dkonf-editor无法显示org.gtk.filechooser文件夹。 - Dim_K
在运行dconf-editor之前,先运行gnome-settings-daemon - RolandiXor
@Roland Taylor 没有任何变化。我仍然在org文件夹中找不到gtk文件夹。 - Dim_K
也许在KDE中这是不可能的。可能是因为dbus在启动时需要进行一些花哨的魔法...最好是在基于GTK+的环境中编辑此类内容(这不是一个KDE的问题)(: - RolandiXor

这种行为也让我感到不舒服,近日我对此进行了更仔细的观察。

到目前为止,我只发现GTK3应用中的一个会在启动时总是弹出“最近使用”的文件夹:Gedit。其他我测试过的应用程序(如Totem、Eog、Evince、File-Roller等)都会在文件选择器中显示一个“正常”的文件夹(在新的访客会话中进行了测试)。

因此,我编写了一个小补丁,使Gedit在无法使用“最近使用”时回退到Home文件夹:http://pastebin.com/GhXCRzNV

如果需要,我还可以提供debdiff或创建一个PPA。


Geany也表现出这种令人讨厌的行为。请问我们如何应用您的补丁呢?您的补丁能解决其他应用程序的问题吗,还是只针对Gedit?虽然我不是程序员,但我可能能够按照说明进行操作——只要它们对像我这样笨拙的人来说足够简单就行;-) - dunderhead

对于GTK2,您需要编辑$XDG_CONFIG_HOME/gtk-2.0/gtkfilechooser.ini并进行设置。
StartupMode=cwd

对于GTK3来说,没有办法改变它。在旧版本中,这个命令可能有效。
gsettings set org.gtk.Settings.FileChooser startup-mode cwd

1"org.gtk.SettingsFileChooser" 应该改为 "org.gtk.Settings.FileChooser",在 "Settings" 和 "FileChooser" 之间加上 . - Uyghur Lives Matter

也许将gtk3修补一下,使其在最近使用的文件中同时显示上一个文件所在的文件夹会更容易。我觉得这对我来说会很好用。

last-folder-uri在下次使用文件选择器时会被更改,而您需要设置startup-mode

通过软件中心安装dconf-editor:

Gnome software entry for Dconf Editor

或者通过命令行界面(cli)。

autocomplete output of dconf attempting to install dconf-editor

sudo dnf install dconf-editor

启动它,然后导航到org.gtk.settings.file-chooser.startup-mode

enter image description here

dconf 命令行似乎无法访问此键,您可以查看 gsettings

gsettings set org.gtk.gtk4.Settings.FileChooser startup-mode 'cwd'

如果您遇到了gsettings使用内存后端的错误,那么您可能需要检查您正在使用哪个gsettings可执行文件:
which gsettings
# MYHOME/.asdf/shims/gsettings

在我的情况下,我忘记了我安装了带有asdf的Anaconda Python,这会引入很多不必要的shims。
asdf uninstall python anaconda-2018.12

此外,您还可以使用快捷方式来显示位置输入框并转到所需的目录:~(波浪号),某些键盘上是Shift-`。