Sun, 14 Sep 2008
最近のFinder.appに対する不満と、その解決
…何が不満といって、サイドバーが使い勝手が悪くてしょうがない。いくつもウィンドウを開いていると邪魔でしょうがないし、アイコンも小さいよ。大きくしたりできないし、かといって表示しないでおこうとすると、ツールバーまで隠れてしまうし。ツールバーは使いたいけれど、サイドバーなんかイラネ。
このほどさように、最近のFinder.appは気に入らなかったのですが、つい最近、発想の転換をしまして、少し気が楽になったというか…
まずもう、デスクトップとか直接見ないようにする。デスクトップに表示されているディスクとか、ただの飾りです。ウィンドウはボコボコ開かない、全画面に常にひとつだけウィンドウを表示しておき、閉じない。何かの加減でウィンドウを開いたりしたとしても、不要になったらすぐ閉じる。ファイル階層を見る、ファイルやフォルダの移動、コピーもエイリアスを作るのも、このひとつのウィンドウから行なう。今までFinder.appを何か特権的なものとして捉えていたけれど、そうじゃないんだ。サイドバーも徹底的に活用する。フォルダを登録したり後はスマートフォルダとか、少ないステップで目的のものに到達できるようにする。起動項目に以下のスクリプトを入れておく。
tell application "Finder"
activate
close every window
open home
--make new Finder window
--set target of Finder window 1 to home
set bounds of Finder window 1 to {10, 48, 1671, 893}
set (icon size of icon view options of window 1) to 96
end tell
それにしても、上のようなAppleScriptを書くのにも、けっこう時間がかかってしまいました。Script Editor.appから記録してやれば良い部分もありましたが、「全てのウィンドウを閉じる」部分で躓きました。
後は、コンテキストメニューからファイルをコピー、移動、エイリアスを作るAutomatorプラグインとかを書きました。ありがちなものなので、サンプルはいくらでもみつけられました。ただ、ファイル/フォルダのコピーを任意の場所に、というのはSystem Eventsを使ったものになっています。マウントしたディスクイメージをコピーできなかったので、こういう方法になってしまいました。どれも動作速度の点で少し不満がありますが、おおむね満足して使っています。
on run {input, parameters}
tell application "Finder"
activate
tell application "System Events"
keystroke "c" using {command down}
end tell
--set aResult to choose folder default location home as alias
set target of Finder window 1 to (choose folder default location home as alias)
tell application "System Events"
keystroke "v" using {command down}
end tell
end tell
return input
end run
on run {input, parameters}
try
if length of input is not 0 then
tell application "Finder"
set aDest to (choose folder)
move input to aDest replacing no
--move input to desktop
end tell
else
display dialog "No Selected items" buttons {"OK"} default button 1
end if
end try
return input
end run
on run {input, parameters}
try
if length of input is not 0 then
tell application "Finder"
set aDest to (choose folder)
make new alias file to input at aDest
end tell
else
display dialog "No Selected items" buttons {"OK"} default button 1
end if
end try
return input
end run
Sun, 17 Aug 2008
KEditとosascript
ひさしぶりにまっきんの話題。iMac買うたので。
KEditで使うために、以下のようなものを書いてみました。KEditからosascriptを使う、というもののとっかかりです。
#!/bin/sh
`osascript << EOF
on run
tell application "KEdit"
if not (document 1 exists) then
beep
return
end if
end tell
end run
EOF`
…帰ってきません。KEditがハングします。この例なら素直にAppleScriptで書けば良いのですが…こんなテストをしようとしたのは、次のようなAppleScriptを書こうとして、途中で面倒になってきたからです。リストを表示させて、その値によって挿入する文字列を変えようとしたのは良いのですが、ここからif文を延々書いていかなきゃならないのか、case文とか使えたら良いのに、AppleScriptじゃなくShellScriptだったら、と。あ、この例では、リストの返り値をそのまま文字列として挿入しています。
set aResult to ""
tell application "SystemUIServer"
activate
try
set myList to {
"Language=czech",
"Language=german",
"Language=english",
"Language=spanish",
"Language=french",
"Language=italian",
"Language=japanese",
"Language=latin",
"Language=polish"}
set aResult to (choose from list myList default items "Language=en") as string
on error
beep
end try
end tell
tell application "KEdit"
if not (document 1 exists) then
beep
return
end if
activate
tell document 1
set selectedText to selected text
if selectedText is not "" then set aResult to selectedText
set selected text to aResult
end tell
end tell
Fri, 02 Feb 2007
OmniWeb-5.5.4beta1でページ遷移が異常に遅かったバグが修正
とにかくすごい遅かったので、何なんだろうと思っていたのですが…
Fixed a bug where the history index would never remove any data from its database, resulting in slower page loads and large historyIndex.ox files.
記憶によれば、5.5.3のベータの間、ずっと動作が遅かったような気がする…OmniWebがんばれ、超がんばれ。
Sun, 24 Dec 2006
CotEditorとSystemUIServerを使ったスクリプティングの例
久々にまっきんの話題…というか、このサイトも随分久方振りの更新ですね…
MacOSXで使うテキストエディタのCotEditorにおける、SystemUIServerを使ったGUIスクリプティングのサンプル。全体としてはシェルスクリプトになっています。文字列の操作とか条件分岐をするのに、AppleScriptよりシェルスクリプトのほうが書き易いから…
#! /bin/sh
# %%%{CotEditorXInput=Selection}%%%
# %%%{CotEditorXOutput=ReplaceSelection}%%%
UIINPUT=`osascript << EOF
tell app "SystemUIServer"
activate
try
set myList to {\
"&", \
"<", \
">", \
"copyright sign", \
"nb space", \
"quotation mark", \
"registered sign", \
"trade mark sign" \
}
set myResult to (choose from list myList default items "&")
on error
beep
end try
return myResult
end tell
EOF`
case ${UIINPUT} in
false) OUTPUT="" ;;
\&) OUTPUT=" " ;;
\<) OUTPUT="<" ;;
\>) OUTPUT=">" ;;
"copyright sign") OUTPUT="©" ;;
"nb space") OUTPUT=" " ;;
"quotation mark") OUTPUT=""" ;;
"registered sign") OUTPUT="®" ;;
"trade mark sign") OUTPUT="™" ;;
esac
osascript << EOF
tell application "CotEditor"
activate
if exists front document then
set {loc, len} to (range of selection of front document)
set (contents of selection of front document) to "${OUTPUT}"
set numOfMove to (count of character of selection)
set (range of selection of front document) to {Loc + numOfMove, 0}
end if
end tell
EOF
これを実行すると、画像のようなダイアログが出て、挿入する文字列を選ぶことが出来ます。自分的には、とても素敵。
KEdit v0.3.0 2006-12-24 releaseが出てる
MacOSXで使うテキストエディタのKEdit、久々にバージョンアップされております。
- 画面分割機能と機能文字表示機能をリファイン。(2006-12-24)
- ドキュメント毎に機能文字表示をON/OFF可能にした。
- 画面分割を実装。(2006-12-21)
- ワードラップOFFの状態で文書の横幅を可変にするよう仕様変更。(2006-12-21)以前動かなかったコードが、いつの間にかそのまま機能するようになっていた…
- 機能文字の表示を実装。(2006-12-17)タブ、半角空白、改行のそれぞれについて表示するか否か、及び文字色を設定可能。代替文字の種類は指定できない。
- HTMLモードでタグ内部に&があるとその後の文章のカラーリングが不正になる問題を修正。(2006-12-17)
- Jumpメニューのcontrol+左クリックで右クリックメニューが表示されるよう仕様変更。(2006-12-17)
なお、かりやんさんにおかれましては、ドライアイのため現在開発中断中とのこと。復帰をお待ちしております。