« August 2009 | Main | November 2009 »

2009.09.25

[NetWalker]バッテリー残量をほんのりマシに表示する battwalker.rb

NetWalkerの標準バッテリー残量インジケーターに不満を持っている人は多いのではないでしょうか。

使って10分もするとすぐに表示が黄色くなってしまい、折角バッテリーの持ちがいいのに無用な不安にとらわれてしまいます。
「/proc/battery」をのぞくと各レベルの閾値が設定されていることが読み取れますが、それと表示との間にもずれがあるように思います。

$ cat /proc/battery
7973mV (952) 947:90 892:50 873:20 771:8 770:2 0:2 caution(873:20 - 0) shutdown(770:2) poll:1800sec

ということで、代替となるようなバッテリー残量インジケーターをRuby/Gtkで書いてみました。

Screenshot

更新情報

2009.9.27 Ver.0.4: インジケーター上に残量のパーセンテージを文字で表示するようにしました。

Screenshot

2009.9.26 Ver.0.3: 名前を「battmonwalker.rb」から「battwalker.rb」に変更しました。

@kuromaboさんが自分と同時に同じものを作ろうとされていたということで、その@kuromaboさんが命名していた名前を拝借しました。

@kuromaboさんには後見人として(?)、いろいろ手伝ってもらっています。

Ver.0.3では、残量算出方法を見直して、Ver.0.2よりマシになっていると思います。

インストール

無保証です。

インストールは自分の野良リポジトリからできます。
リポジトリの登録手順、リポジトリからのインストール手順については以下のページを参照してください。

[NetWalker]Twitpicに画像とコメントをアップロードするTwitpicUploader.rb

パッケージ名は「battwalker.rb」です。

Battwalker01

インストールすると「/usr/local/bin/battwalker.rb」として入るので、これを「システム>設定>自動起動するアプリ」に登録します。

Battmonwalker02
▲「システム>設定>自動起動するアプリ」を起動。

Battmonwalker03
▲「追加」ボタンを押します。

Battmonwalker04
▲ダイアログの「名前」には適当な名前を、「コマンド」には「/usr/local/bin/battwalker.rb」と。「説明」も適当に。(画像は名前がbattmonwaker.rbだったときのものです)

Battmonwalker05
▲登録完了。(画像は名前がbattmonwaker.rbだったときのものです)

一度ログアウトして再度ログインすると、通知領域にバッテリー残量インジケーターが表示されると思います。
ruby, libgtk2-rubyに依存しているので、インストールするとそれらも入ります。
(これをdebの中で処理する方法を知っている方教えてください。カレントユーザーディレクトリを知る方法が分かりません)

システム標準のもの、そして battwalker.rb のものとバッテリー残量インジケーターが二つ表示されることになります。
僕は、システム標準のインジケータを消して使ってみてます。

「システム>設定>電源の管理>全般タブ」にある「バッテリー残量がほとんどない時だけアイコンを表示する」を選択すると普段は消えてくれます。

解説

battwalker.rbは「/proc/battery」を読み取って、通知領域のインジケーターとtooltipに反映させるというシンプルなアプリです。
表示の更新は1分に1回実行しています。

インジケーター上にマウスカーソルを持っていくと、tooltipで現在の残量等を表示します。

Gtk::Pixbufにdraw text的な感じのことをして、それをGtk::StatusIconにセットすればいいみたい、というとこまで分かりました。
Ruby/GtkはNetWalkerを入手した日にいじり始めたもんで、よく分かっていません。
やり方が分かったら、そのような感じにする予定です。

「/home/YOUR_NAME/batterylog.txt」として残量のログを記録していきます。
今のところ、ログを切ることはできません。

残量算出の精度とログ、アイコン切り替えテーブルについて

/proc/batteryに現れる電池の残量は、コストダウンのためか電圧を見て検出しているようで、精度がよろしくありません。
何しろ、一度減った残量が増えたりしますから。

システムの負荷が低いと電圧が上がり、負荷が高くなると電圧が下がり、ということが起きているように思います。

またしばらく減らなかったりするようです。
「本来なら電流計によって容量計算をするのだが、電流計を積んでないのではないか」そんな考察が2ちゃんねるでされていました。

tooltipのパーセント表示は、シャットダウンする残量770を下限、僕の環境でフル充電し、ACアダプタを外した直後の残量980を上限として、それを100等分したときに、現在の残量がどこに位置するかで求めています。

電圧が一時的に高くなるACアダプタ接続中は、この関係で残量表示が100%を超えます。
ACアダプタの接続/切断を判定して、パーセント表示を出さないようにしています。

980という数値はスクリプトの中に固定値として書き込んでいますが、本来は環境によって調整すべきでしょうね。

|

2009.09.23

[NetWalker]Twitpicに画像とコメントをアップロードするTwitpicUploader.rb

NetWalkerで使うために、Twitpicに画像とコメントをアップロードし、そしてTwitterにpostするアプリケーションをRuby/Gtkで書いてみました。

標準のファイルブラウザ、Nautilusや、画像ビュワーgThumbからクイックにTwitpicにアップロードができるようになって便利です。

インストール

無保証です。

野良リポジトリを作ったので、以下を「システム管理>ソフトウェア・ソース」で追加してください。

deb http://homepage3.nifty.com/moyashi/netwalker/ ./

Twitpicuploader01

Synapticにてtwitpicuploaderで出てくると思います。「クイック検索」では出てこないので、その横の「検索」ボタンで検索してください。

