2009年2月15日日曜日

PPAにicewmをアップしました

hardyの icewm では、タスクトレイの幅がおかしいというバグがあったので、パッチを当てたものを PPA にアップしました。
 初 deb パッケージ作成。初 PPA アップ。自信がないw
 自分用ですが、よかったらどうぞ。
https://launchpad.net/~yama-natuki/+archive/ppa

2009年2月11日水曜日

Emacsでanthy.elのキーバインド変更

mizunoさんところで ATOKっぽいローマ字バインドが欲しがっているみたいなのでやっってみた。
 以下を ~/.emacs に追記。

;anthy.el ローマ字変換テーブル再定義&キーバインド再定義
(setq anthy-rkmap-keybind
'(
;; \C-p
(("hiragana" . 16) . "katakana")
(("katakana" . 16) . "hiragana")
;; q
(("hiragana" . 113) . "katakana")
(("katakana" . 113) . "hiragana")
;; \C-j
(("alphabet" . 10) . "hiragana")
(("walphabet" . 10) . "hiragana")
;; \C-q
(("hiragana" . 17) . "hankaku_kana")
(("hankaku_kana" . 17) . "hiragana")
)
)


;;Anthyキーバインド設定
(setq anthy-wide-space " ")
(anthy-change-hiragana-map "la" "ぁ")
(anthy-change-hiragana-map "li" "ぃ")
(anthy-change-hiragana-map "lu" "ぅ")
(anthy-change-hiragana-map "le" "ぇ")
(anthy-change-hiragana-map "lo" "ぉ")
(anthy-change-hiragana-map "ltu" "っ")
(anthy-change-hiragana-map "zz" "っ")
(anthy-change-hiragana-map "lya" "ゃ")
(anthy-change-hiragana-map "lyu" "ゅ")
(anthy-change-hiragana-map "lyo" "ょ")
(anthy-change-hiragana-map "lwa" "ゎ")

な感じで。
とはいえSKKを使うようになってからAnthyは使っていないので突っこまれても困るけど。
anthy.el自身を直接いじるのはスマートではないのでこんな感じでどーでせう。

2009年2月10日火曜日

Ubuntuでプロセス監視ツール

 polipo がよく落ちるのでその度にsshしてpolipoを再起動とかいい加減しんどくなってきたので、プロセスを監視し、落ちていたら自動的に再起動させるツールを作ってみました。
 いわゆるデーモン監視ツールですね。ちゃんとした、daemontool とか、monit とか、鯖向けの本格的なツールはあるんですが、個人使用のPCで外向けに本格的なサーバを運用しているわけでもないので、そこまでの本格的な道具が必要なかったり、リソース食いすぎで嫌だったりするわけで自作することにしました。
 自作といっても簡単です。シェルスクリプトで while do で無限ループで走らせ、その中でプロセスが起動しているかいないかチェックし、落ちでいたら再起動させるだけです。
 基本形はこんな感じで。
while true
do
ここに処理を書く。
sleep 30
done
 sleep は30秒としていますが、お好みで。

 今回は、/etc/init.d/polipo の起動スクリプトの中に、この作ったシェルスクリプトを埋め込んで一緒に起動させることにします。polipoが起動したら監視ツールも一緒に起動し、polipoが死んだら自動的に再起動という按配ですね。

#!/bin/sh
# last updated : 2009/02/06 00:20:41 JST
# $Id: polipo_check.sh,v 1.6 2009/02/05 15:21:06 yama Exp $
# プロセス監視ツール。
# polipo が動いているかどうかをチェックし、起動していなかったら、再起動させる。
#

DEMON="polipo"

# 多重起動防止処理。
SCRIPT_PID="/var/run/polipo_check.pid"
if [ -f $SCRIPT_PID ]; then
PID=`cat $SCRIPT_PID `
if (ps -p ${PID} -o pid= >/dev/null); then
exit
fi
fi
echo $$ > $SCRIPT_PID

# 監視無限ループ処理。
while true
do
ps -C ${DEMON} -o comm= > /dev/null || /etc/init.d/${DEMON} restart
sleep 30
done

# PIDファイルの削除。
rm $SCRIPT_PID

/etc/init.d/polipo 内にスクリプトを埋め込みますので、多重に自身を起動しないように防止処理を入れています。
 後はpsコマンドで定期的に監視し、落ちていたら/etc/init.d/polip restart を実行するようにさせています。

 埋め込む位置は、
