- APUE(아래 그림 참조)에서 터미널 에뮬레이터 프로세스와 창 관리자(예: openbox) 프로세스는 어떻게 통신합니까? 터미널 에뮬레이터 프로세스는 Unix 도메인 소켓 기반 창 관리자 프로세스의 클라이언트입니까?
X 서버 프로세스는 터미널 에뮬레이터 프로세스 및 창 관리자 프로세스와 어떤 관련이 있습니까? 구체적으로:
xlsclients
출력에 가 포함되어 있습니다lxterminal
. 이는 터미널 에뮬레이터 프로세스가 X 서버의 클라이언트라는 의미입니까?$ xlsclients -a | grep -i lxterminal ocean lxterminal
xlsclients
출력에는 창 관리자 프로세스가 포함되지 않습니다. 이는 창 관리자 프로세스가 X 서버의 클라이언트가 아니라는 의미입니까?$ xlsclients -a | grep -i openbox $
답변1
xlsclients
WM_CLIENT_MACHINE
상단 창(예: 루트 창의 하위 창 또는 속성이 있는 창)에 설정 및 속성을 나열하는 간단한 응용 프로그램입니다 .WM_COMMAND
WM_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 창 관리자는 openbox
X 서버에 연결될 때 일부 특수 명령을 실행하는 X 응용 프로그램입니다. 따라서 X 창 관리자는 다음과 같습니다.고객X섬기는 사람("고객"에 대한 흥미로운 정의를 고집하지 않는 한) 위와 같은 방식으로 의사소통합니다. "클라이언트" 아래에 나열되어 있지 않으면 xlsclients
X 서버가 이를 특별한 방식으로 처리하기 때문입니다. 실제로 메커니즘이 확실하지 않습니다( xlsclients
필터링 중이거나 X 서버 자체가 필터링 중일 수 있음).
편집하다
X 클라이언트(적어도 내 관점에서는)는 창을 표시하지 않더라도 X 서버에 대한 연결을 여는 모든 것입니다. X 서버에 쿼리하는 다른 명령과 마찬가지로 X 클라이언트의 경우에도 마찬가지입니다 xlsclients
(실행 중인 경우).
"제어 터미널"은 완전히 독립적인 개념입니다. 제어 터미널을 사용하여 (적어도 처음에는) X 응용 프로그램을 시작할 수 있습니다. 이는 명령줄을 통해 X 응용 프로그램을 시작하는 경우의 일반적인 경우입니다. 그러나 X 응용 프로그램은 X 디스플레이 관리자나 제어 터미널 없이 실행되는 창 관리자와 같은 다른 X 클라이언트와 같이 제어 터미널 없이 실행될 수도 있습니다.