Sun, 14 Sep 2008
ブックマークを特定のアプリケーションに縛りつけない
ウェブブラウザは自分的にはOmniWeb.appで決りなのですが、今後もそうであるかは分りません…Safari.appは常に、システムとの親和性や速度でOmniWeb.appを脅かしています。ということで、ブックマークはWeb Locationファイルとしてそれらの外に置いておこうと思いました。
最初がOmniWeb.appの例、次がSafari.appの例です。最初の部分以外は共用です。ベージのタイトルに「:」が入っていると、名前を付けるときにまっきんのファイルシステムの規則とかちあってしまうので、全角文字に置き換えています。ハマったのはここくらいでしょうか。
できあがったhoge.weblocはダブルクリックしても良し、Dockのアイコンにドロップしても良し。
set aURL to ""
set aTitle to ""
tell application "OmniWeb"
if not (browser 1 exists) then
beep
return
end if
set aFrontMostDocument to browser 1
set aURL to address of aFrontMostDocument
set aTitle to name of aFrontMostDocument
end tell
--set the clipboard to aTitle & return & aURL
set aOldDel to AppleScript's text item delimiters
set AppleScript's text item delimiters to ":"
set aTitle to every text item of aTitle
set AppleScript's text item delimiters to ":"
set aTitle to text of aTitle as text
set AppleScript's text item delimiters to aOldDel
tell application "Finder"
--activate
set webloc to make new internet location file to aURL at "hoge:Users:hoge:Bookmarks" with properties {name:aTitle}
end tell
tell application "Safari"
if not (document 1 exists) then
beep
return
end if
set aFrontMostDocument to document 1
set aURL to URL of aFrontMostDocument
set aTitle to name of aFrontMostDocument
end tell
最近の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, 24 Aug 2008
spurl.netとJoltMarkへブックマークするリンクを廃止、新Deliciousへの対応
今まで、エントリをブックマークしていただくためのリンクとして、いつつのソーシャルブックマークを設定していましたが、今回それらを見直すことにしました。これは、自分自身が使うブックマークサービスの取捨選択とも関係するのですが…
具体的には、del.icio.usが新Deliciousへ移行したことに対する対応と、spurl.netとJoltMarkの使用停止、このふたつを行ないました。
JoltMarkには特別思い入れとかはなく、最近負荷が高いのか上手くブックマークできない状態が続いているために切っただけですが、spurl.netは…タグ付けと階層管理のふたつの切り口からブックマークを管理する方法が気に入っていたので非常に残念なのですが、近年は大量のスパムによって荒されたために、ソーシャルブックマークとしての機能を停止したままの状態が長く続いているので、もはやこれまでか、と。
次は、これも負荷が高いのかホットエントリ等のフィードが取れないことがままある1470.netが整理の対象かな、と考えております。って結局、はてなと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
Wed, 23 Jul 2008
ストーカー(密猟者)、あるいは願望機
文学好きの岩波さんにお勧めされたので、買うてきました。アルカジイ&ボリス・ストルガツキーのストーカー、早川書房。
原題は路傍のピクニック。アンドレイ・タルコフスキーの同名映画の元ネタ。ストルガツキー兄弟の書いたシナリオのタイトルは願望機。異星人が残したと思しきというか人類の理解を越えずぎているから多分そうなんだろう的な品々が転がる「ゾーン」と、その周囲でのたくるかしこやらアホな人間たち。かしこな人々は人類の進歩がどうとか、アホな人々は金になるからといってそこにある品々を持ち出す。ゴールドラッシュみたいだがただし、「ゾーン」の中は重力異常とか時間の流れが変とかはあたりまえで、入って出てくるだけでも命懸け。何かしらんが地面のこの染みを踏むと良くないことがおこる、この道を通った奴は挽肉にされるがその後しばらくは大丈夫(しばらくってどれだけの間だ?)、ストーカーの子供は不具になる…
…以下は自分語り。はじめて読んだのは高校生の頃。早川文庫で一冊だけ残すならこれか山尾悠子の遠近法だと信じるくらいむちゃくちゃ影響を受けてあげくふたつを混ぜこぜにしたような小説を一本でっちあげそれが学内誌にとはいえ掲載されたりしたのも嬉し恥し良き思い出なわけだが。てゆーか、この傑作が1983年の初版からこっち八刷しかなっていないなど信じられないがその他の蟻塚のかぶと虫にせよ収容所惑星にせよ苦労して入手したは良いがとんでもなく退屈なしろものであってがっかりだったからさもありなんというかじぶんがエスエフに嵌らなかったのはこのせいだとおもうんだ。でも、最後の一文を覚えていていまでも忘れていない。
すべてのものに幸福をわけてやるぞ、無料で。だから、だれも不幸なままで帰しゃしないぞ!
願望機が叶えてくれるのは心の一番底にある願いだけ。