· KLDP.org · KLDP.net · KLDP Wiki · KLDP BBS ·
Linuxdoc Sgml/Blackbox-TRANS

Blackbox 가이드

Blackbox 가이드

Maintained by The BB.Themes.Org Staff ( blackbox@themes.org)

Blackbox version 0.51.0, Guide version 1.0, 17 August 1999 송재경( ssaky@infomind.co.kr) 2000년 4월 8일
블랙박스는 버전 11 릴리즈 6 또는 그 이상의 Open Group's X Window System의 또 다른 윈도우매니져로서 C++로 만들어졌으며, 다른 어떤 윈도우매니저와도 공통적인 코드를 사용하지 않았다. (그래픽적인 성취도가 윈도우메이커의 그것과 비슷하게 보일지는 모르겠지만...). 블랙박스는 Bradley T. Hughes ( bhughes@tcac.net)에 의해 쓰여졌다.

1. 도입부

블랙박스는 버전 11 릴리즈 6 또는 그 이상의 Open Group's X Window System의 또 다른 윈도우매니져로서 C++로 만들어졌으며, 다른 어떤 윈도우매니저와도 공통적인 코드를 사용하지 않았다. (그래픽적인 성취도가 윈도우메이커의 그것과 비슷하게 보일지는 모르겠지만...). 블랙박스는 Bradley T. Hughes ( bhughes@tcac.net)에 의해 쓰여졌다.

이 문서는 블랙박스의 개발자 Bradley T. Hughes ( bhughes@tcac.net)의 협조로 Gregory J. Barlow ( barlowg@themes.org) 와 Charles Nusbaum ( pax@themes.org)에 의해 유지된다.

The BB.Themes.Org Staff is:

만일 당신이 The Blackbox Guide 에 기여하고자 한다면 pax@themes.org 로 이메일을 보내주기 바란다.

2. 설치

2.1 컴파일 그리고 설치하기

블랙박스는 ftp://blackbox.wiw.org/pub/blackbox/에서 다운받을 수 있다. 다운을 받았다면 컴파일을 수행할 디렉토리로 옮기고 다음과 같이 압축을 푼다.

tar -zxvf blackbox-x.xx.x.tar.gz

압축이 모두 풀리면 (화면에 뿌려지는 디렉토리와 파일이름이 멈추고 프롬프트가 다시 나오면 끝난것이다.), 생성된 디렉토리로 이동한다.

간단하게 블랙박스를 컴파일하는 방법은 다음과 같다.:

  1. 블랙박스의 소스 디렉토리로 이동하여 당신의 시스템에 맞게 패키지를 구성하기위해 configure 를 실행한다. ./configure 만일 당신이 System V 의 구버전상에서 csh 을 사용하고 있다면 csh이 자기 자신의 configure를 실행하지 않도록 sh ./configure 를 이용해야 할것이다. configure에는 시간이 조금 걸리며 수행중에 어떤것을 체크하는지 보여준다.
  2. 패키지의 컴파일을 위해 make 명령을 실행한다.
  3. 프로그램과 데이타 파일, 문서의 인스톨을 위해 make install 을 실행한다.
  4. 소스 코드가 있는 디렉토리에서 컴파일시 생성된 바이너리와 오브젝트 파일을 지우고 싶다면 make clean를 실행하여 지울 수 있으며, configure로 생성된 파일들은 make distclean로 지울 수 있다.

자, 다시한번 블랙박스를 컴파일하는 방법을 정리해보면 :

./configure (or sh ./configure)
make
make install

그리고 선택사항이다. :

make clean
make distclean

configure 쉘 스크립트는 컴파일시 사용되는 시스템 종속적인 여러 변수들의 올바른 값을 추정한다. 이것은 블랙박스의 각 소스 트리의 Makefile을 생성하는데 사용되어진다.

마지막으로, 나중에 현재설정을 다시 생성할때 사용할 수 있는 config.status, 재설정시 속도를 높일 수 있도록 테스트 결과를 저장한 config.cache, configure의 디버깅시 유용하게 사용되어지는 컴파일 결과값을 포함하는 config.log 가 생성된다.

만일 블랙박스를 컴파일하는 중에 문제가 발생하면, 다음 릴리즈에서 고려되어질 수 있도록 bhughes@tcac.net 로 메일을 보내주기 바란다.

configure.in 파일은 autoconf 프로그램을 통하여 configure 를 생성할때 사용되어진다. 변경 및 새로운 버전의 autoconf를 이용하여 configure를 재생성하는데에는 configure.in 파일 만이 사용된다.

2.2 컴파일 옵션

어떠한 시스템에서는 configure 스크립트가 알지못하는, 컴파일과 링크작업시 필요한 특별한 옵션을 요구한다. 이때에는 환경에 맞게 configure에 변수의 초기값을 주어야 한다. 본쉘계열을 사용한다면 다음과 같이 설정을 한다.

CC=c89 CFLAGS=-O2 LIBS=-lposix 
./configure
env 프로그램을 가지고 있는 시스템에서는 다음과 같이 사용할 수 있다.
env CPPFLAGS=-I/usr/local/include LDFLAGS=-s 
./configure

2.3 추가적인 설정

블랙박스는 X11R6의 XShape 확장을 지원한다. 이것은 기본 설정으로 되어있지만 이 설정값을 무시하려면 configure 시 --disable-shape 옵션을 주면 된다.

블랙박스는 KDE protocol/extensions의 최소 집합을 지원한다. 이 지원사항은 기본적으로는 지원되지 않으며 --enable-kde 으로 지원가능토록 할 수 있다.

블랙박스는 Slit이라 불리는 장치로 윈도우메이커 dockapps를 지원한다. (주의사항 : 윈도우메이커에서 블랙박스로의 재시작 시에는 dockapps가 정확히 동작하지 않을 수도 있다.) Slit 기능은 기본적으로 제공되며 --disable-slit 로 지원하지 못하도록 할 수 있다.

