mrb*_*ela 7 linux macos xdotool devops
我很抱歉再次报告这个众所周知的错误消息。
没有什么对我有用。如果重要的话,我正在 MacOS Catalina 上运行。
我在 Mac 上安装并尝试xdotool运行brew
xdotool getmouselocation
Run Code Online (Sandbox Code Playgroud)
接下来的错误消息是
Error: Can't open display: (null)
Failed creating new xdo instance
Run Code Online (Sandbox Code Playgroud)
我花了很长时间寻找解决方案,找到了很多答案。运行export DISPLAY=:0,一切都很好。但这对我不起作用。
PS:为了更好地理解:DISPLAY到底是什么意思?这是我电脑的显示器吗?
根据苹果官方通知
X11 不再包含在 Mac 中,但 X11 服务器和客户端库可从 XQuartz 项目中获得。
为什么 X11 在这种情况下很重要?
xdotool - 命令行 X11 自动化工具。
所以除了设置export DISPLAY=:0
安装xquartz。
根据x手册
从用户的角度来看,每个 X 服务器都有一个以下形式的显示名称:
Run Code Online (Sandbox Code Playgroud)hostname:displaynumber.screennumber应用程序使用此信息来确定应如何连接到服务器以及默认情况下应使用哪个屏幕(在具有多个显示器的显示器上):
主机名 主机名指定显示器物理连接的计算机的名称。如果未给出主机名,将使用与同一计算机上的服务器通信的最有效方式。
displaynumber 短语“显示器”通常用于指共享公共键盘和指针(鼠标、平板电脑等)的监视器的集合。大多数工作站往往只有一个键盘,因此也只有一台显示器。然而,较大的多用户系统通常具有多个显示器,以便多个人可以同时进行图形工作。为了避免混淆,当启动该显示器的 X 服务器时,机器上的每个显示器都会被分配一个显示器编号(从 0 开始)。显示编号必须始终在显示名称中给出。
screennumber 某些显示器在两个或多个显示器之间共享一个键盘和指针。由于每个显示器都有自己的一组窗口,因此当该显示器的 X 服务器启动时,每个屏幕都会被分配一个屏幕编号(从 0 开始)。如果未给出屏幕编号,则将使用屏幕 0。
这里有更简单的描述
显示由(简化的)组成:
即当您通过 ssh 连接时,您正在使用这 3 个不同的集合。