검수요청.png검수요청.png

엑스윈도우

위키원
elwn123 (토론 | 기여)님의 2020년 8월 11일 (화) 09:25 판 (설정)
이동: 둘러보기, 검색
엑스윈도우(X Window)
엑스윈도우(X Window)

엑스윈도우(X Window)는 리눅스(Linux)와 유닉스(UNIX) 등의 운영체제 위에서 작동하는 그래픽 유저 인터페이스(GUI) 기반의 운영체제이다. 엑스윈도 또는 간략히 X11 또는 X라고도 부른다. 1984년 미국 매사추세츠 공과대학교(MIT)에서 개발했다. 마이크로소프트윈도우(Windows) 시스템과 이름은 비슷하지만, 별개의 운영체제(OS)이다. MIT 라이선스를 따른다.

개요

윈도는 모니터 위의 화면을 여러 개의 다중화면으로 나누어 각기 다른 작업을 수행할 수 있게 해주는 방법이다. 윈도의 종류에는 여러 가지가 있으나 미국 MIT 공대에서 개발한 X 윈도가 거의 표준화되어 있다. X 윈도 체계는 UNIX 워크스테이션의 GUI를 위한 기초 수단으로서 확고한 지위를 누리고 있다. 윈도 체계는 컴퓨터와 사용 자간의 대화를 위한 사용자 인터페이스 기능을 제공한다.[1] 그래픽 출력을 위해 클라이언트 서버 모델을 사용하며 간단하게, 클라이언트가 무언가 그래픽적인 요구를 X 서버로 전달하면, X 서버가 요청을 처리하여 전달해준다. 그렇기 때문에 이론상으로는 원격으로 다른 시스템에 설치된 프로그램을 내 컴퓨터에 깔지 않고도 엑스 윈도를 통해 출력할 수 있다.[2]

역사

컴퓨터의 사용자 인터페이스는 윈도 체계가 등장하기 이전부터 이미 터미널을 사용하는 방법으로 널리 이용되어 왔다. 그러나 사용자 인터페이스가 사용자에게 사용하기 쉬운 환경을 제공하는 데에는 한계가 있다. 또한 멀티 태스크(Multi-Task)와 같은 운영체계기능이나 고도의 그래픽 기능을 충분히 살리지 못하는 등의 문제가 있다. 윈도 체계는 터미널이 가지고 있는 이와 같은 사용자 인터페이스의 계약을 극복하기 위하여 출현하였다.[1] 1984년 엑스 윈도는 원래 플랫폼과 독립적으로 작동하는 윈도 시스템 개발을 위해 IBM과 MIT, DEC 공동의 아데나 프로젝트를 통해서 Bob ScheiflerJim Gettys가 처음 개발하였다.1985년 MIT가 사용권을 포기하였으며 1988년에 엑스 컨소시엄이 이를 넘겨받아 오늘 날은 Open Group에서 관리하고 있다. 1986년 Bob Scheifler이 누구나 자유롭게 엑스를 사용하고 배포할 수 있는 오픈 소스 프로젝트 디자인을 만들었다. 1987년 오픈 소스 프로젝트 하에 X11이 발표된다. 1988년 수많은 컴퓨터 제조업체로 이루어진 엑스 컨소시엄이 조직되고, 엑스 컨소시엄에 의해서 X11 버전이 처음으로 개정되어 X11 R2가 발표되었다. 1996년 엑스 컨소시엄은 최종 개정판인 X11 R6 버전을 내놓으면서 X11 R6.3 버전을 끝으로 해체되었다. 1996년 오픈 소프트웨어 재단과 X/Open으로 형성된 오픈 그룹이 X11 R6.4 버전을 발표하였지만, 오픈 그룹은 기존 공개 배포 라이선스 정책을 무시한 채, XFree 86와 같은 수많은 프로젝트와 일부 상용 제조업체들의 참여를 가로막는 새로운 라이선스로 인한 잡음으로 결국에는 그해 가을 기존 배포 라이선스 정책에 따라 X11 R6.4 버전을 다시 배포하였다. 1999년 오픈 그룹은 X.org를 만들고, X.org에 의해서 X11 R6.5.1이 나오게 되었다. 2004년 X.org 재단이 만들어졌으며, XFree86 4.4 RC2와X11 R6.6을 기반으로 한 X11 R6.7 버전이 개발되었다. 2004년 9월 X11 R6.8 버전을 발표하였으며, 이 버전은 투명 창 지원, 체계적인 시각 효과 및 해상도 변경 기능, 3차원 가상 현실 디스플레이 장치 도구 지원, 섬네일 기능 등 다양한 시각적인 기능과 효과를 지원한다. 2012년 6월 가장 최근 버전 X11 R7.7이 개발되었다.[3]

특징

