gpt4 book ai didi

c - 如何检测xlib应用程序是否从xinit运行?

转载 作者:行者123 更新时间:2023-11-30 16:30:36 25 4
gpt4 key购买 nike

我编写了一个xlib C 应用程序。我需要它的不同行为,具体取决于它是否在没有启动 X 服务器时从 CLI 中使用 xinit ./myapp 运行,或者在正常的 KDE 桌面中运行。

argv[0] 在两种情况下返回相同的值(即看不到 xinit 前缀)。

我如何确定 xinit 何时用于启动我的应用程序?

最佳答案

感谢您的评论。我不知道如何更准确地描述我的任务,实际上我并不需要 xinit(或 X 服务器等)。也许是的,我需要知道窗口管理器是否正在运行。事实上,我只需要确定kwin颜色反转是否处于事件状态(这就是为什么我需要检测的答案,即使我知道A X程序不必关心它显示在哪个窗口管理器下。(在上面的 URL 中)。但准确确定反演是相当复杂的。但是因为反转在 KDE 中对我来说是永久打开的,所以我也许可以测试窗口管理器是否正在运行...

目前,使用建议的解决方案,我至少能够针对我的特定情况解决它。但不确定它是否足够便携。

fp = popen("/usr/bin/xprop -root _NET_SUPPORTING_WM_CHECK", "r");
if (fp == NULL) {
printf("Failed to run `/usr/bin/xprop -root _NET_SUPPORTING_WM_CHECK`\n" );
exit(1);
}
fgets(cmdout, sizeof(cmdout), fp);
pclose(fp);
i = strncmp(cmdout, "_NET_SUPPORTING_WM_CHECK(WINDOW): window id #", 40);
if (i == 0) {
inverted_colors = 1;
printf ("Window manager detected.\n");
} else {
inverted_colors = 0;
printf ("No window manager detected.\n");
}

关于c - 如何检测xlib应用程序是否从xinit运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51044029/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com