터미널 에뮬레이터, 창 관리자 및 X 서버 프로세스 간의 서버-클라이언트 관계는 무엇입니까?

터미널 에뮬레이터, 창 관리자 및 X 서버 프로세스 간의 서버-클라이언트 관계는 무엇입니까?
  1. APUE(아래 그림 참조)에서 터미널 에뮬레이터 프로세스와 창 관리자(예: openbox) 프로세스는 어떻게 통신합니까? 터미널 에뮬레이터 프로세스는 Unix 도메인 소켓 기반 창 관리자 프로세스의 클라이언트입니까?
  2. X 서버 프로세스는 터미널 에뮬레이터 프로세스 및 창 관리자 프로세스와 어떤 관련이 있습니까? 구체적으로:

    xlsclients출력에 가 포함되어 있습니다 lxterminal. 이는 터미널 에뮬레이터 프로세스가 X 서버의 클라이언트라는 의미입니까?

    $ xlsclients -a |  grep -i lxterminal
    ocean  lxterminal
    

    xlsclients출력에는 창 관리자 프로세스가 포함되지 않습니다. 이는 창 관리자 프로세스가 X 서버의 클라이언트가 아니라는 의미입니까?

    $ xlsclients -a |  grep -i openbox
    $
    

여기에 이미지 설명을 입력하세요.

답변1

xlsclientsWM_CLIENT_MACHINE상단 창(예: 루트 창의 하위 창 또는 속성이 있는 창)에 설정 및 속성을 나열하는 간단한 응용 프로그램입니다 .WM_COMMANDWM_STATE

그게 전부입니다. 마법은 없습니다.

InputOnly예를 들어, 나는 (보이지 않는) 창을 루트 창의 자식으로 여는 내 창 관리자를 사용하고 있습니다.냠크~의기상검사. 이 두 속성을 설정하면 예상한 일이 발생합니다 ;-)

$ xprop -id 0x400001 -f WM_CLIENT_MACHINE 8s -set WM_CLIENT_MACHINE kgbvax
$ xprop -id 0x400001 -set WM_COMMAND /sbin/reboot
$ $ xlsclients
kgbvax  /sbin/reboot
...

그러나 귀하의 질문에 대답하려면 다음을 수행하십시오.

터미널 에뮬레이터 프로세스와 창 관리자(예: openbox) 프로세스는 어떻게 통신합니까? 터미널 에뮬레이터 프로세스는 Unix 도메인 소켓 기반 창 관리자 프로세스의 클라이언트입니까?

둘 다 X11 서버의 클라이언트이며 일반적으로 XSendEvent(3)를 사용하여 클라이언트 메시지를 보내고 창에서 속성을 설정하여 통신합니다. 계약 내용은 다음과 같습니다.OO야그리고냠크. 클라이언트는 창을 "소유"하지 않습니다. 모든 클라이언트는 창 속성 설정 및 가져오기를 포함하되 이에 국한되지 않고 모든 창에서 모든 작업을 수행할 수 있습니다.

답변2

APUE가 무엇을 의미하는지 모르겠고 인터넷 검색으로 유용한 정보를 찾지 못했지만 xterm. xterm터미널 에뮬레이터가 여러 개로 표시되는 것을 중지하려면(예: 탭 하위 창에서) APUE가 그러한 프로그램일 수 있습니다.

1) 터미널 에뮬레이터는 일반적인 X 응용 프로그램이므로 다른 X 응용 프로그램과 동일한 방식으로 X 서버를 통해 간접적으로 X 창 관리자와 통신합니다. 세부 사항은 복잡하며 X 속성, X 이벤트 및 기타 사항이 포함됩니다. 연결이 간접적이기 때문에 어떤 종류의 클라이언트-서버 관계나 Unix 도메인 소켓도 포함하지 않습니다.

2) 터미널 에뮬레이터를 포함한 모든 X 응용 프로그램은고객X섬기는 사람, 동일한 시스템에서 실행 중인 경우 Unix 도메인 소켓을 통해, 그렇지 않은 경우 네트워크를 통해. 예, xlsclients이름에서 알 수 있듯이 연결된 X 서버의 모든 클라이언트 응용 프로그램을 나열합니다.

3) X 창 관리자는 openboxX 서버에 연결될 때 일부 특수 명령을 실행하는 X 응용 프로그램입니다. 따라서 X 창 관리자는 다음과 같습니다.고객X섬기는 사람("고객"에 대한 흥미로운 정의를 고집하지 않는 한) 위와 같은 방식으로 의사소통합니다. "클라이언트" 아래에 나열되어 있지 않으면 xlsclientsX 서버가 이를 특별한 방식으로 처리하기 때문입니다. 실제로 메커니즘이 확실하지 않습니다( xlsclients필터링 중이거나 X 서버 자체가 필터링 중일 수 있음).

편집하다

X 클라이언트(적어도 내 관점에서는)는 창을 표시하지 않더라도 X 서버에 대한 연결을 여는 모든 것입니다. X 서버에 쿼리하는 다른 명령과 마찬가지로 X 클라이언트의 경우에도 마찬가지입니다 xlsclients(실행 중인 경우).

"제어 터미널"은 완전히 독립적인 개념입니다. 제어 터미널을 사용하여 (적어도 처음에는) X 응용 프로그램을 시작할 수 있습니다. 이는 명령줄을 통해 X 응용 프로그램을 시작하는 경우의 일반적인 경우입니다. 그러나 X 응용 프로그램은 X 디스플레이 관리자나 제어 터미널 없이 실행되는 창 관리자와 같은 다른 X 클라이언트와 같이 제어 터미널 없이 실행될 수도 있습니다.

관련 정보