5. 클라이언트 어플리케이션

잠깐동안 클라이언트 프로그램을 이야기하려 한다. 단지 X만을 가지고 클라이언트 프로그램을 만든다고 생각해 본다면 Xlib을 사용한다는 것이 매우 스파르타적이고 화면에 단추를 넣고 글씨를 쓰고 스크롤 바나 라디오 박스를 넣는 일 등은 사용자 입장에서는 매우 복잡한 일일 것이다.

다행히도 어떤 이가 이러한 제어에 대한 프로그래밍의 어려움을 알고 우리에게 사용할만한 '형식'을 만들었다. 이것이 라이브러리이다. 이 것들은 흔히 위젯(widgets)으로 알려졌고 위젯 라이브러리라고 부른다. 이렇게 해서 단지 몇몇 매개변수(parameters)로 라이브러리의 함수만 호출하면 화면에 버튼을 그릴 수있다. 이러한 위젯의 예를 들자면 메뉴, 버튼, 라디오버튼, 스크롤바, 캔버스(canvas)가 있다.

캔버스(canvas)라는 위젯은 조금 별난 위젯이다. 이것은 기본적으로 클라이언트 안에서 그릴 수 있는 영역(sub-area)이다. 이 곳은 위젯 라이브러리가 간섭하기 때문에(위젯 라이브러리로 그림을 그림) Xlib을 직접적으로 사용하지 않아도 되고 때문에 라이브러리 자체가 임의대로 그래픽을 그릴 수 있는 방법을 제공하여 준다.

사실 실제적으로 화면에 요소들을 그리는 것은 위젯 라이브러리이기 때문에 사용자의 반응(키보드 입력과 마우스 행동)만을 입력으로 간주하는 한 라이브러리는 각 클라이언트의 면면과 행동을 결정짓는다고 할 수 있다. 개발자의 입장에서 보면 위젯 라이브러리는 일률적인 API(함수들의 세트)를 갖게 되고 따라서 이러한 요소가 어떤 위젯을 사용할 것인가를 결정짓게 된다.