2010-03-31

SleipnirでPerlを使う。

下準備

ActivePerl をインストール。

厳密には Perl じゃなくて PerlScript を使います。
ドキュメントは %perl%/html/Windows/WindowsScriptHost.html


Sleipnirスクリプト(WSH) で PerlScript を使う

%Sleipnir%/scripts/ に入れて使う方法。

標準では .pls に関連付けられているので
作ったものを hoge.pls など適当に名前をつけて保存。

%Sleipnir%/scripts/ に入れる。
メニューバー → スクリプト から実行。


.pls がプレイリストとバッティングしてる場合は
どう関連付けを変更すればいいのかわかりませんが

のような書き方で hoge.wsf として保存すれば実行できます。


UserActionスクリプト で PerlScript を使う

%Sleipnir%/plugins/scripts/ に入れて使う方法。

%Sleipnir%/resources/languages/default/english/ScriptEngine.ini
に追記することで対応言語を増やせるので
[StringTable]
js=JScript
vbs=VBScript
となっているのを
[StringTable]
js=JScript
vbs=VBScript
pl=PerlScript
と変更。

あとは作ったものを hoge.pl など適当に名前をつけて保存。
%Sleipnir%/plugins/scripts/
に入れればActionとして使えます。

もちろん Perl のモジュールも使い放題。
公式?の Sleipnir.pm というのもありますよ。

- 参考記事 -
UserAction Extension でオレオレスクリプトのススメ (1) (フェンリル | デベロッパーズブログ)
UserAction Extension でオレオレスクリプトのススメ (2) (フェンリル | デベロッパーズブログ)
UserAction Extension でオレオレスクリプトのススメ (3) (フェンリル | デベロッパーズブログ)
UserAction Extension でオレオレスクリプトのススメ (4) - そして伝説へ - (フェンリル | デベロッパーズブログ)
その後の「UserAction Extension でオレオレスクリプト」 (フェンリル | デベロッパーズブログ)

日本語使うとエラー出たりする

PerlScript で日本語が含まれると読み込まれるbyte数が短くなる。

PerlScript - miau's blog?
ActivePerlのPerlScriptで日本語
Bug 40776 – 2-byte character problem with PerlScript

これはうちの環境、winXP SP3、Sleipnir2.9.3、ActivePerl v5.10.1でも発生。
use strict;
use warnings;
use Win32::OLE;

my $pnir     = Win32::OLE->CreateObject("Sleipnir.API");
my $id       = $pnir->GetDocumentID($pnir->ActiveIndex);
my $window   = $pnir->GetWindowObject($id);
my $document = $pnir->GetDocumentObject($id);

if(!$document) {
 $pnir->Beep();
 $pnir->MessageBox("エラー:Documentオブジェクトが作成できませんでした");
} else {
 $pnir->Beep();
 $pnir->MessageBox("寿限無寿限無五劫の擦り切れ海砂利水魚の水行末雲来末風来末食う寝る処に住む処やぶら小路の藪柑子パイポパイポパイポのシューリンガンシューリンガンのグーリンダイグーリンダイのポンポコピーのポンポコナーの長久命の長助");
}

__END__ 
原因は内部処理で文字数とbyte数がごっちゃになってるせいらしい。
UTF8で書いても回避できません。

ずいぶんとほったらかしのバグですが、いまだに "Status: UNCONFIRMED" ってなんで?


解決するには
 1. 日本語を使わない。
 2. ファイル全体の文字数 > スクリプト部分のバイト数 になるようにスペース等を入れて調節する。
 3. require や use で動的・静的コンパイルする。
のどれかのようです。


では、動的・静的コンパイルを試してみましょう。
Sleipnir のインストール先は C:/sleipnir293/ とします。

Sleipnirスクリプト(WSH)
C:/sleipnir293/
 └ scripts/
  ├ JugemuPLS.pls
  ├ JugemuPM.pm
  ├ call_JugemuPLS.pls
  └ call_JugemuPM.pls

# JugemuPL.pl, JugemuPLS.pls, JugemuPM.pm
use strict;
use warnings;
use Win32::OLE;

