savedconfig の使い方を知った

先日 TL の流れで evilvte というターミナルエミュレータを入れてみたのだけど、build-time configuration だというのに USE フラグがぜんぜんなくて、以下のように呟いたら、

お返事を頂きました。

!
savedconfig...!
実は名前はちらほら見ていたのだけど何なのかさっぱりわかってなかった。
せっかくなので使ってみようってことで、まずは調べてみることに。
が、しかし。そもそも調べるまでもなく emerge info に載っていたのだった。なんて親切!(ちゃんと読め)

 * Your configuration for x11-terms/evilvte-0.4.8 has been saved in
 * /etc/portage/savedconfig/x11-terms/evilvte-0.4.8 for your editing pleasure.
 * You can edit these files by hand and remerge this package with
 * USE=savedconfig to customise the configuration.
 * You can rename this file/directory to one of the following for
 * its configuration to apply to multiple versions:
 * ${PORTAGE_CONFIGROOT}/etc/portage/savedconfig/
 * [${CTARGET}|${CHOST}|""]/${CATEGORY}/[${PF}|${P}|${PN}]

ふむふむ。つまり、今回の場合は /etc/portage/savedconfig/x11-terms/evilvte-0.4.8 を直接編集してから USE=savedconfig して再度 emerge すればよい、と。
というわけで適当にいじってみた。

Before(-o は build-time configuration を表示するオプション):

% evilvte -o
Configuration of evilvte 0.4.8:
#define BACKGROUND_IMAGE ".config/evilvte/background.png"
#define COMMAND_EXEC_PROGRAM TRUE
#define COMMAND_SHOW_OPTIONS TRUE
#define COMMAND_SHOW_VERSION TRUE
#define SCROLLBAR RIGHT
#define SHOW_WINDOW_ICON TRUE
#define STATUS_BAR TRUE
#define WORD_CHARS "-A-Za-z0-9_$.+!*(),;:@&=?/~#%"
#define MENU TRUE
#define TAB TRUE
#define HOTKEY TRUE
#define HOTKEY_TAB_ADD CTRL GDK_T
#define HOTKEY_TAB_REMOVE CTRL GDK_W
#define HOTKEY_TAB_PREVIOUS CTRL GDK_Page_Up
#define HOTKEY_TAB_NEXT CTRL GDK_Page_Down

適当にオプション周りを有効化して再度 emrege してみる。

After:

% evilvte -o
Configuration of evilvte 0.4.8:
#define BACKGROUND_IMAGE ".config/evilvte/background.png"
#define COMMAND_AT_ROOT_WINDOW TRUE
#define COMMAND_DOCK_MODE TRUE
#define COMMAND_EXEC_PROGRAM TRUE
#define COMMAND_FULLSCREEN TRUE
#define COMMAND_FONT TRUE
#define COMMAND_GEOMETRY TRUE
#define COMMAND_LOGIN_SHELL TRUE
#define COMMAND_SET_TITLE TRUE
#define COMMAND_SHOW_HELP TRUE
#define COMMAND_SHOW_OPTIONS TRUE
#define COMMAND_SHOW_VERSION TRUE
#define SCROLLBAR RIGHT
#define SHOW_WINDOW_ICON TRUE
#define STATUS_BAR TRUE
#define WORD_CHARS "-A-Za-z0-9_$.+!*(),;:@&=?/~#%"
#define MENU TRUE
#define TAB TRUE
#define HOTKEY TRUE
#define HOTKEY_TAB_ADD CTRL GDK_T
#define HOTKEY_TAB_REMOVE CTRL GDK_W
#define HOTKEY_TAB_PREVIOUS CTRL GDK_Page_Up
#define HOTKEY_TAB_NEXT CTRL GDK_Page_Down

おお、オプションが増えた!
これで例えば -h オプションが使える。

% evilvte -h
evilvte, version 0.4.8

Usage:
        evilvte [options]

Options:
        -d                      start evilvte as a dock
        -e [program] [options]  specify the program to be run in evilvte
        -f                      start evilvte in fullscreen mode
        -fn "[font] [size]"     specify font and font size
        -g +X+Y                 specify geometry
        -h                      show this help
        -ls                     use login shell
        -o                      show build-time configuration
        -r                      make evilvte run in root window
        -T [string]             specify program title
        -title [string]         specify program title
        -v                      show version

GTK+ Options:
        --class [string]        specify WM_CLASS class
        --name [string]         specify WM_CLASS name

Background image:
        $HOME/.config/evilvte/background.png

実はデフォルトだと -h すら使えない。どんだけ軽量なんだ。
複数のバージョンで同じ設定ファイルを使いたい場合はリネームしろと書いてあるけど、ebuild 用語よくわからないのでそこは追い追い調べることにする。