Linux版・Mac版OperaでSpeak selectionもどき

LinuxOperaに喋らせる

Speak selection

というアクションはWindows版にしか無いのだが、Execute programを使えばLinux版でも選択文字列を読んでくれる。

元ネタ

espeakというプログラムを使う。

Ubuntuだったら、

sudo apt-get install espeak

でまずespeakをインストールして、

詳細設定の[ツールバー]から、[メニュー設定]で、デフォルトのやつをコピーしておく。(既に自分用のを使っている場合はこのあたりは分かってると思うので、適宜読み変えてください)

~/.opera/menu/standard_menu_1.ini

テキストエディタで開いて、

[Hotclick Popup Menu]

という項目の中に、

Item, "Read This" = Execute program, "espeak","%T"

という行を追加する。

.ini ファイルの編集中は Opera を閉じておくのをお忘れなく。

これで、次に Opera を開いて、適当な文字列を選択して右クリックすると、Read This というメニューが増えているのでクリックすればいい。

たぶん日本語では無理。

MacOperaのExecute program

MacではExecute programが使えないと思っていたんだけど、実は、制約があるだけでちゃんと使うことが出来た。

試しに、

Execute program, "/Applications/Safari.app", "http://www.google.com"

というアクションを実行してみたら、ちゃんとTextEditが起動するはず。

Execute program, "/Applications/Safari.app", "%s" (キャッシュファイルのパス)
Execute program, "/Applications/Safari.app", "%u" (現在開いているページのURL)

も大丈夫。ただしこれは、Safari で http:// や file:// パスを開けるということが、Info.plist に書いてあるからみたいだ。


だから、シェルスクリプトなどの、.app 形式ではないプログラムは実行できない。

MacOperaに喋らせる

Mac標準装備のsay関数を使う

まず下のページから、FirefoxProfileManager.app.zip をダウンロードしてきて、zip を展開する。

パッケージの中の、

FirefoxProfileManager.app/Contents/MacOS/core.sh

を以下のように書き換える。

#!/bin/sh

say `pbpaste` &\

/Applications/Opera.app

pbpaste を使ってクリップボードで引数を渡すわけ。

最後に /Application/Opera.app を実行しているのは、GUI の無いこのアプリケーションに Opera のフォーカスを奪われてしまうので、またフォーカスを Opera に戻すため。

アプリケーションパッケージについて
  • 一応 FirefoxProfileManager.app から SayItOpera.app に変えて、/Applications に置く。(別に名前や場所はどこでもいいけど、下の説明のため)
  • パッケージの見栄えを良くするために、パッケージの中の icon.icns を Opera のそれなどに置き変える。下を使ってもいい。
  • パッケージの中の、Info.plist を Property List Manager で開いて、LSUIElement というキーを作り、値を 1 にする。(ドックにアイコンが出るのを防ぐ)
Operaでの設定

Linux のときと同じように、自分の menu.ini に

Item, "Say It" = Copy & Execute program, "/Applications/SayItOpera.app"

と追加する。

または、下の文字列をコピーしてアドレスバーに貼り付けてエンター→出てきたものをツールバーにドラッグ&ドロップすればボタンになる。

data:text/html;charset=utf-8,<a href='opera:/button/Copy,,,,"Start listening" & Execute program,"/Applications/SayItOpera.app",,,"Start listening"'>SayIt</a>

日本語不可。クリップボード (ペーストボード) を書き換えられるので注意。


↓こんな感じで SayIt ボタンを押したら喋ってくれる。聞かせてあげられないのが残念。