case "$1" in
start)
echo -n "Starting $DESC: "
$PPCTL start
echo "$NAME."
nice /usr/local/bin/polipo_check.sh &
;;
stop)
echo -n "Stopping $DESC: "
$PPCTL stop
echo "$NAME."
killall polipo_check.sh
;;
#reload)
な感じで。赤字が追加部分です。ファイル名をpolipo_check.shとして、/usr/local/bin/に入れてあります。
 nice コマンドでプロセスの優先度を下げています。
 これでメモリ消費量も少なく、リソースも食わない軽量な監視ツールが出来上がりました。

2009年2月9日月曜日

プロセスを検索するワンライナー

Command-line Fu という便利なワンライナーを投稿するサイトが出来たらしいので、自分も頻繁に使っているワンライナーをひとつ。
ps aux| head -1 && ps aux | grep $1 | sed -e '/grep/d'


こいつを ~/.bashrc に関数として登録しておく。
function psx {
ps aux| head -1 && ps aux | grep $1 | sed -e '/grep/d'
};
な感じで。

使い方は、
~$ psx firefox

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
hoge 7009 9.2 22.3 267484 115100 ? Ssl 12:30 4:21 /usr/lib/firefox-3.0.5/firefox
ようするにPS の一行抜きなんだが、一発でそのプロセスの情報が表示出来るので頻繁に利用しています。便利。

2009年2月8日日曜日

PPAの鍵の取得

PPAの仕様が変って署名機能がついたので、それに合わせて鍵を取得しておいた。
apt-get update
W: GPG error: http://ppa.launchpad.net hardy Release: 公開鍵を利用できないため、以下の署名は検証できませんでした: NO_PUBKEY 7781BA0134BEEE14
W: これらの問題を解決するためには apt-get update を実行する必要があるかもしれま せん
と出たので、PPAの仕様変更に伴ない、PPAのアドレスを変更。そして、
gpg --keyserver keyserver.ubuntu.com --recv-keys 7781BA0134BEEE14
sudo gpg --armor --export 7781BA0134BEEE14 | sudo apt-key add -
として鍵をインポートした。
ちなみに上記の鍵はkirkland さんのリポジトリ。

ちなみにGUIでやりたい場合は、以下の動画をどうぞ。
http://www.youtube.com/watch?gl=US&v=UUZOQsNo_ws&fmt=18

2009年2月7日土曜日

atimeとrelatime

 個人的メモ。
 Ubuntuでは8.04(もっと前?)あたりから、カーネルオプションで、default_relatime が有効になっているらしい。
  • default_relatime が有効になっていると、マウントオプションに relatime が追加される。
  • デフォルトでは最大一日以内のatimeはread()されても更新されない
  • default_relatimeを無効にするにはブートオプションに、default_relatime=0 を追加。
  • つまり、findなどでatimeを基準にした検索には注意が必要。
 
 個人的には/home を別パーティションにし、それ以外をnoatimeで運用していたのですが、今まで気にもしなかったということは、/home もnoatime でもかまわない、つまり relatime オプションが有効になっていても問題なしという結論に。
 cat で読み込んでもatimeは更新されないという気持ち悪さは残るんですが、まあ・・・ね・・・うん・・・

参考

2009年2月6日金曜日

ubuntuにicewmを入れる

 icewm はWindowsXPのクラシックメーニューに似ている外観を持ったウィンドウマネージャーです。 GNOMEやKDEのような総合デスクトップ環境とは違いますが、驚くほど軽量なWMとなっています。ゴテゴテした装飾や、親切設計はいらない、なによりもメモリが少なくてGNOMEが重いという人にぴっったりなウィンドウマネージャーです。
 実はちょっと前までxfceを入れていたんですが、GNOMEと比べて劇的にメモリ使用量が減るわけでもなく、操作感もほとんどGNOMEを一緒なので、「じゃあGNOMEでいいじゃんw」と思ってだんだん使わなくなっていきました。そんな中、前から気になっていた icewm を試してみたらとても軽くてこれは良いと。




インストール

sudo apt-get install icewm icewm-gnome-support icewm-themes
 インストールし終えたら、gnomeからログアウトし、ログイン画面のセッションでicewmを選択すれば立ち上がります。初期状態では壁紙もなく質素で非常に使いずらい状態です。
 icewm の設定は~/.icewm/以下の設定ファイルを編集することで行ないます。サンプルが/usr/share/icewm/以下にあるので、それをコピーして使ってもいいでしょう。

