我该如何更改或隐藏~/snap目录?

我不太喜欢应用程序在我的$HOME目录中杂乱地放置它们自己的文件或目录。这通常不是个问题,因为大多数应用程序都会礼貌地通过在数据前加上点号或符合~/.config标准来隐藏它们的数据。但是snap不是这样。

问题1:我对这个目录有误解吗?~/snap真的是一个我每天都要进入和访问的目录,与~/downloads~/pictures~/work等同级吗?

问题2:无论如何:我能把它移动到例如~/.snap吗?我找不到类似/etc/snap/etc/default/snap~/.config/snap这样的东西来调整设置。我尝试了export SNAP_USER_DATA=$HOME/.snap但没有起作用。


23这是不可能的。但是我的家目录里不止有这一个文件,还有很多其他文件。而且一点一滴积累起来会变成大量。此外,我已经配置了我的系统,使得我的桌面显示的是$HOME,而不是$HOME/Desktop,因为这样对我来说更有意义。但是这也意味着不想要的目录和文件会更加明显和让人厌烦。另外还有一整套关于应用程序应该隐藏其配置文件的问题。 - Stephan Henningsen
29或者这样想:突然有人走进来,把一个盒子放在你的桌子上,又一言不发地离开了。你难道不觉得在某个时刻,你会发现那个盒子挡住了你的路,并且想要把它移走吗?=)我肯定喜欢决定自己桌子上放什么,同样也喜欢决定我的$HOME目录中哪些文件是可见的。 - Stephan Henningsen
14Trololo?在您的主文件夹中运行此命令,您将看到如果每个程序只在您的主目录中创建一个单独的文件夹会发生什么:for f in .*; do g="${f#.}"; echo "How can a single file clutter your home folder? It's just ${g}." ; echo ln -sv "$f" "${g}_"; done实际上这是无害的,但您应该删除最后的echo,我想您会“买我的思路”。 - Stephan Henningsen
3对的...所以一半的对话被删除了,让我看起来有点精神分裂 =)。但是为了记录,最初和后续的评论大致是这样的:“一个文件怎么可能把你的主目录弄得乱七八糟?[...] 我还是不认同你的思路。” - Stephan Henningsen
1他们目前声称的“解决方法”是“将文件夹设为隐藏”(https://cialu.net/how-to-move-snap-folder-away-from-home-location-in-linux/),但这个“解决方法”并不是真正的解决方法,也不能使文件夹变为隐藏状态,它只是从图形文件管理器的显示中移除了该文件夹,但当然该目录仍然存在,仍然被称为“~/snap”,并且在命令行界面中仍然明目张胆地显示在主目录中。 - NeilG
1这是在这里的几个答案中提到的同样的解决方法。就像你自己总结的那样,这并不是一个很好的解决办法。 - Stephan Henningsen
6个回答

所以...

A1: 不,~/snap不应该每天手动访问;它是一个设置目录。

A2: 不,~/snap不能被更改;这是设计上故意将杂乱放在你的主目录下。

然而,已经有一个关于这个问题的错误报告,但目前只被列为愿望清单。如果你受到这个错误的影响(如果你有~/snap的话,你就受到了影响),请告诉亲切的开发人员,并鼓励他们通过提高其重要性来修复这个错误:

  1. 前往错误报告
  2. 登录到Launchpad(右上角)。
  3. 点击此错误影响N个人。这个错误是否影响你?(靠近左上角)
  4. 点击是的,这个错误影响我
在此期间,请按照@Rinzwind的建议,在终端中输入以下命令,将该目录隐藏以避免Nautilus显示:
echo snap >> ~/.hidden

通过彻底卸载与snap相关的所有内容,从而 完全摆脱 snap 的替代方法,如此处所述


35谢谢你指出那个错误报告。相信我,如果在我安装一个snap时,在我的$HOME目录下出现了一个snap目录,我可以自信地说我绝对不会使用这项技术。如果像我怀疑的那样,这成为Ubuntu平台上一个确定存在的部分,我将不得不重新考虑我几十年来对这个平台的承诺。这个决定太疯狂了。 - Scaine
1刚刚也投了票 - 看起来可能会发生一些事情。我会重复一下斯蒂芬在错误报告中的评论:“现在是2017年了,拜托。” - Larpon
20现在已经是2019年了,可是这个问题还没有任何进展。加油!立即清除快照。 - Murphy
11这就是最让人恼火的傲慢。卸载。 - Dodgie
8没错!“就算我们在你的主目录里拉屎又怎样?你就忍了吧!”这就是我们现在所面对的问题。 - Stephan Henningsen
8我实际上完全移除了Snap,只是因为描述的问题。我用它来安装谷歌浏览器,但如果这个问题没有解决,那就算了... - 0ne_Up
2这在KDE / Kubuntu的Dolphin文件管理器中也很有效。谢谢! - Nick
2有些事情正在发生:https://github.com/snapcore/snapd/pull/10836 - Martin

Q1: 我是否误解了这个目录?~/snap真的是一个我应该每天进入和访问的目录,与~/downloads、~/work、~/tmp等目录一样重要吗?
它是一个普通的目录,但实际上并不是为用户访问而设计的。它由snapd实用程序管理。很可能会在某个时候将其重命名为~/.snap。或者更不太可能地重命名为~/.local/share/snap。
Q2: 无论如何:我该如何隐藏它?
当它被重命名后,它将自动隐藏。
为了暂时从桌面环境中隐藏它,创建一个名为~/.hidden的文本文件,并在其中写入单词"snap"。这将隐藏Nautilus中的"~/snap"文件夹。
为了暂时隐藏命令行,将ls别名为ls -Isnap。现在,在执行ls命令时,"snap"将被忽略。

4将"alias ls to ls -Isnap"翻译成中文。请注意,它会在任何运行ls的地方隐藏"snap",而不仅仅是在$HOME目录中。真正的解决方案属于snap。 - jrouquie
这个解决方案不仅没有显示快照目录,而且也忽略了我为不同文件类型保存的颜色偏好,也就是说,无法在视觉上区分文件和目录。有什么建议吗? - Nicholas Cousar
1在设置新的别名之前,运行alias ls命令,这将显示现有的别名(可能是alias ls='ls --color=auto')。然后你可以在末尾添加选项,如alias ls='ls --color=auto -Isnap' - Suzanne Soy
谢谢你提供的~/.hidden解决方案,这对我来说已经足够好了。 - Yimin Rong

所有的Snap应用程序(如果已安装)都位于/snap目录中。 /home/user/snap包含了这些Snap应用程序的个人设置(如果已安装)。 当您安装第一个Snap软件包时,/home/user/snap文件夹会被创建。
如果您没有安装Snap应用程序,可以删除/home/user/snap文件夹。 如果您安装并使用新的Snap应用程序,该文件夹将会重新创建 - 这是设计上的要求。 由于snapd正在不断发展中,未来可能会选择另一个默认目录。

4如果您希望为此配置选项,我建议您向snapd本身提交错误报告,链接在这里:https://bugs.launchpad.net/snappy/+bugs - popey
1@popey 我已经领先了 =) 我甚至发现已经有人提交了一个错误报告。我正在回答自己的问题,并提供了如何鼓励开发人员修复它的指导。 - Stephan Henningsen

