我想创建一个VNC会话来公开我在虚拟显示器上启动的单个应用程序。我想用x11vnc来做,因为之后我可以通过noVNC公开它。
问题是x11vnc允许我创建虚拟显示器:
x11vnc -create
...或公开已启动的应用程序的单个窗口
x11vnc -id 0x200002
但我没有找到任何选项来在新的虚拟显示器中启动新应用程序(例如xstartup for vncserver)。
答案 0 :(得分:2)
到目前为止,我找到的唯一解决方案是手动完成所有程序
# create a virtual display on the compute node
Xvnc :33 &
# launch the application on this virtual display
export DISPLAY=:33
glxgears &
# find out its window id
xwininfo -root -children
# -> xwininfo: Window id: 0xdc (the root window) (has no name)
#
# Root window id: 0xdc (the root window) (has no name)
# Parent window id: 0x0 (none)
# 1 child:
# 0x200002 "glxgears": () 300x300+0+0 +0+0
# start the vnc server with this specifix xid
x11vnc -id 0x200002 &
它有效,但它有点复杂,我仍然需要编写一个小命令来自动获取xid。
答案 1 :(得分:0)
我没有足够的声誉"写评论,所以我必须写自己的答案,尽管这只是对迈克尔答案的修改,我还没有测试过TBH。因为我无法手动输入窗口ID,所以我想出了一个快速的黑客来获取窗口ID。试试这个来找出窗口ID:
window_id=$(xwininfo -root -tree | grep glxgears | tail -n1 | sed "s/^[ \t]*//" | cut -d ' ' -f1)
因此,您正在获取树,过滤您正在寻找的程序,获取最后一个选项,删除尾随空格,然后仅获取第一列,并保存它。然后你就可以跑......
x11vnc -id $window_id &
......和迈克尔的回答一样。希望。就像我说的,它是一个黑客。
答案 2 :(得分:0)
在办公室共享窗口的好人!
echo "Select Window...";x11vnc -id $(xwininfo|grep -oP '(?<=id: ).*(?= ")') -viewonly -forever
答案 3 :(得分:0)
x11vnc支持根据其ID共享窗口。在这里,您可以将模拟器作为窗口并共享。
以下是步骤:
xwininfo
。单击您想要的窗口
分享。 xwininfo
将打印出窗口ID。示例命令:
x11vnc -id 0x2800005