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は空であり(ローカルホストを意味します)、Nは10(Xサーバーの各実行インスタンスで時間によって異なります)、Wは動作設定を取得するための0(ほとんど一定です)です。