如何在Linux上获取虚拟桌面名称/号码?

时间:2011-12-20 13:02:43

标签: linux virtual-desktop

我正在为openbox开发一个图标管理器应用程序,并且需要知道创建图标的特定虚拟桌面,以便在重新启动时将其恢复为相同。

是否有一些标准方法可以确定当前虚拟桌面的信息?

1 个答案:

答案 0 :(得分:1)

如果您的窗口管理器符合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;
}

捕获的输出将如下所示:( man wmctrl for explanation)

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