유닉스를 운영하는 PC를 비롯하여 거의 모든 워크스테이션에 이식되어 있다. Mac이나 Amiga에서도 가능하고 슈퍼컴퓨터에서도 구동이 가능하다. 엑스 서버와 엑스 클라이언트로 이루어져 있으며 엑스 서버는 사용자가 클라이언트 프로그램을 사용하기 위해서 필요한 키보드의 입력 등의 정보를 엑스 클라이언트에게 전송해주는 역할을 하고 엑스 클라이언트는 사용자가 작업을 하기 위해 실행시킨 엑스 윈도용 프로그램을 말한다. 엑스 윈도 시스템은 하드웨어의 제어에 필요한 것들을 모두 처리해주는 엑스 서버가 있기 때문에 엑스 클라이언트가 다양한 키보드나 마우스 등이 시스템에서도 실행될 수 있는 장치의 독립성을 지닐 수 있다. 네트워크 환경에서 다른 시스템의 엑스 클라이언트를 하드웨어가 틀린 자신의 시스템에 실행시킬 때 유용하게 사용된다. 다른 시스템에서 실행 중인 엑스 클라이언트를 동시에 볼 수 있고 다른 시스템에서 동작하고 있는 프로그램을 자신의 시스템을 통해서 볼 수 있다. 또 자신의 시스템에서 실행되고 있는 것을 다른 시스템으로 보낼 수 있다. 이런 네트워크의 투명성은 분산처리 환경에서 매우 중요하다. 전체 네트워크의 투명성이 보장되면 사용자들은 네트워크에 연결된 모든 컴퓨터를 마치 하나의 컴퓨터처럼 사용할 수 있게 된다.[4]

원격실행

리눅스의 엑스 윈도는 애초 설계부터 원격 실행을 고려하여 만들었다. X11이라는 프로토콜로 X 서버와 X 클라이언트가 주고받으며 그래픽 사용자 인터페이스(GUI, Graphic User interface)프로그램을 실행한다. 만약 리눅스 PC2에 X 서버가 있고 리눅스 PC1의 프로그램이 X 클라이언트가 실행된다고 했을 때 리눅스 PC1의 프로그램 X 클라이언트가 리눅스 PC2의 X 서버로 접속하도록 하면 원격으로 프로그램이 실행된다. PC2에서는 PC1에서 실행되는 프로그램을 원격으로 조작하고 볼 수있게 된다. 이처럼 리눅스는 리눅스끼리 프로그램을 원격으로 실행 할 수 있는 환경이 기본적으로 갖춰져 있다. 단일 컴퓨터 내부에서는 X11의 프로토콜을 주고받는데 큰 어려움이 없다. 운영체제는 컴퓨터 내부의 하드웨어 자원을 다 컨트롤 할 수 있기 때문이다. 하지만 독립된 컴퓨터끼리는 원격 실행을 위해 X11 프로토콜을 주고받은 매개가 필요하다. 여러 가지 방법이 있을 수 있는데 그중 가장 널리 사용되는 방법이 SSH(Secure Shell)를 이용하는 방법이다. PC2가 PC1으로 SSH 접속을 하고 로그인을 하면 PC2에서 PC1의 프로그램을 실행하거나 명령을 줄 수 있다. 여러 가지SSH 기능 중 엑스윈도 원격 실행에 필요한 것은 X11 패킷 포워딩이다. SSH로 그래픽 사용자 인터페이스 프로그램을 실행할 때 화면에 이렇게 그려주세요 라는 X11 패킷이 발생한다. 이 패킷을 SSH를 통해 다른 컴퓨터에 전송이 가능하다. 만약 SSH로 접속을 하는 컴퓨터에 X 서버가 실행중이면 전송받은 X11 패킷대로 화면에 그려준다. 이러한 방식으로 원격 그래픽 사용자 인터페이스 프로그램 실행이 가능해진다. 이때 많은 사람이 혼동을 할 부분이 있다. X 클라이언트가 실행되는 컴퓨터에 SSH 서버가 실행돼야 하고 X 서버가 실행되는 컴퓨터는 SSH 클라이언트가 실행돼야 한다. 왜 반대인지 의문을 가질 수 있는데 단순하게 생각하면 X 클라이언트는 프로그램이 실행되는 컴퓨터에서 실행되고 X 서버는 화면에 보이는 컴퓨터에서 실행된다. SSH 서버는 원격 접속을 허락하는 컴퓨터에 SSH 클라이언트는 원격 접속을 시도하는 컴퓨터에 실행된다. 그래픽 사용자 인터페이스로 실행 중인 리눅스끼리는 단순하게 SSH 접속을 통해 원격 프로그램을 실행 할 수 있다. 하지만 기본적으로 SSH 서버나 클라이언트에서 X11 패킷 포워딩이 꺼져있다. 따라서 X11 패킷 포워딩 기능을 켜면 리눅스끼리는 SSH 접속을 통해 원격으로 프로그램이 실행 가능해진다.[5]

Xming

Xming은 윈도용 X 서버로 리눅스에서의 X 윈도처럼 마이크로소프트-윈도(MS-Windows)에서도 엑스 윈도용 프로그램을 출력할 수 있도록 해주는 화면 출력 서버다. 다중 사용자 시스템인 리눅스는, 프로그램이 리눅스 컴퓨터 안에서 실행되고 있어도, 컴퓨터에 연결된 모니터로만 화면 출력하는 것이 아니라, 화면을 그려주고 출력해 줄 수 있는 서버가 있다면, 멀리 떨어져 있다고 하더라도 그쪽 서버로 화면을 출력할 수 있다. 또한, 윈도XP가 마이크로소프트사에서 만든 운영체제이지만, 이 윈도에서 엑스 윈도 프로그램을 화면에 출력할 수 있는 서버를 설치할 수 있다면 리눅스 프로그램도 윈도에서 볼 수 있다. 이것은 마치 윈도에서 리눅스 프로그램을 실행하는 것처럼 보이지만, 실제 실행은 리눅스 컴퓨터에서 하고, 다만 X 서버는 프로그램에서 전송하는 화면을 출력하고, 사용자의 키보드나 마우스와 같은 입력을 프로그램 쪽으로 전송해 주는 역할을 한다. X 서버로 X-Manager 라는 프로그램이 있다. X-Manager가 상용 프로그램이라면 Xming은 무료 프로그램이다. 설치는 먼저 홈페이지에서 Xming을 다운받아 설치한다. Xming-fonts를 다운받아 설치한다. X 서버를 이용하여 리눅스 프로그램을 실행하는 방법은 다소 복잡해 보일 수 있다. 그러나 한번 해보면 그리 어렵지 않다. 먼저 프로그램의 화면 출력을 담당하는 X 서버인 Xming을 실행해야 한다. Xming 메뉴의 XLaunch를 실행한다. 서버는 4가지 타입으로 실행할 수 있다. 그다음 리눅스 컴퓨터에 있는 프로그램을 실행한다. 역시 텔넷(Telnet) 프로그램을 이용해야 하는데, Xming은 프리웨어인 putty와 잘 맞는다. putty의 Tunnels 옵션에서 X11 forwarding 항목 중 Enable X11 forwarding을 체크한다. 그다음 평상시 리눅스에 접속하듯 접속한다. 그리고 gnome-calculator 또는 gnome-terminal을 실행 시켜 봤을 때 윈도에서 프로그램이 보이면 성공이다.[6]

