从 CLI 与 GUI 交互(无头 GUI)

从 CLI 与 GUI 交互(无头 GUI)

我有Linux服务器。

我希望我的服务器有可以通过 CLI 控制的无头 GUI。

我确实知道可以使用 XRDP 显示 GUI。但我希望我可以通过 SSH 或 CLI 来控制它。当我使用 XRDP 时它工作得很好。

我安装了 OpenBox(一个窗口管理器)。我希望我可以将 GUI 与 CLI 交互,或者也许有 Python 库可以处理它。

mouseclick(2,3) # mouse click area at coordinate (2,3)

screenshot("./current_screen.png") # saving screenshot of current screen in specified path.

库可以处理的另一个功能。

我找到了类似的库,它是pyautogui.

但是pyautogui如果有现有的 GUI 就可以工作。我的意思是Display Not Found如果我在 CLI 中运行python 脚本错误。

# t.py
import pyautogui
print(pyautogui.size())

它给了我错误:

root@server-kentang:~/py# python3 t.py
Traceback (most recent call last):                           File "/usr/local/lib/python3.8/dist-packages/Xlib/support/unix_connect.py", line 76, in get_socket
    s.connect('/tmp/.X11-unix/X%d' % dno)                  FileNotFoundError: [Errno 2] No such file or directory

During handling of the above exception, another exception occurred:

Traceback (most recent call last):                           File "t.py", line 1, in <module>
    import pyautogui
  File "/usr/local/lib/python3.8/dist-packages/pyautogui/__init__.py", line 249, in <module>
    import mouseinfo
  File "/usr/local/lib/python3.8/dist-packages/mouseinfo/__init__.py", line 223, in <module>
    _display = Display(os.environ['DISPLAY'])
  File "/usr/local/lib/python3.8/dist-packages/Xlib/display.py", line 80, in __init__
    self.display = _BaseDisplay(display)
  File "/usr/local/lib/python3.8/dist-packages/Xlib/display.py", line 62, in __init__
    display.Display.__init__(*(self, ) + args, **keys)
  File "/usr/local/lib/python3.8/dist-packages/Xlib/protocol/display.py", line 58, in __init__
    self.socket = connect.get_socket(name, host, displayno)
  File "/usr/local/lib/python3.8/dist-packages/Xlib/support/connect.py", line 76, in get_socket
    return mod.get_socket(dname, host, dno)
  File "/usr/local/lib/python3.8/dist-packages/Xlib/support/unix_connect.py", line 78, in get_socket
    raise error.DisplayConnectionError(dname, str(val))
Xlib.error.DisplayConnectionError: Can't connect to display ":0": [Errno 2] No such file or directory

答案1

好像是环境变量展示此处设置不正确。

它应该设置为这样的:
export DISPLAY=:0.0
或者更一般地说:
export DISPLAY=$HOSTNAME:$N.$W
哪里$主机名 & $N & $W应符合现有情况。

在 OP 情况下,HOSTNAME 为空(这意味着 localhost),N 为 10(可以在 X 服务器的每个执行实例上随时间变化),W 为 0(可能大部分是恒定的)以获得工作配置。

相关内容