11장. Scripting the GIMP
| 부 II. GIMP 마법사가 되려면? |

## 11장. Scripting the GIMP

## 1. 플러그인

고친 과정
고침 $Revision: 1744 $ | 2006-06-05 | Mr.Dust

### 1.1. 소개

김프가 가진 멋진 점 중 하나는 플러그인을 통해 쉽게 기능확장을 할 수 있다라는 점이다. 김프의 플러그인은 김프 자체에 의해 제어되며 실행되면서 김프와 굉장히 밀접하게 상호작용하는 외부 프로그램이다. 플러그인을 이용하면 사용할 수 있는 거의 모든 방법으로 이미지를 편집할 수 있다. 플러그인의 장점은 거대하고 복잡하기 짝이없는 김프 코어 코드를 고치지 않고, 작은 플러그인을 작성하는 것만으로 기능확장을 할 수 있다라는 점이다. 많은 주요 플러그인들은 100-200 라인 정도의 C 언어로 작성되었다.

김프 배포판에는 많은 플러그인들이 포함되어 있어, 김프 설치와 함께 설치된다. 이것들의 대부분은 Filters 메뉴를 통해 사용할 수 있지만(사실 이곳에 있는 것들은 모두 플러그인들이다), 몇몇은 다른 메뉴를 이용해야 한다. 그것이 플러그인이라는 것을 모른채 사용하는 플러그인들이 많은데, 그 중 하나가 자동 색상 교정을 위한 "Normalize" 이다. 이것은 작동방식에 대해 아무런 언급이 없긴 하지만 사실 플러그인이다.

김프 배포판에 포함된 플러그인 외에 많은 플러그인들을 넷상에서 구할 수 있다. 특히 플러그인들을 모아 배포하는 GIMP Plugin Registry 에서 많은 플러그인들을 얻을 수 있을 것이다. 플러그인 제작자들은 그 사이트에 업로드를 하고, 사용자들은 사이트 내에서 다양한 방법으로 특정 플러그인을 찾을 수 있다.

전세계의 누구라도 김프 플러그인을 만들어 웹사이트에 등록하거나 개인 웹 사이트를 통해 배포할 수 있다. 사용자 설명서에 설명된 플러그인과 같은 주요한 플러그인들도 그러한 방법으로 알려진 것이다. 그런데 이러한 무제한적인 개발은 적정 수준의 유지가 힘들다라는 단점이 있다. 김프와 함께 배포되는 플러그인들은 모두 개발자들에 의해 테스트되고 고쳐진 것들이지만, 웹사이트에서 다운로드 가능한 많은 플러그인들은 이제 막 개발되어 테스트없이 배포된 것들이다. 몇몇 플러그인 제작자들은 버그들에 대해 별로 신경쓰지 않기도 하고, 그렇지 않더라하더라도 다양한 상황과 시스템에서 테스트하는 것은 분명 한계가 있다. 기본적으로 플러그인을 다운로드받을 경우, 비록 무료로 다운받지만 때때로 댓가를 지불해야 할 경우도 있다. 이것은 겁주는 것이 아니라 명확히 이해하는 것을 돕기 위한 이야기이다.

| 주의
플러그인은 완전하게 실행되는 프로그램이다. 따라서 다른 프로그램에서 사용할 수도 있다. 이는 시스템에 백도어를 설치하거나 다른 보안을 위협하는데 사용될 수도 있다. 그러므로 신뢰할만한 사이트가 아닌 사이트로부터 플러그인을 다운로드받아 설치하는 것은 좋지 않다.

이러한 경고는 Plugin Registry 뿐만 아니라 그 외의 사이트에서 얻을 수 있는 플러그인들에 대한 것이다. Plugin Registry 는 모든 플러그인 제작자들이 이용할 수 있고 다른 어떤 체계적인 관리를 하지는 않기 때문이다. 물론 악의적인 것들은 관리자들이 선별해 차단한다. 그리고 사실 김프와 김프의 플러그인들은 다른 자유 프로그램과 마찬가지로 사용상의 문제에 대한 아무런 보증도 하지 않는다.

| 경고
대부분의 플러그인들은 여러 버전의 김프에서 사용될 수 있다. 하지만 특정 버전에서만 사용가능한 것도 있는데, 이러한 것들은 변환장치를 이용해 사용할 수도 있다. 따라서 플러그인을 설치하기 전에 현재 사용중인 버전과 호환이 되는지 확인해야 한다.

### 1.2. 플러그인 사용하기

대부분의 경우 플러그인이라는 것을 의식하지 않고도 김프의 다른 도구들처럼 플러그인을 사용할 수 있다. 하지만 플러그인의 속성에 대해 알아두면 조금더 편리하게 사용할 수 있다.

대부분의 플러그인들의 코드는 김프 코어처럼 견고하지가 않다. 그런 까닭에 김프는 거의 충돌을 일으키진 않지만 한번 충돌을 일으키면 굉장히 골치아픈 문제가 되는 반면, 플러그인의 충돌은 큰 문제가 되지 않으므로 계속해서 작업을 진행할 수 있다.

| 참고
그것은 플러그인들은 서로 각기 다른 프로그램들로 김프 코어와 특별한 방법을 통해 연동되기 때문이다. 김프 개발자들은 흔히 “talking over a wire” 라고 부른다. 플러그인이 충돌하면 이러한 연동이 끊어지며 “wire read error” 라는 에러 메세지가 나온다.

| 작은 정보
플러그인이 충돌하면, 김프는 해당 플러그인이 김프를 위험한 상태로 빠뜨릴 수 있다라는 무시무시한 경고 메세지를 보여준다. 그럴 경우에는 일단 이미지를 저장하고 김프를 종료하는 것이 좋다. 하지만 사실상 이런 경우는 극히 드문 까닭에 대부분의 사용자들은 신경쓰지 않고 작업을 계속한다. 따라서 이런 문제가 발생했을 경우에는 그 심각성이 어느 정도인지 생각해보고 그에 맞게 조치하는 것이 좋다.

