いる時間が長い。という事でもあります。ほどほどにしなければ。
Linux7 には、screenlets というアクセサリが標準で入っています。
Vistaのサイドバーガジェットと似たようなものです。

たくさんあるなぁと個数を数えたら、52個もありました。
さらに「Get more screenlets」というボタンもあるので、追加もできそうです(未確認)。
素のUbuntuでも(リポジトリを追加すれば?)インストールできると思います。
カレンダを表示させてみたのですが、最初は曜日の文字が重なって
とても見づらい状態でした。
日曜 月曜 火曜 ... と2文字で出て、「曜」の文字が次の文字と重なって
いたのです。
少し調べてみると、カレンダは /usr/share/screenlets/Calendar/ の
CalendarScreenlet.py というのが実体でした(正確には、コンパイルされた
.pyc が動くのでしょうが)。pythonで作られているとは思わなかった。
CalendarScreenlet.py を見ると
という行があります。self.draw_text(ctx, self.__day_names[i][:2] , 0, 0, 'FreeSans',9, self.width , pango.ALIGN_LEFT)
どうやら、day_names(曜日名)を2文字描画しているようです。
欧文の場合は、Su とか、Mo とか2文字で良いのでしょうけれど、
日本語の場合は1文字にして欲しい。
そこで、
というように、self.__day_names[i][:2] を self.__day_names[i][:1]にdef draw_header (self, ctx, pl):
ctx.save()
tso = self.text_shadow_offset
ctx.translate(5,22)
for i in range(7):
ctx.set_source_rgba(0, 0, 0, 0.3)
ctx.translate(tso, tso)
# self.draw_text(ctx, self.__day_names[i][:2] , 0, 0, 'FreeSans',9, self.width , pango.ALIGN_LEFT)
self.draw_text(ctx, self.__day_names[i][:1] , 0, 0, 'FreeSans',9, self.width , pango.ALIGN_LEFT)
ctx.translate(-tso, -tso)
ctx.set_source_rgba(*self.font_color)
# self.draw_text(ctx, self.__day_names[i][:2] , 0, 0, 'FreeSans',9, self.width , pango.ALIGN_LEFT)
self.draw_text(ctx, self.__day_names[i][:1] , 0, 0, 'FreeSans',9, self.width , pango.ALIGN_LEFT)
ctx.translate(17.5,0)
ctx.restore()
書き換えてみました。
# がある行がオリジナルで、その次の行が変更行。2箇所あります。
これで、上記の画面キャプチャの様に曜日が1文字になりました。
(Pythonはよく知らないのですが、適当にやってみたらうまくいきました。)
コンパイル(pycを作る)方法がよくわからないので.py書き換えてそのまま
(未コンパイル)です。
emacsの.elと.elcの関係と同じように、.py のタイムスタンプが.pyc より
新しいと、.pyの方を実行するようなので無理にpycにしなくても良さそう。
ロケールを日本語以外にすると不都合が起きる(曜日がS M T W など
1文字になる)でしょうが、個人で使うぶんにはかまわないでしょう。
ソースがあるというのは有難いことです。
※ 2009.2.12 追記
今、気づいたのですがこのカレンダー、2月だというのに31日まであります(苦笑)。
ソースをざっと見たのですが、バグの場所がよくわかりません。
そこで、もうひとつのクリアカレンダ(ClearCalendar)というのを試してみました。
こちらは、2月はちゃんと28日までで、1桁の日に「0」がつく事もありません。
ただ、曜日の表示が重なってしまうのは同じでした(ClearCalendarは縦に
重なる)。そこで同じように.pyファイルを修正しました。
ClearCalendarScreenlet.py の 377行目あたりを見ると
self.p_layout.set_markup("<b<>span font_desc='Monospace'>" + dayname[:3] + '</span<>/b>')
というのがあり、3文字、すなわち「月曜日」などとなってしまうようです。
(欧文であればMon の3文字で良いのでしょう)。
そこで、dayname[:3] を dayname[:1] に書き換えれば OK です。
ついでに、曜日を3文字で表示するために、フォントが小さめになって
いるのを大きくするには、368行目付近の
p_fdesc.set_size(4 * pango.SCALE)
を
p_fdesc.set_size(6 * pango.SCALE)
にします。
上記のようにソースを変更後の表示はこんな感じです。

ClearCalendarは、マウスをもってゆくと薄いボタンが3つ表示され、
先月、今月、来月 に表示を切り替える事ができます。
gentooにも screenlets という portage(パッケージ)があるかな?とざっと
見てみたのですが無さそうです。(まぁ、python なので .pyファイルをコピー
すると動くかもしれません。←未確認)
視野を広げるためにも、いろいろなディストリビューションを試してみるのは
楽しいものです。(ハマりすぎるのも困りますけれど。)
前の(今日に近い)記事 ← | 最新記事 | 【全目次】 | → 次(過去)の記事