Dzen

提供: ArchWiki
2023年12月20日 (水) 07:31時点におけるKgx (トーク | 投稿記録)による版 (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 バージョン。
警告: -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でスクリプトを実行するように紐付けます。

dzen の Xft サポートを有効にする

ノート: libxft パッケージを導入する必要があります。

SVN リビジョン 241 (開発版) 現在、dzen2 は Xft を任意でサポートしています。Xft のサポートを有効にするには config.mk を編集して以下のオプションを有効にしてビルドしてください:

config.mk
 ## Option: With Xinerama and XPM and XFT
 LIBS = -L/usr/lib -lc -L${X11LIB} -lX11 -lXinerama -lXpm $(pkg-config --libs xft)
 CFLAGS = -Wall -Os ${INCS} -DVERSION=\"${VERSION}\" -DDZEN_XINERAMA -DDZEN_XPM -DDZEN_XFT $(pkg-config --cflags xft)

libxft のサポートが有効になっているかどうかは以下のコマンドで確認できます:

echo "hello world" | dzen2 -fn 'Times New Roman' -p

参照

フォーラムスレッド