2

我正在处理的应用程序遇到问题。基本上我希望它全屏显示,但只在我的两台显示器中的一台上。我正在使用 Nvidia 显卡并运行 Twinview 将我的桌面扩展到两台显示器上。不幸的是,我尝试的所有东西都只能看到一台大显示器。有没有办法真正了解每台显示器的分辨率?我宁愿不必使用一堆外部库,我已经在使用 Xlib 来管理窗口,但我还没有找到任何可以看到 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);

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

4

1 回答 1

1

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

Option "NoTwinViewXineramaInfo"

此选项关闭 Xinerama 信息。关闭 Xinerama 信息后,Window Manager 认为整个 MetaMode 就是屏幕,并将跨越两个显示器的所有内容。当您单击最大化时,您的应用程序将填满两个屏幕,对于某些应用程序来说这是可以的,但对于其他应用程序来说这很烦人。我已经以两种方式对其进行了测试,并且更愿意让窗口管理器知道有两个显示器。

于 2012-07-25T20:54:32.297 回答