2009年2月24日火曜日

ubuntuの端末をmltermにする

 wmを icewm に変えてから日々メモリ節約に走る日々。刻むぜぇ〜ちょお刻むぜぇ〜w
 今回は惰性で使ってきた gnome-terminal を mltermに変えることにしました。
 gnome-terminalは20MB。対してmltermは5Mしかメモリを消費しません。なんと四分の一!!
 さらにスクロール速度も速く軽快に動作します。
 Unicodeの「●▲■」なども正常な幅で表示されます。(gnome-terminalでもできるがいまいち)


インストール

sudo apt-get install mlterm mlterm-tools
後はscimを使っているなら、mlterm-im-scim を。uimなら mlterm-im-uim パッケージを入れることで日本語変換がインライン入力で出来るようになります。

設定


 一応 Ctrl + 右クリックで GUIでも簡易的に編集することが出来ます。



 ですが細かい設定は ~/.mlterm/ 以下の各ファイルを編集することで行ないます。メインは、~/.mlterm/main です。以下設定例。
~/.mlterm/main の設定例。

# -*- mode: conf-unix -*-
# mlterm mail configuration
# last updated : 2009/02/24 14:02:41 JST

# 端末縦横サイズ(文字)
geometry=80x27

#ーーーーー文字関係ーーーーーーー
receive_string_via_ucs = true
# Unicode記号文字幅を半角2文字にする。
col_size_of_width_a = 2
# アンチエイリアス(Xft)時、JISX0208 の Unicode 変換に CP932 の変換テーブルを使う
use_cp932_ucs_for_xft=true
# UNICODE を適当な文字集合にmapして、UNICODE フォントを使わずに表示する
not_use_unicode_font=false
# すべての文字を UNICODE フォントだけを使って表示する
only_use_unicode_font=false
# US_ASCII の表示には、必ず ISO8859-1 フォントを使用する
iso88591_font_for_usascii=false
# DEC_SPECIAL フォントの罫線文字のグリフを動的に合成
compose_dec_special_font=false
# インプッドメソッドの設定
input_method = scim


#ーーーースクロールバーーーーー
# scrollbar_mode = right
scrollbar_mode = none
# 使いたいスクロールバーの名前
# (*simple* / sample / sample2 / next / motif / athena / mozmodern)
# scrollbar_view_name=sample2

#ーーーー色設定ーーーーーーーー
# 端末画面の前景色
# fg_color=white
# 端末画面の背景色
bg_color=#F6F0E6
# スクロールバーの前景色
# sb_fg_color=white
# スクロールバーの背景色
# sb_bg_color=black
# 紙にする画像ファイルのパス
# wall_picture
# Focus から外れたときの前景/背景色の Fade 率(百分率)
#fade_ratio=90
# 背景画像(透過処理含む)の輝度調整(百分率)
#brightness=80
"--------------------

●フォントの設定
 フォントは ~/.mlterm/aafont に。ビットマップフォントは、~/.mlterm/font に記述します。
 ~/.mlterm/aafont の設定例。
ISO10646_UCS4_1 = IPAMonaGothic-iso10646-1:100;
ISO10646_UCS4_1_BIWIDTH = IPAMonaGothic-iso10646-1:100;



色がドぎつい

 デフォルトでは色設定が原色系で目に痛いので、ubuntu の gnome-terminal のカラーテーマのTangoのような柔らかい色設定に変更します。
 ~/.mlterm/color に以下を記述。
black=#2e3436
red=#cc0000
green=#4e9a06
yellow=#c4a000
blue=#3465a4
magenta=#75507b
cyan=#06989a
white=#d3d7cf
hl_black=#555753
hl_red=#ef2929
hl_green=#8ae234
hl_yellow=#fce94f
hl_blue=#729fcf
hl_magenta=#ad7fa8
hl_cyan=#34e2e2
hl_white=#eeeeec


まとめ


 スクロールバーは表示していません。screenを使っているので。
 起動時に mlterm -j genuine として、デーモンモードで起動しています。
 ランチャーなどからは、mlclient を起動するようにしています。
 以上でgnome端末とまったく違和感のない同じ見た目までmltermを持っていくことが出来ました。
 メモリの使用量が四分の一になって、しかも軽快に動くとは素晴らしい。

 実はかなり前からmltermは入れていたんですが、ずるずるとgnome端末を使い続けて今日まできました。それがicewmを入れてから省メモリに目覚め、mltermを本格的に使ってみると、あらいいじゃな〜いとw
 こんなことならもっと早くに移行していればorz

参考

2009年2月22日日曜日

PPAに mlterm 256色対応版をアップしました

 PPA に多言語対応端末エミュレータ mlterm 256色 対応版をアップしました。
 よかったらどうぞ。

https://launchpad.net/~yama-natuki/+archive/ppa

2009年2月19日木曜日

icewm のいろいろな テーマ

 icewm は 最初から theme が豊富なのも良いところです。
sudo apt-get install icewm-themes
とすれば、最初からたくさんのテーマがインストールされます。
 それ以外にもこちらなどからもテーマがダウンロード出来ます。
 ダウンロードしてきたテーマは、~/.icewm/themes 以下に展開すればOK。

 いくつか私が気に入っているテーマを紹介します。
 基本的にダークなテーマは見にくいので嫌いです。奇を衒ったものも好きではありませんので、かなり偏った紹介なのですけどねw



●IceBuntu

  これでしょう。基本ですw
  赤茶けたアフリカの大地を彷彿とさせる(ry



●BubblyBlue
  ばぶりー



●eiskristall
  落ち着いた色調はいい・・・



●lice
  これもシンプルでクール。



●PlastiCrack
  プラスチックスタイル



●SmoothIceHybrid
  どこかで見たような。

2009年2月18日水曜日

icewm に音量ボタンを追加する

 タスクトレイに常駐しているスピーカーのアイコンのあれです。
 当初 AbsVolumeを使用していたのですが、常駐型ではないため、起動にワンテンポ遅れる感じでした。
 そこで今回 gvtray に変更しました。

インストール

sudo apt-get install python-alsaaudio python-gnome2-extras
wget http://gtk-tray-utils.googlecode.com/svn/trunk/gvtray-1.1.tar.gz
tar zxvf gvtray-1.1.tar.gz
cd gvtray-1.1
sudo mkdir /usr/share/gvtray
sudo cp gvtray /usr/bin
sudo cp gvtray.py /usr/share/gvtray/
sudo cp -r gvtray_about/ /usr/share/gvtray/gvtray_about


起動するとタスクトレイに数字のアイコンが追加されます。
クリックするとなじみの音量調節バーが。



 後は ~/.icewm/startup に書いておけば起動時に自動的に起動されます。

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を使用している人にとっては導入するメリットはないでしょう。