使用twinview Ubuntu 12.04 c ++在2台显示器上进行全屏应用

时间:2012-07-25 20:49:30

标签: c++ nvidia xlib

我正在处理我正在处理的应用程序。基本上我希望它全屏,但只在我的两个显示器之一。我正在使用Nvidia显卡并运行Twinview将我的桌面扩展到两个显示器上。不幸的是,我尝试的只有一台大型显示器。有没有办法真正了解每个监视器的分辨率?我宁愿不必使用一堆外部库,我已经使用Xlib来管理Windows但我还没有找到任何会看到过去的Twinview。

不幸的是,我现在非常依赖Twinview,我真的需要绕过它,而不仅仅是切换到别的东西。

由于

编辑: 我能够得到它基本上与Xinerama一起使用,但经过更多的挣扎,这是我最终得到的代码,更简洁,据我所知,Xinerama已被弃用,所以这可能更好。

    XEvent xev;
    xev.type = ClientMessage;
    xev.xclient.window = this->window;
    xev.xclient.message_type = XInternAtom(this->display, "_NET_WM_STATE", False);
    xev.xclient.format = 32;
    xev.xclient.data.l[0] = 2; //0 is remove, 1 is add, 2 is toggle
    xev.xclient.data.l[1] = XInternAtom(this->display, "_NET_WM_STATE_FULLSCREEN", False);

希望这可以帮助其他有类似问题的人,窗口管理员可以很好地处理所有事情。

1 个答案:

答案 0 :(得分:1)

xorg.conf中的这个选项应该这样做:

  

Option "NoTwinViewXineramaInfo"

     

此选项可关闭Xinerama Info。随着窗户的Xinerama信息   经理认为整个MetaMode都是屏幕并且会跨越   两台显示器的一切。当您单击最大化您的   应用程序将填充两个屏幕,对于某些应用程序,这是好的   对于其他人来说这很烦人。我已经对它进行了两种测试,并且更愿意允许   窗口管理器知道有两个显示器。