블랙박스는 "faked interlacing"라고 불리는 렌더링 효과를 지원한다. 이것은 기본값으로 설정되어 있으며 `--disable-interlace' 옵션을 주어 무시할 수 있다.

또한, configure는 자동적으로 X include 와 library files를 찾지만 --x-includes=DIR--x-libraries=DIR 옵션으로 수동적으로 디렉토리를 지정해줄 수 있다.

3. 기본적인 동작

이번 장에서는 블랙박스의 기본적인 사용법에 대해 설명한다.

3.1 블랙박스 실행하기

블랙박스에는 실행시 줄 수 있는 몇개의 명령행 옵션이 있다. blackbox -display [display] 는 블랙박스를 특정한 화면으로 띄워준다. (예 :1.0). blackbox -version 은 블랙박스의 버전을 보여준다. blackbox -help는 블랙박스에서 사용되는 명령행 옵션을 보여준다. 그리고 0.51 버전부터 blackbox -rc [file] 로  /.blackboxrc 이외의 다른 설정파일을 지정하여 블랙박스를 실행할 수 있다.

3.2 Windows

다른 윈도우매니저와 같이, 윈도우창을 조작하는데 사용되는 툴은 창의 상단에 위치한 main window bar이다. 이 main window bar는 창의 제목을 보여주며 최소화,최대화,창 닫기 의 세가지 버튼을 가지고 있다. 최소화 버튼은 막대의 왼쪽에 위치하며 나머지 두개의 버튼은 오른쪽에 붙어있다. 창은 풀스크린, 수직, 수평으로의 확대가 가능한데, 최대화 버튼을 마우스 왼쪽 클릭하면 화면전체를 덮는 풀스크린으로 커지며, 가운데 버튼으로 클릭하면 수직으로 길어진다. 그리고 오른쪽 클릭으로 창을 수평으로 길게 늘릴 수 있다. main window bar를 더블클릭을 하면 창이 숨겨진다. main window bar에서 오른쪽 마우스 클릭시 다음과 같은 메뉴를 통해 더욱 많은 조작을 할 수 있다.

Send To ...
(Un)Shade
Iconify
(Un)Maximize
Raise
Lower
(Un)Stick
Close
Kill Client

Send To ... 메뉴는 데스크탑의 이름을 선택하여 창을 해당 데스크탑으로 이동시킬 수 있도록 한다. 프로그램을 완전하게 종료시켜버리는 Kill Client 외에는 이름을 보면 어떠한 일을 하는지 알 수 있을것이다.

창은 main window bar 또는 윈도우를 감싸고 있는 프레임의 어느 한부분을 마우스 클릭을 유지한채 드래그 함으로써 움직일 수 있다. 윈도우창을 움직이면 윈도우창의 좌상단 모서리의 좌표가 화면 중앙에 나타나게 될 것이다. 창의 크기 조정은 윈도우창의 오른쪽 아랫부분을 마우스 클릭후 드래그하면 된다. 이때는 창의 크기가 화면 가운데 나타날 것이다.

3.3 Toolbar

툴바는 현재 작업공간의 이름, 초점을 갖는 윈도우창의 이름, 시간, 작업공간을 이동할 수 있도록하는 버튼을 제공한다. 툴바의 제일 왼쪽에 보이는 라벨이 현재 작업공간의 이름을 나타낸다. 이 이름을 바꾸고 싶다면, 라벨 위에서 마우스 오른쪽 클릭 후 원하는 이름을 쓰고 엔터키를 누르면 된다. 만일 이름을 바꾸고 싶지 않은데 실수로 마우스 오른쪽 버튼을 클릭했다면 그냥 엔터를 치면된다. 이름은 변하지 않을것이다. 이 이름 라벨 옆에 보이는 버튼은 작업공간을 바꿀때 사용되어진다. 작업공간에 대해 더욱 자세한 설명은 다음에 나오는 Workspaces를 보자. 버튼 옆에 보이는 라벨은 현재 초점을 가지고 있는 창의 이름을 보여준다. 이 라벨 옆에 보이는 버튼은 현재의 작업그룹에 있는 창에 순차적으로 초점을 준다. 이 버튼 옆에는 시계가 있다. 시계의 설정에 대해서는 4. 기본적인 설정을 참고하기 바란다. 기본적으로 툴바는 모든 창보다 상위에 위치한다. 이것이 싫다면 툴바를 가운데 버튼으로 클릭하시라.

3.4 Menus

블랙박스에는 세가지 기본적인 메뉴 - 윈도우 메뉴, 작업공간 메뉴, root 메뉴가 있다. 앞의 Windows절에서 본 윈도우 메뉴는 윈도우창의 프레임을 오른쪽 클릭하면 나타나며 개인적인 설정이 불가능하다. 작업공간 메뉴는 root window (역자: 바탕화면이라고 생각하면 됩니다.) 에서 가운데버튼 클릭으로 볼 수 있으며, 모든 작업공간의 이름과 각 작업그룹에 있는 윈도우창의 목록을 볼 수 있다. 작업공간이외에 또다른 목록을 볼 수 있는데, 여기에는 최소화 또는 아이콘화 되어있는 윈도우창을 보여준다. 여기서 새로운 작업공간의 추가 및 삭제도 가능하다. 작업공간 메뉴 또한 사용자가 개인적으로 설정할 수 없다. root 메뉴는 root window 에서 오른쪽 클릭함으로써 나타낼 수 있으며, 유일하게 사용자가 설정을 할 수 있는 메뉴이다. 이 메뉴에서 프로그램 실행, 재설정, 윈도우 매니저 재시작, 스타일 (역자: 일종의 블랙박스의 테마라고 생각하면 됩니다.) 바꾸기, 블랙박스 종료를 할 수 있다. root 메뉴의 설정은 5. 메뉴 설정에서 자세히 설명하도록 한다. 작업공간 메뉴와 root 메뉴는 둘다 열어둔 상태로 두거나, 열린상태에서 위치를 이동시킬 수 있으며, 열려진 메뉴를 닫을때는 메뉴의 제목줄에서 오른쪽 클릭하거나 root window에서 마우스 왼쪽 클릭을 하면 된다.

3.5 Workspaces

대부분의 윈도우 매니저와 같이, 블랙박스 또한 여러개의 작업공간을 사용할 수 있다. 작업공간 간의 이동은 여러가지 방법으로 가능하다. 툴바의 왼쪽에 위치한 버튼으로 작업공간을 순환적으로 바꿀 수 있다. 또한 키 바인딩으로도 가능한데, ~/.blackboxrc 에서 바인딩을 설정하며, 이 설정법은 4.기본적인 설정에서 다루기로 한다. 기본적으로는 CTRL 과 좌/우 화살표 키로 작업공간을 바꿀 수 있다. 마지막 방법은 root window에서 마우스 가운데 버튼 클릭으로 나타나는 작업공간 메뉴에서 선택하여 이동하는 방법이 있다. 작업공간의 추가 및 삭제 또한 같은 메뉴를 사용한다. 작업공간의 이름을 바꾸고 싶다면, 해당 작업공간으로 이동한 후 툴바의 제일 왼쪽의 이름라벨에서 마우스 오른쪽 클릭 후 새 이름을 쓰고 엔터를 치면 된다.

4. 기본적인 설정

블랙박스의 거의 모든 기본적인 설정은 ~/.blackboxrc에서 한다. 이 파일은 블랙박스를 한번 실행한 후 종료하거나 재시작하면 생성된다. 이 장의 나머지 부분은 ~/.blackboxrc의 유용한 옵션을 보고, 그 설정법을 알아본다. 아래는 ~/.blackboxrc의 예이다. :

session.screen0.workspaces:            1
session.screen0.toolbarOnTop:          False
session.screen0.toolbarWidthPercent:   66
session.screen0.windowPlacement:       SmartPlacement
session.screen0.slitPlacement:         CenterRight
session.screen0.focusModel:            SloppyFocus
session.screen0.strftimeFormat:        %I:%M %p
session.screen0.workspaceNames:        Workspace 1
session.menuFile:                      /usr/local/share/Blackbox/menu
session.windowCycleModifier:           Mod1
session.colormapFocusModel:            Click
session.colorsPerChannel:              4
session.doubleClickInterval:           250
session.workspaceChangeModifier:       Control
session.autoRaiseDelay:                250
session.styleFile:                     /usr/local/share/Blackbox/styles/default
session.imageDither:                   True
session.moveStyle:                                                      Opaque

session.menuFile

이 변수의 초기값은 DEFAULTMENU (config.h에서 위의 예와 같이 설정될것이다.) 이다. 가능한 값은 <(/path/to/menu/file)>로 메뉴 설정파일의 위치를 지정한다. 메뉴 설정파일에 대해서는 5장에서 자세히 다루도록 한다.

session.styleFile

이 변수의 초기값은 DEFAULTSTYLE (config.h에서 위의 예와 같이 설정될것이다.) 로 가능한 값은 <(/path/to/style/file)>이다. 이 변수는 스타일 설정파일의 위치를 지정하는 것으로 6장에서 자세히 다루도록 하겠다.

session.colormapFocusModel

이 변수의 기본값은 Click으로 가능한 값은 <[Click|FollowsMouse]> 이다. 이 변수는 colormap focus model을 설정하는것으로, 이것은 어떻게 어플리케이션이 colormap 을 갖게 하는가를 정의한다.

session.doubleClickInterval

이 변수의 기본값은 250으로 유용한 값은 <(number)> 이다. 이 변수는 마우스의 더블클릭 간격을 milliseconds 값으로 설정한다. 다르게 설명한다면 더블클릭을 완성하기 위하여 두번째 클릭을 얼마나 오랫동안 기다릴것인가를 나타낸다.

session.colorsPerChannel

기본값은 4로서 가능한 값은 <(<2, 2|>6, 6|number)>이다. 이것은 블랙박스가 X server에서 얼마나 많은 컬러를 가상 디스플레이로 가져오게 하는가를 나타낸다. 채널은 red, green, blue를 나타내며, 이는 블랙박스가 변수값^3의 컬러를 쓸 수 있음을 나타낸다.

session.imageDither

이 변수의 기본값은 True<[True|False]> 둘 중 하나의 값을 갖는다. True값을 사용하면 이미지를 부드럽게 나타낸다.

session.autoRaiseDelay

기본값은 250으로 <(number)>의 값을 갖는다. auto raise는 마우스 커서가 창위에 있을때 주어진 값(milliseconds) 후에 자동으로 창이 화면의 맨 앞으로 나오게 하는 것으로, 이 변수는 auto raise까지 대기하는 시간을 지정하는것이다. 이 변수는 session.screen0.focusModel과 결합되어 사용되어진다.

session.moveStyle

기본값은 False<[Opaque|Not There]>의 값을 가질 수 있다. 이 변수는 창을 이동시킬때 어떤 모양으로 이동되게 하는가를 정의하며 특정값이 없을 때 (기본값으로 둘 경우) 에는 창의 외곽선만 움직이며 Opaque로 설정하면 움직일때 창의 모든 내용을 보여주며 움직인다.

session.workspaceChangeModifier

기본값은 Control이고 <[Shift|Lock|Control|Alt|Mod2|Mod3|Mod4|Mod5]> 값을 가질 수 있다. 이 변수는 작업공간을 움직일때 사용할 키값을 정하는 것으로, 좌/우 화살표키와 결합되어 작업공간을 이동하게 된다.

session.windowCycleModifier

기본값은 Mod1이고 사용가능한 값은 <[Shift|Lock|Control|Alt|Mod2|Mod3|Mod4|Mod5]> 이다. 이 변수값은 윈도우창을 순환하는 키를 정의하는 것으로, 좌/우 화살표키와 결합되어 화면에 떠있는 창에 차례로 초점을 준다.

session.screen0.workspaceNames

기본값은 Workspace 1, Workspace 2, ...이고, 가능한 값은 <(comma-separated list of workspace names)>이다. 이 변수는 툴바에 보여지는 작업공간의 이름을 정의한다.

session.screen0.strftimeFormat

이 변수의 기본값은 %I:%M %p이며 가능한 값은 <(format strings from the date function -- man date)>이다. 이 변수는 툴바에 나타나는 시간의 포맷을 정한다.

session.screen0.focusModel

이 변수의 기본값은 SloppyFocus 이고, 가능한 값은 <[SloppyFocus|ClickToFocus|AutoRaiseSloppyFocus]>이다. SloppyFocus는 마우스 커서의움직임에 따라 창이 초점을 얻게되지만 창이 화면 앞으로 나오지는 않는다. ClickToFocus는 마우스로 클릭할 시에 초점을 얻으며 창이 화면 앞으로 나오지 않는다. AutoRaiseSloppyFocus는 마우스 커서가 놓이면 초점을 가지며 session.autoRaiseDelay에서 정의된 시간(milliseconds) 후에 창이 화면의 맨 앞으로 나오게 된다.

session.screen0.toolbarWidthPercent

기본값은 66이고, <(percent)>의 값을 갖는다. 이 변수는 툴바의 길이를 화면길이의 몇 퍼센트 길이로 갖게 하는가를 정한다. 일반적으로 0값을 주었다고 툴바가 사라지지는 않는다. (역자 : 0값을 주면 기본값인 66으로 자동으로 변합니다.)

session.screen0.toolbarOnTop

기본값은 False<[True|False]> 두가지값중 하나를 갖는다. 이것은 툴바가 다른창에 가려지지 않게 화면의 맨 앞으로 나오게 할 것인가, 아니면 다른 창에 가려질 수 있게 할것인가를 정한다.

session.screen0.workspaces

기본값은 4<(number)>의 값을 가질 수 있다. 이 값은 블랙박스가 몇개의 작업공간을 가지게 할 것이가를 정의한다. 이 숫자는 session.screen0.workspaceNames에서 정의한 작업공간의 이름 수와 일치하여야 한다.

session.screen0.windowPlacement

이 변수의 기본값은 SmartPlacement이며, 선택할 수 있는 값은 <[SmartPlacement|CascadePlacement]>이다. 이 변수는 새로운 창이 나타날때, 그 창의 화면상의 위치를 잡아주는데 사용된다. SmartPlacement는 "다음의 가능한 공간"에 위치시키거나 다음의 가능한 상위-왼쪽 모서리에 창을 위치시킨다. CascadePlacement는 전 창의 titlebar밑에 titlebar를 위치시키며 또한 조금 오른쪽으로 위치시킨다.

session.screeen0.slitPlacement

기본값은 CenterRight이고 <[TopLeft|TopRight|CenterLeft|CenterRight|BottomLeft|BottomRight]>에서 선택한다. 이것은 slit의 위치를 정한다. (역자: 추가적인 설정에서 윈도우메이커 지원 참조)

session.screen0.dateFormat

기본값은 European이며 <[American|European]>에서 선택한다. 만일 시스템이 strftime() 함수를 가지고 있지 않다면, 이 변수는 툴바의 시간형식을 사용한다. American은 MM/DD/YY, European은 DD/MM/YY 로 나타낸다.

session.screen0.clockFormat

기본값은 24이고 <[12|24]>에서 선택한다. 이 변수는 당신이 strftime() 함수를 가지고 있지 않다면 툴바의 시간을 보여주는 포맷으로 설정된다.

5. 메뉴 설정

5.1 자기만의 메뉴 파일 만들기

개인적인 메뉴 파일은 블랙박스의 root 메뉴로 간단한 텍스트 화일이다. 자기자신의 개인적인 메뉴를 만드는것은 기본 메뉴 파일을 자기 계정 디렉토리로 복사하여 편집하면 된다. 다음의 예를 보기 바란다.

mkdir ~/.blackbox
cp /usr/local/share/Blackbox/menu ~/.blackbox/Menu

어디든 자기가 마음에 드는곳에 위치시키면 된다.

다음으로 이 메뉴 파일을 사용하기 위하여 ~/.blackboxrcsession.menuFile 을 자신의 메뉴파일이 있는 절대경로로 편집한다.

5.2 자기만의 메뉴 파일 편집하기

메뉴를 만드는 문법은 매우 간단하며 또한 매우 효과적이다. 여기에는 한가지의 메뉴당 세개의 필드가 사용되며, 다음과 같다.

[tag] (label or filename) {command or filename}

지원되는 태그는 다음과 같다.

[begin] (label for root menu)

이것은 블랙박스에게 메뉴 파일의 시작을 알려주는 것으로 이 태그는 블랙박스가 메뉴 파일을 파싱하기위해 필요하다. 만일 이 태그가 없으면 이 메뉴파일 대신 시스템 기본 메뉴가 사용된다.

[end]

이것은 메뉴의 끝임을 블랙박스에 알려주며, 이 끝은 root 메뉴 또는 서브메뉴의 끝을 나타낼때 사용된다. [begin] 태그에 적용되어야 하므로 적어도 하나의 [end]가 반드시 있어야 한다.

[exec] (label for command) {shell command}

메뉴에 실행프로그램을 등록시킨다. 메뉴에서 이 메뉴 아이템을 선택하면, 블랙박스는 shell command를 실행시킨다.

[exit] (label for exit)

블랙박스를 종료시킬때 사용한다. 블랙박스가 종료되기전에 모든 열려진 윈도우창은 root 윈도우로 복귀한다.

[include] (filename)

현재의 메뉴에 'filename'을 첨가시킨다. filename은 절대경로로 표시되거나 (예: /usr/local/share/Blackbox/brueghel/stylesmenu) 사용자 계정 홈디렉토리를 나타내는 ~/로 시작할 수 있다. (예: [include] (~/blackbox/stylesmenu는 메뉴에 /home/user/blackbox/stylesmenu의 형태로 포함되어진다.)

[nop] (label - optional)

아무런 동작도 하지않는 아이템을 메뉴에 추가시킨다. 이것은 메뉴에 일정한 틀을 줄때 사용할 수 있을것이다. [nop] 에는 라벨을 넣을 수 있지만, 반드시 그래야 하는것은 아니며 만일 라벨을 적지 않으면 공백으로 나타나게 된다.

[style] (label) {filename}

현재 실행되고 있는 세션에 filename를 읽어들여, 새로운 텍스쳐, 컬러, 폰트를 정의하게 한다. 여기서 filename은 [include] 태그와 비슷하게 쓰인다. 절대경로를 사용하던지, ~/path/from/home/dir 형식을 사용한다.

[submenu] (label) {title for menu - optional}

현재 메뉴에서 서브메뉴를 생성시킨다. 이 메뉴는 재귀적으로 파싱되므로, 중첩된 서브메뉴, 무한정의 서브메뉴를 사용할 수 있다. 새로운 서브메뉴의 이름은 선택적이며 선택을 하지 않았을때는 새로운 서브메뉴의 이름은 아이템 라벨과 비슷하게 나타난다.

[reconfig] (label)

현재의 style 과 메뉴파일, 그리고 변화된 내용을 다시 읽어들이게 한다. 이것은 매번 블랙박스를 재시작하기가 어려울때, 새로운 style 이나 테마를 적용시킬때 유용하게 쓰일것이다.

[restart] (label) {shell command - optional}

블랙박스를 재시작한다. 만일 shell command을 정의하면 블랙박스를 종료한 후 이 명령을 실행한다. (이 명령을 이용하여 다른 윈도우매니져로의 재시작이 가능할것이다.) 이 부분이 생략되었다면 블랙박스가 재시동 될것이다.

[workspaces] (label)

메뉴에 작업공간 메뉴에 대한 링크를 삽입하게 한다. 이것은 작업공간 메뉴를 불러올 수 없는 사용자 (3 button mouse를 가지고 있지 않다면 작업공간 메뉴를 부르기가 힘들것이다.) 에게 유용하게 쓰일것이다. 이것은 시스템의 작업공간 메뉴에 대한 링크이므로 여러개의 [workspaces] 태그는 똑같은 작업공간 메뉴를 보여줄 뿐이다.

주석은 # 로 시작하며, 메뉴파일의 어느곳에나 위치시킬 수 있다.

또한, labels/commands/filenames 필드에는 다음과 같이 escape character를 사용할 수 있다. :

[exec] (\(my cool\) \{XTERM\}) {\(xterm -T \\\"cool XTERM\\\"\)}

\\ 를 사용하면 백슬래쉬 문자를 label/command/filename 필드에 쓸 수 있다.

자 이제 우리가 위의 난해한 주문을 이해하였는지 보기위하여 새로운 메뉴를 만들어보자. 자신의 메뉴를 만들고 제목을 쓸려면 [begin][end] 태그가 필요하다고 한다. 처음은 이렇게 시작하자 :

...
[begin] (Example \[Menu\])

[end]
...

완벽하다!!! 이제 몇개의 아이템을 추가하도록 하자. 우리의 메뉴에는 xterm과 같은 터미널 에뮬레이터가 필요하지 않은가? 그럼 메뉴에 추가해보도록 하자 :

...
[begin] (Example \[Menu\])
[exec] (xterm) {xterm -ls}
[end]
...

훌륭하다!!! 이제는 irc 클라이언트와 네스케이프, xv등 자주 사용하는 프로그램을 등록해보자.

...
[begin] (Example \[Menu\])
[exec] (xterm) {xterm -ls}
[exec] (efnet irc) {xterm -e irc fnord irc.efnet.net}
[exec] (Netscape Navigator) {netscape}
[exec] (xv 3.10a) {xv}
[exec] (XEmacs) {xemacs}
[exec] (The GIMP) {gimp}
[exec] (Video Tune) {xvidtune}
[end]
...

잠깐만... 이 메뉴파일은 보기에 조금 혼란스럽다. 보기 좋게 만드는것은 쉬운일이다. 프로그래머들 처럼 들여쓰기와 띄어쓰기를 사용하자.

...
[begin] (Example \[Menu\])
        [exec] (xterm) {xterm -ls}
        [exec] (efnet irc) {xterm -e irc fnord irc.efnet.net}
        [exec] (Netscape Navigator) {netscape}
        [exec] (XEmacs) {xemacs}
        [exec] (xv 3.10a) {xv}
        [exec] (The GIMP) {gimp}
        [exec] (Video Tune) {xvidtune}
[end]
...

와!!! 보기가 훨씬 좋아지지 않았는가!. 이제는 파일에 공간을 좀 넣고 그것이 메뉴에도 적용되도록 해보자. [nop] 태그의 이점을 본다.

...
[begin] (Example \[Menu\])
        [exec] (xterm) {xterm -ls}
        [exec] (efnet irc) {xterm -e irc fnord irc.efnet.net}

        [nop]

        [exec] (Netscape Navigator) {netscape}
        [exec] (XEmacs) {xemacs}
        
        [nop]

        [exec] (xv 3.10a) {xv}
        [exec] (The GIMP) {gimp}
        [nop]
        
        [exec] (Video Tune) {xvidtune}
[end]
...

자 이제는 BB.Themes.Org에서 내려받은 테마들을 서브메뉴로 만들어본다. themes.org 사이트에 나온대로 ~/.blackbox 디렉토리 밑에 내려받은 테마들을 압축을 풀어 설치했다고 가정한다.

...
[begin] (Example \[Menu\])
        [exec] (xterm) {xterm -ls}
        [exec] (efnet irc) {xterm -e irc fnord irc.efnet.net}
        
        [nop]
        
        [exec] (Netscape Navigator) {netscape}
        [exec] (XEmacs) {xemacs}

        [nop]

        [exec] (xv 3.10a) {xv}
        [exec] (The GIMP) {gimp}

        [nop]

        [exec] (Video Tune) {xvidtune}

        [submenu] (Themes) {Themes from blackbox.themes.org}
                [style] (Redsky) {~/.blackbox/Styles/Redsky}
                [style] (Blackbox) {~/.blackbox/Styles/blackbox}
                [style] (Blackbox II) {~/.blackbox/Styles/blackbox2}
                [style] (Hardware) {~/.blackbox/Styles/hardware}
                [style] (Nova) {~/.blackbox/Styles/nova}
                [style] (Orbital) {~/.blackbox/Styles/orbital}
                [style] (Orbital II) {~/.blackbox/Styles/orbital2}
                [style] (Seething) {~/.blackbox/Styles/seething}
                [style] (Zero) {~/.blackbox/Styles/zero}
                [style] (Cold Fusion) {~/.blackbox/Styles/coldfusion}
        [end]
[end]
...

이제 메뉴 문법에 대해 감이 오지 않는가? 자 그럼 우리의 메뉴를 마무리 해보자. 우리가 다운받은 styles 과 더불어, 블랙박스에 딸려오는 기본 styles 을 서브메뉴로 추가하여보자. 블랙박스 디렉토리의 스타일 파일을 [include] 를 사용하여 추가시킨다. 모든것을 적용한 후의 모습이다 :

...
# Blackbox 개인 메뉴

[begin] (Example \[Menu\])
        [exec] (xterm) {xterm -ls}
        [exec] (efnet irc) {xterm -e irc fnord irc.efnet.net}

        [nop]

        [exec] (Netscape Navigator) {netscape}
        [exec] (XEmacs) {xemacs}

        [nop]

        [exec] (xv 3.10a) {xv}
        [exec] (The GIMP) {gimp}

        [nop]

        [exec] (Video Tune) {xvidtune}

        [nop] (...)

        [submenu] (Themes) {Themes from blackbox.themes.org}
                [style] (Blackbox) {~/.blackbox/Styles/blackbox}
                [style] (Blackbox II) {~/.blackbox/Styles/blackbox2}
                [style] (Hardware) {~/.blackbox/Styles/hardware}
                [style] (Nova) {~/.blackbox/Styles/nova}
                [style] (Orbital) {~/.blackbox/Styles/orbital}
                [style] (Orbital II) {~/.blackbox/Styles/orbital2}
                [style] (Seething) {~/.blackbox/Styles/seething}
                [style] (Zero) {~/.blackbox/Styles/zero}
                [style] (Cold Fusion) {~/.blackbox/Styles/coldfusion}

# 기본 style 메뉴를 포함시킨다. 블랙박스가 /usr/local에 
# 설치되었다고 가정한다.

                [nop]

                [include] (/usr/local/share/Blackbox/styles/stylesmenu)
        [end]

        [workspaces] (Workspace list)

        [submenu] (Restart) {Restart which?}
                [restart] (Blackbox)

# 다른 윈도우매니저를 선택할 수 있도록 하자.

                [restart] (Window Maker) {wmaker}
                [restart] (Enlightenment) {enlightenment}
                [restart] (KWM) {kwm}
                [restart] (TWM) {twm}
        [end]

        [nop] (...)

        [reconfig] (Reconfigure)
        [exit] (Quit!)
[end]
...

메뉴파일 설정이 끝났다! 이제는 블랙박스가 이 메뉴화일을 인식할 수 있도록 하여야 한다. ~/.blackboxrc 을 편집한다.

주의 : ~/.blackboxrc는 블랙박스의 재시작, 재설정, 스타일 바꾸기 또는 종료시 자동적으로 업데이트 된다. 작업공간의 수, 이름, 기타 동적인 데이타의 변경은 적용되지 않을 수 있다. 우리가 바꾸고 유지할 수 있는 유일한 것은, 우리가 바꾼 메뉴파일 이름이다. ~/.blackboxrc의 포맷은 (~/.Xdefaults와 비슷한) X resource database format 이다. 파일이 자동적으로 업데이트 된후에, 화일은 목록으로 가득차거나 또는 없어져버릴수도 있다. (특히 그것이 블랙박스를 처음 실행하는 것이라면) 그러나 ~/.blackboxrc를 만드는것 때문에 걱정하지는 말라. 단지 블랙박스를 실행함으로서 파일을 볼 수 있을것이다.

우리가 해야 할 일은 메뉴 파일이름을 바꾸는 것이다. 다음과 같은 줄을 바꾸거나 추가하도록 한다.

session.menuFile:       /path/to/some/file

만일 이러한 설정이 기존에 존재한다면 고치면 되고, 없다면 새로 추가하면 된다. 어디에 메뉴파일이 존재하느냐에 따라, 우리의 새로운 설정은 다음과 같이 보일것이다. :

session.menuFile:       /home/user/blackbox/rootmenu

이제 ~/.blackboxrc를 저장하고 블랙박스를 재시작한다. (단지 컬러/폰트/기타 부수적인 설정만을 다시 읽어들이는 재설정은 적합하지 않다. 모든 설정파일을 다시 읽어들이도록 블랙박스가 재시작되어야 한다.)

모든것을 정확히 했다면 우리의 새로운 메뉴를 읽을 준비가 되어있을 것이다. 만일 문제가 있다면, 위의 예제를 다시 한번 보고 빠진 부분이나 필요한 태그를 점검해보라.

자 이제 블랙박스가 우리가 만든 메뉴를 적용하는데에는 조금 더 기다려야 한다. 블랙박스 0.50.5 에서 자동 메뉴 업데이트(automagic menu updates)가 도입되었다. 만일 session.menuFile를 수정하지 않았다면, 메뉴파일을 바꾸었더라도 블랙박스를 재시작하거나 재설정할 필요가 없다. 블랙박스는 메뉴를 보여줄때 모든 파일의 타임스탬프를 주시한다. 만일 그들 중 어느 하나가 변경되면, 다시 읽혀지고 메뉴는 업데이트 된다. 이 검사는 root 메뉴를 열때마다 실행된다.

다시 말하자면, 이것은 '검사'를 한다는것이지, 매번 메뉴파일을 다시 읽어온다는것은 아니다. 단지 파일에 변화가 생겼을때만 다시 읽어오게 된다.

6. 스타일 (Styles)

스타일(style)이 뭔가? 짧게 설명하면,스타일은 테마의 블랙박스적 표현이다. 스타일은 컬러, gradients, 폰트, 창의 모양, 그리고 데스크탑의 외형을 꾸며준다.

6.1 BB.Themes.Org에서 받은 스타일 설치하기

BB.Themes.Org에서 얻을 수 있는 타르볼 형태의 스타일의 설치는 매우 쉽다. 먼저 적절한 스타일 디렉토리를 만든다. ~/.blackbox/로 만들면 될것이다. 이 밑으로 StylesBackgrounds 디렉토리를 만든다. 다음과 같이 하면 될것이다.

cd ~
mkdir .blackbox
mkdir .blackbox/Styles
mkdir .blackbox/Backgrounds

스타일을 다운받았고 그것을 사용하고 싶다면, 다음과 같이 한다.

cd ~/.blackbox
tar zxvf /path/to/style/tarball

위의 작업이 끝났으면 메뉴파일에 [style]을 추가시켜준다.

6.2 나만의 스타일 만들기

블랙박스를 사용하게 되었다면, 이제 화면에 나오는 컬러나 폰트등을 바꾸고 싶어질 것이다. 블랙박스는 이러한 설정정보들을 "스타일(style)"에서 읽어들인다. 블랙박스의 X resources를 구성하는 스타일은 하나의 파일에 놓인다. 메뉴 파일과 비슷하게, 스타일 화일은 화일시스템의 어느곳에나 놓일 수 있다. 당신이 읽을 수 있는 파일이기만 하면, 블랙박스가 사용할 수 있을것이다.

처음으로 할 일은, 우리의 스타일 파일이 놓일 곳을 정하고, 그 이름을 결정한는 것이리라. 자, 우리의 스타일 화일의 이름을 results 라고 정하자. 이 파일은 ~/.blackbox/Styles 안에 놓기로 한다. 이제 메뉴 파일을 편집할때와 같이 자기가 좋아하는 문서 편집기로 새로운 스타일을 만들어 보자.

X resources 는 키와 그 값으로 이루어진다. 키는 점 (.) 으로 구분되는 몇개의 작은 키로 구성된다. 키는 와일드카드로 일컬어지는 에스테리크 (*) 문자를 포함할 수 있으며, 이는 그 문자가 쓰인 부분이 여러개의 키와 매치될 수 있음을 나타낸다. 이것은 하나 또는 두개의 색만을 쓰는 스타일을 만들때 유용하게 쓰인다. 이러한 예는 이 절의 끝에서 보이겠다.

블랙박스는 세계의 주요 구성요소 - 툴바, 메뉴, 창 장식 - 을 사용자가 구성할 수 있게 한다. 처음에는 툴바를 꾸미는 스타일을 만들어보자.

먼저 툴바와 그것을 구성하는 부속물들에 쓰이는 "텍스쳐(texture)"라는 것을 정의해야 한다. 텍스쳐는 블랙박스가 우리가 원하는 색으로 모양과 형태를 가지도록 해준다.

택스쳐는 다음과 같은 원소로 구성된다.

Raised / Sunken / Flat

이것은 구성요소에 양각(raised), 음각(sunken) 또는 평면(flat)의 모양을 띄게한다.

Solid / Gradient

이것은 단색으로 채워질(solid) 것인지 점점 변화하는 색(gradient)을 쓸것인가를 정의 해준다. gradient는 한가지 색에서 다른 색으로 색이 변해가는 것을 말한다..

Horizontal / Vertical / Diagonal / Crossdiagonal / Rectangle / Pyramid / Pipecross

이것은 부가적인 설정으로 gradient를 적용했을때 색변화가 어떠한 형태로 이루어지게 할것인가를 설정한다. (gradient를 사용할때만 사용된다.)

Interlaced

이것은 gradient 시 interlace 효과를 준다. (gradient 에서만 쓰인다.)

Bevel1 / Bevel2

블랙박스가 어떤 bevel 형태를 사용할것인지 결정한다. Bevel1은 기본 bevel로서 이미지의 가장자리에 그늘을 준다. Bevel2는 이미지의 가장자리중에서 한 픽셀을 더한 부분까지 그늘을 준다. (역자 : 이미지가 각지게 튀어나와 보이게 됩니다.)

자 이제 툴바의 텍스쳐에 대해 알아보자. 툴바는 메인프레임과 버튼, 두개의 라벨, 그리고 시계를 가지고 있다. 버튼은 두개의 상태를 가지므로, 보통의 모습과 눌려졌을때, 두 가지에 대해 텍스쳐를 설정을 해주어야 한다.

...
toolbar:                        Raised Diagonal Gradient Bevel1
toolbar.button:                 Raised Diagonal Gradient Bevel1
toolbar.button.pressed:         Sunken Diagonal Interlaced Gradient Bevel1
toolbar.clock:                  Flat Interlaced Gradient
toolbar.label:                  Flat Interlaced Gradient
...

주의 : 이전 버전에서 사용되던 Texture 스트링은 이제 사용되지 않는다. 하지만 bbtools와 같은 예전의 메쏘드를 사용하는 어프리케이션때문에 쓸수는 있다.

다음으로 텍스쳐의 색을 정의한다. 색은 RGB 데이타베이스에 정의된 가능한 X 컬러나, man 1 X와 같이 명세된 색을 사용할 수 있다.

자 색을 설정한 후의 모습이다.

...
toolbar:                        Raised Diagonal Gradient Bevel1
toolbar.button:                 Raised Diagonal Gradient Bevel1
toolbar.button.pressed:         Sunken Diagonal Interlaced Gradient Bevel1
toolbar.clock:                  Flat Interlaced Gradient
toolbar.label:                  Flat Interlaced Gradient

toolbar.color:                  rgb:8/8/7
toolbar.colorTo:                grey20
toolbar.button.color:           grey
toolbar.button.colorTo:         grey20
toolbar.button.pressed.color:   rgb:4/4/38
toolbar.button.pressed.colorTo: rgb:f/f/d
toolbar.clock.color:            grey20
toolbar.clock.colorTo:          rgb:8/8/7
toolbar.label.color:            grey20
toolbar.label.colorTo:          rgb:8/8/7
toolbar.textColor:              grey85
...

이제 와일드카드에 대해 설명할때가 된것 같다. 위의 예에서보면, 색상값을 주기위한 여러 줄을 볼 수 있을것이다. 각 줄에선 color 또는 colorTo 에 대한 설정을 하고있다. 두개의 자원에서 매치되는 부분이 있으면 (예를 들면 toolbar.clock.colortoolbar.label.color 은 같은 색을 사용하고 있다.) 다음과 같은 방법으로 설정을 줄일 수 있다.

toolbar.*.color

* 문자는 와일드카드라 불리며, 그 자리에 올 수 있는 어떠한 키와도 대응될 수 있다.

잘 보면 텍스쳐는 colorcolorTo 키를 가짐을 알수있다. 이 키는 gradient에서 사용된다. solids에서는 단지 color 만이 사용된다. 위의 예에서 와일드카드의 사용으로 toolbar.button.color 의 설정이 무시되지 않을까 생각할지도 모르겠다. 하지만 그런 일을 일어나지 않는데, 이유는 특정한 리소스의 설정 (toolbar.button.color) 을 먼저 읽어들이고, 그다음으로 일반적인 설정(toolbar.*.color)이 읽혀지기 때문이다. 위의 예에서는 툴바의 텍스트에도 색을 설정한것을 볼 수 있을것이다. 모든 택스쳐가 택스트 색상을 가지고 있는것이 아니라 기본 택스쳐만 택스트 색상을 갖는다.

이제 메뉴의 설정으로 옮겨보자. 블랙박스는 C++로 쓰였으므로, 모든 메뉴는 일반적인 기본 클래스에서 파생된 클래스를 사용한다. 블랙박스는 기본 클래스의 스타일 설정을 읽어들여, 블랙박스에서 쓰이는 모든 메뉴에 적용시킨다.

메뉴는 제목과 프레임, 두 부분으로 나뉜다. 이 이외에 다른것은 없으므로, 이 두가지에 대한 설정만 하면 된다. 메뉴프레임과 메뉴제목은 둘 다 텍스트 색상설정을 가지고 있으며, 메뉴 프레임은 highlight색과 highlight 되었을때의 글자색 설정을 갖는다. 이제 메뉴에 택스쳐와 색상을 설정한 후의 스타일 파일을 보자.

...
toolbar:                        Raised Diagonal Gradient Bevel1
toolbar.button:                 Raised Diagonal Gradient Bevel1
toolbar.button.pressed:         Sunken Diagonal Interlaced Gradient Bevel1
toolbar.clock:                  Flat Interlaced Gradient
toolbar.label:                  Flat Interlaced Gradient

toolbar.color:                  rgb:8/8/7
toolbar.colorTo:                grey20
toolbar.button.color:           grey
toolbar.button.colorTo:         grey20
toolbar.button.pressed.color:   rgb:4/4/38
toolbar.button.pressed.colorTo: rgb:f/f/d
toolbar.clock.color:            grey20
toolbar.clock.colorTo:          rgb:8/8/7
toolbar.label.color:            grey20
toolbar.label.colorTo:          rgb:8/8/7
toolbar.textColor:              grey85

menu.title:                     Raised Diagonal Interlaced Gradient Bevel1
menu.frame:                     Raised Diagonal Gradient Bevel1

menu.title.color:               grey20
menu.title.colorTo:             rgb:8/8/7
menu.title.textColor:           grey85
menu.frame.color:               rgb:8/8/7
menu.frame.colorTo:             grey10
menu.frame.textColor:           white
menu.frame.highlightColor:      grey85
menu.frame.hiTextColor:         grey20
...

이제는 창의 모습을 설정해보자. 창은 버튼과 비슷하게 두개의 상태를 갖는다. 초점을 있을때와 없을때의 두가지 상태인데, 두가지에 대해 텍스쳐를 설정해주어야 한다. 타이틀바의 버튼들은 초점에 종속적이므로 설정하기가 쉬울 것이다. 버튼은 "눌려진" 상태를 가지므로, 이에 대한 설정만 해주면 된다. ('초점을 가졌을때의 눌려짐' 과 '초점이 없을때의 눌려짐' 으로 나뉘지 않는다.) 윈도우 프레임(window frame) 은 창을 둘러싸고 있는 얇은 테두리이다.

윈도우에 대한 설정까지 추가한 스타일 파일이다.

...
toolbar:                        Raised Diagonal Gradient Bevel1
toolbar.button:                 Raised Diagonal Gradient Bevel1
toolbar.button.pressed:         Sunken Diagonal Interlaced Gradient Bevel1
toolbar.clock:                  Flat Interlaced Gradient
toolbar.label:                  Flat Interlaced Gradient

toolbar.color:                  rgb:8/8/7
toolbar.colorTo:                grey20
toolbar.button.color:           grey
toolbar.button.colorTo:         grey20
toolbar.button.pressed.color:   rgb:4/4/38
toolbar.button.pressed.colorTo: rgb:f/f/d
toolbar.clock.color:            grey20
toolbar.clock.colorTo:          rgb:8/8/7
toolbar.label.color:            grey20
toolbar.label.colorTo:          rgb:8/8/7
toolbar.textColor:              grey85

menu.title:                     Raised Diagonal Interlaced Gradient Bevel1
menu.frame:                     Raised Diagonal Gradient Bevel1

menu.title.color:               grey20
menu.title.colorTo:             rgb:8/8/7
menu.title.textColor:           grey85
menu.frame.color:               rgb:8/8/7
menu.frame.colorTo:             grey10
menu.frame.textColor:           white
menu.frame.highlightColor:      grey85
menu.frame.hiTextColor:         grey20

window.focus:                   Raised Diagonal Interlaced Gradient Bevel1
window.focus.button:            Raised Diagonal Gradient Bevel1
window.unfocus:                 Raised Diagonal Gradient Bevel1
window.unfocus.button:          Sunken Diagonal Gradient Bevel1
window.button.pressed:          Flat Diagonal Interlaced Gradient
window.frame:                   Raised Solid Bevel1

window.focus.color:             grey
window.focus.colorTo:           grey20
window.focus.textColor:         grey85
window.focus.button.color:      grey
window.focus.button.colorTo:    grey20
window.unfocus.color:           rgb:8/8/7
window.unfocus.colorTo:         grey20
window.unfocus.textColor:       grey
window.unfocus.button.color:    grey20
window.unfocus.button.colorTo:  grey
window.button.pressed.color:    rgb:4/4/38
window.button.pressed.colorTo:  rgb:f/f/d
window.frame.color:             grey85
...

이제 몇가지의 옵션만 더 보고 설정을 마치도록 하자.

여기에는 제목과 메뉴에서의 폰트, 정렬(justification), 경계색, bevel 과 handle 의 두께, 윈도우를 움직일때의 형태, 그리고 root command 가 있다. 폰트는 X11에서 사용되는 폰트나 유용한 font alias 된 폰트를 사용할 수 있다. xfontsel 등의 유틸리티로 폰트를 확인할 수 있을것이다. 또한 xlsfonts 를 사용하여 X server 에서 사용가능한 폰트들을 확인할 수 있을것이다.

정렬은 LeftJustify, CenterJustify, RightJustify 의 세가지 옵션을 갖는다. (역자 : 메뉴와 타이틀에서의 글자가 나타나는 장소를 정할때 사용합니다.)

경계색은 매뉴 프레임과 제목줄, 윈도우의 제목줄, 버튼, 핸들 등에 1 픽셀 크기의 경계색을 줄 수 있다. 이 색의 설정은 스타일에 과감한 영향을 미치므로, 단지 검은색으로 설정을 하는것은 바람직하지 못하다.

bevel 과 handle 의 두께는 블랙박스의 장식 사이즈와 공간을 조정한다. 큰 수를 사용하면, 블랙박스의 창크기는 더욱 많은 공간을 차지할 것이다. 윈도우를 움직일때의 형태는 마우스로 창을 움직일때 움직이는 창의 모양을 설정하는 것으로, OpaqueWire 중 하나를 선택한다.

블랙박스 버전 0.51 부터 메뉴의 bullet (역자: 서브메뉴가 있음을 나타내는 모양) 과 위치, 선택시의 변화(highlight)에 대한 설정이 추가되었다. menu.bulletStyleRound, Empty, Triangle, Square, Diamond 옵션을 가질 수 있다. Round를 사용하면 메뉴 선택시 가장자리가 둥근 하이라이트가 이루어지고, 아니면 각진 하이라이트가 생길 것이다. menu.bulletPositionleftright 중 고르면 되는데, root 메뉴에서 bullet 을 어느쪽에 나타나게 할것인가에 따라 결정하면 된다.

root command 는 스타일이 불려질때마다 (블랙박스가 시작될때와 재설정/스타일이 바뀔때도 실행된다.) 실행되는 명령이다. 여기서는 xv, Esetroot, wmsetbg 등의 프로그램을 구동시킬 수 있다. 이렇게 하여 바탕화면에 이미지나 색상, 패턴등을 입힐 수 있다. (역자: 바탕화면에 그림을 넣고 싶으면 'rootCommand: xv -root -max -quit 이미지경로/이미지이름' 을 주면 됩니다.)

! 로 시작하는 줄은 주석으로 처리된다.

자! 세부사항의 설정까지 모두 마친 스타일 파일이다.

...
! Results - theme for Blackbox 0.51.x
! by Brad Hughes bhughes@tcac.net (modified by Chuck Nusbaum)

! define the toolbars textures... note that the interlaced option is new
! in 0.50.5
toolbar:                        Raised Diagonal Gradient Bevel1
toolbar.button:                 Raised Diagonal Gradient Bevel1
toolbar.button.pressed:         Sunken Diagonal Interlaced Gradient Bevel1
toolbar.clock:                  Flat Interlaced Gradient
toolbar.label:                  Flat Interlaced Gradient

! toolbar colors
toolbar.color:                  rgb:8/8/7
toolbar.colorTo:                grey20
toolbar.button.color:           grey
toolbar.button.colorTo:         grey20
toolbar.button.pressed.color:   rgb:4/4/38
toolbar.button.pressed.colorTo: rgb:f/f/d
toolbar.clock.color:            grey20
toolbar.clock.colorTo:          rgb:8/8/7
toolbar.label.color:            grey20
toolbar.label.colorTo:          rgb:8/8/7
toolbar.textColor:              grey85

! menu textures
menu.title:                     Raised Diagonal Interlaced Gradient Bevel1
menu.frame:                     Raised Diagonal Gradient Bevel1

! menu colors
menu.title.color:               grey20
menu.title.colorTo:             rgb:8/8/7
menu.title.textColor:           grey85
menu.frame.color:               rgb:8/8/7
menu.frame.colorTo:             grey10
menu.frame.textColor:           white
menu.frame.highlightColor:      grey85
menu.frame.hiTextColor:         grey20

! window textures
window.focus:                   Raised Diagonal Interlaced Gradient Bevel1
window.focus.button:            Raised Diagonal Gradient Bevel1
window.unfocus:                 Raised Diagonal Gradient Bevel1
window.unfocus.button:          Sunken Diagonal Gradient Bevel1
window.button.pressed:          Flat Diagonal Interlaced Gradient
window.frame:                   Raised Solid Bevel1

! window colors
window.focus.color:             grey
window.focus.colorTo:           grey20
window.focus.textColor:         grey85
window.focus.button.color:      grey
window.focus.button.colorTo:    grey20
window.unfocus.color:           rgb:8/8/7
window.unfocus.colorTo:         grey20
window.unfocus.textColor:       grey
window.unfocus.button.color:    grey20
window.unfocus.button.colorTo:  grey
window.button.pressed.color:    rgb:4/4/38
window.button.pressed.colorTo:  rgb:f/f/d
window.frame.color:             grey85

! misc...
borderColor:                    rgb:2/2/1c

moveStyle:                      Opaque

menuJustify:                    CenterJustify
titleJustify:                   CenterJustify

bevelWidth:                     2
handleWidth:                    4

menu.bulletStyle:               Triangle
menu.bulletPosition:            Right

menuFont:                       lucidasans-10
titleFont:                      lucidasans-bold-10

rootCommand:                    bsetroot -mod 4 4 -fg rgb:6/6/5c -bg grey20
...

자 이제 새로운 스타일이 완성되었다! 새로운 스타일이 어떻게 보이는지 확인해 보자. 먼저 메뉴파일을 편집하여 이 새로운 스타일을 블랙박스에게 알려준다.

[style] (Results) {~/.blackbox/Styles/results}

0.50.5 이상의 블랙박스에서는 단지 루트 메뉴를 닫고 다시 불러내는것으로 새로운 스타일이 메뉴에 나타날것이다. 이것을 선택하면 블랙박스는 새로운 스타일로 바뀔것이다.

6.3 BB.Themes.Org 에 나만의 스타일을 등록하자!

자신만의 스타일을 만들었다면, 이제 다른 블랙박스 사용자들과 그것을 공유하기 위해 BB.Themes.Org에 등록을 하여보자. 테마의 인스톨을 쉽게하기 위하여 BB.Themes.Org에서는 일정한 양식을 요구하고 있다. 스타일을 등록시킬때에는 아래의 설명을 참조하여 주기 바란다. 이것은 블랙박스의 스타일들을 정돈하기 위한 이유뿐이지만, BB.Themes.Org에 등록을 하려면 반드시 지켜져야 한다.

BB.Themes.Org에 스타일을 등록하려면 다음의 세가지가 필요하다. 스타일의 스크린샷, lsm 파일, 그리고 스타일 화일과 lsm 화일, 배경이미지를 묶어놓은 타르볼 파일이 그것이다.

스타일을 만드는 방법은 5.1절을 참고하기 바란다.

lsm 파일은 스타일에 대한 설명을 하는 텍스트 화일이다. 스타일의 이름과, 제작자, 스타일에 대한 적당한 설명, 자랑등을 적어주면 된다. 예를 들면 아래와 같다.

Title:      Results
Author:     Brad Hughes <bhughes@tcac.net>
Version:           0.50.x
Credits:    I did this!

스타일과 배경이미지, lsm 파일을 만들었다면 ~/.blackbox/ 안의 적당한 곳에 그것들을 옮겨놓는다. lsm파일은 ~/.blackbox/에, 스타일은 ~/.blackbox/Styles/, 배경이미지는 ~/.blackbox/Backgrounds/에 놓으면 된다. 타르볼을 만들기 위해 다음과 같이 한다. (MyStyle에 자기가 만든 스타일의 이름을 적으면 된다.)

cd ~/.blackbox
tar zcvf MyStyle.tar.gz MyStyle.lsm Styles/MyStyle Backgrounds/MyStyle.jpg

다음으로, gimpimport등 자기가 좋아하는 툴로 스크린샷을 만든다.

이제 BB.Themes.Org의 Style Upload 페이지에 압축파일과 스크린샷을 올리면 모든것이 끝난다.

7. 특징

7.1 Dockapp 지원 - The Slit

블랙박스는 애프터 스텝윈도우메이커에서 쓰이는 dockapps 를 지원한다. dockapps 이 위치하는 곳으로 Slit을 제공하는데, 이것은 블랙박스에 기본적으로 들어있다. 만일 이러한 지원을 원치 않는다면 configure 시 --disable-slit 옵션을 주도록 한다. Slit 은 dockapp 을 사용하지 않을때는 보이지 않으며, dockapp 이 실행되면 굵은 프레임으로 나타날것이다. Slit의 위치는 Slit 에서 마우스 오른쪽 클릭을 해서 TopRight, TopLeft, CenterRight, CenterLeft, BottomRight, 또는 BottomLeft 에서 골라주면 된다. ~/.blackboxrc 파일을 편집해도 같은 결과를 얻을 수 있다. 대부분의 dockapps 은 실행되면서 자동적으로 Slit에 포함되며, bbtools (역자: 블랙박스에서 사용되는 몇가지 프로그램으로 bbmail, bbdate 등이 있습니다.) 시리즈는 -w 옵션을 사용하여 실행시키면 Slit 안으로 담을 수 있다.

7.2 KDE 지원

현재 블랙박스는 KDE를 한정된 범위내에서 지원한다. configure 시 --enable-kde 옵션으로 컴파일을 하여야 한다. KDE 와 블랙박스를 같이 사용하려면, kfm 이나 kpanel을 실행하거나 kfm,kpanel 둘 다 실행한 후 블랙박스를 실행시킨다. 매번 X를 실행할때 이렇게 실행되도록 하고 싶다면, ~/.xinitrc 파일에 다음과 같이 적도록 한다. (만일 xdm을 사용한다면 ~/.xsession 파일에 적어준다.)

kfm &
kpanel &
exec blackbox

7.3 Gnome 지원

현재는 Gnome에 대한 지원이 없다. 앞으로 Gnome에 대한 지원이 있을거라 생각되며, 현재로선 블랙박스의 소스 패치 형태로 third party에서 제공되는 패치가 존재한다. 이 패치에 대해서는 Blackbox Stuff, blackbox.linuxbox.com 또는 Gnome @ Winds of Storm, gnome.windsofstorm.net 을 참고하기 바란다.

7.4 Key 바인딩

현재로서는 작업공간 이동 및 윈도우창간의 초점이동에만 key 바인딩을 설정할 수 있다. 이 설정은 ~/.blackboxrc 파일에서 한다. 기본적인 바인딩은 작업공간 이동에 CTRL-좌/우 화살표키이며, 윈도우창간의 초점이동은 Alt-TabAlt-Shift-Tab을 사용한다. key 바인딩을 적용시키지 않으려면 Num Lock 이나 Caps Lock을 켜두어라.

8. 빈번한 질문들

8.1 Dockapps 과 .xinitrc

dockapps를 띄울때 Slit에 일정한 순서대로 뜨게 하려면 다음과 같이 한다.

sleep 1 && wmppp &
sleep 2 && wmsomething &
sleep 3 &&  wmsomethingelse &
exec blackbox

blackbock 앞에 exec 를 사용함으로서 하나의 프로세스를 절약할 수 있다.

Asked and answered on the Blackbox Mailing List, blackbox@troll.no.

8.2 블랙박스 패치 만들기

패치는 블랙박스의 동작을 수정하기 위해서 함수를 추가하거나 삭제, 또는 변경함으로서 만들어진다. 블랙박스의 개발자 Brad Hughes는 완전한 소스 트리의 복사본을 만들기를 권장한다. 원래의 코드와 수정이 가해진 소스가 다음의 예와 같이 존재하게 된다.

blackbox-0.50.5/
blackbox-0.50.6/

패치를 만들기 위해서 다음과 같이 한다.

diff -urN blackbox-0.50.5 blackbox-0.50.6

디렉토리의 이름이 서로 달라야 한다는걸 명심해야 한다.

8.3 블랙박스에 패치 적용하기

먼저 블랙박스를 컴파일 할 디렉토리로 패치 파일을 옮긴다. 패치를 적용시키기 위해 다음과 같이 한다.

patch -p0 < 패치파일이름

변화된 블랙박스 소스에서 make, make install 하는것을 잊지 말도록 하자.

8.4 bsetroot 사용하기

bsetroot는 블랙박스의 배경화면을 만드는데 사용되는 툴이다. 이것은 이미지를 처리하는것은 아니지만, 당신이 원하는 디자인을 인자값에 따라 설정할 수 있다.

-display <string>     use display connection
-fg <color>           use foreground color
-bg <color>           use background color
-solid <color>        use solid color
-mod <x> <y>          use modula pattern

8.5 2개의 작업공간을 사용할려면 어떻게 합니까?

블랙박스가 실행될때 하나 이상의 작업공간을 사용하고 싶다면, 마우스 가운데 클릭이나 좌/우 마우스버튼 동시 클릭으로 작업공간 메뉴를 불러낸다. 여기서 New Workspace를 선택한 후 마우스 오른쪽 클릭으로 root 메뉴를 불러내어 재설정을 선택한다. 다시 블랙박스를 실행하면 두개의 작업공간을 확인할 수 있을것이다. 이러한 방법으로 여러개의 작업공간을 가질 수 있다.

블랙박스의 메일링 리스트에서 묻고 답하도록 한다., blackbox@troll.no.

8.6 어떻게 하면 제 스타일에 폰트를 설정할 수 있나요?

당신의 툴바와 메뉴, 그리고 window titlebars에서 myfont라는 트루타입폰트를 이탤릭체의 14크기로 사용하고자 한다면, 스타일 파일에 다음과 같이 적어주면 된다.

-*-myfont-*-i-*-*-14-*-*-*-*-*-*-*

xfontsel 같은 훌륭한 유틸리티로 설정값을 알아낼 수 있을것이다.

8.7 어떻게 하면 데스크탑에 아이콘을 생성할 수 있나요?

매우 간단하다. 다음과 같이 한다.

  1. KDE를 다운 받는다.
  2. 버전이 0.53.0 이나 그 이상의 블랙박스를 다운 받는다.
  3. KDE를 인스톨한다. (여기에 대한 자세한 설명은 하지 않는다. www.kde.org 를 참조하기 바란다.)
  4. 블랙박스 소스의 압축을 풀고 --enable-kde 옵션을 주고 configure를 실행한다.
  5. 컴파일한다.
  6. 블랙박스를 실행한다.
  7. 당신이 원하는대로 kfm과 kpanel을 실행한다.

자! 데스크탑에 아이콘들이 나타날 것이다.

9. Websites




sponsored by andamiro
sponsored by cdnetworks
sponsored by HP

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2003-12-07 16:31:10
Processing time 0.0030 sec