my $pnir     = Win32::OLE->CreateObject("Sleipnir.API");
my $id       = $pnir->GetDocumentID($pnir->ActiveIndex);
my $window   = $pnir->GetWindowObject($id);
my $document = $pnir->GetDocumentObject($id);

if(!$document) {
 $pnir->Beep();
 $pnir->MessageBox("エラー:Documentオブジェクトが作成できませんでした");
} else {
 $pnir->Beep();
 $pnir->MessageBox('寿限無寿限無五劫の擦り切れ海砂利水魚の水行末雲来末風来末食う寝る処に住む処やぶら小路の藪柑子パイポパイポパイポのシューリンガンシューリンガンのグーリンダイグーリンダイのポンポコピーのポンポコナーの長久命の長助');
}

1;
__END__
# call_JugemuPLS.pls
use lib qw(C:/sleipnir293/scripts);
require 'JugemuPLS.pls';
# call_JugemuPM.pls
use lib qw(C:/sleipnir293/scripts);
use JugemuPM;

call_JugemuPLS.pls, call_JugemuPM.pm をそれぞれ実行。
Shift-JIS以外だと文字化けしますが、エラーは出ません。


UserActionスクリプト
C:/sleipnir293/
 └ plugins/
  └ scripts/
   ├ JugemuPL.pl
   ├ JugemuPM.pm
   ├ call_JugemuPL.pl
   └ call_JugemuPM.pl

# call_JugemuPL.pl
use lib qw(C:/sleipnir293/plugins/scripts);
require 'JugemuPL.pl';
# call_JugemuPM.pl
use lib qw(C:/sleipnir293/plugins/scripts);
use JugemuPM;

call_JugemuPL.pl, call_JugemuPM.pl をそれぞれ実行。
これもエラーは出ません。


もう少し何とかする
実行ファイル と 呼び出すファイル の2つが必要とはいえ
日本語がエラーなしで使えるのはありがたい。

そこでもう少し環境を詰めてみる。

.pm はモジュールなのでモジュール以外には使わない。

呼び出すファイルが
 Sleipnirスクリプト(WSH) は .pls
 UserActionスクリプト は .pl
というのは管理が煩雑になるので .pls に統一する。

Sleipnir.pm もあることだし %perl%/site/lib/Sleipnir/ 以下にスクリプトを放り込んでおけば
Sleipnirスクリプト(WSH) でも UserActionスクリプト でも
use lib しなくていいので便利かなと。

C:/perl/
 └ site/
  └ lib/
   ├ Sleipnir/
   │ ├ UAS_hoge.pls
   │ └ WSH_hoge.pls
   └ Sleipnir.pm
実行環境の違いも考慮するならこうした方がいいのかな。
C:/perl/
 └ site/
  └ lib/
   ├ Sleipnir/
   │ ├ UAS/
   │ │ └ UAS_hoge.pls
   │ └ WSH/
   │  └ WSH_hoge.pls
   └ Sleipnir.pm
C:/sleipnir293/
 ├ scripts/
 │ └ call_WSH_hoge.pls
 └ plugins/
  └ scripts/
   └ call_UAS_hoge.pls
ディレクトリで分けるかどうかはお好みで。


ということで変更点は3つ。

1. ScriptEngine.ini を編集。
C:/sleipnir293/resources/languages/default/english/ScriptEngine.ini

[StringTable]
js=JScript
vbs=VBScript
pl=PerlScript
pls=PerlScript
に変更して UserActionスクリプト で *.pls を実行できるように。


2. 実行ファイルと Sleipnir.pm を設置。
C:/perl/
 └ site/
  └ lib/
   ├ Sleipnir/
   │ ├ UAS_hoge.pls
   │ └ WSH_hoge.pls
   └ Sleipnir.pm
# 実行ファイルのテンプレはこんな感じで。
# 日本語が使えます。

# 一応 package 使った方がいいかも。
package Sleipnir::hoge;

use strict;
use warnings;
use Sleipnir;

my $pnir     = Sleipnir->new;
my $id       = $pnir->id;
my $window   = $pnir->window($id);
my $document = $pnir->document($id);

