如何指定gnome-screenshot的默认保存目录?

有没有一些配置选项可以指定gnome-screenshot的默认保存位置,还是这个位置是硬编码在源代码中的?
以前是~/Desktop,但似乎在12.04版本中改为了~/Pictures
我看到的唯一可能的解决方案是关于设置默认名称(现在包含时间戳信息而不仅仅是'Screenshot#'),但这个解决方案对我来说并不理想。
此外,这篇帖子建议下次截屏时会记住上次保存的位置,但根据我的经验,似乎并非如此。而且无论如何,在gconf-editor中的那个条目甚至似乎不能准确反映出最后的位置,所以很可能是与旧版本的gnome-screenshot相关的条目。

目录:


1我已经提交了一个错误报告,因为尽管该文件夹已被记录下来,但它并未被用来预先选择。https://bugs.launchpad.net/ubuntu/+source/gnome-screenshot/+bug/1000534 - pt123
对我来说的问题是: 默认文件夹设置为~/screenshots,并且一直运行良好。但是今天我注意到它被重定向到该文件夹中的一个子文件夹,无法重置。实际上,在这种情况下,它是一个空的子文件夹。我删除了子文件夹,自那以后它就正常工作了。 - mcaleaa
3下面的图形方法可以工作,但你真正想做的是:gsettings set "org.gnome.gnome-screenshot" "auto-save-directory" "file:///home/$USER/screenshot" - Ciro Santilli OurBigBook.com
3如果你想在使用Gnome 3.8或更高版本时进行更改,那就没那么幸运了。开发人员决定移除配置此功能的能力。 - palswim
@palswim GNOME似乎越来越像Windows 10的路线 - 删除了许多配置选项,并强制用户使用固定解决方案,好像“比用户更懂他们自己想要什么”... :( - raj
我发现令人难以置信的是,对于这个明显的配置调整,自从18.04版本以来,推荐的方法是安装一个非官方的gnome shell扩展(本身就是一个安全问题),通过你的浏览器(整个系统中最难保护的部分之一)来完成,并且实际上是通过浏览器扩展和一个本地主机连接器工具。而且,如果你想通过命令行来做,你会被指向需要为每个扩展修改的示例命令。系统管理到了什么地步??你所有的基地都属于任何人... - nealmcb
22个回答

对于12.04版本

通过图形界面

  1. 安装dconf-editor
  • 从命令行运行命令sudo apt-get install dconf-editor

  • 或者点击这里从Ubuntu软件中心安装:

    通过软件中心安装

2. 按下Alt + F2,然后输入dconf-editor 3. 转到org -> gnome -> gnome-screenshot 4. 在"auto-save-directory"中以以下格式输入所需的目录:file:///home/user/Desktop/ name: auto-save-directory, value: file:///full/path/ 对于在Unity中使用配置编辑器的任何人的提示:点击org文本左侧的箭头以展开它。

通过终端

只需运行此命令,将路径替换为您喜欢的目录。
gsettings set org.gnome.gnome-screenshot auto-save-directory "file:///home/$USER/Downloads/"

1就我个人而言,这在Debian Wheezy上有效。 - Erik Youngren
1谢谢你,desgua。这样做比每次都改变它给我带来了更少的压力。 - Luis Alvarado
注意,正如文本中提到的那样,它是“auto-save-directory”,而不是屏幕截图中突出显示的“last-save-directory”。 - rds
@rds 指出得很好。已更新。 - desgua
警告:在路径中使用~是无效的,例如~/Desktopfile:///~/Desktop会静默失败(图片最终保存在~目录下)。 - ntc2
我之前尝试过使用dconf-editor来设置自动保存目录,但是我的截图并没有被保存下来。我在我的主目录下通过修改日期进行了搜索,但是没有找到任何新文件。我使用的是Ubuntu 13.10。有任何想法吗? - Hatoru Hansou
你选择了哪个目录(file:///home...)? - desgua
2在Ubuntu 14.04中,它可以在不使用files://的情况下工作。按下Ctrl+L将显示位置:'/home/userName/location'。 - xkeshav
1我喜欢在“图片”文件夹里面有一个名为“屏幕截图”的子目录;而且默认设置为这样会更加方便。我还不明白为什么现有的应用程序没有提供更改此设置的方法。 - Akronix
14请注意,Gnome 3.8在使用键盘命令时不使用gnome-screenshot。 - Andy
5不是 files:// 而是 file:// - Reinier Post
16终端方法应该首先列出,因为它更简单。 - dinosaur
仍然适用于Mint 18.1。 - CoderGuy123
我之前通过终端操作了一些东西,现在我的截图工具无法正常工作了。(process:16744): dconf-WARNING **: failed to commit changes to dconf: GDBus.Error:org.gtk.GDBus.UnmappedGError.Quark._g_2dfile_2derror_2dquark.Code24: Failed to write file '/udd/MYUSER/.config/dconf/user.DFXC6Y': fsync() failed: Disk quota exceeded我遇到了这个错误,然后当我保存截图时,无法打开图片。 - desmond13
现在,如果我进入GUI并尝试更改自动保存文件夹,它不允许我这样做。我输入路径,但当我按ENTER键时,它返回旧值。基本上,我曾经能够更改它。然后我意识到它不起作用了,现在我无法将其改回。 - desmond13
@minidiable 看一下这个链接:https://askubuntu.com/questions/728863/cant-change-gedit-preferences-and-terminal-preferences-dont-save 还有这个链接:https://unix.stackexchange.com/questions/67890/disk-quota-exceeded-problem - desgua
8终端的gsettings方法在Ubuntu 18.04上无效。没有出现错误或警告,截图仍然保存在默认的/Pictures/目录下。dconf-edit也不起作用!自动保存目录显示为/Downloads/,但被忽略了。所有的截图都保存在~/Pictures/目录下。 - SYK
1Ubuntu 18.04 - 使用$USER无效。可以使用固定路径,例如: gsettings set org.gnome.gnome-screenshot auto-save-directory '/home/jgr/ScreenShots' - estibordo
@estibordo,你的解决方案在18.04.2版本上仍然对我无效。我尝试了单引号和双引号,但当我执行GET操作时,我可以看到它已经设置了,就像变量$USER一样... :( - secretAgent
https://bugs.launchpad.net/ubuntu/+source/gnome-screenshot/+bug/977228 于2012年4月9日报告 - secretAgent
@SYK 这个答案对于Ubuntu 18.04来说已经不够了。请参考下面的其他答案(现在有用的答案都包含标题以明确回答的范围)。 - pomsky

对于18.04及更高版本

对于那些想知道为什么还不起作用的人,这个错误被认为是已解决不修复这里是来源

为了解决此问题,您可以安装一个扩展程序。只需打开开关,然后转到您的Tweak工具,切换到扩展选项卡,找到屏幕截图位置

Tweak tool screenshot SS

点击齿轮图标,选择您想保存的位置,并在前面加上file://作为保存的协议。

Settings SS

这也适用于符号链接。

3在Ubuntu 18.04.4 LTS(bionic)上对我有效。 - eldad-a
在Ubuntu 18.04.5上对我有效。 - baponkar
220.04 上运行得很好! - Chris Hayes
在18.04版本上对我仍然有效。 - Reinier Post
这在21.10版本上无法运行。事实上,当安装这个扩展时,我甚至在Tweaks选项中都看不到它。 - Juan Antonio
只需在Gnome扩展(浏览器中)直接修改文件夹即可进行21.10的修改,因为在Tweaks中没有出现“扩展”选项卡。详情请参见:https://askubuntu.com/a/1373558/。 - Juan Antonio
sudo apt install gnome-tweaks - Ferroao

对于17.10及更高版本

事实证明,在GNOME 3.8或更高版本中,使用PrintScreen键进行屏幕截图并不那么简单。

首先,您可以尝试按照以下步骤将~/Desktop(例如)设置为gnome-screenshot的自动保存目录。

  1. 打开dconf Editor
  2. 导航到/org/gnome/gnome-screenshot/auto-save-directory
  3. 禁用使用默认值
  4. 自定义值框中输入file:///home/YOUR_USERNAME/Desktop

或者,您可以在终端中运行以下命令:

gsettings set org.gnome.gnome-screenshot auto-save-directory 'file:///home/YOUR_USERNAME/Desktop'

但是,即使这样做了,如果你按下PrintScreen键,截图将会保存在GNOME 3.8或更高版本的~\Pictures目录中(参见this bug report)。 因此,作为一种解决方法,你现在可以为gnome-screenshot添加另一个自定义键盘快捷方式,它将把截图保存到~/Desktop目录中。请按照以下步骤操作:
  1. 打开设置 > 键盘并向下滚动到底部。
  2. 点击+符号。应该会弹出一个框。
  3. 名称框中输入任何你喜欢的名称。
  4. 命令框中输入gnome-screenshot
  5. 点击设置快捷键...按钮,并设置任何不会引起冲突的键盘组合,例如Super+PrintScreen
然后退出并重新登录。现在,按下Super+PrintScreen应该将捕获的屏幕截图保存在~/Desktop中。
附注:为了方便起见,您可以先将“将屏幕截图保存到图片”快捷键更改为其他快捷键,例如Super+PrintScreen,或者完全禁用它,然后将PrintScreen分配给刚创建的自定义快捷键。
你可以通过在命令框中使用以下标志来精确选择所需的截图类型(gnome-screenshot <FLAGS>):
  • -a(代表“区域”)允许你使用鼠标选择要截图的区域;
  • -w(代表“窗口”)将只截取当前活动窗口的截图(而不是整个屏幕);
    • -b 将包括窗口边框在截图中,
    • -B 将不包括边框。
  • -p(代表“指针”)将在截图中包括鼠标指针(显然对-a没有影响);
  • -i(代表“交互式”)将允许你在弹出的对话框中设置选项。
你可以组合多个标志使用:例如,gnome-screenshot -wB将截取当前活动窗口的截图,但不包括边框。
你可以通过man gnome-screenshot获取可用选项/标志的详尽列表。

2+1 因为我正在寻找解决方法。虽然这不是一个真正的解决方法,可能只是唯一的权宜之计,因为在查看了错误报告后,gnome团队并不打算修复这个问题(而在之前的版本中是没有问题的)。我也尝试了你提到的所有方法,所以要么我会采纳你的建议,要么转向KDE(至少他们提供了选项)。 - Luis Alvarado
2如果你想模仿“区域截图”(在屏幕上用鼠标画出选择的部分),你应该在 命令 框中输入 gnome-screenshot -a。正如 man gnome-screenshot 中所述,你可以将 -a 替换(或添加)为:-c 以将图像复制到剪贴板中(这样你就可以使用 Ctrl+V 粘贴),而不是保存为文件;如果你想要复制当前窗口,则使用 -w 等。 - ebosi
另一个相关的错误报告:https://gitlab.gnome.org/GNOME/gnome-settings-daemon/issues/323 - Wildcard
还要注意,正如@doug的回答中提到的那样,使用-i / --interactive选项也会使用上次的目录,这在您不想为每个新活动更改默认保存目录,而是希望特定活动始终使用相同的目录时非常有用。 - hsandt

对于12.04版本

在12.04版本中,可以配置“自动保存”功能,并且在使用gnome-screenshot本身时,可以使用gnome-screenshot --interactive命令,该命令会使用最后保存的目录。

从键盘绑定来看,默认保存到“图片”文件夹(是个bug还是故意这样设计的?)

在12.04早期版本中,键盘绑定的截屏功能默认使用了auto-save,但是人们抱怨后又改回了interactive模式。

gnome-screenshot的这两个设置都可以在gsettings和dconf-editor中找到。

enter image description here


没错。在使用交互模式时,它确实会使用上次保存的目录设置,但是还会引入一个额外的对话框来选择你想要抓取的内容 - 我猜这已经是最好的了。谢谢 :-) - trent
1当按下CTRL Print键时,如何设置被调用的参数--interactive - rubo77
@rubo77(适用于Ubuntu 20.04)就我个人而言,我刚刚定义了一个自定义的键盘快捷方式“将截图保存到上次目录”,它运行“gnome-screenshot --interactive”。在那里,“选择整个屏幕”应该是默认选中的(应该替换您的<keyboard>Ctrl</keyboard>),但您仍然需要按Enter键确认选项。然后,您将看到通常的弹出窗口,其中上次目录被选中。不确定为什么我们不能在没有整个选项选择部分的情况下选择上次目录... - hsandt

适用于18.04及更高版本

首先从设置中禁用默认的截图快捷键:

Disable default screenshot shortcut

在设置中创建自定义键盘快捷方式:

将其命名为gnome-screenshot,将命令也设置为gnome-screenshot

快捷键值:输入按键[Print Screen]

创建自定义快捷方式:

Create a custom shortcut

现在进入(如果您还没有安装,请先安装)。 转到:org → gnome → gnome-screenshot → auto-save-directory:将自动保存目录的自定义值更改为您想要的路径。
输入自定义路径:

Enter the custom path


如何将区域截图保存到图片中?请告诉我该命令的名称和用法。我按照您的回答尝试了"Shift+Print",但它保存的是全屏截图,而不是提示选择区域。 - mr.loop
明白,使用 gnome-screenshot -a - mr.loop

对于18.04及更高版本

安装GNOME Shell扩展屏幕截图位置,作者是TimurKiyivinski。感谢他将GNOME团队开发人员不想实现的更改打包成一个扩展,从而使解决问题变得非常简单。

编辑:显然,您仍然需要使用dconf编辑器更改默认路径。


适用于21.10及更高版本

我尝试了标记为“适用于18.04及更高版本”的答案。然而,在我的21.10安装中它并没有起作用。幸运的是,经过一些尝试和错误,我找到了一个简单的修改方法。

基本的解决方法是不要使用Tweak工具,因为扩展似乎不显示。相反,安装屏幕截图位置扩展,然后转到您的Gnome 已安装扩展页面,然后点击屏幕截图位置扩展的配置按钮,选择您想要的文件夹,完成。

这是配置窗口的屏幕截图:配置窗口的屏幕截图


在12.04版本中(之前的Ubuntu版本我没有查看过,因为我从未遇到过这个问题),您需要将自动保存目录设置为您想要存储截图的位置。通过这样做,每次您截图时,它都会自动保存在那里。我也喜欢使用~/桌面,并且您也不需要像以前那样指定目标位置。唯一表明您已经截图的是屏幕的短暂闪烁。然而,我很想知道如何恢复提示,因为有时我喜欢将截图存储在其他文件夹中,而不是默认的文件夹,每次更改设置或移动图像都会很麻烦。

你把自动保存目录设置在哪里了? - fabricator4
看看 @doug 在我的回答上方的评论。在 gnome-screenshot 的配置编辑器部分的图片中,第一个设置是自动保存目录。只需在那里写下所需文件夹的位置(例如桌面),然后你就可以开始了。 :) 他的例子中设置为“文档”。 - rbaleksandar

对于Ubuntu 13.10(Saucy Salamander)

  • 安装dconf-editor

  • 打开它并转到:org → gnome → gnome-screenshot

  • auto-save-directory中以以下格式输入所需的目录:/home/user/Desktop/

P.S.:不要以这种格式file:///...输入


2为什么“file:///...”格式不被接受?只是好奇,我更喜欢使用“/home/user”版本。 - Stratus3D
1file:///格式对我来说似乎正常工作。 - Zoey Hewll

因为默认的截图应用程序总是将截图存储在$HOME/Pictures目录下,而且没有明显的方法来重新配置该目录,所以我编写了一组systemd 用户单元来监视$HOME/Pictures目录。每当该目录中的文件发生变化时,所有以$HOME/Pictures/"Screenshot from"*命名的文件都会被移动到子目录$HOME/Pictures/Screenshots

以下是我的操作步骤:

创建文件/etc/systemd/user/screenshot-mover.path

[Unit]
Description=Screenshot Watcher
Documentation=man:systemd.path
AssertPathIsDirectory=%h/Pictures
AssertPathIsDirectory=%h/Pictures/Screenshots

[Path]
PathChanged=%h/Pictures

[Install]
WantedBy=default.target

创建一个文件/etc/systemd/user/screenshot-mover.service
[Unit]
Description=Screenshot Mover
Documentation=man:systemd.service
AssertPathIsDirectory=%h/Pictures
AssertPathIsDirectory=%h/Pictures/Screenshots
ConditionPathExistsGlob=%h/Pictures/Screenshot\ from*

[Service]
Type=oneshot
WorkingDirectory=%h/Pictures
ExecStart=/bin/sh -c '/bin/mv -v -t Screenshots "Screenshot from"*'

对于每个想要这种机制的用户,发出以下指令:
systemctl --user daemon-reload
systemctl --user enable --now screenshot-mover.path

请不要以root身份运行这些命令,而是以您的用户身份运行。

功能:

每当路径$HOME/Pictures中的某个内容发生变化时,单元screenshot-mover.service会被调用,并将与$HOME/Pictures/"Screenshot from"*匹配的每个文件移动到子目录$HOME/Pictures/Screenshots。我知道这是一种“hack”,但这种方法对我来说已经有效了几个月,我只想分享出来。