
この記事では、GrowlNotify、Launchd、およびAppleScriptを使用して定期的にポップアップメッセージを表示する方法を示します(例として古典的なラテン語の表現を使用)。 このメモは初心者向けに設計されており、専門家は自分で新しいものを見つけることはほとんどありません。
イベントのリマインダー、ソーシャルネットワークからの新しいメッセージ、ネットワークサービスの監視と診断など、最小限の労力で必要なことを正確に実行できるように、前述のすべてのツールの概要を簡単に説明しました。 または、私が説明したようにすべてを実行し、しばらくして友達にラテン語のフレーズの知識を見せびらかすことができます。
サイエンティアポテンシアエスト。Growlnotify
Growlは、すべてのAdiumユーザーによく知られている通知通知ソフトウェアです。 Ubuntuの対応するものはnotify-osdパッケージです。 当然、APIだけでなく、コマンドライン(前述のユーティリティを使用)でも使用できます。
Growl ExtraからGrowlNotifyユーティリティをインストールします(標準のGrowlディストリビューションに含まれています)。 使い方はとても簡単です。
echo "Hello, world" | growlnotify
growlnotify --helpを使用して、すべての有用なオプションを取得でき
ます 。 この記事では、--iconオプション(ドキュメントのファイル拡張子に基づいたアプリケーションアイコンを使用)と--messageオプションを使用します。 独自のアイコン(--iconpathを参照)を使用できます。また、メッセージが自動的に消えないようにします(--waitを参照)。
スクリプトを書く
AppleScript Editorで、スクリプトを作成およびデバッグします(私の場合、〜/ Documents / edu / latin /にlatin.scptという名前で保存しました。
ここでソースを取得します)。
set filePath to "/Users/nuald/Documents/edu/latin/latin.txt"
set growlNotify to "/usr/local/bin/growlnotify"
set fp to open for access POSIX file filePath
set result to paragraphs of ( read fp as « class utf8 »)
set output to item ( random number from 1 to length of result ) of result
close access fp
do shell script growlNotify & " --icon scpt --message '" & output & "'"
すべてのファイルへのフルパスを指定する必要があることに注意してください。そうしないと、Launchdはそれらを見つけられません。 スクリプトをデバッグするには、
logコマンドの使用を忘れないでください。
この例では、
latin.txtファイルはUTF-8で
エンコードされています。 別のエンコーディングを使用する場合は、AppleScript言語ガイドの
readコマンドを参照して
ください 。 ファイル自体は、次の形式の一連の行にすぎません。
...
Rausa verba-less words
Paupertas non est vitium-貧困は悪ではない
Pax vobiscum! -平和をあなたと一緒に!
Aspera Ad Astraごと-いばらから星へ!
...
スクリプトはファイルを配列に読み込み、ランダムな要素を選択してgrowlnotifyにフィードします。
当然、AppleScriptの使用は純粋にオプションであり、任意のプログラミング言語で書かれたプログラムを実行できます。 しかし、AppleScriptには利点があります-システムとの便利な統合(アプリケーションの「辞書」ファイル->辞書を開くを参照)。 参考のため、/ライブラリ/スクリプト/のサンプルスクリプトを読むこともお勧めします。
起動したカスタマイズ
Launchdはプロセスを実行するためのデーモンであり、Appleはcron、xinetd、mach_init、およびinitの代わりとして位置付けています。 当然、cronを使用できますが、launchdには興味深いオプションと機能があり、興味のあるすべての人にとって非常に興味深いものになります。 詳細については、マニュアルを参照してください:
man launchd.plist 。
スクリプトをスケジュールどおりに実行するには、構成ファイル(plist)を作成して〜/ Library / LaunchAgentsに保存します(私の場合、ファイルの
名前は
edu.latin.plistです )。
プロパティリストエディターを開き、次を作成します(ただし、plistは通常のXMLファイルであるため、このエディターを編集用に使用し、最初から書き込むのではなく、このエディターを使用することをお勧めします)。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version= "1.0" >
<dict>
<key> Label </key>
<string> edu.latin </string>
<key> ProgramArguments </key>
<array>
<string> osascript </string>
<string> /Users/nuald/Documents/edu/latin/latin.scpt </string>
</array>
<key> StartInterval </key>
<integer> 900 </integer>
</dict>
</plist>
ラベルは必須であり、システムに固有でなければなりません。
osascriptを介してスクリプトを実行し
ます 。 間隔は
StartIntervalパラメーターによって調整され、秒単位で指定されます。
この構成は次のログインで機能しますが、すぐに開始できます。
$ launchctl load edu.latin.plist
launchctlには、タスクを操作するのに便利な他の興味深いコマンドがいくつかあります(特にlistコマンド)。
$ launchctl list | grep edu.latin
- 0 edu.latin
2番目の列に0が示されている場合、すべて正常です(終了コードが表示されます)。 そうでない場合は、ログ/var/log/system.logを参照してください。
追記
この機能はMacOSXに固有のものではありません。たとえば、Linuxでは、cronおよびnotify-send(libnotify-binパッケージから)で同じ機能を複製できます。 Windowsには
Growl for Windowsとタスクスケジューラがあります。 ただし、一般的に、MacOSXでは、いくつかのことが便利で簡単に実行できます(launchd.plistのさまざまなパラメーター、特にWatchPathsとStartOnMountに精通することをお勧めします)。あなたのタスク。