플러그인이 김프와 소통하는 방식에는 플러그인을 시작된 후 이미지의 바뀐 점에 대해 통보하는 과정이 없다. 따라서 플러그인이 시작된 후 다른 도구로 이미지를 편집하면, 플러그인은 종종 충돌하게 된다. 그런까닭에 한번에 하나의 플러그인만 사용하고, 플러그인이 작동되는 도중에는 다른 작업을 하지 않는 것이 좋다. 그렇지 않으면 이미지를 망치는 것뿐만 아니라 실행취소 시스템까지 망가뜨려 그림을 복구하지 못하게 될수도 있다.

### 1.3. 새 플러그인 설치하기

김프와 함께 배포되는 플러인들은 별도의 설치과정이 필요없지만 직접 다운로드받은 플러그인을 따로 설치해주어야 한다. 설치과정은 사용하는 OS와 플러그인의 구조에 따라 몇 가지 방법이 있을 수 있다. 리눅스에서는 대체적으로 설치가 쉽다. 하지만 윈도우에서는 매우 쉽거나 매우 어렵기 때문에 이런 경우는 따로 살펴보는 편이 나을 것이다.

#### 1.3.1. 리눅스(Linux)

대부분의 플러그인은 두 가지로 분류할 수 있다. 하나는 .c 파일의 소스 코드 형태로 배포되는 소수의 플러그인들이고, 다른 하나는 Makefile 을 포함한 많은 파일을 가진 형태로 배포되는 대부분의 플러그인이다.

예를 들어 `borker.c` 라는 플러그인이 있다면 gimptool-2.0 --install borker.c라고 입력한다. 그러면 플러그인이 컴파일된 후 사용자 플러그인 디렉토리인 `~/gimp-2.2/plugins` 로 설치가 된다. 그리고 이 플러그인은 김프 시작시 자동으로 읽어들여지게 된다. 이 과정은 루트 권한으로 실행하지 않아도 된다.

설치한 플러그인을 어떻게 사용해야 할까? 플러그인의 메뉴 경로는 플러그인에 따라 결정된다. 따라서 플러그인 설명서를 보거나 직접 찾아봐야 한다. 아니면 플러그인 설명 대화상자(Xtns/Plugins Details) 에서 해당 플러그인을 찾고 Tree view 탭을 보면 된다. 그래도 못 찾겠다면 메뉴들을 다 뒤져보던가 등록 섹션에서 소스 코드를 찾아보면 된다.

여러 개의 파일을 가진 디렉토리로 구성된 복잡한 플러그인은 포함된 INSTALL 파일이나 `README` 파일을 읽어보고 그에 따라해야 한다. 해당 파일이 없으면 그냥 휴지통으로 버려버리는 것이 좋다. 사용자를 고려하지 않은 채 작성된 플러그인은 골치만 아플 것이 뻔하기 때문이다.

몇몇 플러그인들은(특히 김프 플러그인 템플릿을 기초로 한) 사용자 디렉토리가 아닌 김프 시스템 드렉토리에 설치되도록 설계되어 있다. 이럴 경우 루트 권한으로 “make install” 을 해야한다.

시스템 플러그인 디렉토리에 설치된 플러그인과 같은 이름의 플러그인을 사용자 플러그인 디렉토리에 설치할 경우 김프는 사용자 디렉토리에 있는 플러그인만을 읽어들이며, 김프를 시작할 때마다 그 사실을 통보해 준다. 이것이 플러그인 간의 충돌을 피하는 가장 좋은 방법이다.

#### 1.3.2. Windows

윈도우즈는 리눅스보다 조금 복잡하다. 모든 리눅스 배포판은 많은 컴파일 프로그램을 지원하며 그 대부분이 비슷하게 작동한다. 하지만 윈도우즈는 그렇지 않은 까닭에 적절한 프로그램 개발 환경을 구축하려면 상당한 비용을 들여야 하거나 상당한 지식과 노력이 필요하다.

이것과 김프 플러그인과의 관계는 다음과 같다.: 만약 프로그램을 개발할 수 있는 환경을 갖추지 못했다면, 이미 컴파일된 플러그인을 구하거나 컴파일해줄 누군가를 찾는 것이 낫다. 때로는 그저 사용자 디렉토리로 옮겨주는 것만으로 사용 가능할 수도 있다. 김프를 컴파일할 수 있을 정도의 프로그램 개발 환경을 갖추고 있다면, 주저할 것 없이 리눅스 명령을 따라하면 될 것이다.

만일 도전적으로 개발 환경을 구축하고자 한다면 김프 위키의 다음 페이지를 참고하면 될 것이다. HowToCompileGimp/MicrosoftWindows 위키는 모든 사용자가 편집할 수 있으므로 팁이나 조언을 올려주기 바란다.

#### 1.3.3. 맥킨토시(Macintosh)

차후 추가 예정

### 1.4. 플러그인 작성하기

플러그인을 작성하는 법을 배우고 싶다면, 김프 개발자 사이트인 developer.gimp.org 에서 많은 도움을 얻을 수 있을 것이다. 김프는 굉장히 복잡한 프로그램이지만 개발팀의 노력으로 쉽게 플러그인을 작성할 수 있게 되었다. 플러그인들이 사용하게 되는 주 라이브러리(“libgimp”)의 API는 문서화가 잘 되어 있다. 기존의 플러그인을 수정해 사용해본 프로그래머라면 곧 익숙해질 것이다.

5.2. 탭 제거하기 |  | 2. Script-Fu 스크립트 사용하기