今日の設定

メモしないと絶対忘れる。

screenrc.ppconfig

C-P C-B : バックライト明るさトグル
C-P C-T d : chrootしてdebian上のbash起動

blankerprgで自動サスペンド

Zaurus用ミニスクリプト

http://websvn.nyaxtstep.com/viewvc.cgi/zaurus以下にいろいろ作った。

powersaver.sh

screenrcのblankerprg設定用。AC電源つながってたらスクリーンセーバ起動。つながってないとサスペンドする。

initkmap

/etc/rc.d/rc2.d以下にシンボリックリンクつくって使う。キーマップの自動ロード。

backlightutil.sh

http://www.eleves.ens.fr/home/leurent/zaurus.html

にあったバックライトトグルスクリプトを適当に改造。

ローカル変数隔離してeval

ローカル変数が"cpp"(と"_erbout")だけの新規スコープを作ってそこでevalしたかった。

現在の実装ではメソッド内メソッドを定義してやってそこのbindingでevalしてます。

もっといい書き方があれば教えてください。

続きを読む

ConfigPP: preprocessor for configuration files

DL:

概要

設定ファイル管理用プリプロセッサです。複数の異なる環境で設定ファイルを共有したい場合に使います。

目的

全く同じ設定ファイルを複数の異なる環境で使用することは一般的に困難です。

vim, emacs等は高度な設定ファイルパーサを備えている*1ため条件分岐等を利用し、環境依存の設定を行うことが可能ですが、ほとんどのソフトウェアはそのような機能を持っていません。

ConfigPPを利用することで、簡易パーサのみ搭載しているようなソフトウェアでも簡単に環境依存の設定を管理することが可能になります。

使用方法

まず、configpp用のソースファイルを書きます。基本的にerubyで書けばいいのですが、いくつか注意点があります。

configpp用識別行を入れる

書式:

# configpp: 出力ファイル名, バージョン

コメントprefixの"# "は変更可能です。

他になにかあったかな?

ConfigPPUtilの使用

ConfigPPは、設定ファイルで使用される典型的な処理をまとめたクラスConfigPPUtilを持っています。

ConfigPPUtilのインスタンスはクラス変数@cppに代入されているので、自由にスクリプト中で使うことができます。

ヘッダーの出力
<%= @cpp.header %>
OS判定

使用例

<% if @cpp.os == 'linux' %>
linux環境依存処理
<% end %>
ディストリビューション判定
<% case @cpp.dist %>
<% when 'debian' %>
  Debian Linux依存
<% when 'zaurus' %>
  Sharp Linux依存
<% else %>
  他環境
<% end %>
ユーザ拡張オプション
./configpp.rb --ext オプション名=値

として渡す

./configpp.rb --ext custom=value
<% if @cpp.custom == 'value' %>
asdffdsa
<% end %>

使用例:

screenrc.configpp

# configpp: .screenrc, $Id$
<%= @cpp.header %>

escape ^Pp
vbell off
autodetach on
bind w windowlist -b
defscrollback 300
defhstatus l^En:^Etl
shell -$SHELL
caption always "%{= wk} %-w%{=bu dr}%n %t%{-}%+w %= %{=b wb}%y/%m/%d %{=b wb}%c"
startup_message off
encoding utf8

<% if @cpp.dist == 'zaurus' %>
acladd zaurus
<% end %>

# launcher settings
<% if @cpp.dist == 'zaurus' %>
bind ^b exec sudo /home/zaurus/bin/backlightutil.sh
bind -c app d screen sudo chroot /mnt/card/debroot/ su - zaurus
<% else %>
bind -c app t screen top
bind -c app v screen vim
<% end %>
bind ^t command -c app

# screen blanker
<% if @cpp.dist == 'zaurus' %>
idle 120 blanker
blankerprg powersaver.sh
<% end %>

*1:というより、スクリプト実行環境で設定ファイルをパースしている

bashでスクリーンセーバ書いた

tssコンパイルするのが面倒だったので。Zaurusで使用する予定。

エスケープシーケンス認識するターミナルとbashがあれば動くはず。
http://websvn.nyaxtstep.com/viewvc.cgi/zaurus/miscscripts/screensaver.sh?revision=507&view=markup