0
我正在開發適用於openbox的圖標管理器應用程序,並且需要知道創建圖標的特定虛擬桌面才能在重新啓動時將其還原到相同的位置。如何在Linux上獲取虛擬桌面名稱/號碼?
是否有一些標準的方式可以確定當前虛擬桌面的信息?
我正在開發適用於openbox的圖標管理器應用程序,並且需要知道創建圖標的特定虛擬桌面才能在重新啓動時將其還原到相同的位置。如何在Linux上獲取虛擬桌面名稱/號碼?
是否有一些標準的方式可以確定當前虛擬桌面的信息?
如果你的窗口管理器是EWMH兼容,可以使用下列的屬性:
http://standards.freedesktop.org/wm-spec/1.4/ar01s03.html
特別,_NET_NUMBER_OF_DESKTOPS
和_NET_DESKTOP_NAMES
。
從this site的修改代碼將列出所有可用的虛擬桌面。它打開一個管道wmctrl -d
與有*指示的當前virt.desktop返回列表:
#include <stdio.h>
#include <stdlib.h>
#ifdef WIN32
FILE *popen (const char* command, const char* flags) {return _popen(command,flags);}
int pclose (FILE* fd) { return _pclose(fd);}
#endif
int main(int argc, char* argv[])
{
char psBuffer[4096];
FILE *iopipe;
if((iopipe = popen("wmctrl -d", "r")) == NULL)
exit(1);
while(!feof(iopipe))
{
if(fgets(psBuffer, 4095, iopipe) != NULL)
printf(psBuffer);
}
printf("\nProcess returned %d\n", pclose(iopipe));
return 0;
}
捕獲的輸出將是這個樣子:(人wmctrl進行說明)
0 * DG: 1680x1050 VP: 0,0 WA: 36,36 3564x1044 (Unnamed desktop)
1 - DG: 1680x1050 VP: 0,0 WA: 36,36 3564x1044 desktop 2
2 - DG: 1680x1050 VP: 0,0 WA: 36,36 3564x1044 desktop 3
3 - DG: 1680x1050 VP: 0,0 WA: 36,36 3564x1044 desktop 4
4 - DG: 1680x1050 VP: 0,0 WA: 36,36 3564x1044 desktop 5
5 - DG: 1680x1050 VP: 0,0 WA: 36,36 3564x1044 desktop 6