if(!$document) {
 $pnir->Beep();
 $pnir->MessageBox("エラー:Documentオブジェクトが作成できませんでした");
} else {
 # code
}

# この 1 は必須です。
1;
__END__

3. 呼び出すファイル(*.pls)を設置して実行。
C:/sleipnir293/
 ├ scripts/
 │ └ call_WSH_hoge.pls
 └ plugins/
  └ scripts/
   └ call_UAS_hoge.pls
require 'Sleipnir/WSH_hoge.pls';
require 'Sleipnir/UAS_hoge.pls';

__END__
# 呼び出すファイルのテンプレはこんな感じで。
# 日本語でコメントを書く場合は __END__ 以下に書けます。


実際に動かしてみる
C:/perl/
 └ site/
  └ lib/
   ├ Sleipnir/
   │ └ Jugemu.pls
   └ Sleipnir.pm
C:/sleipnir293/
 ├ scripts/
 │ └ call_Jugemu.pls
 └ plugins/
  └ scripts/
   └ call_Jugemu.pls
# Jugemu.pls
package Sleipnir::Jugemu;

use strict;
use warnings;
use Sleipnir;

my $pnir     = Sleipnir->new;
my $id       = $pnir->id;
my $window   = $pnir->window($id);
my $document = $pnir->document($id);

if(!$document) {
 $pnir->Beep();
 $pnir->MessageBox("エラー:Documentオブジェクトが作成できませんでした");
} else {
 $pnir->Beep();
 $pnir->MessageBox('寿限無寿限無五劫の擦り切れ海砂利水魚の水行末雲来末風来末食う寝る処に住む処やぶら小路の藪柑子パイポパイポパイポのシューリンガンシューリンガンのグーリンダイグーリンダイのポンポコピーのポンポコナーの長久命の長助');
}

1;
__END__
# call_Jugemu.pls
require 'Sleipnir/Jugemu.pls';

__END__
これでもShift-JIS以外は文字化けするので
文字コードが問題になるのなら
UTF8で書いてShift-JISで出力すればOK。
# JugemuUTF8.pls
package Sleipnir::JugemuUTF8;

use utf8;
use strict;
use warnings;
use Encode qw/encode/;

use Sleipnir;

my $pnir     = Sleipnir->new;
my $id       = $pnir->id;
my $window   = $pnir->window($id);
my $document = $pnir->document($id);

if(!$document) {
 my $txt = 'エラー:Documentオブジェクトが作成できませんでした';
 $txt = encode('Shift_JIS', $txt);

 $pnir->Beep();
 $pnir->MessageBox($txt);
} else {
 my $txt = '寿限無寿限無五劫の擦り切れ海砂利水魚の水行末雲来末風来末食う寝る処に住む処やぶら小路の藪柑子パイポパイポパイポのシューリンガンシューリンガンのグーリンダイグーリンダイのポンポコピーのポンポコナーの長久命の長助';

 $txt = encode('Shift_JIS', $txt);

 main::MsgBox($txt);

 $window->alert($txt);

 $pnir->Beep();
 $pnir->MessageBox($txt);
}

1;
__END__

こんな感じでいかがでしょうか?
早くバグ修正してくれないかなー。


- 関連記事 -
Aragger: Sleipnirのスクリプトがわかりにくいので整理してみる。

Sleipnirのスクリプトがわかりにくいので整理してみる。

Sleipnirのスクリプトがわかりにくいので整理してみる。

スクリプトが置ける場所は以下の4つ。
%Sleipnir% は Sleipnir のインストールフォルダ。
%Sleipnir%/bookmarklet/
%Sleipnir%/scripts/
%Sleipnir%/plugins/scripts/
%Sleipnir%/plugins/seahorse/

■ %Sleipnir%/bookmarklet/

[使用言語] JavaScript

アドレスバー拡張メニュー用のスクリプトを置くフォルダ。
お気に入りのブックマークレットとは関係ない。

セキュリティで「JavaScript の実行を許可」しないと使えない。

