동일한 컴퓨터의 X 데스크탑 세션을 통해 통신하시겠습니까?

동일한 컴퓨터의 X 데스크탑 세션을 통해 통신하시겠습니까?

Debian/Raspbian(예: X 서버)을 실행하는 Raspberry Pi가 있고 이를 사용하여 두 개의 화면을 구동하고 싶습니다. 저는 공개용 화면과 운영자용 화면이 있는 글을 쓰고 있습니다. 내가 하려는 작업에 대한 예를 들기 위해 운영자가 "고양이"를 누를 수 있는 GUI가 있고 전체 화면 고양이가 다른 모니터에 나타날 것이라고 가정해 보겠습니다.

문제는 Pi에 HDMI 출력이 하나뿐이므로 SSH/원격 데스크톱 세션을 위해 두 번째 컴퓨터(예: 노트북)를 사용하지 않는 한 두 개의 모니터를 구동하기 어렵다는 것입니다. 이제 저는 이전에 헤드리스 Pi에서 거의 어려움 없이 원격 데스크톱을 수행했습니다. 지금 나를 괴롭히는 문제는 원격 데스크톱을 사용할 때 기본 모니터를 구동하는 데스크톱 대신 완전히 별도의 두 번째 데스크톱을 얻게 되므로 모니터에 액세스할 수 없다는 것입니다. 원격으로 로그인할 때 해당 모니터뿐만 아니라 원격 머신에서만 실행되는 GUI의 화면 영역도 제어할 수 있게 하려면 어떻게 해야 할까요? 또한 공개 디스플레이를 전체 화면으로 전환하고 프로그램이 시작될 때 운영자 GUI가 다른 디스플레이에 팝업되도록 하려면 어떻게 해야 합니까?

나는 원격 컴퓨터에 대한 유일한 요구 사항이 원격 데스크톱을 수행할 수 있도록 Pi에 가능한 한 많은 것을 유지하고 싶습니다. 즉, 내 소프트웨어를 원격 실행 파일과 로컬 실행 파일로 분리하고 싶지 않습니다.

답변1

본질적으로 두 가지 질문이 있습니다.

  1. 다른 모니터에서 프로그램을 실행하려면 어떻게 해야 합니까?
  2. 프로그램이 시작된 후 어떻게 프로그램과 대화합니까?

(선호하는 언어를 지정하지 않았으므로 Python을 사용한다고 가정합니다.)

#1은 쉽습니다. 스크립트에 대한 래퍼를 만들고 호출하세요.startclient.sh

#!/bin/bash
DISPLAY=":0.0"
./client.py

(공개 화면은 HDMI 화면이라고 가정합니다.)

#2는 조금 까다롭습니다. 나는 공개 측이 다음을 사용하여 명령을 듣도록 할 것입니다.파이로.

from PyQt4 import QtGui
import Pyro4

daemon=Pyro4.Daemon()                 # make a Pyro daemon
uri=daemon.register(QtGui)

print "Ready. Object uri =", uri      # print the uri so we can use it in the client later
daemon.requestLoop()                  # start the event loop of the server to wait for calls

운영자 측:

import Pyro4
import sys

uri=raw_input("What is the Pyro uri of the gui object? ").strip()
QtGui=Pyro4.Proxy(uri)

app = QtGui.QApplication(sys.argv)
w = QtGui.QWidget()
w.resize(250, 150)
w.move(300, 300)
w.setWindowTitle('Simple')
w.show()

이를 위해서는 PyQt4 및 Pyro4가 필요합니다. 이 코드는 테스트하지 않았습니다.

관련 정보