How My Heart Sings

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

Meta Infomation of this entry

You can add this Entry to your  はてなブックマーク and Delicious

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

Meta Infomation of this entry

You can add this Entry to your  はてなブックマーク and Delicious

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がんばれ、超がんばれ。

Meta Infomation of this entry

You can add this Entry to your  はてなブックマーク and Delicious

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="&nbsp;"   ;;
    \<)                          OUTPUT="&lt;"     ;;
    \>)                          OUTPUT="&gt;"     ;;
    "copyright sign")     OUTPUT="&copy;"   ;;
    "nb space")           OUTPUT="&nbsp;"   ;;
    "quotation mark")     OUTPUT="&quot;"   ;;
    "registered sign")    OUTPUT="&reg;"    ;;
    "trade mark sign")    OUTPUT="&trade;"  ;;
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

coteditor_scripting

これを実行すると、画像のようなダイアログが出て、挿入する文字列を選ぶことが出来ます。自分的には、とても素敵。

Meta Infomation of this entry

You can add this Entry to your  はてなブックマーク and Delicious

KEdit v0.3.0 2006-12-24 releaseが出てる

MacOSXで使うテキストエディタのKEdit、久々にバージョンアップされております。

icn_KEdit_128

  • 画面分割機能と機能文字表示機能をリファイン。(2006-12-24)
  • ドキュメント毎に機能文字表示をON/OFF可能にした。
  • 画面分割を実装。(2006-12-21)
  • ワードラップOFFの状態で文書の横幅を可変にするよう仕様変更。(2006-12-21)以前動かなかったコードが、いつの間にかそのまま機能するようになっていた…
  • 機能文字の表示を実装。(2006-12-17)タブ、半角空白、改行のそれぞれについて表示するか否か、及び文字色を設定可能。代替文字の種類は指定できない。
  • HTMLモードでタグ内部に&があるとその後の文章のカラーリングが不正になる問題を修正。(2006-12-17)
  • Jumpメニューのcontrol+左クリックで右クリックメニューが表示されるよう仕様変更。(2006-12-17)

なお、かりやんさんにおかれましては、ドライアイのため現在開発中断中とのこと。復帰をお待ちしております。

Meta Infomation of this entry

You can add this Entry to your  はてなブックマーク and Delicious

<<  Page 2 of 35  >>

Le violon intérieur....
Yasuo Yamashita
vaiorinnhiATTOnaDOTrimDOTorjye-pi-
Y.A.S.U.O Ytterbium Artificial Sabotage and Utility Organism Y.A.S.U.O Yelling Abomination from the Sunless Underground Oasis

Pyblosxom and plugins. For detail, see http://viole.sakura.ne.jp/blosxom/blosxom.cgi/plugin_info