月別: 2017年6月

TrashBoxPlus.app – 更新その1

デスクトップに置くゴミ箱

TrashBoxPlus.appは、OS 9時代のゴミ箱機能を再現したものです。
デスクトップ上に置いたTrashBoxPlus.appのアイコンの上に、ファイル、フォルダ、光ディスク、USBメモリ、ハードディスクなどのアイコンをドロップしてください。
イジェクトできるものはイジェクトし、ゴミ箱へ入れられるものはゴミ箱へ入れます。
TrashBoxPlus.appアイコンをダブルクリックした際には、ゴミ箱を開きます。

デスクトップ上にゴミ箱が存在しない環境も、10年も経てば当たり前になってしまって、今では逆になんだこれって思われそうです。
エイリアスをドロップしても、本体を持っていかない(これが当たり前なのですが…)稀有なツールです。
ネットワークボリュームや外付けドライブのアンマウントはFinderそのものよりもスムーズだったりします。

変更点

  • Sierraで挙動不審になっていた部分を修正

ダウンロード

http://amstudio.sytes.net/amweb/TrashBoxPlus.iso.zip
※TrashBoxPlus.appの著作権は放棄いたしませんが、対価は不要です。自己責任で、自由にお使いください。
TrashBoxPlus.appの使用に関して、作者はいかなる責任も負いません。
インターネット上のリンクは、作者への事前/事後の承諾は不要ですので、自由にリンクして下さい。
基本的に、再配布・転載は認めません。

広告

Make_hybrid.app—ダウンロード停止

先日公開いたしましたMake_hybrid.appですが、これで作成したイメージファイルにおいて、一部のバンドルパッケージ内でシンボリックリンクを含むもの(結構当たり前の仕様なのですが…)を第1階層において作られたものから、シンボリックリンクを読み出せないことがあるということがわかりました。
UDFフォーマットにしたことが原因のようで、ISO9660では起こらない現象です。
従いまして、ダウンロードは停止し、トピックスは削除いたしました。

Gooey Gadgets.appなき今 – AppleScriptでプログレスバーもどきを作ってみる

macOS Sierraとなってから(だった思います)‘Gooey Gadgets.app’が起動できなくなってしまったので、AppleScriptからプログレスバーを簡単に表示できる手段を失ってしまった格好です。

‘Gooey Gadgets.app’を使っていた際の手順は以下のような行程でした。

  • Script内でメインの処理プロセスをコールする直前に外部プロセスとしてプログレスバーを呼び出す
  • Script内の処理が終わった段階でプログレスバー表示を終了させる
  • 後処理としてScriptの終了処理をする

調べてみると‘cocoaDialog.app’というアプリケーションがあるようです(ザリガニが見ていた…さんのページを参考にしました)。
が、使ってみると、スクリプト内から‘do shell script…’で“ –indeterminate”モードでコールすると、Script内のプロセスとして‘cocoaDialog’が組み込まれてしまうので、Scriptの次のステップに移れなくなってしまい、私の技量レベルでは使えそうにありません。
(別プロセスとして‘cocoaDialog.app’を起動するためのアプリケーションを用意するという手がありそうですが、あまり気乗りのする手段ではなさそうです。)

こうなれば自作してみる – AppleScript

私が欲しいものは、進捗状況を反映したものではなく、単に“処理中です…”などのテキストを表示してくれればいいだけのものです。まさに‘Gooey Gadgets.app’のようなシンプルなアプリケーションであればいいのです。
プログレスバーに進捗状況を反映させるだけの技量はないので、プログレスバーもどきとしてScriptの処理中に画面に“処理中…”などと表示させればいいので、AppleScriptの‘progress’を使ってアプリケーションを仕立ててみることにしました。
Script自体はいたって簡単です。

set progress total steps to 100 -- ここから
repeat with i from 1 to 100
	set progress completed steps to i
	delay 0.2
end repeat -- ここまでは、まさにダミーで、なんら進捗状況を反映しているわけではありません。
set progress description to "処理中です。
しばらくお待ちください..."
with timeout of 7200 seconds -- まあ2時間もあればいいかと...
	set progress total steps to -1
	delay 7200
end timeout

必ず、アプリケーション形式で保存します。今回は、そのまま‘Dialog.app’という名前で、アプリケーションフォルダ内へ保存しました。
固定表示の時間設定は、使い勝手に合わせて適当に書き換えればいいでしょうが、中途半端に短いとScriptの処理の途中で画面表示が終わってしまいます。

Script内で呼び出す時は、

‘do shell script “/Applications/Dialog.app/Contents/MacOS/applet”’

あるいは

‘do shell script “open /Applications/Dialog.app”’

で呼び出せばいいでしょう(アプリケーションフォルダ内を前提にしています)。(直接実行ファイルを叩くと、外部アプリケーションとして扱えないようで、appletの処理待ちになってしまいますので、‘do shell script “open /Applications/Dialog.app”’という起動の仕方を使ってください — 2017.06.23)
‘Dialog.app’を終了させてダイアログを消す時は、‘do shell script “killall applet”’を使った方が間違いがないようです。‘tell application “Dialog” to quit’でやると、何度か空振りしてしまいました。
‘do shell script “killall applet”’を使う時には、同時に複数のAppleScriptアプリケーションが起動していないように注意してください。

と、ここまで書いた後に、実行ファイル、”/Applications/Dialog.app/Contents/MacOS/applet”の名称を‘applet’から‘Dialog’にリネームしてみました。動きました。
となると、
Script内で呼び出す時は、

‘do shell script “/Applications/Dialog.app/Contents/MacOS/Dialog”’

でOKで、終了は、

‘do shell script “killall Dialog”’

でいけることになります。

補足と修正 – 17.06.21

実行ファイル、”/Applications/Dialog.app/Contents/MacOS/applet”の名称を‘applet’から‘Dialog’にリネーム後に、‘Info.plist’の中も書き換えていたことを書き忘れていたのですが、その後、再現してみると‘Info.plist’を書き換えると、アプリケーションの起動時に初期画面が出てしまうことがわかりました。現時点で、リネームしてそのまま起動させる方法が分からなくなってしまったのでリネームなしで使った方がいいようです。m(._.)m

ダウンロード

アプリケーションを下記アドレスからダウンロード可能としました。
http://amstudio.sytes.net/amweb/Dialog.iso.zip

(このアプリケーションは、”Dialog.app/Contents/MacOS/applet”の名前を変更していません。環境に合わせて、必要であればリネームしてください)

※アプリケーションの著作権は放棄いたしませんが、対価は不要です。自己責任で、自由にお使いください。
インターネット上のリンクは、作者への事前/事後の承諾は不要ですので、自由にリンクして下さい。
基本的に、再配布・転載は認めません。

保証

動作に関する保証はいたしません。また、使用によって生じたと思われるいかなる損害に対しても、作者は一切責任を負いません。使用は御自身の責任において行なってください。