Command-Line
從 CLI 與 GUI 互動(無頭 GUI)
我有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(可能大部分是恆定的)以獲得工作配置。