[英]How can I manipulate screen output?
我正在计划一个新项目,可能会涉及在Linux系统上操纵屏幕输出。 这个想法是使用相机检测站在投影仪前面的人,并去除将被投影到该人的那部分图像。 (这样至少该人不会失明)。
因此,基本上,我需要对辅助监视器进行中间人攻击。 我发现XvfB(据我了解)可以模拟屏幕。 我的想法是现在建立一个模拟屏幕,修改图像内容,然后将新图像发送到真实的投影仪。
有人做了这样的事情还是采用了完全不同的方法?
我将使用Composite扩展来做到这一点。 您可以使用简单的复合管理器(例如compton)作为基础。
复合管理器将所有其他X11客户端窗口接收为帧缓冲区。 然后,它可以在自己的全屏窗口上以任意方式渲染它们。
在您的情况下,复合管理器会屏蔽特定区域,从而偏离其通常的行为。 在现有代码库上进行的更改似乎很小。
请注意,大型桌面(KDE,Gnome,Unity…)的窗口管理器都包含一个复合管理器。 在这种情况下,您将无法运行自己的程序,而需要修补相应窗口管理器的复合模块。
但是,出于您的目的,我认为更改为更简单的窗口管理器+您的自定义复合管理器解决方案不会有多大伤害。
您可以使用X SHAPE扩展名: http : //www.x.org/releases/X11R7.7/doc/xextproto/shape.html
使用它,您可以创建具有不规则形状的窗口。 (就像xeyes
程序一样。)您可以创建一个黑色的全屏无色“总是在顶部”窗口,该窗口将根据您提供的蒙版不断更改形状。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.