是否有任何可行的选项可以向 VNC 会话添加水印(即对角透明文本)?
我发现现有的开源 VNC 服务器没有提供此类开箱即用的功能。Apache Guacamole 等网关/代理也没有提供此类功能。
我曾考虑运行一个 side-car 进程,使用 Xlib / Cairo 在服务器端修改 X 缓冲区,然后再由 VNC 服务器导出。但结果并不理想(VNC 客户端没有任何变化)。
韓國
0:00 /usr/sbin/lightdm
0:23 \_ /usr/lib/xorg/Xorg -core :0 -seat seat0 -auth /var/run/lightdm/root/:0 -nolisten tcp vt7 -novtswitch
0:00 \_ lightdm --session-child 12 19
0:00 \_ /usr/libexec/gnome-session-binary --session=ubuntu
虚拟网络计算机
0:00 /usr/bin/x11vnc -display :0 -auth /run/lightdm/root/:0 -rfbauth /etc/x11vnc.pwd -rfbport 5900 -shared -noxdamage -repeat -forever -loop
0:06 \_ /usr/bin/x11vnc -display :0 -auth /run/lightdm/root/:0 -rfbauth /etc/x11vnc.pwd -rfbport 5900 -shared -noxdamage -repeat -forever -loop
库
import Xlib
display = Xlib.display.Display(':0')
screen = display.screen()
root = screen.root
gc = root.create_gc(foreground = screen.white_pixel, background = screen.black_pixel)
while True:
root.draw_text(gc, 100, 100, b"Test")
display.flush()
sudo XAUTHORITY=/var/run/lightdm/root/:0 python3 /tmp/watermark.py
答案1
我通过从我的python XLib客户端切换到调整代码来解决这个问题https://github.com/ftorkler/x11-overlay满足我的需要。
显然,使用 Xlib 需要某些我所不具备的技能: