Execute o programa GUI na máquina remota via python subprocess ssh

Execute o programa GUI na máquina remota via python subprocess ssh

Executando Raspberry Pi 4 com Ubuntu Server 19.10, Python 3.7.5 python3-xlib==0.15e pyautogui==0.9.50. Tudo é executado como usuário padrão ubuntu.

Estou tentando enviar Machine Aum comando ssh para Machine Bexecutar um programa GUI e fazer algum processamento. Estou recebendo alguns XAUTHORITYerros.

Nota: não quero ver a GUI no Machine Amonitor - mas o aplicativo em execução Machine Bprecisa de uma GUI.

Então Machine Acorro:

subprocess.Popen(['ssh', 'ubuntu@ip_of_machine_B', 'python3', '/path/to/my_script.py'])

Ligado Machine B, my_script.pyexecuta

subprocess.call(['python3', '/path/to/gui_script.py'])

Finalmente, gui_script.pyas tentativas de

import os
os.environ['DISPLAY'] = ':0'
os.environ['XAUTHORITY'] = '/run/user/1000/gdm/Xauthority'
import subprocess
import pyautogui


subprocess.Popen(['the_gui_app'])
# Do stuff with pyautogui and the app.

Infelizmente, gui_script.pyestá lançando o seguinte

Xlib.error.DisplayConnectionError: Can't connect to display ":0": No protocol specified.

Também tentei configurar o ambiente na subprocesschamada my_script.pyvia

my_env = os.environ.copy()
my_env['DISPLAY'] = ':0'
my_env['XAUTHORITY'] = '/run/user/1000/gdm/Xauthority'
subprocess.call(['python3', '/path/to/gui_script.py'], env=my_env)

Mas isso também falhou.

Meu melhor palpite é que preciso alterar alguma configuração em algum lugar Machine Bantes de executar o fluxo de trabalho (ou seja, uma edição única em xauth). Este é um sistema fechado, então a segurança não é um problema!

informação relacionada