1
我希望我的UI根據屏幕是否合成(因此支持某些效果)而改變設計。是否有可能檢測合成器是否正在運行
- 可靠查詢X服務器是否正在運行使用複合窗口管理
- 當合成上/關閉時收到通知?
解決方案:
爲了詳細說明安德烈·西多羅夫的人不那麼熟悉的X11 API正確的答案,這是用於檢測符合EWMH,合成代碼:
int has_compositor(Display *dpy, int screen) {
char prop_name[20];
snprintf(prop_name, 20, "_NET_WM_CM_S%d", screen);
Atom prop_atom = XInternAtom(dpy, prop_name, False);
return XGetSelectionOwner(dpy, prop_atom) != None;
}
工程就像一個魅力,謝謝! –