엑스윈도 프로그래밍

엑스 윈도 프로그램이란 엑스 윈도의 자원을 이용하는 프로그램이다. X의 자원들은 대표적으로 창(Window), 색상(Color Map), 폰트(font) 등이 있다. 이러한 자원들은 엑스 윈도 서버(Server)라고 하는 녀석이 전권을 가지고 관리하고 있다. 우리의 역할은 이미 정해져 있는 규칙에 따라서 자원을 관리하는 서버에 연결하여, 서버에게 우리가 원하는 자원을 서비스해달라고 요청하는 일이다. 우리는 서버와 어떻게 연결할 것인지, 그리고 어떻게 서버에게 이것저것 우리가 원하는 것을 달라고 하는지를 배우는 것을 목표로 하게 된다. 이러한 프로그램을 클라이언트(Client)라고 한다. 서버/클라이언트 개념이라고 해서 항상 프로그램을 무엇이 무엇에 연결하여 원하는 일을 한다는 사고방식 아래에 모든 프로그램을 짜게 된다. 이는 더 나아가 세계 저편에 있는 서버에 우리 집의 클라이언트가 연결하여 서비스를 받는다는 네트워크 지향적이고 미래 지향적인 프로그래밍(Programming)이 된다. 인터넷 시대를 사는 우리에게는 아주 중요한 개념이라고 할 수 있다.[7]

불러내기

엑스 윈도 시스템을 시작하는데에는여러 가지 방법이 있다. 대부분의 리눅스 시스템에서는 텍스트 기반의 로그인(login) 화면을 거쳐 로그인하고, 명령행으로 엑스를 실행하도록 세팅되어 있다. 엑스를 실행하는 것은 전적으로 사용자 마음이다. 가장 간단한 방법으로는 xinit를 이용하는 것이다. xinit를 실행하면 아마 아무것도 놓이지 않은 데스크톱을 볼 수 있을 것이다. 아무런 설정 없이 xinit를 수행하면 윈도 매니저조차 뜨지 않는다. (배포본을 사용할 경우 xinit로 엑스를 수행해도 윈도 매니저나, 터미널 에뮬레이터 등이 뜰 수 있게 이미 세팅해 놓은 경우도 있다) 이 경우 콘솔에서 타이핑하므로 엑스 시스템에 터미널 에뮬레이터가 뜨는 것을 볼 수 있을 것이다. (콘솔 가상 화면으로 가는 핫키는 alt-f1 f6이고, 엑스가 떠 있는 상태에서 엑스는 alt-f7/f8을 이용한다. 엑스에서 콘솔로 가는 핫키를 누를 때는 ctrl 키를 함께 눌러 Ctrl-alt-f1 f6이 된다) 매번 명령행을 이용해 터미널 에뮬레이터를 띄우고 싶지 않다면 .xinitrc를 시작 스크립트로 쓸 수 있다. 하지만 너무나 불편한 방법이다. 배포본이라면 .xinitrc 파일에 어떤 내용이 있을지도 모른다. 좀 더 보편적인 방법으로는 startx를 사용하는 것이다. 좀 더 많은 설정 파일들을 부를 수 있으며, 좀 더 강력하다. 아마 startx 명령을 통해서는 좀 더 화려한 화면을 볼 수 있을지도 모른다 (많은 배포본에서 startx를 통해 수행되는 엑스 시스템에서 윈도 매니저를 비롯한 여러 세팅을 기본적으로 제공하고 있다) 이를 통해 좀 더 쉽게 엑스를 사용할 수 있다. 여전히 많은 사용자들이 이용하지만, 텍스트 기반의 쉘로 로그인한 후 명령행을 통해 엑스를 수행시킨다는 것은 단점이자 장점으로 남는다. 장점으로는 개개인의 사용자가 자신이 원하는 방식으로 윈도를 세팅하여 띄울 수 있다는 것이다.

startx -- -bpp 8    #start x in 256 color mode
startx -- -bpp 32   #start x in true color mode

위 명령에서 '--' 의 표시는 명령행의 아규먼트(옵션)을 xinit로 넘겨주는 역할을 한다. 위 명령을 통해 엑스의 해상도를 자신이 원하는 목적에 맞게 바꾸어 실행시킬 수 있다. 물론 설정 파일을읽어 들이는 것은 여전하다.[8]

데스크탑 분석

