c++ - 使用 twinview Ubuntu 12.04 c++ 在 2 个显示器上的全屏应用程序

标签 c++ nvidia xlib

我在处理我正在处理的应用程序时遇到问题。基本上我希望它全屏显示,但只在我的两台显示器中的一台上显示。我正在使用 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);

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

最佳答案

xorg.conf 中的这个选项应该可以做到:

Option "NoTwinViewXineramaInfo"

This option turns Xinerama Info off. With Xinerama info off the Window Manager believes that the entire MetaMode is the screen and will span everything across both monitors. When you click Maximize your application will fill both screens, for some applications this is ok for others it's annoying. I've tested it both ways and prefer to allow the Window Manager to know there are two displays.

关于c++ - 使用 twinview Ubuntu 12.04 c++ 在 2 个显示器上的全屏应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11658380/

相关文章:

android - 为 Android 构建的 C++ 库使用了错误的依赖符号

python - 使用 docker 和 GPU 进行 Pycharm 调试

c - 我们如何用 Xlib/C 模拟鼠标点击?

c++ - 我怎样才能收到一个或两个输入?

c++ - gcc 会跳过这个有符号整数溢出检查吗?

c++ - std::vector 的表达式模板运算符重载问题

c++ - OpenGL:Radeon 驱动程序似乎与深度测试混淆

eclipse - 如何关闭 Eclipse 中由于 OpenCL/CUDA 语法而出现的错误/警告?

c++ - Xlib。调整大小后重绘(重新填充)闪烁的形状窗口

xlib - XChangeProperty() 总是失败