Twitpicuploader02

gpgを置いていないのでインストール時に「認証されていません」と出ますが、そのままインスコしてください。

このパッケージをインストールすることで、依存しているruby, libgtk2-ruby, rubygems、そしてpostinst内にてRubyGems経由でhttpclientが入ります。
rubygemsからのhttpclientインストールに結構時間がかかると思います。

$HOMEにファイルをコピーする方法が分からなかったので追加作業を要します。
(どなたかカレントユーザのディレクトリにファイルをpostinstの中からコピーする方法を教えてください)

ln -s /usr/local/bin/TwitpicUploader.rb ~/.gnome2/nautilus-scripts/
cp /usr/local/share/twitpicuploader/TwitpicUpLoader.yaml ~/

そして、~/TwitpicUploader.yamlを編集します。

username: Twitterのアカウントを入力
password: Twitterのパスワードを入力

Nautilusで何か画像を選択し、右クリックでポップアップメニューを開きます。
「スクリプト(S)」という項目が出来ているので、その下にあるTwitpicUploader.rbを選択します。
メニューの「ファイル(F)>スクリプト(S)」でも同じです。

Twitpicuploader03

すると、TwitpicUploaderが起動するので、コメントを入力してPost。

Twitpicuploader04

オプションを選択していれば、クリップボードにアップロード先のURLがコピーされていると思います。ブラウザで見ると、こんな感じ。

Twitpicuploader05

チェックボックス項目説明

「URL copy to the clipboard」
チェックボックスがONになっていると、投稿されたTwitpicのURLをクリップボードにコピーします。
「Alt+U」でON/OFFできます。

「URL post to your Twitter account」
チェックボックスがONになっていると、コメントと画像URLがTwitterにpostされます。
「Alt+T」でON/OFFできます。

「Append hashtag #netwalker」
チェックボックスがONになっていると、コメントに「#netwalker」というハッシュタグを追加します。
「Alt+A」でON/OFFできます。

画像ビュワーgThumbとの連携

gThumbは、デジカメとの連携に優れた人気のある画像ビュワーです。
gThumbとTwitpicUploader.rbとの連携も可能です。

「gThumb」と「libnotify-bin」をSynapticからインストールします。
libnotify-binにはnotify-sendという面白いコマンドが収録されています。後で使います。

gThumbは「ホット・キー」経由で外部コマンドとの連携が可能な作りになっていますが、残念ながらホットキーはテンキーの0から9に割り当ててあるため、NetWalkerではそのままではこの機能が利用できません。

「~/.Xmodmap」を編集します。

中身は以下のようにします。

keycode 19 = KP_0 KP_0

そして一度ログアウトします。
再度ログインする際に、「modmap ファイルの読み込み」というダイアログが開き、「.Xmodmap」を起動時に読み込むか確認されるので、読み込むように指定します。

Twitpicuploader06

ただし、「次回からこのメッセージを表示しない」のチェックボックスはOFFにします。
変な.Xmodmapを読み込ませると大変なことになるからです。

gThumbを起動し、「編集(E)>設定(P)」を起動。「ホット・キー」のタブの「0:」の項目を以下のように書き換えます。

notify-send "send to TwitpicUploader.rb.."; /usr/local/bin/TwitpicUploader.rb %f &

設定が完了したら、適当な画像を選択するか、画像を表示しているときに「0」を押します。選択した画像がTwitpicUploader.rbに渡ると思います。

Twitpicuploader07


コマンドラインからの利用

コマンドラインからも使えます。

$ TwitpicUploader.rb SOME.jpg

|

2009.09.05

[N810]Nokia N810のキーボードのShift、Fn、Ctrlを順次押しで機能させるカスタマイズ

N810のキーボードは、親指2本でのタイピングが前提であるにもかかわらず、Shift、Ctrlを同時押ししないとならず、maemoCJKをインストールするとFnすら同時押ししないと機能しなくなってしまいます。

hp 200LXではデフォルトで、そしてLinux ZaurusにおいてはKeyHelper Appletを使うことでShift、Ctrlを順次押しで機能させることができたので、これが最大の不満点となっていました。
いわゆる、「sticky keys」あるいは「toggle」という設定ですね。

N810でキーボードのShift、Fn、Ctrlを順次押しで機能させる方法、つまり「sticky keys」あるいは「toggle」を有効にする方法、それは……、

「/etc/init.d/x-server」の「ARGS」に「+accessx」を追記しリブート。しかる後にShiftキーを5回連続でたたく。

これです。
ちなみに、「sticky key」が有効な状態でShift、Fn、Ctrlを2回押すとロックがかかります。

「/etc/init.d/x-server」の「ARGS」は、実際には次のようになっています。

ARGS="-mouse tslib -nozap -dpi $DISPLAY_DPI -wr -nolisten tcp"

これを次のようにするわけです。

ARGS="-mouse tslib -nozap -dpi $DISPLAY_DPI -wr -nolisten tcp +accessx"

ただ、効果は永続するというわけでなく、ひょんな拍子で元に戻ってしまいます。
少なくとも、一度サスペンドすると、元に戻ってしまうようです。
都度Shiftキーを5回たたいてsticky keyモードにする必要があるのが面倒ですが、無いよりもマシでしょう。

これを永続的に有効にする方法を知っている方がいらしたら教えてください。

|

« August 2009 | Main | November 2009 »