[英]SHGetKnownFolderPath equivalent API in Linux
Linux桌面的状态令人一团糟,尤其是对于这种东西。 有一些FreeDesktop标准,但与Windows Shell API的一致性和对向后兼容性的承诺均不相上下。
话虽如此,以我的经验,最安全的方法是依赖XDG的实用程序,尤其是xdg-user-dir
(在其他情况下, xdg utils可能会派上用场); 如今,它们几乎已被普遍安装,并且通常做“正确的”事情。 而且,许多软件包都依赖它们,因此任何DE都可能至少对它们进行集成测试(IOW:如果有人编写的配置使xdg utils收支平衡,则很可能他们会对其进行修复;如果发生超出规范的垃圾的情况,就会发生这种情况)与xdg实用程序一起使用,他们可能不会注意到)。
请不要尝试对这种东西太机灵。 Firefox试图与Linux上的文件关联变得更聪明,单击它中的“打开文件夹”会打开随机应用程序已有10年了(据记录,在我的盒子里,它非常喜欢打开Gwenview;过去它更喜欢FileLight)。
您可以从名为HOME的环境变量中检索主目录。 您可以使用getenv()
获取。 在您的主目录中,没有太多标准化目录。 你有Desktop
为你有你的桌面上有什么使用GNOME,KDE和朋友。 不同的应用程序和应用程序最终都以一个前缀为目录的目录结束.
,使目录内容的默认列表在大多数应用程序(例如.ssh
和.mc
隐藏起来。
这是我最后一次尝试的... gcc 9.3~
#include <cstdlib>
#include <filesystem>
std::filesystem::path get_user_profile_path() {
std::cout << "getting linux user profile path...\n";
const char* p = getenv("HOME");
std::filesystem::path result = p;
return result;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.