Dzen

提供: ArchWiki
ナビゲーションに移動 検索に移動

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 バージョン。
警告: -u オプションは非推奨になりました。

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 を参照してください。

ノート: Gdbar は、dzen >= 0.7.0 と組み合わせた場合にのみ役立ちます。

その他

他のガジェットに関する情報は こちら を参照して下さい。

参照

フォーラムスレッド