Ubuntu英語フォーラムのTutorial of the Weekの翻訳が技術評論社さんのUbuntu Weekly Topics、もとい執筆者の吉田さんに取り上げて頂いておりますし、引き続き翻訳させて頂きます。
—
以下はUbuntuの英語フォーラムのTutorial of the Weekの翻訳です。原文「Conky Google Calendar Python Script」はユーザーkaivalagiによって執筆されています。英語フォーラムにおける投稿はCreative Commons Attribution 3.0です。この文章自体はCreative Commons Attribution Share Alike 3.0とします。tar.gzを用いるインストール方法はほぼ利用者がいないでしょうし、説明も不十分なので省きました。
—
私が書いたConky用のスクリプトは全てHardy, Interpid, Jaunty, Karmic向けにパッケージしてある。リポジトリの場所は以下のインストールの項を参照して欲しい。
紹介
以前に公開したconkyForecastスクリプトに引き続きconkyの利用者のための新しいスクリプト作った。conkyForecastスクリプトはこちらのスレッドにある。
このスクリプトはGoogle CalendarのデフォルトカレンダーにあるイベントをConkyで利用できる形で出力する。他にもコマンドラインで同じ事をする方法はあるだろうけど、自分で改造できるようにしたかったし、みんなのアイデアも取り入れていくつもりだ。
機能としては:
- Google CalendarのAPIを利用する
- イベントの出力結果にテンプレートを利用できる
- システムのロカールを使って異なる時間帯をサポートする
- 多くのイベントがある場合に早いものから先にイベントの数を制限して出力できる
READMEも添付してあるので一度は目を通してくれ。役に立ってくれるとうれしい。何か意見があれば是非教えてくれ。
インストール
aptを利用する
1. リポジトリにアクセスするためのリストを作成する
Karmic Koala:
sudo wget -q http://www.kaivalagi.com/ubuntu/ppa/m-buck-conky-karmic.list -O /etc/apt/sources.list.d/m-buck-conky-karmic.list
Jaunty Jackalope
sudo wget -q http://www.kaivalagi.com/ubuntu/ppa/m-buck-conky-jaunty.list -O /etc/apt/sources.list.d/m-buck-conky-jaunty.list
Intrepid Ibex
sudo wget -q http://www.kaivalagi.com/ubuntu/ppa/m-buck-conky-intrepid.list -O /etc/apt/sources.list.d/m-buck-conky-intrepid.list
Hardy Heron
sudo wget -q http://www.kaivalagi.com/ubuntu/ppa/m-buck-conky-hardy.list -O /etc/apt/sources.list.d/m-buck-conky-hardy.list
2. リポジトリの公開鍵をaptに追加する
wget -q http://www.kaivalagi.com/ubuntu/ppa/m-buck-conky-key.gpg -O- | sudo apt-key add -
3. apt-getでインストール
sudo apt-get update && sudo apt-get install conkygooglecalendar
debファイルを利用する
添付されているdebファイルをダウンロードして実行する。但し最新とは限らない。最初の方法でaptを利用すればアップデートも行われる。
使い方
ヘルプは次のオプションで見られる:
python ~/.scripts/conkyGoogleCalendar.py -h
ないし
python ~/.scripts/conkyGoogleCalendar.py --help
使い方は以下の通りだ:
Usage: conkyGoogleCalendar [options]
Options:
-h, --help show this help message and exit
-u USERNAME, --username=USERNAME
Username for login into Google Calendar, this will
normally be your gmail account
-p PASSWORD, --password=PASSWORD
Password for login
-r TEXT, --requestCalendarNames=TEXT
Define a list of calendars to request event data for,
calendar names should be separated by semi-colons ";".
For example --requestCalendarNames="cal1;cal2;other
cal" If not set all calendar data will be returned.
-d NUMBER, --daysahead=NUMBER
[default: 7] Define the number of days ahead you wish
to retrieve calendar entries for, starting from today.
-s DATE, --startdate=DATE
Define the start date to retrieve calendar events. In
the form '2007-12-01'
-e DATE, --enddate=DATE
Define the end date to retrieve calendar events, must
be supplied if --startdate supplied. In the form
'2007-12-01'
-a, --allevents Retrieve all calendar events
-w TEXT, --wordsearch=TEXT
Define the text to search calendar entries with.
-l NUMBER, --limit=NUMBER
[default: 0] Define the maximum number of calendar
events to display, zero means no limit.
-t FILE, --template=FILE
Template file determining the format for each event.
Use the following placeholders: [title], [starttime],
[endtime], [location], [description], [who]. Ensure
only one placeholder per line, as the whole line is
removed if no data for that placeholder exists.
-f "DATEFORMAT", --dateformat="DATEFORMAT"
If used this overrides the default date formatting.
The values to use are standard formatting strings e.g.
Weekday=%a, Day=%d, Month=%m, Year=%y. For an output
like "Thu 15/10/2008" you would require
--dateformat="%a %d/%m/%y", to have no date you would
require --dateformat=""
-F "TIMEFORMAT", --timeformat="TIMEFORMAT"
If used this overrides the default time formatting.
The values to use are standard formatting strings e.g.
Hours (12hr)=%l, Hours (24hr)=%H, Minutes=%M,
Seconds=%S, AM/PM=%P. For an output like "05:22 PM"
you would require --timeformat="%l:%M %P",
--timeformat="" is not supported, default locale
settings are used
-i NUMBER, --indent=NUMBER
[default: 0] Define the number of spaces to indent the
output (excludes template based output)
-m NUMBER, --maxwidth=NUMBER
[default: 40] Define the number of characters to
output per line
-n, --nowho Hides who is attending the events (excludes template
based output)
-c NUMBER, --connectiontimeout=NUMBER
[default: 10] Define the number of seconds before a
connection timeout can occur.
-v, --verbose Request verbose output, no a good idea when running
through conky!
-V, --version Displays the version of the script.
--errorlogfile=FILE If a filepath is set, the script appends errors to the
filepath.
--infologfile=FILE If a filepath is set, the script appends info to the
filepath.
重要な点としてはConky内での呼び出し方次のようになったことだ:
{execi 1800 conkyGoogleCalendar ...options...}
以前はこうだった:
{execi 1800 python /path/to/file/conkyGoogleCalendar.py ...options...}
設定
conkyGoogleCalendar.pyスクリプトには一つ重要な設定値がある。記述が長くなったときのために出力の量に上限を設定できる。
MAX_WIDTH = 47
必要であればこの値を変えてみてほしい。
その他
出力結果の省略
Conkyはデフォルトでexeciを含め変数当たり128バイト以上の出力を受け付けない。このデフォルトのバッファーサイズよりも大きな出力をするようなテンプレートを作ると、出力結果が一部省略されてしまう。デフォルトを変更するにはconkyrcファイルを次のように変更すればよい。
text_buffer_size 512
キャプチャ
“GoogleCalendarEngine Initialisation:Unexpected error:Captcha Required”というエラーで動かなくなることがある。これはグーグルがやってることで、次のURLで認証を行えば解決できる。https://www.google.com/accounts/UnlockCaptcha
ロカールとユニコード
“ERROR: writeOutput:Unexpected error:’ascii’ codec can’t decode byte 0xc3 in position 14: ordinal not in range(128)”というようなエラーはスクリプトがシステムのロカールを取り扱えていないということだ。conkyrcファイルの TEXTの上に次の行を加えれば解決する。
override_utf8_locale yes
開発履歴
開発履歴は次のページで見られる。https://code.launchpad.net/~m-buck/+…googlecalendar
私が提供しているパッケージは以下にある:
- Conky Packages – https://launchpad.net/~m-buck/+archive/conky
- gtk-desktop-info – https://launchpad.net/~m-buck/+archive/gtk-desktop-info
- Rhythmbox Packages – https://launchpad.net/~m-buck/+archive/rhythmbox
新しいウェブサイトも作った。今のところあまり中身がないがconkyスクリプトについてもそれなりにかかれている。こちらだ:http://www.kaivalagi.com
添付ファイル

Conkyに興味を持ちました。試してみようと思います。
細かいですが・・・
s/イベント我ある場合/イベントがある場合/
コメントありがとうございます。
修正させていただきました。ブログのためにまとまった量の日本語を書いていると、変換精度がもう少し高いといいなと思います。よくチェックすればいいんですがWordpressのエディタの動作が鈍いので怠りがちです。