設定


 設定は各種設定ファイルをテキストエディタで編集することで行ないます。設定のサンプルは、/usr.share/icewm/ 以下にありますので、それらを ~/.icewm/ 以下にコピーして編集するといいでしょう。
 各設定ファイルは以下のようになっています。


~/.icewm/menuメニューの内容を設定
~/.icewm/preferencesicewmの設定
~/.icewm/startupスタートアップファイルの設定
~/.icewm/themeテーマを設定
~/.icewm/toolbarタスクバーの設定


設定の反映方法
 menuなどは即座に反映されるようですが、preferenceなどはicewmを再起動しないと反映されないようです。
 メニューからicewmを再起動してください。


フォント
 ~/.icewm/preferences に記述します。以下私の設定例です。

# フォントの設定。
itleFontNameXft="sans-serif:size=12"
MenuFontNameXft="sans-serif:size=12:bold"
StatusFontNameXft="monospace:size=12:bold"
QuickSwitchFontNameXft="monospace:size=12:bold"
NormalButtonFontNameXft="sans-serif:size=12"
ActiveButtonFontNameXft="sans-serif:size=12:bold"
NormalTaskBarFontNameXft="sans-serif:size=11"
ActiveTaskBarFontNameXft="sans-serif:size=11:bold"
ToolButtonFontNameXft="sans-serif:size=12"
NormalWorkspaceFontNameXft="sans-serif:size=12"
ActiveWorkspaceFontNameXft="sans-serif:size=12"
MinimizedWindowFontNameXft="sans-serif:size=12"
ListBoxFontNameXft="sans-serif:size=12"
ToolTipFontNameXft="sans-serif:size=12"
ClockFontNameXft="monospace:size=10"
ApmFontNameXft="monospace:size=12"
InputFontNameXft="monospace:size=12"
LabelFontNameXft="sans-serif:size=12"

アプリの文字が小さい
 ~/.icewm/preferences でicewm のフォント周りの設定は出来たのですが、アプリの文字サイズがGNOMEと比べて小さいまま変更が出来ませんでした。
 この問題は ~/.Xresource
Xft*dpi:       96
と記述することで解決しました。dpiをきちんと設定しないといけなかったんですね。
 Xを再起動すれば反映されます。あるいは、
xrdb ~/.Xresource
とします。

その他の設定

 設定例です。~/.icewm/preferences に記述します。

# タスクバーを上に表示する。
TaskBarAtTop = 1
# 時刻表記の設定。
TimeFormat="%m/%d(%a)%R"
#LCDっぽい画像で時計を表示しない。
TaskBarClockLeds = 0
#ウィンドウ移動時、ワイヤーフレームにする。
OpaqueMove = 0
#ウィンドウリサイズ時、ワイヤーフレームにする。
OpaqueResize = 0
# ワークスペースの設定。
WorkspaceNames=" 1 ", " 2 ", " 3 ", " 4 "
# Alt+Tab キーが、どのワークスペースにあるウインドウにも切り換えます。
QuickSwitchToAllWorkspaces = 1
# マウスが画面端にきたらワークスペースを移動する。
# EdgeSwitch=1



#キーボードショートカット
# ワークスペース切り替え。
KeySysWorkspace1="Ctrl+1"
KeySysWorkspace2="Ctrl+2"
KeySysWorkspace3="Ctrl+3"
KeySysWorkspace4="Ctrl+4"


# 壁紙の設定。
DesktopBackgroundImage="/home/hoge/Pictures/Wallpapers/hogehoge.jpg"

# icon path
IconPath="/usr/share/icons:/usr/share/pixmaps"


スタートアップの設定

 ~/.icewm/startup に記述します。以下設定例。
#!/bin/sh

/home/hoge/.dropbox-dist/dropboxd &
pidgin &
gnome-terminal &
checkgmail &
xscreensaver -no-splash &
 保存したら ~/.icewm/startup ファイルに
chmod +x ~/.icewm/startup
として実行属性を付けて下さい。
 上記例では、Dropboxの同期を行なうデーモンとgnome端末、Gmailをチェックするcheckgmail、そしてスクリーンセーバーを起動時に実行するようにしています。

メニューの設定

 ~/.icewm/menu を編集します。
 メニューの設定は簡単です。上に書いたものが上になります。書式は、