タブブラウザ Sleipnir オンラインデータベース(各部の名称と使い方) - アドレスバー拡張メニュー
タブブラウザ Sleipnir オンラインデータベース(Tips) - アドレスバー拡張メニューの編集


■ %Sleipnir%/scripts/

[使用言語] JavaScript, VBScript, 他

Sleipnir 1.xx互換スクリプト(WSHスクリプト)を置くフォルダ。
メニューバーの「スクリプト」から利用できる。
「Sleipnir オプション→クライアント→全般」の「スクリプトによるクライアントの操作を許可する」を有効にしないと使えない。

フォルダ名の先頭が「$」になっているフォルダは、メニューバーの「スクリプト」に表示されない。
以下のフォルダには特別な役割がある。

%Sleipnir%/scripts/$AdvancedPageSearchBar
ページ検索バーの「拡張スクリプトを実行」ボタンから使用するスクリプトを置くフォルダ。

%Sleipnir%/scripts/$OnDoubleClick
アウトプットDockをダブルクリックした場合に呼び出されるスクリプトを置くフォルダ。
このフォルダ内のスクリプトは、他のスクリプトから呼び出される形で使用される。

タブブラウザ Sleipnir オンラインデータベース(スクリプト)
タブブラウザ Sleipnir オンラインデータベース(Sleipnir.API リファレンス)
タブブラウザ Sleipnir オンラインデータベース(スクリプトの開発)
タブブラウザ Sleipnir オンラインデータベース(Sleipnirスクリプト作成法)
タブブラウザ Sleipnir オンラインデータベース(スクリプトの開発 FAQ)
タブブラウザ Sleipnir オンラインデータベース(スクリプトの開発 Tips)

■ %Sleipnir%/plugins/scripts/

[使用言語] JavaScript, VBScript, 他

UserAction Extensionをインストールすると作成される。
UserActionスクリプト(Sleipnir組み込みスクリプト)を使用する場合は、スクリプトをここに置く。

%Sleipnir%/plugins/scripts/embedded
Hawkeye等をインストールすると作成される。
特定プラグイン用のSleipnir組み込みスクリプトが置かれる。

タブブラウザ Sleipnir オンラインデータベース(Sleipnir.API リファレンス)
タブブラウザ Sleipnir オンラインデータベース(UserActionスクリプト)
タブブラウザ Sleipnir オンラインデータベース(組み込みスクリプトの書き方)
タブブラウザ Sleipnir オンラインデータベース(スクリプトの開発 Tips) - UserAction スクリプトを wscript.exe で実行する

■ %Sleipnir%/plugins/seahorse/

[使用言語] JavaScript

SeaHorseをインストールすると作成される。
SeaHorseスクリプトを使用する場合は、SeaHorseスクリプト(*.user.js)をここに置く。

JavaScript を描画エンジンが処理するため、セキュリティで「JavaScript の実行を許可」しないと動作しない。


ヘッダに以下の行を追加するとSleipnirScriptとして動作。
// @type SleipnirScript
この場合、「JavaScript の実行を許可」 は関係ないが
「スクリプトによるクライアントの操作を許可する」を有効にしないと使えない。

タブブラウザ Sleipnir オンラインデータベース(SeaHorseスクリプト)
タブブラウザ Sleipnir オンラインデータベース(Sleipnir.API リファレンス)
タブブラウザ Sleipnir オンラインデータベース(組み込みスクリプトの書き方)
Fenrir User Community - SeaHorseのJSからVBSを呼び出す方法



スクリプト実行環境

Sleipnirにはスクリプト実行環境が3つある。

1. ブラウザの描画エンジン(Trident, Gecko)

[使用言語] JavaScript

[実行パス]
%Sleipnir%/bookmarklet/
%Sleipnir%/plugins/seahorse/
お気に入りのブックマークレット


2. Windows Script Host(WSH)

[使用言語] JavaScript, VBScript, 他

[実行パス]
%Sleipnir%/scripts/

標準でJavaScript、VBScriptに対応。
環境依存になるが、Windows Script Host(WSH)で動く言語なら何でも使える。

