San*_*har 11 linux bash x-windows xdotools
在我的主机上,我打开并登录了一个 Ubuntu 桌面。然后我也从远程计算机登录到这台机器,使用 X2go 创建一个新的 X 会话。我在原始会话中打开了一个 libreoffice 文件。我想保存这个文件并关闭它——但是来自远程机器!(两个会话都有相同的用户登录;如果需要,我可以 sudo)
我试过使用,xdotool search但无法找到窗口。有没有办法在第二次会议中做我想做的事?我可以看到进程,ps -A
我什至可以看到打开的文件lsof!如何对其进行“保存并关闭”?
假设默认配置,“原始”上的 xdpyinfo 将显示“:0.0”,例如
xdpyinfo | grep name
Run Code Online (Sandbox Code Playgroud)
如果“x2go”上的 DISPLAY 环境变量是“:1.0”,那么应该是这样。
从“x2go”上的终端尝试查找窗口 ID:
DISPLAY=:0.0 xwininfo -root -tree | grep Writer
Run Code Online (Sandbox Code Playgroud)
可能设置了访问控制使其不起作用,但我认为如果您在同一主机上使用相同的用户 ID(即访问 ~/.Xauthority),则应该这样做。如果没有访问权限,请检查“xauth list”输出。
如果它有效,那么使用你最喜欢的工具来控制它。如果您的工具需要这种方式,将“-int”添加到上面的 xwininfo 以十进制打印 windowid,xdotool 不会:
export DISPLAY=:0.0
xdotool windowactivate 0x15a18918
xdotool windowfocus 0x15a18918
xdotool key "ctrl+s"
xdotool key "ctrl+q"
Run Code Online (Sandbox Code Playgroud)
或者你可能会有更好的运气而不是“ctrl+s”/“ctrl+q”
xdotool key "meta+f" "s"
xdotool key "meta+f" "c"
xdotool key "meta+f" "x"
Run Code Online (Sandbox Code Playgroud)
您可能需要“alt+”而不是“meta+”,我有非标准的 meta/alt/super 映射。meta 对我有用,使用 Xnest 测试。我假设未更改的英文菜单布局和加速器。
您的方式可能会弹出一个窗口,在这种情况下值得尝试:
xdotool key "Escape"
Run Code Online (Sandbox Code Playgroud)
几次,然后重试保存并关闭。请记住,xdotool 对“键”名称的确切大小写很挑剔。
您应该能够通过在 x2go 上启动 libreoffice 来尝试所有这些,而不是修改您的 DISPLAY。您应该将命令保存到一个 shell 脚本文件中,这样焦点更改就不会让您感到困惑。
lsof 应该显示文件不再打开,如果它有效:-)