prog 名称 アイコンファイル名 プログラム名
各要素は空白またはタブで区切ります、
 入れ子にする場合は、
menu "サウンド" folder {
prog "Amarok" /usr/share/pixmaps/amarok.xpm amarok
prog "audacious" /usr/share/pixmaps/audacious.xpm audacious
prog "streamtuner" /usr/share/pixmaps/streamtuner.png streamtuner
}
 などと記述します。以下設定例。

# icewm menu configuration -*- mode: conf-unix -*-
#
#

prog "rox-filer" /usr/share/rox/images/application.png rox
prog "gnome-terminal" gnome-terminal gnome-terminal
# ■△○ 問題を解決。
prog "g-terminal" gnome-terminal env VTE_CJK_WIDTH=1 gnome-terminal
prog "JD" jd jd
prog "Mozilla Firefox" /usr/lib/firefox-3.0.6/icons/mozicon128.png firefox
prog "Emacs23" /usr/share/icons/emacs-snapshot/emacs16_mac.png emacs-snapshot
separator
menu "アプリ" folder {
menu "OpenOffice" folder {
prog "OpenOffice 2.4 Calc" ooo-calc.png env SAL_EMBEDDED_BITMAP_PRIORITY=0 ooffice -calc
prog "OpenOffice 2.4 Writer" ooo-writer.png env SAL_EMBEDDED_BITMAP_PRIORITY=0 ooffice -writer
prog "OpenOffice 2.4 Draw" ooo-draw.png env SAL_EMBEDDED_BITMAP_PRIORITY=0 ooffice -draw
prog "OpenOffice 2.4 Impress" ooo-impress.png env SAL_EMBEDDED_BITMAP_PRIORITY=0 ooffice -impress
prog "OpenOffice 2.4 Base" ooo-base.png env SAL_EMBEDDED_BITMAP_PRIORITY=0 ooffice -base
# prog "OpenOffice 2.4 Math" /usr/share/icons/hicolor/16x16/apps/ooo-math.png /bin/sh -c "openoffice.org2.4 -math"
}
}
menu "ネット" folder {
}
menu "メディア" folder {
menu "サウンド" folder {
prog "Amarok" amarok amarok
prog "audacious" audacious audacious
prog "streamtuner" streamtuner streamtuner
prog "decibel-audio-player" decibel-audio-player decibel-audio-player
}
menu "動画" folder {
prog "Totem(GStreamer)" totem totem-gstreamer
prog "Totem(xine)" totem totem-xine
prog "mplayer" mplayer gmplayer
prog "VLC" vlc vlc
}
menu "画像" folder {
prog "gpicview" gpicview gpicview
prog "mirage" mirage mirage
prog Gimp gimp gimp
prog "comix" comix comix
}
}
menu "tool" folder {
prog "screenshot" /usr/share/icons/HighContrastLargePrintInverse/48x48/apps/gnome-screenshot.png gnome-screenshot --interactive
}
separator
menu "設定" folder {
prog "アプリの追加と削除" - gnome-app-install
}


ツールバーの設定

 ~/.icewm/toolbar に記述します。
 menu の書式と同じです。以下設定例。

prog "rox-filer" /usr/share/rox/images/application.png rox
prog "gnome-terminal" gnome-terminal env VTE_CJK_WIDTH=1 gnome-terminal
prog "JD" jd jd
prog "Mozilla Firefox" /usr/lib/firefox-3.0.6/icons/mozicon50.xpm firefox
prog "gama" - gamma

テーマ

 メニューのSetting→テーマにいっぱいあるので、そこから選択します。

●私のオススメのテーマはこちらをどうぞ

ファイラ

 統合デスクトップ環境ではありませんので自分で用意します。
 ファイラはroxを使用することにしました。軽いのが特徴です。以前から使用していたので違和感なく移行。

デスクトップ

 icewm にはデスクトップにモノが置けません。ですのでデスクトプを管理するプログラムを別に用意してあげなければいけません。今のところ私は必要ないので導入していませんが、roxのデスクトップ管理機能を利用すればいいでしょう。


まとめ

 基本的に設定したらicewmを再起動させて反映の繰り返しです。設定項目に関しては、サンプルを見るのが一番です。ドキュメント類は古く記載漏れがあります。
 GNOMEと比べてメモリ使用量が激減しているのに気づくでしょう。逆い言えばハードウェアリソースに制約のない最新PCを使用している人にとっては導入するメリットはないでしょう。