実行されるスクリプトは
・Sleipnirスクリプト
・Sleipnir1.xx互換スクリプト
・WSHスクリプト
などと呼ばれる。


3. SleipnirScript

[使用言語] JavaScript, VBScript, 他

[実行パス]
%Sleipnir%/plugins/scripts/
%Sleipnir%/plugins/seahorse/

Sleipnirに独自に実装されている、スクリプト実行環境。
SleipnirScript≠Sleipnirスクリプト(WSH)と非常にまぎらわしい。
WSH を介さずメインスレッドで動作するので高速。

一方で
・WSH のプロパティ・メソッドが使えない。
・Sleep() でブラウザの全ての処理が止まってしまうため、
 ページの読み込みを待つ等の処理ができない。
という短所がある。

実行されるスクリプトは
%Sleipnir%/plugins/scripts/ 以下なら
・Sleipnir組み込みスクリプト
・UserActionスクリプト

%Sleipnir%/plugins/seahorse/ 以下なら
・SeaHorseスクリプト
などと呼ばれる。


%Sleipnir%/resources/languages/default/english/ScriptEngine.ini
に追記することで対応言語を増やせる。
[StringTable]
js=JScript
vbs=VBScript
となっているので
拡張子=スクリプト名
と追記する。

- Ruby
sleipnir-api-0.4.1 Documentation

- Perl
UserAction Extension でオレオレスクリプトのススメ (1) (フェンリル | デベロッパーズブログ)
UserAction Extension でオレオレスクリプトのススメ (2) (フェンリル | デベロッパーズブログ)
UserAction Extension でオレオレスクリプトのススメ (3) (フェンリル | デベロッパーズブログ)
UserAction Extension でオレオレスクリプトのススメ (4) - そして伝説へ - (フェンリル | デベロッパーズブログ)
その後の「UserAction Extension でオレオレスクリプト」 (フェンリル | デベロッパーズブログ)




関連用語をチェック

タブブラウザ Sleipnir オンラインデータベース(用語辞典)

■ SeaHorse Extension 【しーほーす・えくすてんしょん】[名] †
Sleipnir 2.xx用のプラグイン。

このプラグインを使用すると、ページ読み込み完了時にスクリプトを自動実行できるようになる。
主に表示前のソースを改変する目的で使われる。
「ブックマークレットを自動実行してくれるもの」
「Webページを受信側で勝手に書き換えられるようになるもの」と考えるとわかりよい。

スクリプト次第で、「一部のフォントを変える」といった小規模な調整から、
「異なるページを接合して1ページに表示する」といった大規模な改変まで可能になる。

ただし「スクリプト使用数が多いとSleipnirの動作が重くなる」
「スクリプトの不具合により想定外の支障が起こりうる」といったリスクも発生する。
セキュリティやモラルの問題もあり、使用に際してはある程度の見識が求められる。

SeaHorse Extensionで使用するスクリプトプログラムは「SeaHorseスクリプト」と呼ばれる。
SeaHorseスクリプトは基本的に「JavaScriptとして記述」し「描画エンジンで動作」するものだが、
目的によっては「Sleipnir組み込みスクリプトとして記述」し「SleipnirScriptで動作」させることもできる。

■ Sleipnir.API 【すれいぷにる-えー・ぴー・あい】[名] †
Sleipnirの機能拡張プログラム(Sleipnir用スクリプト、Sleipnir組み込みスクリプト、Sleipnir用プラグイン)が
利用できる、Sleipnir用の特殊な関数のこと。
これを活用すると、Sleipnirの状態を調べたり、Sleipnirに指示を出したりできる。

Sleipnir 1.xx にも 2.xx にも組み込まれているが、両方のバージョンの併用はできず、
どちらか片方のバージョンの Sleipnir.API しか呼び出せないようになっている。

「API」は「Application Programming Interface」の略。

■ Sleipnir スクリプト 【すれいぷにる-すくりぷと】[名] †
Sleipnir専用の機能拡張スクリプト。
Sleipnirの機能を拡張する方法のひとつ。
比較的小~中規模の機能実現に適している。

