X 윈도
IT위키
더 많은 작업
- X Window System; X11; X
- 유닉스·리눅스 계열 운영체제에서 그래픽 사용자 인터페이스를 제공하는 창 시스템
- 1984년 MIT의 아테나 프로젝트(Project Athena)에서 시작했고, 1987년 발표된 X11이 지금까지 쓰이는 버전이다.
- 운영체제의 일부가 아니라 응용 프로그램으로 동작한다. 그래서 X 윈도를 끄고 텍스트 환경만 쓸 수도 있다.
- 런레벨 5(또는 systemd의 graphical.target)가 X 윈도가 실행되는 상태다.
- 클라이언트-서버 구조 : 프로그램(클라이언트)과 화면·입력장치를 관리하는 쪽(서버)이 분리되어 있다.
- 네트워크 투명성 : 원격 호스트에서 실행한 프로그램의 화면을 내 앞의 X 서버에 띄울 수 있다. 접속할 서버는 `DISPLAY` 환경 변수로 지정한다.
- 정책과 구현의 분리 : 창의 모양이나 조작 방식을 X 자체가 정하지 않는다. 그래서 윈도 매니저를 바꾸면 화면이 완전히 달라진다.
- 플랫폼에 독립적이며 소스가 공개되어 있다.
일반적인 서버-클라이언트와 반대로 이해하기 쉬운 부분이다.
- X 서버 : 사용자 앞에 있는 컴퓨터. 화면 출력과 키보드·마우스 입력을 담당한다.
- X 클라이언트 : 응용 프로그램. 원격 서버에서 돌고 있을 수 있다.
| 구성 요소 | 역할 |
|---|---|
| X 서버 | 디스플레이와 입력 장치를 관리하고 화면에 그린다 |
| X 클라이언트 | 실제 응용 프로그램 |
| X 프로토콜 | 서버와 클라이언트가 주고받는 메시지 규약 |
| Xlib / XCB | X 프로토콜을 다루는 라이브러리 |
| 윈도 매니저 | 창의 이동·크기 조절·최소화, 제목 표시줄 등 창의 배치와 모양을 관리한다 |
| 디스플레이 매니저 | 그래픽 로그인 화면을 띄우고 사용자 로그인과 세션을 관리한다. xdm, gdm, kdm, sddm, lightdm이 있다. 원격 단말에 로그인 화면을 띄울 때는 XDMCP(UDP 177)를 쓴다 |
| 데스크톱 환경 | 윈도 매니저에 파일 관리자·패널·기본 응용 프로그램까지 묶은 통합 환경. GNOME, KDE 등 |
X 윈도 위의 응용 프로그램은 X 프로토콜을 직접 다루지 않고 라이브러리를 거쳐 만든다. 아래로 갈수록 고수준이다.
| 이름 | 내용 |
|---|---|
| Xlib | C 언어로 구현된 X 클라이언트 라이브러리. X 서버와 대화하는 역할을 하는 저수준 인터페이스로, 창을 열고 키보드·마우스 입력에 반응하는 정도의 단순한 기능만 제공한다. 버튼이나 메뉴 같은 위젯은 없다 |
| XCB | Xlib 를 대신하려고 만든 더 작고 가벼운 C 바인딩. 요청을 비동기로 보낼 수 있다 |
| Xt(X Toolkit Intrinsics) | Xlib 위에서 위젯을 만들고 다루는 틀을 제공한다 |
| Motif | Xt 위에 만든 위젯 툴킷. OSF(Open Software Foundation)가 만들었고 상용 유닉스의 CDE 데스크톱이 썼다 |
| GTK+ (GTK) | GIMP 를 만들기 위해 시작된 C 언어 툴킷. GNOME 의 기반이다. LGPL |
| Qt | 노르웨이 트롤테크가 만든 C++ 툴킷. KDE 의 기반이다 |
- "C 언어로 구현된 클라이언트 라이브러리로 X 서버와 대화하며, 키보드·마우스 반응 같은 단순한 기능만 하는 저수준 인터페이스" 는 Xlib 이다. Qt·GTK+·Motif 는 위젯을 갖춘 고수준 툴킷이다.
- 초기에는 MIT와 X 컨소시엄, Open Group이 관리했다.
- 현재는 X.Org 재단(x.org)이 X11 구현인 X.Org 서버를 개발하며, 데스크톱 상호 운용성을 다루는 freedesktop.org와 함께 표준을 발전시키고 있다.
- X 윈도와 X.Org 서버는 MIT 라이선스(X11 라이선스)로 배포된다. MIT 라이선스는 MIT 가 X 윈도를 배포하면서 쓴 허가 문구에서 나온 허용적 라이선스다.
- 후속 디스플레이 서버로 Wayland가 개발되어 최근 배포판의 기본값이 되고 있다.
- X 윈도가 멈췄을 때 Ctrl + Alt + Backspace 를 누르면 X 서버를 강제로 끝낸다. 실행 중이던 그래픽 프로그램은 저장하지 않은 채 모두 닫힌다
- X.Org 7.5(2009) 이후 대부분의 배포판은 실수로 누르는 것을 막으려고 이 키를 꺼 둔다. xorg.conf 의
Option "DontZap" "false"나setxkbmap -option terminate:ctrl_alt_bksp로 다시 켠다 - 이 키를 쓸 수 없으면 Ctrl + Alt + F2 등으로 텍스트 콘솔로 넘어가 디스플레이 매니저를 다시 시작하거나 X 프로세스를 kill 한다
- Alt + Tab 은 창 사이를 옮겨 다니는 키이고, Ctrl + Alt + F1~F6 은 가상 콘솔을 바꾸는 키다
- `startx` : 콘솔(텍스트) 모드에서 X 윈도를 시작한다. 내부에서 xinit 을 불러 X 서버와 데스크톱 환경을 띄우는 스크립트다. xstart·xrun·runx 라는 명령은 없다
- `xterm` : X 윈도의 기본 터미널 에뮬레이터. 창 안에서 셸을 실행할 뿐 접근 제어와는 관계없다
- `xhost` : 다른 호스트의 접속 허용 여부를 지정한다 - 리눅스 xhost
- `xauth` : 쿠키 기반으로 접속 권한을 관리한다 - 리눅스 xauth
- `export DISPLAY=192.168.0.10:0.0` : 출력할 X 서버를 지정한다. export 는 셸의 환경 변수를 내보내는 내장 명령이고, 어느 클라이언트가 X 서버에 접근할 수 있는지는 xhost·xauth 가 정한다