Command-Line

從 CLI 與 GUI 互動(無頭 GUI)

  • June 13, 2022

我有linux伺服器。

我希望有可以由 CLI 為我的伺服器控制的無頭 GUI。

我確實知道可以使用 XRDP 顯示 GUI。但我希望我可以使用 SSH 或 CLI 來控制它。當我使用 XRDP 時它工作正常。

我安裝了 OpenBox(一個 Windows 管理器)。我希望我可以與 CLI 互動 GUI,或者也許有可以處理它的 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

似乎這裡的環境變數DISPLAY設置不正確。

它應該設置為這樣的:

export DISPLAY=:0.0

或更一般地說:

export DISPLAY=$HOSTNAME:$N.$W

在哪裡 $ HOSTNAME & $ N & $W應該與現有情況相匹配。

在 OP 情況下,HOSTNAME 為空(這意味著 localhost)& N 為 10(可以在 X 伺服器的每個執行實例上隨時間變化)& W 為 0(可能大部分是恆定的)以獲得工作配置。

引用自:https://unix.stackexchange.com/questions/706010