「Sleipnir用スクリプト」「1.xx 互換スクリプト」「WSH スクリプト」とも言われる。
SleipnirScriptとは別物なので注意。

Sleipnirの機能を拡張する方法としてはSleipnir用プラグインがあるが、
Sleipnirスクリプトはプラグインよりも手軽に作成でき、かつ導入も容易である。
またSleipnirスクリプトは、Sleipnir本体と連携を行うための仕組み「Sleipnir.API」を活用できるため、
ブックマークレットよりも緊密な機能を実現することができる。
スクリプトの作成言語には JScript と VBScript が使用可能。

Sleipnirスクリプトを利用するには、
「Sleipnir オプション→クライアント→全般」の
「スクリプトによるクライアントの操作を許可する」を有効にする必要がある。
これによりメニューバーの「スクリプト」からSleipnirスクリプトを実行できるようになる。

■ Sleipnir 組み込みスクリプト 【すれいぷにる-くみこみ-すくりぷと】[名] †
スクリプト実行環境「SleipnirScript」上で実行されるSleipnir用スクリプト。
Sleipnirの機能を拡張することができる。
メニューバーの「スクリプト」から使用するSleipnirスクリプトとは別物なので注意。

スクリプトの作成、実行にあたっては以下のような特徴がある。

・Sleipnir.APIを使用できる(レジストリへの登録と Sleipnir オプションの設定が必要)。
・Sleipnirに搭載されているデータベースエンジン「SQL」を使用できる。
・作成言語にはJScriptかVB スクリプトが使用可能。
・スクリプトの実行は、Sleipnir 2.xxに独自に実装されているスクリプト実行環境「SleipnirScript」で行われる。

wscript.exe は利用しないため、従来のSleipnir スクリプトと互換性が無い。
つまり「機能拡張スクリプト」全般のことではなく、
その中でも「SleipnirScriptという実行エンジン上で動作するスクリプト」のこと。

具体的には、
・UserAction Extensionで使用するスクリプト
・SleipnirScriptで実行するよう指定されているSeaHorse用スクリプト
以上が「Sleipnir組み込みスクリプト」である。

■ SleipnirScript 【すれいぷにる-すくりぷと】[名] †
Sleipnirに独自に実装されている、スクリプト実行環境。
「Sleipnir 組み込みスクリプト」を実行できる機構。
実行エンジンにWindows Script Host(WSH)を使用した従来の方式と異なり、
高速かつ安全にスクリプトを実行できるとされている。

広義には、実行対象である「Sleipnir 組み込みスクリプト」そのものを指すこともある。
技術的な話題では混同に注意。

■ UserAction Extension 【ゆーざー-あくしょん・えくすてんしょん】[名] †
Sleipnir 2.xx用のプラグイン。
このプラグインを使用すると、Sleipnir組み込みスクリプトをアクションとして扱えるようになる。
例えば、スクリプトをキーボードショートカットやマウスジェスチャから実行できるようになる。

メニューバーの「スクリプト → スクリプトの整理」とはスクリプトファイルの設置場所が違うので注意すること。

■ Windows Script Host 【うぃんどうず-すくりぷと-ほすと】[名] †
略称「WSH」。
Windows上でスクリプトプログラム(~.js、~.vbs等)を実行できる仕組み。
最近のWindows PCには標準で搭載されている。
手軽に使えるが、ファイル削除、レジストリの書き換えなども行えるため、
WSHで実行されるスクリプトは実行ファイル(~.exe等)と同等の危険性も持つ。

Sleipnirの「メニューバー → スクリプト」で動作させるスクリプト(Sleipnirスクリプト)は
このWSH上で動作している(Sleipnir組み込みスクリプトとは別物なので注意)。

■ スクリプト 【すくりぷと】[名] †
スクリプト言語と呼ばれるプログラミング言語で作成された一種のプログラムの事。

Sleipnirが扱うスクリプトは大きく分けて二種類ある。

ひとつはWebページの製作者が用意するスクリプトで、一般的には JavaScript が使われる。
主にWebページに動きを与える目的で使用されており、基本的にどのWebブラウザでも使用可能。
HTMLファイル等とともにレンダリングエンジンに読み込まれ処理している。
レンダリングエンジンが処理をするという意味では、ブックマークレットもこちらに含まれる。

