我将一些功能从Windows移植到Linux,我发现在Linux中更难匹配SHGetKnownFolderPath的功能。实际上glib中有一个API来处理这个部分,但我不想在这里使用那个库。另外link通过在.bashrc中导出变量来做到这一点,但我对Linux API有所了解。
此外,here解释了如何访问xdg-user-dir。有没有其他方法可以做到这一点,否则我会坚持这一点。请对此有所了解。
答案 0 :(得分:2)
Linux桌面的状态令人遗憾,特别是对于这种东西。 是一些FreeDesktop标准,但是对于一致性和对向后兼容性的承诺,没有任何接近Windows Shell API。
话虽如此,根据我的经验,最安全的做法是依靠XDG中的实用程序,特别是xdg-user-dir
在您的情况下(xdg utils在其他情况下会派上用场);如今它们几乎普遍安装,它们通常做“正确”的事情。此外,许多软件包依赖于它们,因此任何DE都可能测试集成至少(IOW:如果有人写的配置打破了xdg utils,那么很可能他们会修复它;如果它是超出规范的垃圾,恰好与xdg utils一起工作,他们可能不会注意到。)
请不要试图对这种东西过于聪明。 Firefox试图巧妙地使用Linux上的文件关联,并且点击其中的“打开文件夹”10年后打开随机应用程序(为了记录,在我的盒子上它非常喜欢打开Gwenview;在过去它喜欢更多的FileLight)。 / p>
答案 1 :(得分:0)
您可以从名为HOME的环境变量中检索的主目录。您可以使用getenv()
获取此内容。在您的主目录中,没有那么多标准化目录。您有Gnome,KDE和朋友使用的Desktop
用于桌面上的内容。不同的应用程序和应用程序最终会以前缀为单个.
的目录结束,目录内容的默认列表会在大多数应用程序中隐藏它们,例如.ssh
和.mc
。