Livedoorブログからの移動

conkyは一度設定してしまえばGoogleカレンダーのウィジェットとして, todo listの表示としてなど様々に使えるんだけれども, 残念ながら日本語資料があまりない.
そして, 全角文字を入れるとうまく働かないことがしばしば. なので, 自分のconky設定とその時に困ったことのメモを残しておく.

 

設定全体

ディレクトリ構成

~/.conkyにconkyの設定ファイル, 起動スクリプト, 実行するスクリプトなどをまとめている.

ニュース

ニュースを表示する設定ファイル. 左上に表示される.
# 配置設定
alignment top_left
background yes
gap_x 0
gap_y 30
minimum_size 5 5

# 概観設定
border_width 1
default_color black
default_outline_color black
default_shade_color grey
draw_borders no
draw_graph_borders yes
draw_outline no
draw_shades no
stippled_borders 0

# その他設定
update_interval 10

# ちらつきを抑える.
double_buffer yes

# 透過させる
own_window yes
own_window_class Conky
own_window_type override
own_window_transparent yes
own_window_argb_visual yes
own_window_argb_value 255

# フォントの設定
use_xft yes
xftfont TakaoExGothic:style=Regular:size=10

# 内容
TEXT
## ニュース
${font TakaoExGothic:style=Bold:size=20}ニュース:${font}
${font TakaoExGothic:style=Bold:size=15}トップ${font}
${rss http://news.google.com/news?hl=ja&ned=us&ie=UTF-8&oe=UTF-8&output=rss 60 item_titles 5}

## 社会ニュース
${font TakaoExGothic:style=Bold:size=15}社会${font}
${rss http://news.google.com/news?hl=ja&ned=us&ie=UTF-8&oe=UTF-8&output=rss&topic=y 60 item_titles 2}

## 国際ニュース
${font TakaoExGothic:style=Bold:size=15}国際${font}
${rss http://news.google.com/news?hl=ja&ned=us&ie=UTF-8&oe=UTF-8&output=rss&topic=b 60 item_titles 2}

## 政治ニュース
${font TakaoExGothic:style=Bold:size=15}政治${font}
${rss http://news.google.com/news?hl=ja&ned=us&ie=UTF-8&oe=UTF-8&output=rss&topic=p 60 item_titles 2}

## テクノロジー
${font TakaoExGothic:style=Bold:size=15}テクノロジー${font}
${rss http://news.google.com/news?hl=ja&ned=us&ie=UTF-8&oe=UTF-8&output=rss&topic=t 60 item_titles 2}
ちなみに, 白背景, xmonad+xmobarをデスクトップ環境としているので, そうでない人には使いづらいかも.
この設定ファイルで困るところはほとんどない. ただgoogleニュースのrssを取得して, 60分ごと(だったと思う) に内容を更新させているだけ.
   

カレンダー・todoリスト

Googleカレンダーや, todoリストを表示する設定ファイル. 右上に表示される.
# 配置設定
alignment top_right
background yes
gap_x 0
gap_y 30
minimum_size 5 5
maximum_width 630
#maximum_size 500 500

# 概観設定
border_width 1
default_color black
default_outline_color black
default_shade_color grey
draw_borders no
draw_graph_borders yes
draw_outline no
draw_shades no
stippled_borders 0

# その他設定
update_interval 10

# ちらつきを抑える.
double_buffer yes

# 透過させるための設定
own_window yes
own_window_class Conky
own_window_type override
own_window_transparent yes
own_window_argb_visual yes
own_window_argb_value 255

# カレンダー表示のための設定
max_port_monitor_connections 64
max_specials 512
max_user_text 30000
text_buffer_size 16384

# フォントの設定
use_xft yes
xftfont TakaoExGothic:style=Regular:size=10

# 内容
TEXT
## Googleカレンダー予定表
${font IPAMincho:style=Bold:size=10.5}
${execpi 300 ~/.conky/gcal.sh}
${font}

## todo.txtの内容
${color black}
${font TakaoExGothic:style=Bold:size=10.5}Todo List${font}
${font IPAMincho:style=Bold:size=10.5}
${execi 150 ~/.conky/todo.sh}
${font}
${color}
正直一番面倒臭かった. gcal.sh, todo.shについては後で説明するとして, 設定ファイル側で詰まったのは, 等幅フォント(っていうのかな?)を使わないとレイアウトが崩れること. ただ, ぐぐってもなかなか日本語に対応した等幅フォントが見つからず苦労した. 試行錯誤の結果, IPA明朝を使っている.
実はそれでもGoogleカレンダーはずれるんだけど, 面倒なのでもう無視した.
2015/1/5追記. ここを参照に, フォントサイズを10.5ptにしたら, Googleカレンダーもずれなくなった.

で, 次にgcal.shについて. 参考にしたのはここ. 細かい説明(エスケープシーケンスの打ち方とか)はリンク先を見てください. gcalcliのインストールになんか面倒があった気もしたけどもう忘れた.
#!/bin/sh
gcalcli --conky calm |
    sed -e 's/(0\x71(B/-/g' \
        -e 's/(0\x78(B/|/g' \
        -e 's/(0\x6A(B/+/g' \
        -e 's/(0\x6B(B/+/g' \
        -e 's/(0\x6C(B/+/g' \
        -e 's/(0\x6D(B/+/g' \
        -e 's/(0\x6E(B/+/g' \
        -e 's/(0\x74(B/+/g' \
        -e 's/(0\x75(B/+/g' \
        -e 's/(0\x76(B/+/g' \
        -e 's/(0\x77(B/+/g' \
	-e 's/\${color white}/\${color black}/g' \
	-e 's/\${color yellow}/\${color black}/g'
リンク先のような英語サイトでは, 枠に─, ┘などの文字を使うことをしている. なんだけれども, 日本語環境でこれを使うと全角文字として表示されて, 一方で, 幅の計算はこれらが半角文字であるとして計算されているから, 変なことになる. 面倒くさくなったので, 枠には-, |, +を使うことで必ず半角文字であるとして表示されるようにした.
最後に, 白背景に白枠とか黄色文字とか見づらい事この上ないので, 全部blackに変換している(下2行).

次, todo.sh. これは, todo.txtという単純なCUIベースのtodoリスト管理ツールの中身を表示するもの. 機能としては, Googleカレンダーのtodoリストに負けるけど, ひたすらにシェル上で使いやすいところが利点. 補間もちゃんとしているのはgcalcliにはないメリット. 
#! /bin/sh
todo.sh ls | col -x | 
sed -e 's/[0-9];30m/\${color black}/g' \
-e 's/[0-9];31m/\${color red}/g' \
-e 's/[0-9];32m/\${color green}/g' \
-e 's/[0-9];33m/\${color yellow}/g' \
-e 's/[0-9];34m/\${color blue}/g' \
-e 's/[0-9];35m/\${color magenta}/g' \
-e 's/[0-9];36m/\${color cyan}/g' \
-e 's/[0-9];37m/\${color white}/g' \
-e 's/[0-9];39m/\${color}/g' \
-e s/'[0-9];[0-9][0-9]m'//g \
-e s/'0m$'/\${color}/g \
-e 's/\${color white}/\${color black}/g' \
-e 's/\${color yellow}/\${color red}/g' \
| head -n 6
これは何をしているかというと, 確かエスケープシーケンスを用いた文字の色付けを削除している. conkyの文字の色付けに変換するのが最適なんだろうけど, だるかったので削除で妥協してしまった.
2015/1/5追記. 色の削除を, ちゃんと色付けの変更にした. なんだけど, 白背景に白とか黄色とか見えないので, 白を黒に, 黄色を赤に変更した.

なお, 将来的にはGoogleカレンダーのtodoリストと同期したいが今はされていない.

時計

時計を表示. 参考はここで, ほぼコピペ. いるのかは微妙だけど, 見やすいのは事実なので置いといている. スペースがたりなくなったら真っ先に削除されだろう.
# 配置設定
alignment bottom_left
background yes
gap_x 0
gap_y 0
minimum_size 5 5
#maximum_width 630
#maximum_size 500 500

# 概観設定
border_width 1
default_color black
default_outline_color black
default_shade_color grey
draw_borders no
draw_graph_borders yes
draw_outline no
draw_shades no
stippled_borders 0

# その他設定
update_interval 10

# ちらつきを抑える.
double_buffer yes

# 透過させるための設定
own_window yes
own_window_class Conky
own_window_type override
own_window_transparent yes
own_window_argb_visual yes
own_window_argb_value 255

# カレンダー表示のための設定
max_port_monitor_connections 64
max_specials 512
max_user_text 30000
text_buffer_size 16384

# フォントの設定
use_xft yes
xftfont TakaoExGothic:style=Regular:size=10

# 内容
TEXT
${font Andale Mono:size=200}${time %H:%M}${font}

起動スクリプト

特に言うこともない起動スクリプト. これをxmonadの立ち上げ時にspawnで起動している.
#! /bin/sh

conky -c ~/.conky/newsrc -d
conky -c ~/.conky/calendarrc -d
conky -c ~/.conky/clockrc -d

xmonad

xmonadの設定について. なんかデスクトップ効果かなんかの問題で, xmonadのスタートアップで
xcompmgr -c &
をしないとうまくconkyが透過されない.

terminal

ただのgnome-terminalの設定. これの背景透過をしないとconkyを使う意義が薄れると思う. 端末で右クリック, プロファイル, 背景, 背景を透明にするにチェック, で透明にできる.


以上. 長かった.