这目前是作为一个实验性的功能标志位来实现的。
$ sudo snap set system experimental.hidden-snap-folder=true

旗帜也可以通过运行来禁用。
$ sudo snap unset system experimental.hidden-snap-folder

2有趣!我不知道该怎么想这个。我的意思是,仅仅因为这个功能用了5年才实现,并且仍然被视为实验性特性,这表明它只是一种权宜之计。可能只会变成~/.snap而不是~/.config/share/snap。也许那样也可以,我也不确定了;我对Snap很生气,厌倦了与之斗争,所以我转向了Arch。不管怎样,恭喜你的第一篇帖子。它很好,内容完整!=) - Stephan Henningsen

我认为我实际上有一个解决方案!嗯,有点。有一个名为“Nautilus Hide”的Nautilus扩展程序,可以隐藏文件和文件夹而不更改它们的名称。它基本上将文件夹的名称写入一个文件,Nautilus使用该文件来查看文件夹是否应该被隐藏。效果非常好!

https://github.com/brunonova/nautilus-hide


2我对此感到不确定。虽然这回答了问题标题的一半,但没有解决正文中的任何一个问题。你描述了另一种在Nautilus中隐藏目录的解决方法,尽管(我看到的是)这是一个用户友好的插件,适用于不熟悉shell命令行的用户(例如echo snap >> ~/.hidden),但他们熟悉gitcmakesudo make install。我想这确实为问题增加了一些新内容。 - Stephan Henningsen
有时候你想要隐藏和显示一个文件夹,而不必打开命令行界面对吧?右键点击并选择隐藏比打开一个程序然后输入命令要快得多。至少对我来说是这样。 - Aslan French
1你说“有时候”,但这个问题完全是关于一个单独的目录。而且你仍然需要“打开CLI”来完成你提出的工作,还需要安装git来拉取它,以及整个构建系统来编译它,最后还要运行sudo来安装它。这更加复杂。至少对我来说是这样。 - Stephan Henningsen
1很酷,但我真的不明白为什么会被踩。似乎并没有违反社区准则。我的解决方案并没有错,对其他浏览此页面的人可能会有用。 - Aslan French
你在~/.hidden中添加snap的解决方案已经在两个现有答案中解释过了,唯一的区别是你的方法更加复杂。我觉得这并不实用,我不会向任何人推荐这种方法,因此对实用性给予-1评分。 - Stephan Henningsen

为了暂时隐藏命令行,将ls别名为ls -I snap --color=tty
这样可以显示颜色偏好。

这个答案已经被提出过了。添加的 --color=tty 与问题无关。不过,欢迎你 =) - Stephan Henningsen