簡體   English   中英

如何檢測xlib應用程序是否從xinit運行?

[英]How to detect if xlib application running from xinit?

我編寫了一個xlib C應用程序。 我需要它的不同行為,這取決於它是否在正常的KDE桌面上運行,並且在沒有X服務器啟動時通過CLI從xinit ./myapp運行。

兩種情況下, argv [0]返回相同的值(即看不到xinit前綴)。

我如何確定何時使用xinit啟動我的應用程序?

感謝您的評論。 我不知道如何更精確地描述我的任務,我真的不需要確切的xinit (或X服務器左右)。 也許是的,我需要知道窗口管理器正在運行。 實際上,我只需要確定kwin顏色反轉是否處於活動狀態(這就是為什么我需要進行檢測的答案,即使我知道AX程序不必關心在哪個窗口管理器下顯示它也是如此。在上面的URL中) 。 但是要准確確定反演是相當復雜的。 但是由於對我來說KDE永久啟用了反轉功能,因此我可以測試Window Manager是否正在運行...

目前,使用建議的解決方案,我至少能夠針對我的特殊情況解決它。 但是不確定它是否足夠便攜。

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");
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM