如何操作屏幕输出?

时间:2015-08-05 19:50:18

标签: linux ubuntu-14.04 x11 xvfb

我正在计划一个新项目,可能涉及在Linux系统上操纵屏幕输出。这个想法是使用相机来检测站在投影仪前面的人并移除将投射到人身上的那部分图像。 (这样至少这个人不会被蒙蔽)。

基本上,我需要一个辅助监视器的中间人攻击。 我发现XvfB(据我所知)可以模拟一个屏幕。我的想法是现在设置这样一个模拟屏幕,修改图像的内容,然后将新图像发送到真实的投影仪。

有人做过这样的事情还是有完全不同的方法?

2 个答案:

答案 0 :(得分:0)

我会使用Composite扩展来执行此操作。 您可以使用简单的复合管理器,例如compton作为基础。

复合管理器接收所有其他X11客户端窗口作为帧缓冲区。然后它可以在自己的全屏窗口上以任何方式呈现它们。

在您的情况下,复合管理器会通过屏蔽特定区域而偏离其通常的行为。对现有的代码库来说,这似乎是一个相当小的改变。

请注意,大型桌面(KDE,Gnome,Unity ...)的窗口管理器都包含复合管理器。在这种情况下,您无法运行自己的操作,但需要修补相应窗口管理器的复合模块。

出于您的目的,我认为更改为更简单的窗口管理器+您的自定义复合管理器解决方案并没有太大的损失。

答案 1 :(得分:0)

您可以使用X SHAPE扩展程序: http://www.x.org/releases/X11R7.7/doc/xextproto/shape.html

使用它,您可以创建具有不规则形状的窗口。 (就像程序xeyes那样。)你可以创建一个黑色全屏无边框永远在顶部的窗口,它将根据你给它的面具不断改变形状。