좀 더 편하게 엑스를 사용하기 위해서 반드시 익숙해져야 할 기본과 개념이 있다. 이런 것들은 도움이 필요할 때마다 매뉴얼(man page)이나 도움말에서 자꾸 반복해서 나올 것이다. 스크린은 사용자 전체의 "데스크톱(화면)"을 말한다. 이 두 가지의 말은 자주 섞여서 나오곤 한다. 기술적으로 본다면 스크린이란 당신이 사용하는 엑스가 보여주는 가장 자주 쓰는 디스플레이 화면이다. 자주 쓰는 이라는 말에는 엑스가 1개 이상의 화면을 가질 수 있다는 의미이다. 사실 하나의 엑스 서버를 통해 여러 컴퓨터를 사용할 수 있다. 하지만 여기서 더 깊이 들어가는 것은 이 문서의 범위를 넘어설 것이다. 다른 문서를 통해 자세히 알 수 있을 것이다. 루트 윈도란 현재 사용 중인 스크린의 바탕화면이다. 이름에서 풍기는 느낌처럼 다른 윈도와는 다른 기능과 모습을 가지고 있다. 하지만 평범한 윈도처럼 그림을 보여준다든가, 색깔을 입힌다든가 혹은 루트 윈도 상에서 프로그램을 실행시킨다든지 하는 기능은 다를 바 없다. 윈도매니저는 엑스 윈도 시스템과 사용자 사이를 이어주는 인터페이스이다. 윈도 매니저가 없었다면 엑스는 사용하기에 무척 힘든 시스템이 되었을 것이며 지금처럼 경쟁력 있게 발전하지 못하였을 것이다. 윈도 매니저에서는 윈도의 둘레(border)나 메뉴, 아이콘, 가상화면, 버튼 바, 툴바 등을 제공하여 좀 더 편리하게 사용할 수 있게 한다. 또한 엑스의 윈도 매니저는 사용자의 설정 사항을 다양하게 구비하여, 자신의 입맛에 맞는 윈도 매니저를 쓸 수 있도록 하고 있다. [[포인터[[는 화면상에 마우스나 포인팅 장치의 위치를 알려주는 화살표다. 종종 다른 모양을 띠고 있을 수도 있다. 또한 포인터는 모양 변화를 통해 마우스 포인터가 있는 위치에서 무슨 일이 일어날지, 혹은 무슨 일이 일어나고 있는지에 대한 정보를 알려주기도 한다. 윈도란 윈도 매니저에 의해 관리되며 주어진 애플리케이션이 실행되는 하나의 프레임으로 둘러싸인 공간이다. 위에서 언급한 루트 윈도와는 좀 다른 모습일 것이다. 윈도의 모습은 타이틀, 둘레, 버튼들 등을 가지고 있기도 하며 혹 이런 것들이 하나도 없을 수도 있다. 윈도는 윈도 매니저에 의해 관리된다. 항상 그런 것은 아니지만 전통적으로 마우스 포인터가 가리키고 있는 윈도는 사용자의 키보드 입력을 받을 수 있으며 흔히 활성 윈도(액티브 윈도)라고 부른다. 이런 이유로 활성 윈도를 집중 되었다고도 한다. 한 윈도가 포커스 되면 다른 윈도는 집중되지 않은(unfocused) 비활성 윈도가 되어 사용자의 입력을 받아들일 수 없다. (요즘은 포커스 하기 위해 마우스 버튼을 누르기도 한다) 메뉴, 아이콘은 다른 윈도 시스템에서와 같은 전형적인 동작을 보여준다. 문자 위주로 이루어진 콘솔같이 보이는 텍스트 기반의 윈도를 터미널 에뮬레이터라고 한다. hanterm, xterm 등이 그것이다. 터미널 에뮬레이터는 기본적으로 콘솔의 디스플레이를 에뮬레이팅한다. 엑스를 쓰는 이점 중 하나로 동시에 여러 개의 터미널 에뮬레이터를 띄워놓고 여러 개를 동시에 감시할 수 있다는 것이다. 또한 터미널 에뮬레이터를 사용함으로 엑스에서 제공하는 여러 다른 이점을 이용할 수 있을 것이다.[8]

엑스 윈도우 데스크톱 환경

데스크톱 환경은 윈도 매니저(twm, mwm, fvwm, enlinghtenment)를 포함하여 파일 매니저, 도움말 시스템, 제어판, 바탕화면 등의 다양한 도구를 제공하고 있다. 종류에는 KDEGNOME이 있다. KDE는 the K Desktop Environment의 약자이다. 여기서 K는 윈도 시스템의 엑스처럼 단순히 the K Desktop Environment를 나타낸다. KDE는 파일 매니저, 윈도 매니저, 헬프 시스템과 각종 애플리케이션의 집합체이다. GNOME(Gnu Network Object Model Environment)은 사용자가 컴을 쉽게 사용하고 설정할 수 있도록 해주는 편리한 데스크톱 환경이다. GNOME은 패널, 표준 데스크톱 툴, 응용 프로그램 그리고 그 외의 다른 프로그램들과 서로 간에 협동적으로 동작할 수 있도록 지원해 준다. GNOME은 GTK(GimpToolKit) + 라이브러리를 기반으로 만들어지고 있다. GNOME은 전용 윈도 매니저가 없는 대신에 대응 윈도 매니저를 선택하여 사용한다. 이는 GNOME의 가장 큰 특징이라고 할 수 있는데 윈도 매니저가 바뀌더라도 데스크톱의 중요한 부분들은 바뀌지 않는다는 것을 의미한다. 사용자가 원하는 방법으로 데스크톱 환경을 마음대로 설정할 수 있으며 세션 매니저는 이전 설정을 기억해 항상 그 환경을 유지하도록 해 준다. 호환되지 않는 프로그램들의 기능도 충분히 살릴 수 있도록 여러 가지의 드래그 앤 드롭(Drag and Drop) 프로토콜을 지원하며, CORBA(Common Object Roker Architecture)를 사용하여 소프트웨어들의 작성 언어나 실행 가능한 기계와 상관없이 상호 간에 동작이 가능하게 해 준다.[9]

목적과 기능

엑스 윈도 시스템은 그래픽 사용자 인터페이스(GUI) 환경으로, 기존의 디스플레이 시스템과 다른 점은 X 프로토콜을 기반한 클라이언트와 서버 모델의 네트워크 지향 윈도 시스템이다. 서로 네트워크로 연결된 단말기에 접속한 모든 사람은 입력 장치를 통해 컴퓨터를 이용할 수 있다. X 응용 프로그램은 자신이 클라이언트로서, 네트워크로 X 서버에 접속하여 X 서버에게 명령 서비스를 요청하면, X 서버는 이러한 명령 요청을 받아 글꼴 서버를 통해서 굴림 글꼴을 보여주거나, 응용 프로그램에서 마우스 포인터의 위치를 이동 시켜 준다. 이처럼 X 클라이언트는 X 서버에서 동작하면서 서버에게 명령을 전달하고, X 서버는 클라이언트에게 명령 요청의 결과를 디스플레이 장치에 출력해 주거나 키보드, 마우스, 터치스크린과 같은 사용자 입력을 클라이언트에게 제공해 주는 역할을 한다. X의 클라이언트/서버의 네트워크 지향 시스템 구조는 로컬 상의 X 서버로부터 다른 시스템의 X 클라이언트의 요청을 받아들일 수 있는 또 다른 특징을 제공해 준다. 이것은 다른 시스템에 있는 응용 프로그램을 로컬 상의 X에서 실행시킬 수 있음을 의미하는 것으로써 예를 들어, 로컬 상의 X 시스템에서는 파이어폭스가 설치되어 있지 않더라도 다른 원격 시스템에 파이어폭스가 설치되어 있다면 원격 시스템에 텔넷이나 SSH로 접속하여 로그인한 후 파이어폭스를 실행하면 로컬 X 서버에서 제공하는 화면 출력을 이용하여 원격 시스템에서 파이어폭스를 사용할 수 없다는 말이다. 이때 X 응용 프로그램의 디스플레이는 로컬 X 서버에서 처리되기 때문에, 원격 시스템에서는 X 서버가 없어도 상관없다. 엑스 윈도 시스템은 단순하지만, 표준 위젯 툴킷과 프로토콜 스택을 제공해 대부분의 유닉스(Unix) 기반 운영 체제 및 OpenVMS 에서 인터페이스 개발에 사용될 수 있다. 또한, 엑스 윈도 시스템은 여러 가지 운영체제로 이식되었다. 엑스 윈도 시스템은 사용자 인터페이스의 모습에 관여하지 않는다. 그래서 엑스 윈도를 사용한 사용자 환경의 모습은 매우 다양할 수 있다.[10]

구조

엑스 윈도가 유닉스용 그래픽 사용자 인터페이스(GUI)이므로 네트워크 시스템에 알맞게 되어있어야 한다. 즉, 여러 가지 다른 시스템을 하나의 방식으로 묶어 관리할 수 있도록 할 필요가 있다. 그래서 서버(Server)와 클라이언트(Client) 개념을 도입했고, 이에 따라 프로그램 개발자는 각각의 아키텍처(Architecture)를 신경 쓰지 않고도 개발을 할 수 있으며 각각의 아키텍처에 맞도록 운용되므로 그 시스템 나름의 장점을 활용할 수 있다. 엑스 윈도 시스템을 이루는 것은 4가지로 나눌 수 있다.[11] 서버-클라이언트는 기본적으로, 클라이언트는 응용프로그램을 말한다. 엑스 윈도 클라이언트는 직접적으로 사용자와 통신할 수 없다. 클라이언트는 서버로부터 키보드 누름이나 마우스 버튼의 누름 같은 사용자의 입력을 얻을 수 있다. 클라이언트는 서버가 그림을 그리도록 요구하는 엑스 윈도 명령을 실행한다. 엑스 서버(X서버)란 애플리케이션 사용자의 컴퓨터에서 작동하며 그래픽 디스플레이 하드웨어를 제어하고 입출력을 담당한다. 엑스 서버는엑스 클라이언트 애플리케이션이 스크린에 무엇인가를 그리거나 키보드와 마우스로부터 입력을 받으라는 요청을 받아 처리한다. 마우스 이동과 버튼 눌림 같은 입력 신호를 클라이언트 프로그램에 전달도 한다. 또한 복잡한 데이터 구조체들을 관리한다. 엑스 프로토콜(X Protocol)은 엑스 윈도에서 각종 처리는 클라이언트와 서버라는 두 가지 프로그램이 나누어서 하고 있다. 즉 클라이언트는 IPC(Inter-process communication)를 이용하여 서버의 장치 입출력을 제어한다. 이러한 엑스 서버와 엑스 클라이언트의 상호 작용은 메시지 교환을 통해 이루어지는데, 메시지 형태와 사용법을 엑스 프로토콜(Protocol)이라 한다. 엑스 윈도의 중요한 특징 중 하나가 이러한 메시지 교환이 같은 컴퓨터뿐이 아닌 컴퓨터 사용자도 네트워크 컴퓨터에 존재하는 엑스 클라이언트 프로그램을 자신의 화면에 표시하여 실행시키는 것이 가능한 것이다. 엑스 프로토콜은 서버와 클라이언트 사이에서 통신 되는 요청, 응답, 에러의 기본 메시지다. 클라이언트가 윈도를 생성해달라거나 도형을 출력해달라는 요구를 request queue에 넣어 서버에게 보내면 서버는 하드웨어를 제어, 화면에 전시한 후 답신을 보낸다. 또한 서버는 하드웨어로부터 들어오는 입력을 받아들여 event queue에 넣어 클라이언트에 보내면 클라이언트가 그에 따른 처리를 한다. 엑스 라이브러리(X library)는 엑스에서의 프로그램 개발은 시스템의 운영체제(OS)나 하드웨어에 의존적인 조작을 처리해주는 서버와 대화할 수 있도록 엑스 프로토콜을 이해해야 한다. 그런데 이 엑스 프로토콜은 Xlib라는 라이브러리 루틴으로부터 발생시킨다. 그러나 Xlib의 기능은 그다지 많지 않다. 화면에 그림을 그리고 마우스에 반응하는 등의 기능만을 갖고 있다. 즉, 저수준 인터페이스다.[11]

활용

윈도 매니저

윈도 매니저는 엑스 윈도 시스템의 외형을 결정짓는 프로그램이다. 윈도 메뉴의 구성, 마우스 버튼의 동작, 스크롤 바, 아이콘 등을 윈도 매니저가 결정한다. (Shell)의 종류가 여러 가지가 있고, 윈도(Windows)에서도 프로그램 매니저 외에 다른 프로그램들을 쉘로 사용할 수 있듯이 XFree86에서도 사용하는 윈도 매니저가 여러 가지가 있다. 윈도우 매니저마다 모양과 기능의 차이가 있고, 마우스 버튼을 사용하는 것도 차이가 있다. XFree86이 실행되면 위의 윈도 매니저 중 하나로, 혹은 2개 이상의 매니저로 실행된다. 각각의 매니저별로 약간의 구성과 마우스 키, 메뉴 등에 차이가 있다. 만약, 이 매니저 중 아무것도 실행이 안 된다면윈도 같은 것이 뜨지만 한쪽 구석에 single tasking 모듈(Module)의 화면 하나가 나올 뿐이다. 이 상태에서는 단지 하나의 콘솔(Console) 상태와 비슷한 상황인데, 여기에서 fvwm& 이라고 치면 매니저가 실행된다.[11]

  • fvwm: 가장 많이 사용되는 윈도 매니저로 startx로 엑스윈도우를 구동하면 나타나는 윈도 매니저다. 마우스 버튼 3개를 모두 사용한다. 왼쪽 버튼은 윈도의 백그라운드에서 X 용 프로그램 메뉴를 부른다. 가운데 버튼은 윈도 메뉴를 호출한다. 백그라운드에서 부를 수 있고, 윈도의 타이틀 바에서 윈도 메뉴를 호출할 수 있다. 백그라운드에서 윈도 메뉴를 호출하면 선택되는 것은 어느 윈도에 지정할 수 있고, 타이틀 바에서는 그 윈도에 한정된다. 가운데 버튼이 없는 마우스는 두 개의 버튼을 동시에 누르면 된다. 오른쪽 버튼은 현재 실행되고 있는 윈도의 리스트를 보여준다.[11]
  • olvwm, olwm: olvwm은 openwin으로 윈도를 실행했을 때 사용되는 윈도 매니저다. 이것은 썬 스팍스테이션의 OpenWindow와 비슷한 인터페이스(Interface)다. 화면이 단순하고 화려하지 않다. 마우스 오른쪽 버튼으로 프로그램을 호출한다. olvwm은 olwm에 가상 화면을 사용하도록 기능을 추가한 것이다. 마우스의 오른쪽 버튼으로 프로그램을 호출한다. 여기에 등록된 메뉴로 거의 모든 애플리케이션을 실행할 수 있다.[11]
  • mwm: mwm은 Motif의 윈도 매니저로 리눅스(Linux)에 기본적으로 들어 있는 것은 아니다. Motif는 사용이며 엑스윈도의 하나의 표준이다. 전용으로 개발된 프로그램은 컴퓨터의 기종에 상관없이 소스를 가져와 컴파일(Compile)하는 것만으로 다른 기종의 컴퓨터에 이식할 수 있다는 장점이 있다. mwm은 fvwm과 비슷하게 오른쪽 마우스 버튼으로 프로그램 매니저를 대신하지만 fvwm에 비해 기능이 현저히 적다. 프로그램을 실행하기 위해서는 프롬프트 상태에서 입력하거나 파일 매니저에서 실행해야 한다.[11]
  • Window Maker: 설치와 설정이 간단하고 메뉴 편집이나여러 가지 면에서 간단하고 쉬우며 또 멋진 화면을 구성할 수 있다. 설정 파일은 설치하고 난 후 홈 디렉토리에서wmaker.inst를 실행하면 생기는 GNU step디렉터리에 모여있다.[11]

엑스 어플리케이션

  • xterm : GUI 환경을 가지고 있다고 해서 모든 것을 마우스 클릭만으로 해결할 수 있는 것은 아니다. 그래서 마우스라는 편리한 입력장치가 개발된 지금까지도 그리고 PC에서 사용되는 주변장치 중에서 유일하게 커다란 변화의 물결을 겪지 않고 아직 이 키보드라는 입력장치는 한결같이 사용되고 있다. X에서도 마찬가지로 키보드를 사용하여 시스템을 사용하는 경우가 많다. 그래서 마치 윈도95를 사용하다가 도스 창을 열어서 사용하듯 리눅스의 X에서도 터미널 모드에서 키보드 입력을 통하여 시스템을 사용할 수 있도록 해주는 윈도를 띄울 수 있는데 이러한 프로그램을 xterm이라고 한다.
  • 한텀 : 한텀이란 xterm을 개조하여 한글을 사용할 수 있도록 한 것이다. X가 아닌 일반적인 콘솔 상태에서는 HAN을 사용하여 한글을 사용할 수 있듯이 xterm 상태에서는 한텀을 사용하여 한글을 구현할 수 있는 것이다. 그리고 콘솔에서 한글을 사용할 수 있게 해주는 HAN 프로그램과 마찬가지로 한텀에서도 한글 bash를 셸로 사용해야 정상적인 한글 입출력을 할 수 있다.
  • 파일 매니저(File manager) : X에서도 윈도95 등에서 볼 수 있는 파일 매니저 프로그램을 사용하여 파일 관리를 할 수 있다. X의 파일 매니저에는 xfileman 과 xfm 두 가지가 있다. 이 중에서 xfm은 xfileman보다 좀 더 강력한 기능을 제공해 준다. xfm이 실행되면 두 개의 윈도가 생긴다. 하나는 디렉터리 간의 이동을 표시해 주는 파일 매니저 윈도이고, 다른 하나는 자주 사용하는 애플리케이션들을 등록해 놓는 Application 윈도다.
  • 세연(seyon) : seyon은 X 용 통신프로그램으로 한컴과 링크시켜서 사용하면 한글을 사용하는 일반 통신망에 자유로이 접속할 수 있다. 그리고 일반적인 통신 프로그램이 가진 기능은 기본적으로 모두 갖추고 있기 때문에 별 불편 없이 사용할 수 있을 것이다.
  • xv : X에서도 xv를 사용하여 화면캡처, 그림 파일 형식의 변환 등 다양한 그래픽 관련 작업을 할 수 있다. xv 윈도 안에서 마우스의 왼쪽 버튼을 누르면 그래픽작업을 위한 컨트롤패널이 나타난다. GIF, jpeg, tiff, postscript, bmp 등 다양한 형식의 그림을 지원하기 때문에 원하는 형태의 파일 형식으로 저장할 수 있다.
  • Xpaint : Xpaint는 X에서 그림을 그리기 위한 프로그램이다. xv와 마찬가지로 다양한 파일 형식을 지원하며, 마우스를 통해서 그림을 그린다.
  • xclipboard : 윈도에서 사용되는 클립보드와 마찬가지로 X에서도 Cut & Paste를 위한 클립보드가 있다. xterm을 사용하다가 복사하고자 하는 부분이 생기면 마우스의 왼쪽 버튼을 누른 채로 원하는 부분까지 드래깅하여 범위를 설정한다. 그다음에 클립보드 윈도로 가서 마우스의 두 개의 버튼을 동시에 누른다. 그러면 클립보드에 앞에서 설정한 부분이 그대로 복사되는 것을 볼 수 있을 것이다.
  • 그 외의 유틸리티 : 이 외에도 계산기, Xcpustate, xspread, xload, game, xbiff, xwininfo등이 있다.[12]

윈도 메이커

윈도 메이커에서 오른쪽에 나타나는 아이콘을 도크라고 한다. 이 도크는 윈도 95의 바탕화면에 있는 단축 아이콘과 비슷하다. 오른쪽 마우스를 누르면 메뉴가 나오는데 KDE, GNOME에 기본 메뉴뿐 아니라 응용 소프트웨어들이 모두 들어 있어 편리하게 쓸 수 있다. 자주 실행하는 프로그램들은 프로그램 실행 후 화면 아래쪽에 나타나는 해당 아이콘을 드래그해서 도크에 붙혀 놓으면 윈도우 95의 단축 아이콘처럼 사용할 수 있다. 도크에 점이 있으면 실행되지 않은 것이고 없으면 실행된 상태를 나타낸다. 윈도우 매니저들은 가상화면을 가지고 있어 4~8개의 가상화면을 쓸 수 있다. 클립의 화살표를 누르면 가상화면이 바뀌는 것을 볼 수 있다. 도크에 있는 밑의 아이콘을 더블클릭하면 윈도 메이커를 사용자 취향에 맞게 바꿀 수 있다.[9]

설정

엑스 윈도를 설정하기 위해 알아야 할 사항에는 시스템 비디오 카드의 칩의 종류와 메모리 용량, 모니터 모델과 최대 해상도, 수직/수평 재생률이다. 비디오 카드 관련 유틸리티는 SuperProbe와 xvidtune이 있다. SuperProbe는 xfree86에서 제공하는 유틸리티로 비디오 카드에 대한 자세한 정보를 보여준다. 루트권한자만 가능하며 텍스트 상태에서도 사용이 가능하다. xvidtune은 엑스 윈도상에서 비디오 모드를 조절할 수 있는 유틸리티다. 화면의 상/하/좌/우, 높이와 폭의 조정, 수평/수직의 조절이 가능하다. 또한 /etc/X11/XF86config파일에서 해상도 부분에 직접입력하여 조정할 수도 있다. 엑스 윈도 설정 유틸리티는 Xconfigurator를 이용하는 방법이 있다. 이것은 텍스트 그래픽 인터페이스의 유틸리티로 엑스 윈도를 자동으로 설정해준다. 레드햇 7.x 버전까지 지원된다. 그다음 xf86cfg를 이용할 수 있다. 이것은 그래픽 사용자 인터페이스 방식으로 이 명령은 xFree86 3.3.6버전에서는 XF86Setup명령으로 지원되었다. 콘솔과 엑스 윈도상에서 실행되는데, 반드시 /etc/X11/디렉터리에 XF86Config 파일이 있어야 하며, 이 방법을 이용하려면 엑스 윈도가 구동되어야 한다. 엑스 윈도를 띄우기 위한 설정이라기보다는 주변기기에 대한 더욱 자세한 설정을 위해 사용된다. 관련 파일에는 /etc/X11/XF86Config가 있다. 이것은 xfree86의 주 설정 파일이다. 관련심볼릭 링크파일로 /etc/X11R6/lib/X11/XF86Config가 이 파일을 가리키고 있다. 파일의 구성은 7개의 섹션으로 구성되어 있다. 첫 번째, Files는 시스템의 중요한 파일이 있는 장소를 지정하는 섹션이다. 2번째, ServerFlags는 엑스 서버의 몇 가지 기능을 활성화하거나 비활성화시킨다. 3번째 키보드는 키보드 종류와 프로토콜 등 키보드의 기능과 관련된 정보를 지정한다. 4번째 포인터는 마우스 종류, 마우스가 연결된 포트 등 마우스 관련 설정에 사용된다. 이중 Emulate3Buttons는 2버튼마우스에서 좌우 두 버튼을 동시에 눌렀을 경우 3 버튼 마우스의 가운데 버튼 역할을 하도록 한다. 5번째 모니터는 모니터와 해상도 설정에 관련된 부분이다. 6번째 그래픽 장치는 엑스 서버가 사용할 수 있는 비디오 카드를 설명한다. 7번째 스크린은 모니터와 장치 섹션에 있는 정보를 함께 불러오는 데 사용된다.[13]

비판

엑스 윈도 시스템은 여러 가지 이유로 비판을 받고 있다. 가장 일반적인 비판은 X 프로토콜에 대한 의존성이 다른 스타일의 그래픽 사용자 인터페이스 디자인보다 효율성이 떨어지고 X 프로토콜 자체가 그 시대를 보여주고 있으며 현대 그래픽 사용자 인터페이스 시스템에서 인기 있는 기능을 제공하지 않는다는 것이다. 이러한 비판은 일부 서클에서 매우 인기가 있었지만, 결론에 대한 의견 차이가 널리 퍼져있다. 어쨌든 이미 너무 많은 소프트웨어가 존재하기 때문에 X11을 교체하는 것은 매우 비현실적이다. X11을 지속해서 개선하고 컴퓨터 그래픽 인터페이스의 개발과 함께 최신 상태로 유지하기 위해 많은 프로젝트가 존재한다. X에 대한 한가지 비판은 대역폭을 많이 사용한다는 것이다. 이는 많은 사용자가 제한된 리소스에 연결되거나 느린 연결을 통해 연결될 때 중요하다. 또 다른 하나는 전송된 정보가 투명해서 침입자가 냄새를 맡을 수 있다는 것이다. 보안이 중요한 경우 X는 SSH와 같은 보다 안전한 프로토콜을 통해 전달될 수 있다. No Machine은 더 적은 트랜잭션(Transaction)을 사용하고 SSH를 통해 전달하도록 프로토콜을 수정하여 X를 개선했다. NXFreeNX를 사용하면 전화 접속을 통해서도 원격 그래픽 연결이 유용 할 수 있다.[14]

각주

  1. 1.0 1.1 X Window 네이버 지식백과 - https://terms.naver.com/entry.nhn?docId=3484090&cid=58439&categoryId=58439
  2. X Window namuwiki - https://namu.wiki/w/X%20Window
  3. X 윈도 시스템 위키백과 - https://ko.wikipedia.org/wiki/X_%EC%9C%88%EB%8F%84_%EC%8B%9C%EC%8A%A4%ED%85%9C
  4. CoolJY 네 다락방, 〈X윈도의 개념과 특징〉, 《틱톡》, 2008-05-19
  5. X-Windows의 원격 실행 원리〉, 《티스토리》, 2017-04-12
  6. Xming openwiki - https://openwiki.kr/tech/xming
  7. X 윈도우 프로그래밍 기초과정 케이엘디피 위키 - http://wiki.kldp.org/wiki.php/LinuxdocSgml/X-Window-Programming-KLDP
  8. 8.0 8.1 The X Window User HOWTO kldpwiki - https://wiki.kldp.org/HOWTO/html/XWindow-User/XWindow-User-HOWTO-2.html
  9. 9.0 9.1 xuny, 〈리눅스의 활용 - X윈도우〉, 《이글루》, 2006-11-15
  10. X Window System wikipedia - https://ko.wikipedia.org/wiki/X_%EC%9C%88%EB%8F%84_%EC%8B%9C%EC%8A%A4%ED%85%9C
  11. 11.0 11.1 11.2 11.3 11.4 11.5 11.6 우짤래, 〈X-Window System에 관하여〉, 《네이버 블로그 》, 2009-05-10
  12. 사제스, 〈X window 정의〉, 《초보개발자의 꿈과 사랑》, 2006-08-25
  13. X-window 설정 guyweb - http://attiadmin.guyweb.co.kr/linux/xwindow.html
  14. X Windows System LQWiki - http://wiki.linuxquestions.org/wiki/X_Window_System

참고자료

같이 보기


  검수요청.png검수요청.png 이 엑스윈도우 문서는 소프트웨어에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.