Dzen
Dzen は X11 向けの汎用メッセージング、通知、メニュープログラムです。どの言語でもスクリプト可能なように作られており dwm, wmii, xmonad などのウィンドウマネージャとよく合いますが、ウィンドウマネージャならどれでも動作します。
目次
インストール
Xft、XPM、Xinerama のサポートを含む dzen2 パッケージを インストール して下さい。
使い方
Dzen はパイプから文字列を受け取り、それをグラフィカルに出力します。この事実により、Dzen はどの言語でもスクリプト化可能になります。 例:
$ echo "Hello World" | dzen2 -p
オプション
Dzen には多くのオプションがあります。次のリストでは、その一部について説明します:
-fg
前景色。-bg
背景色。-fn
フォント。-ta
タイトルウィンドウの内容 l (eft) 、c (enter) 、r (ight) を位置合わせします。-tw
タイトルウィンドウの幅。-sa
スレーブウィンドウの内容を整列します-ta
を参照してください。-l
スレーブウィンドウの行数。-e
イベントとアクション。-m
メニューモード。-u
タイトルウィンドウとスレーブウィンドウの内容を同時に更新します。-p
EOF を永続化します (オプションのタイムアウト (秒単位))-x
X 位置。-y
Y 位置。-h
線の高さ (デフォルト:フォントの高さ +2 ピクセル)-w
ウィンドウの幅。-v
バージョン。
dzen でポップアップを作成する
次のコードは、画面右上に dzen ウィンドウを開きます。幅は 100px、高さは 15px で、前景は黒、背景は白です(右ボタンクリックでdzenを閉じます)
$ seq 1 3 | dzen2 -p -w '100' -h '15' -fg '#000000' -bg '#FFFFFF'
ウィンドウの中央に数字 3 があることに注意してください。-l
オプションを使用して同じコードを実行してみてください。
$ seq 1 3 | dzen2 -p -w '100' -h '15' -fg '#000000' -bg '#FFFFFF' -l '2'
これで、dzen 内でマウスをホバーすると、スレーブウィンドウが折りたたまれなくなります。スレーブウィンドウ内の行をクリックしても何も起こりません。-m
オプションを使用してみてください。
$ seq 1 3 | dzen2 -p -w '100' -h '15' -fg '#000000' -bg '#FFFFFF' -l '2' -m
ここで、行をクリックすると、端末に数字が表示されます。メニュー作成に便利な機能です。
ただし、数字を中央揃えにしてタイトルを左揃えにしたい場合は、オプション -sa
と -ta
が必要になります。
$ seq 1 3 | dzen2 -p -w '100' -h '15' -fg '#000000' -bg '#FFFFFF' -l '2' -m -ta 'l' -sa 'c'
設定
Dzen は X resources からフォントと色の設定を読み込むことができます。例えば、以下の行を ~/.Xresources
に追加できます:
dzen2.font: -*-fixed-*-*-*-*-*-*-*-*-*-*-*-* dzen2.foreground: #22EE11 dzen2.background: black
ヒントとテクニック
dzen でカスタムフォントを使う
Dzen は X Logical Font Description に従って X フォントパスにあるフォントしか使いません。詳しくは フォント#古いアプリケーション を見て下さい。
Dzen と Conky
Conky から直接情報を受け取りステータスバーとして出力する事が出来ます。これは公式の版でも、より機能を制限した conky-cliAUR でも可能です。
以下の例は平均負担値を赤字で、現在時刻を前景色で出力します:
~/.conkyrc
background no out_to_console yes out_to_x no update_interval 1.0 total_run_times 0 use_spacer none TEXT ^fg(\#ff0000)${loadavg 1 2 3} ^fg()${time %a %b %d %I:%M%P}
~/bin/dzconky
#!/bin/sh FG='#aaaaaa' BG='#1a1a1a' FONT='-*-terminus-*-r-normal-*-*-120-*-*-*-*-iso8859-*' conky | dzen2 -e - -h '16' -w '600' -ta r -fg $FG -bg $BG -fn $FONT &
起動時に読み込まれるファイルに dzconky
と記述すれば起動します。
クリッカブルエリアとポップアップ
dzen2 では ^ca(button, command)Text^ca()
を使ってクリック可能領域を定義できます。こちら のスクリーンショット gif のように任意の情報を表示するポップアップを作成することが可能です。
シンプルな例:
sysinfo_popup.sh
#!/bin/bash #A simple popup showing system information HOST=$(uname -n) KERNEL=$(uname -r) UPTIME=$( uptime | sed 's/.* up //' | sed 's/[0-9]* us.*//' | sed 's/ day, /d /'\ | sed 's/ days, /d /' | sed 's/:/h /' | sed 's/ min//'\ | sed 's/,/m/' | sed 's/ / /') PACKAGES=$(pacman -Q | wc -l) UPDATED=$(awk '/upgraded/ {line=$0;} END { $0=line; gsub(/[\[\]]/,"",$0); \ printf "%s %s",$1,$2;}' /var/log/pacman.log) ( echo "System Information" # Fist line goes to title # The following lines go to slave window echo "Host: $HOST " echo "Kernel: $KERNEL" echo "Uptime: $UPTIME " echo "Pacman: $PACKAGES packages" echo "Last updated on: $UPDATED" ) | dzen2 -p -x "500" -y "30" -w "220" -l "5" -sa 'l' -ta 'c'\ -title-name 'popup_sysinfo' -e 'onstart=uncollapse;button1=exit;button3=exit' # "onstart=uncollapse" ensures that slave window is visible from start.
スクリプトを保存して実行可能属性を付与したら、conkyrc で ^ca()
属性が使えます (もしくは dzen2 にパイプで渡すスクリプトで使用):
^ca(1,<path to your script>)Sysinfo^ca()
上記の設定でマウスボタン1でスクリプトを実行するように紐付けます。
Gadgets
dzen には、適切なカスタマイズに使用できるガジェットがいくつかあります。以下にそのいくつかを簡単な説明と例とともに示します。
dbar
Dbar は、別のコマンドから任意の数のパイプを受け取り、それとともに半グラフィカルな進行状況バーを出力します。デフォルトでは、100% の最大値は 100
です。最大値と最小値はそれぞれ -max
/-min
で変更できます。
出力例:
50% [============= ]
コード例:
~/test
#!/bin/sh ( amixer get Master | \ awk '/Left:/{gsub(/[[:punct:]]/,"",$5);left=$5} /Right:/{gsub(/[[:punct:]]/,"",$5);right=$5} END {print left ORS right}' ) | dbar -max 100 -min 0 -s '|' -l 'Vol'
詳細については、README.dbar を参照してください。
gdbar
Gdbar および dbar は、100% の値に基づいて進行状況バーを出力しますが、ここでは完全にグラフィカルです。Gdbar には、dbar と同じオプションといくつかの追加オプションがあります。オプションの一部は次のとおりです:
-fg
前景を設定します。-bg
背景を設定します。-w
/-h
は幅と高さをそれぞれ設定します。
コード例:
~/test
#!/bin/sh ( amixer get Master | \ awk '/Left:/{gsub(/[[:punct:]]/,"",$5);left=$5} /Right:/{gsub(/[[:punct:]]/,"",$5);right=$5} END{print left ORS right}' ) | gdbar -max 100 -min 0 -l 'Vol ' -bg '#777777' -fg '#00ff00' -ss '2' | dzen2 -p -l '1' -w '150' -y '100' -x '100' -ta c -sa c -e 'onstartup=uncollapse;button3=exit'
詳細については、README.gdbar を参照してください。
その他
他のガジェットに関する情報は こちら を参照して下さい。
参照
フォーラムスレッド
- 2007-12-04 - Arch Linux - dzen & xmobar Hacking Thread