FC2ブログ

水雲風

とりあえず人生を記録と妄想の吐き出しの地

xchat2通知プラグイン(2010/10/16)

Ubuntu10.4でIRCチャットのクライアントにxchat2を利用してみてます。
このxchat2で発言があった時にUbuntuで用意されているnotify-osdの通知システムを利用して、画面に発言内容を表示するようにしてみました。
ここではその内容を記述します。

■notify-osd

notify-osdはユーザーに情報を通知するサービスで、これを利用すると画面の最前面に通知が表示されます。
マックユーザーにはGrowlみたいなものといえばわかりやすいですかね。
Ubuntu10.4ではデフォルトで入っています。

しかし、デフォルトのnotify-osdは通知の表示時間や表示位置、色、デザインなどが設定できません。
そこで以下のPPAで配布されている開発版を導入すればそれらの設定が可能になります。
参照したサイト:独学Linux:NotifyOSD Configuration for Lucid

sudo add-apt-repository ppa:leolik/leolik
sudo add-apt-repository ppa:amandeepgrewal/notifyosdconfig
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install notifyosdconfig

上記手順を実行すれば、以下のコマンドで設定が可能になります。
notifyconf

現状のnotify-osdの不満点は同時に通知が発生した際に、通知がスタックされて順番に指定した時間で表示されていくことでしょうか。
例えば通知が4つ同時に発生して各通知の表示時間が10秒の場合、4つ目の通知は3つ目までの表示が完了する30秒後に表示されることになります。
どんどん通知が発生していくとリアルタイムで通知を得ることができなくなります。

解決方法の1つとして、以前に使用されていたNotification-DaemonをNotify-osdの代わりに使用するという方法があるみたいです。
参照サイト:Ubuntu9.10のNotify-OSDの問題点と解決方法 - Secret Sword!!!
ただ、notify-osdは通知にマウスカーソルを合わせると半透明かして後ろのウィンドウの操作が行えるのが良いので一長一短のように思います。


■notify-send

notify-sendコマンドでコマンドラインから通知を送る事ができるようになります。
Ubuntu10.4では以下のようにするとnotify-sendコマンドが使えるようになります。
sudo apt-get install libnotify-bin

コマンドの使い方は以下のような感じになります。
notify-send "title" "message"


■xchat2プラグイン

xchat2はプラグインを作ることができます。
今回は単純に発言を通知するだけのプラグインを作成してみました。
最初rubyで作っていたのですが、rubyプラグインはデフォルトで入っておらず、perlプラグインは入っているのでperlのプラグインとして作成しました。

本プラグインが動作するためには、少なくとも上記notify-sendを導入している必要があります。
メッセージ表示のタイムアウト時間内でチャットの発言が繰り返されると、notify-osdで問題が発生すると思われます。

下記の内容をnotifier.plとでもして保存して、~/.xchat2/に置けばxchat2起動時に自動的にロードされます。


#!/usr/bin/perl

use Xchat qw(:all);

# ============================================== #
# == ユーザー設定 == #
# ============================================== #
$timeout = 3000; # メッセージのタイムアウト(ms)
# ============================================== #

# プラグイン情報レジスト
Xchat::register( "Notifier", '1.0', "Notify message by notify-send", "" );
# イベントフック
Xchat::hook_print('Channel Message', "hook_message");
Xchat::hook_print('Channel Msg Hilight', "hook_message");

# メッセージイベント処理
sub hook_message
{
my $nick = $_[0][0];
my $word = $_[0][1];

¬ify_send($nick, $word, $timeout);

return Xchat::EAT_NONE;
}

# 通知処理
sub notify_send
{
my $title = $_[0];
my $message = $_[1];
my $timeout = $_[2];
my $curchan = lc(Xchat::get_info('channel'));

my $cmd = sprintf("notify-send \"%s [%s]\" \"%s\" -t %d",
$title,
$curchan,
$message,
$timeout);
system($cmd);
#Xchat::print($cmd);
}


スポンサーサイト



  1. 2010/10/16(土) 11:08:46|
  2. 計算機
  3. | トラックバック:0
  4. | コメント:0
<<島根日帰り旅行 | ホーム | Emacsでスタートアップメッセージを表示しない>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバックURLはこちら
http://mechagappa.blog14.fc2.com/tb.php/733-94e8fffb
この記事にトラックバックする(FC2ブログユーザー)

プロフィール

おげれつ脱脂綿

カレンダー

01 | 2020/02 | 03
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29

カテゴリー

月別アーカイブ(タブ)

最近の記事

最近のコメント

最近のトラックバック

ブロとも申請フォーム

この人とブロともになる

ブログ内検索

RSSフィード

全ての記事を表示する

全ての記事を表示する