如何欺骗某个程序相信非主监视器是主监视器?

如何欺骗某个程序相信非主监视器是主监视器?

一些上下文,以防这是 ​​XY 问题:我使用笔记本电脑,有时将其连接到外部显示器。当连接到外部显示器时,我希望在其上显示游戏而不是笔记本电脑屏幕,但是它们往往被硬编码以在主显示器上显示。 (当我确实设法切换它们时,它们往往会限制主显示器的分辨率,而我的外接显示器的分辨率比笔记本电脑更高。)我更愿意将主显示器保留在笔记本电脑屏幕上,因为这对我来说更简单而且主显示器的切换也扰乱了我的一些 KDE 布局。

关于主要问题:我想告诉某些程序,监视器是主监视器,而系统的其余部分则不会将其识别为主监视器。理想情况下,当所述显示器未插入时,这将以默认返回笔记本电脑屏幕的方式完成。有没有办法做到这一点?

答案1

这可能是 XY 问题。

在跨度模式下,X11 通常通过给定起始 x,y 坐标 0,0 来控制“主监视器”状态,并将辅助屏幕水平或垂直附加到该坐标。虽然会话管理器也可以为工具栏位置指定特定屏幕,并且应用程序也可以在内部接受默认屏幕,但这与主屏幕不同。

与其欺骗一个应用程序认为外部显示器是主要的,不如获得一个扩展程序来单独保存单屏幕和多屏幕配置的会话设置。 gnome-shell 有一个扩展可以执行此操作,但我不知道 KDE 可以使用什么。即使如此,您仍然需要至少在第一次为两个屏幕重新配置会话。

另一种方法是告诉应用程序使用哪个屏幕(命令行选项?内部设置?)或在垫片中运行它以重新映射屏幕坐标(我也不知道这是否可能)。您也许可以通过在屏幕的一部分上运行的嵌套 X 服务器来完成此操作 - 但如果这用于游戏,则可能会产生不可接受的性能影响。

请注意,在多头模式下(在历史上的某个时刻,称为 Zaphod 模式),每个屏幕都有单独的坐标系,并且无法在它们之间拖动窗口。 X11 连接(例如)由 DISPLAY=:0 指定,您可以使用 DISPLAY=:0.0 或 DISPLAY=:0.1 指定屏幕,并且您可以轻松地将应用程序强制到另一个屏幕;但是,我什至不确定当前的 X 服务器是否支持此模式,即使您的显示驱动程序和 X 服务器支持它,您的窗口管理器也可能不支持。

相关内容