【问题标题】:Trying to to run xdotool but getting 'Can't open display: (null)'尝试运行 xdotool 但得到“无法打开显示:(空)”
【发布时间】:2019-12-01 21:17:14
【问题描述】:

很抱歉再次报告这个众所周知的错误消息。

没有什么对我有用。我在 MacOS Catalina 上运行,如果这很重要的话。

我在我的 Mac 上安装了 xdotoolbrew 并尝试运行

xdotool getmouselocation

下面的错误信息是

Error: Can't open display: (null)
Failed creating new xdo instance

我一直在寻找解决方案,找到了很多答案。运行export DISPLAY=:0,一切都很好。但这对我不起作用。

PS:为了更好地理解:DISPLAY 到底是什么意思?是我电脑的显示器吗?

【问题讨论】:

  • xdotool 是 X11 窗口系统的自动化工具。 macOS 不使用 X11 - 虽然可以安装,但不太可能提供您正在寻找的结果。这似乎是一个 XY 问题 - 您尝试使用 xdotool 解决的问题到底是什么?
  • 请参阅wikipedia,特别是“关键术语”部分,以很好地描述DISPLAY 在 X11 中的含义
  • 你找到办法了吗?

标签: linux macos devops xdotool


【解决方案1】:

根据official notice by apple

X11 不再包含在 Mac 中,但 XQuartz 项目提供了 X11 服务器和客户端库。

为什么 X11 在这种情况下很重要?

xdotool - 命令行 X11 自动化工具。

所以除了设置export DISPLAY=:0

安装xquartz

DISPLAY 到底是什么意思?

根据x manual

从用户的角度来看,每个 X 服务器都有一个表单的显示名称:

               hostname:displaynumber.screennumber

应用程序使用此信息来确定它应该如何 连接到服务器以及默认情况下应该使用哪个屏幕(在 多显示器显示):

  1. 主机名 主机名指定显示器物理连接的机器的名称。如果没有给出主机名,则 与同一台机器上的服务器通信的最有效方式 将被使用。

  2. 显示编号 短语“显示器”通常用于指代共享通用键盘和指针(鼠标、平板电脑、 ETC。)。大多数工作站往往只有一个键盘,并且 因此,只有一个显示器。然而,更大的多用户系统, 经常有几台显示器,以便不止一个人可以 一次做图形工作。为避免混淆,每个显示器上 当 X 该显示器的服务器已启动。显示编号必须始终为 以显示名称给出。

  3. 屏幕编号 一些显示器在两个或多个显示器之间共享一个键盘和指针。由于每个监视器都有自己的一组窗口,每个 当 X 服务器时,屏幕被分配一个屏幕编号(从 0 开始) 因为该显示已启动。如果没有给出屏幕编号,屏幕 将使用 0。

找到了更简单的描述here

显示包括(简化):

  • 键盘
  • 鼠标
  • 屏幕

即当您通过 ssh 连接时,您使用的是这 3 个不同的集合。

【讨论】:

    猜你喜欢
    • 2020-06-03
    • 2020-07-07
    • 2022-01-11
    • 2020-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-12
    • 1970-01-01
    相关资源
    最近更新 更多