About

  • Macintosh の自作ソフトウェアを公開しています。
  • 配布しているアプリケーションは、すべてフリーウェアかつソースコードを公開しています。
  • コメント、不具合の報告、ご要望を待っています。

Donation

このサイトで配布しているソフトを常用されている方は寄付をお願いします。

Tags

2018.07.26

09:07:34Permanent Link

XActivate 1.0 : ウインドウを一枚だけ持ってきてアプリケーションを activate

AppleScript でアプリケーションをアクティブにする際は、すべてのウインドウが前面に持ってこられます。XActivate はメインウインドウだけを前面に持ってくることなど、オプションを指定してアプリケーションプロセスをアクティブにする AppleScript ライブラリです。

アプリケーションを隠すこともできます。

内部で Cocoa の NSRunningApplication を使用しています。

2018.07.24

19:54:21Permanent Link

Trash It 1.2.1 : 前面のアプリで開いているファイルを閉じてゴミ箱に捨てる AppleScript

前面のアプリケーションで開いているファイルを閉じてゴミ箱に捨てる AppleScript です。Spotlihgt メニューやスクリプトメニューなどから実行してください。

Finder がアクティブである時に実行するとエラーが起きる不具合を修正しました。

2018.07.21

21:49:49Permanent Link

Trash It 1.2 : 最前面のファイルを閉じてゴミ箱に捨てます。

前面のアプリケーションで開いているファイルを閉じてゴミ箱に捨てる AppleScript です。Spotlihgt メニューやスクリプトメニューなどから実行してください。

アプリケーションで開いているファイルをゴミ箱に入れたくなることは、ときどきありますよね。例えば、Web からダウンロードしてきた PDF ファイルが見当違いのものであったとか、文書/コードを書き始めてやっぱやめたと思ったときとか。

Finder でそのファイルが表示されていればいいですが、そうでなかったら次のようなステップを踏むことになると思います。

  1. 書類ウインドウのプロキシアイコンを使って、Finder でファイルを表示させる。このとき、アプリケーションが Finder に切り替わる。
  2. 書類を開いているアプリケーションに戻って、ファイルを閉じる。
  3. Finder にもどって、閉じたファイルをゴミ箱にいれる。

Trash It は上記の手順を一発で行います。

最前面の書類を対象にしますから、バッククグラウンドで実行しなければなりません。そのため Trash It はバックグラウンドアプリケーショーンとして制作されています。起動しても、Dock にも表示されず、前面のアプリケーションも切り替わりません。

変更点:

  • OS X 10.9 以降が必要
  • スクリプティング機能追加 SmartActivate.osax と URI Escape.osax を不要にした。
  • デスクトップフォルダ、ライブラリフォルダ、書類フォルダ、アプリケーションフォルダ、システムフォルダなどシステムの動作に関連するフォルダの操作対象から除外するようにした。
  • コード署名をつけた。

2018.07.20

20:53:57Permanent Link

XPreferences 1.0.1 : AppleScript アプリケーションの設定ファイルの保存と読み込みを支援

AppleScript アプリケーションの設定ファイルの保存と読み込みを支援するライブラリです。

AppleScript の場合、実行が終了しても property の値が保存されるので、それを設定の保存として利用することができます。しかし、スクリプトの不具合の修正や機能の追加の際に再コンパイルすると property の値は初期化されてしまいます。

ですから、AppleScript であっても、設定を外部ファイルに保存することは有用です。

XPreferences はユーザーが定義した設定を管理するスクリプトオブジェクトを「~/Library/Preferences」フォルダへ保存/読み込みを簡単にします。

スクリプトの機能追加にともないおよび設定管理用スクリプトオブジェクトの仕様に変化があった場合、古い設定管理用スクリプトオブジェクトから移行も支援します。

コードは変わっていませんが、サンプルコードに問題があったので更新しました。

書き出した preferences ファイルが大きくなるのが不満でしたが、回避方法を見つけました。設定管理用スクリプトオブジェクトをトップレベルではなく、ハンドラの中で定義し parent を AppleScript とすれば、トップレベルの property などが含まれない最小限のスクリプトオブジェクトを書き出せることを見つけました。

2018.07.13

17:22:55Permanent Link

XPreferences について補足

先ほど公開した XPreferences は、AppleScript アプリケーションの設定情報をスクリプトオブジェクトとして読み書きしましょう、というもの。

AppleScriptObjC が使える今日この頃では、NSUserDefaults を使ったら良いのかもしれないけど、Objective-C のオブジェクトに変換が必要になる。無駄な変換をせず、AppleScript のネイティブデータを保存できるので XPreferences に存在価値があると思っている。

以下の、書き出した設定管理用スクリプトオブジェクトのファイルサイズ問題は、version 1.0.1 のサンプルコードで解決策を示しました。

トップレベルではなくハンドラの中でスクリプトオブジェクトを定義すると、最小限のサイズのスクリプトオブジェクトを書き出せることを見つけました。

一つ気になるのは、書き出したスクリプトファイルが書き出し元のスクリプトと同程度のファイルサイズになってしまうこと。書き出し元のスクリプトの中で定義された設定管理用スクリプトオブジェクトだけを store script するのだけど、なぜかファイルサイズが結構大きい。

たぶん、スクリプトオブジェクトのスコープにある property なども含めて書き出してしまっているからファイルサイズが肥大してしまうのだと思う。余計なものを排除して store script できないものかと、四苦八苦してみたけど、適当な術が見つけられない。

書き出し元のスクリプト内で設定管理用スクリプトオブジェクトを定義しているからいけないのであって、設定管理用スクリプトオブジェクトをバンドルないの Resources 内に別ファイルに保存しておき、実行時に読み込むようにすることが考えられます。このようにすれば、そのスクリプトオブジェクトを書き出しても相応のファイルサイズに収まってくれます。

でも、手軽さに欠けるなと。よほど巨大な AppleScript でない限り、少々設定ファイルが大きくなっても気にしなくてもいいかなと思っています。

< Previous Topics