もうひとつはローカル(HDD上など)に置いたスクリプトファイル(拡張子 .js .vbs)をメニューバーなどから呼び出して使用する
Sleipnir専用のスクリプトであり、Sleipnir でスクリプトと言えば主にこちらの意味で使われることが多い。
こちらはレンダリングエンジンではなくWindows Script Host(WSH))が処理し、
WebページはもとよりSleipnirやOSの制御が可能で、Sleipnir にさまざまな機能をユーザーが独自に追加することができる。

ただし、このSleipnir独自のスクリプト機能は高い柔軟性を持つ一方、
悪意のあるスクリプトを作成することも可能なため、実行の際は注意を払う必要がある。
故に、入手元が信用できないスクリプトは使わない方が良い。

■ ブックマークレット 【ぶっくまーくれっと】[名] †
ブックマーク(お気に入り)に、URLではなくJavaScriptを登録しておくこと。
そのブックマークを開くと、記しておいたスクリプトが実行される。

Sleipnirはブックマークレットに対応しており、
お気に入りをクリックした時に新しいウィンドウを開く設定にしていても、
ブックマークレットをクリックした場合は新しいウィンドウを開かず
アクティブなウィンドウに対してスクリプトを実行する仕組みが取り入れられている。

なお、アドレスバー拡張メニューについてもアクション名やフォルダ名に何故か「bookmarklet」という単語が用いられている。
混同しないよう注意(基本的には同じスクリプトを実行できる)。

タブブラウザ Sleipnir オンラインデータベース(Sleipnir2 フォルダ構成)

■ %Sleipnir%/bookmarklet/
アドレスバー拡張メニュー用のスクリプトを納めるフォルダです。
具体的な使用法については「各部の名称と使い方|アドレスバー拡張メニュー」
「Tips|アドレスバー拡張メニューの編集」をご覧下さい。

まぎらわしいですが、お気に入り内のブックマークレットとは関係ありません。

■ %Sleipnir%/plugins/
以下のフォルダは初期状態では存在しません。
特定のプラグインを追加すると作成、使用されます。

■ %Sleipnir%/plugins/scripts/
・UserAction Extensionをインストールすると作成される
・UserActionスクリプト(Sleipnir組み込みスクリプト)を使用したい場合は、スクリプトファイルをここに入れる

■ %Sleipnir%/plugins/scripts/embedded/
・Hawkeye等をインストールすると作成される
・特定プラグイン用のSleipnir組み込みスクリプトが置かれる

■ %Sleipnir%/plugins/seahorse/
・SeaHorseをインストールすると作成される
・SeaHorseスクリプトを使用したい場合は、SeaHorseスクリプト(~.user.js)をここに入れる

■ %Sleipnir%/scripts/
Sleipnir用の1.xx互換スクリプト(WSHスクリプト)が納められています。
拡張子「.js」「.vbs」のファイルをここに入れると、メニューバーの「スクリプト」から利用できます。
スクリプトについての詳細は「スクリプト」をご覧下さい。

フォルダ名の先頭が「$」になっているフォルダは、メニューバーの「スクリプト」に表示されません。
以下のフォルダには特別な役割があります。

$AdvancedPageSearchBar
ページ検索バーの「拡張スクリプトを実行」ボタンから使用するスクリプトを納めるフォルダです。

$OnDoubleClick
アウトプットDockをダブルクリックした場合に呼び出されるスクリプトを納めるフォルダです。
このフォルダ内のスクリプトは、他のスクリプトから呼び出される形で使用されます。



スクリプト作成 参考リンク

Fenrir User Community - Developer フォーラム (SLDEV)
プヨぷよの日記
由々識の気まぐれ日記
Sleipnir Assembly House for Kittens - Sleipnir Syndication
Yuyu's Digital Lab.
Sleipnir Unofficial Script Page
Sleipnirist
cubic9.com - Sleipnir_Script
Sleipnir2スレ
958lab
958 Wiki*
ここここあ