sar*_*ara 5 linux configuration qt startup
我为linux写了一个qt应用程序.该应用程序应该在启动时运行 - 我使用桌面条目.
但我需要它更复杂:用户应该检查一个复选框,以便选择应用程序是否在启动时运行.
我怎么想保存他的偏好?
之前的应用程序是wriiten,并将其保存在注册表中.我从谷歌搜索得到我应该保存在/等.
它应该是什么文件?我如何在我的代码中写它?我可以在桌面条目中添加条件,还是应该运行一些脚本?
我对这一切都很陌生,所以我会详细回答.
感谢你.
对于这种特殊情况,保存控制应用程序是否应在启动时运行的首选项设置是完全没有意义的。自动运行条目桌面文件的存在本身就反映了该首选项的状态。如果该文件存在,请选中该复选框。如果用户取消选中该复选框,您将删除该文件。如果用户选中该复选框,您将创建该文件。就是这样。在首选项存储中复制设置只会导致错误,因为现在您必须保持设置和文件系统中文件的存在同步,并且必须处理各种极端情况。
此外,请记住,这/etc/xdg/autostart是针对系统范围的自动运行条目的。如果它应该是每个用户的设置,您应该在用户的自动启动目录中创建 .desktop 文件。要确定其位置,请遵循桌面应用程序自动启动规范,该规范要求位置为$XDG_CONFIG_DIRS/autostart,通常解析为.config/autostart用户主目录中的目录(但是,如果XDG_CONFIG_DIRS环境变量存在,则应通过先读取该值然后附加/autostart到它。)
这是一个示例程序,它将打印出您想要的内容:
#include <cstdlib>
#include <iostream>
#include <QtCore/QString>
#include <QtCore/QDir>
#ifndef Q_OS_UNIX
#error This method only makes sense on Unix, use OS-specific handling for other OSes.
#endif
QString getUserXdgConfigDir()
{
QString result(std::getenv("XDG_CONFIG_DIRS"));
if (result.isEmpty()) {
// XDG_CONFIG_DIRS is not defined, we'll use the default value
// as mandated by http://standards.freedesktop.org/autostart-spec/autostart-spec-latest.html
result = QDir::homePath() + QDir::separator() + ".config";
}
return result;
}
QString getUserAutostartDir()
{
return getUserXdgConfigDir() + QDir::separator() + "autostart";
}
int main(int argc, char *argv[])
{
std::cout << "User config dir is " << getUserXdgConfigDir().toStdString() << std::endl;
std::cout << "User autostart dir is " << getUserAutostartDir().toStdString() << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
993 次 |
| 最近记录: |