13장. 스크립트

차례

1. 플러그인
1.1. 소개
1.2. 플러그인 사용하기
1.3. 새 플러그인 설치하기
1.4. 플러그인 작성하기
2. Script-Fu 스크립트 사용하기
2.1. Script-Fu?
2.2. Script-Fu 설치하기
2.3. 해야 할 것과 하지 말아야 할 것
2.4. 다른 종류의 Script-Fu
2.5. 독립형 스크립트
2.6. 이미지 의존형 스크립트
3. Script-Fu 강좌
3.1. Getting Acquainted With Scheme
3.2. 변수와 함수
3.3. Lists, Lists And More Lists
3.4. Your First Script-Fu Script
3.5. Giving Our Script Some Guts
3.6. Extending The Text Box Script
3.7. Your script and its working

1. 플러그인

1.1. 소개

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

김프 배포판에는 많은 플러그인들이 포함되어 있어, 김프 설치와 함께 설치됩니다. 이것들의 대부분은 Filters 메뉴를 통해 사용할 수 있지만(사실 이곳에 있는 것들은 모두 플러그인들이다), 몇몇은 다른 메뉴에 위치합니다. 플러그인 중에는 자동 색상 교정을 위한 "Normalize" 처럼 사용자가 그것이 플러그인이라는 것을 모른채 사용하는 플러그인들도 많습니다.

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

[주의] 주의

플러그인은 다른 프로그램에서도 사용할 수 있는 완전하게 실행가능한 프로그램입니다. 따라서 이를 이용해 시스템에 백도어를 설치하거나 시스템 보안을 위협할 수도 있습니다. 그러므로 신뢰할만한 사이트가 아닌 사이트로부터 플러그인을 다운로드받아 설치하지 마십시오.

[경고] 경고

대부분의 플러그인들은 여러 버전의 김프에서 사용할 수 있습니다. 하지만 특정 버전에서만 사용가능한 것도 있는데, 이러한 것들은 변환 작업을 통해 사용할 수 있습니다. 하지만 이 변환 작업이 어려울 수도 있으므로, 플러그인을 설치하기 전에 현재 사용중인 김프의 버전과 호환이 되는지 확인해야 합니다.

1.2. 플러그인 사용하기

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

플러그인들의 코드는 보통 김프 코어처럼 견고하게 짜여지지 않았습니다. 대신 김프는 거의 충돌을 일으키진 않지만 한번 충돌을 일으키면 굉장히 골치아픈 문제가 되는 반면, 플러그인의 충돌은 큰 문제가 되지 않아 계속해서 작업을 진행할 수 있습니다.

[참고] 참고

그것은 플러그인은 독립된 프로그램들로 김프 개발자들이 talking over a wire 라고 부르는 특수한 방법으로 김프 코어와 연동되기 때문입니다. 플러그인이 충돌하면 이러한 연동이 끊어지며 읽기 오류 라는 에러 메세지가 나오게 됩니다.

[작은 정보] 작은 정보

플러그인이 충돌하면, 김프는 해당 플러그인이 김프를 위험한 상태로 빠뜨릴 수 있다라는 무시무시한 경고 메세지를 보여줍니다. 그럴 경우에는 일단 이미지를 저장하고 김프를 종료하는 것이 좋습니다. 플러그인은 실제로 김프의 거의 모든 것을 바꿀 수 있지만, 일반적인 사용에 있어서 큰 문제가 되는 경우는 극히 드뭅니다. 따라서 대부분은 이에 대해 걱정하지 않고 작업을 계속해도 무방합니다. 이런 문제가 발생했을 경우에는 그 심각성이 어느 정도인지를 판단한 뒤 그에 맞게 조치하는 것이 좋습니다.

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

1.3. 새 플러그인 설치하기

김프와 함께 배포되는 플러인들은 별도의 설치과정이 필요없지만 직접 다운로드받은 플러그인을 따로 설치해주어야 합니다. 설치과정은 사용하는 OS와 플러그인의 구조에 따라 달라집니다. 리눅스에서 새 플러그인을 설치하는 것은 대체적으로 쉽습니다. 하지만 윈도우에서는 매우 쉽거나 매우 어렵기 때문에 따로 설명을 할 것입니다.

1.3.1. Linux / Unix-sytem like systems

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

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

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

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

김프 플러그인 템플릿을 기초로 한 일부 플러그인들은 사용자 디렉토리가 아닌 김프 시스템 디렉토리에 설치되도록 설계되어 있습니다. 이럴 경우에는 루트 권한으로 make install 을 실행해야 합니다.

동일한 이름을 가진 플러그인이 시스템 플러그인 디렉토리와 사용자 플러그인 디렉토리에 동시에 설치되어 있을 경우 김프는 사용자 디렉토리에 있는 플러그인만을 읽어들이며, 김프를 시작할 때마다 그 사실을 통보해 줍니다. 이는 플러그인 간의 충돌을 피하기에 좋은 방법입니다.

1.3.2. 창

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

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

1.3.3. 애플 맥 OS X(Apple Mac OS X)

How you install plugins on OS X mostly depends on how you installed GIMP itself. If you were one of the brave and installed GIMP through one of the package managers like fink [DARWINORTS] or darwinports, [FINK] the plugin installation works exactly the way it is described for the Linux platform already. The only difference is, that a couple of plugins might be even available in the repository of you package manager, so give it a try.

If you on the other hand are one of the Users that preferred to grab a prebuild GIMP package like GIMP.app, you most probably want to stick to that prebuild stuff. So you can try to get a prebuild version of the plugin of you dreams from the author of the plugin, but I'd not want to bet on this. Building your own binaries unfortunately involves installing GIMP through one of the package managers mentioned above.

1.4. 플러그인 작성하기

플러그인을 작성하는 법을 배우고 싶다면, 김프 개발자 사이트인 [GIMP-DEV-PLUGIN] 에서 많은 도움을 얻을 수 있을 것입니다. 김프는 복잡한 프로그램이지만 개발팀의 노력으로 쉽게 플러그인을 작성할 수 있게 되었습니다. 많은 과정안내와 예제가 있고, 플러그인들에 사용되는 주요 라이브러리(libgimp)는 문서화가 잘된 API 를 가지고 있으므로, 기존의 플러그인을 수정해 사용해본 프로그래머라면 곧 익숙해질 것입니다.