FireSnarlを改造してWhineに通知メッセージを表示してみた
Snarlでは日本語が化けてしまうため、whineに出力するようにしてみた。
chrome\firesnarl.jarの中の content/alertOverlay.jsを書き換える。
function showSnarlAlert(time, title, text, icon, alertType) { // ---- snaka hack --- var converter = Components .classes['@mozilla.org/intl/scriptableunicodeconverter'] .getService(Components.interfaces.nsIScriptableUnicodeConverter); converter.charset = 'Shift_JIS'; var sjis_str = converter.ConvertFromUnicode(text); var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile); file.initWithPath("C:\\Program Files\\whine\\whinesend.exe"); var proc = Components.classes["@mozilla.org/process/util;1"].createInstance(Components.interfaces.nsIProcess); proc.init(file); var args = ["-t", title, "-m ", "\"" + sjis_str + "\""]; proc.run(false, args, args.length); // ---- snaka hack --- /* var oPrefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService).getBranch(""); const cid = "@tlhan-ghun.de/snarlInterface;4"; var snarlInterface = Components.classes[cid].createInstance(); snarlInterface = snarlInterface.QueryInterface(Components.interfaces.ISNARLINTERFACE); const extensionId = "firesnarl@snarl.de"; var iconPath=Components.classes['@mozilla.org/file/directory_service;1'] .getService(Components.interfaces.nsIProperties) .get("ProfD", Components.interfaces.nsILocalFile); iconPath.append("extensions"); iconPath.append(extensionId); iconPath.append("components"); iconPath.append("firefox-icon.png"); icon=iconPath.path; //var initReturnCode = snarlInterface.snRegisterConfig2(0, "FireSnarl", 0, icon, "FireSnarlWindow"); var generateWindow = snarlInterface.snGetWindowHandle("FireSnarlWindow"); snarlInterface.snShowMessageEx(title, text, time,icon,0,0,"",alertType); */ }
日本語がちゃんと表示できたのはいいが、長い文が折り返されず1行で表示されるのが結構ウザイ。
適当に"\n"を挟めばいいのかな?
同じ要領でThunderSnarlも置き換えれば使い勝手が向上しそうな予感。