August 13, 2010

Snow Leopard:AppleScriptでデスクトップアイコンの位置を記録/再生

MacBook Al Unibody logo
8/24に予約した「Snow Leopard Mac OS X 10.6」が8/28に届いたので、即上書きアップグレードして特に問題もなく利用できています。
が、なぜか時々ログインするとデスクトップに置いてあるアイコンが右端に整列されてしまう事が有り、毎回元の位置に戻すのが面倒なのでAppleScriptで戻せる様にしてみました。

【2011/7/23追記】Mac OS XをSnow LeopardからLionへバージョンアップ後、このAppleScriptを試し動作する事を確認しました。
Lionでデスクトップのアイコンが整列される現象が改善していれば良かったのですが、Appleでは対応できない他のメーカーのソフトに原因が有る様で、Lionでもこのスクリプトが必要になるのは残念です。


(ツイートボタン設置テスト)

まずは、MacOS 9時代に買った新・AppleScriptでゼンマイびゅんびゅん!!P.151のスクリプトをそのまま入力して「ハンマー」ボタンを押してチェックすると、おそらくMac OS Xではもう使われていないプロパティ類が有る様でエラーになってコンパイルできませんでした。

ファイルメニューの「用語説明を開く…」から「Finder」の説明を開いて「desktop position」プロパティでデスクトップ上のアイコンの位置を読み書きできる事が分かり、なんとか動作する物が作れました。
【AppleScript エディタ画面】
デスクトップアイコンの位置を記録/再生するAppleScript

2009/12/26追記:
MacFan.jpでも「スノレパのバグの解決方法」という記事が挙がる位なので、困ってる人が私以外にもかなり多そうなので、ちょっと改良版をダウンロード出来る様にしてみました。
DTiconRecRestAS.zip
※スクリプトの内容を見るにはZIPファイルを開いて出来たファイルをAppleScriptエディタのファイルメニューから開くと確認できます。改良も出来るので動作やダイアログの文章が気になる場合は修正してご利用下さい。


(↓AppleScript エディタへコピペして使えます)

property iconList : {}
property locList : {}

tell application "Finder"
if iconList = {} then
set iconList to every item of desktop
set locList to desktop position of every item of desktop
display dialog "記録しました。" buttons {"OK"} default button 1
else
repeat with i from 1 to (number of iconList)
try
set desktop position of item i of iconList to item i of locList
end try
end repeat
display dialog "戻しました。" buttons {"OK"} default button 1
end if
end tell


一度実行して記録されたデスクトップ上のアイコン位置を、新しく記録し直すには、このスクリプトをAppleScript エディタで開いて「ハンマー」ボタンをクリックしてコンパイルし直した後、実行します。
スクリプトを改造して起動時に記録か再生かを選択する様にするのも良いかも知れません。

久しぶりにAppleScriptを触ってみて、最新のSnow Leopardでもサポートされている事と、AppleScript エディタが64bitになっていた事に驚きました。
Posted by 3k1 at 08:02 P | from category: Mac | TrackBacks
Comments

st1:

三船さんのところより来ました。

「自転車大好きマップ」は知りませんでした。覗いてみます。
情報ありがとうございました。
(September 16, 2009 12:24 P)

kimux:

kimuxと申します。
私もデスクトップをめちゃくちゃにされて困っていました。スクリプト、ちょっと改造して使わせていただきました。ありがとうございました。

property iconList : {}
property locList : {}

tell application "Finder"
set ans to display dialog "デスクトップのアイコンを?" buttons {"記録", "戻す"} default button 2
set text_ans to button returned of ans
set yes_cancel to display dialog text_ans & "ですね"
if text_ans = "記録" then
set iconList to every item of desktop
set locList to desktop position of every item of desktop
display dialog "記録しました。" buttons {"OK"} default button 1
else
if iconList = {} then
display dialog "戻したいけど記録がないよ"
else
repeat with i from 1 to (number of iconList)
try
set desktop position of item i of iconList to item i of locList
end try
end repeat
display dialog "戻しました。" buttons {"OK"} default button 1
end if
end if
end tell
(October 12, 2009 03:54 P)

kota:

はじめまして。ものすごくこまってた問題だったので助かりました。

ブログにも紹介させていただきましたm(_ _)m
(November 20, 2009 06:51 P)

MARUTSU:

困っていたのでとても助かりました。
本当にありがとうございます☆
(January 28, 2010 09:55 P)

kaga:

同じく困っていたので使わせていただきます。
スクリプトが書けるってすばらしいですね!
(February 23, 2010 10:13 P)

ラッコ:

大変困っていたので 助かりました。何が原因で起こるのかがよくわかりませんでしたが、(今も) 私の場合には これまでは休み明けが多いようです。
(February 25, 2010 11:27 P)

整理魔:

初めまして。めちゃくちゃ助かりました。
コピペしても上手くいかなかったので、
zipをダウンロードしてそのまま使いました。

AppleScript 今まで使ったことありませんが、面白いですね。
(April 06, 2010 03:51 P)

ぽいぽい:

おおー!これはありがたいです。早速実行しました。おもしろいですね。

ほぼバッチリ戻ってくれるのですが、USB外付けHDの「名称未設定」アイコンだけが記録した位置とは違うところにいっちゃいます。

一個だけなので手でもどしています。
便利に使わせて頂きます。
大変ありがあとうございました。
(May 11, 2010 08:01 P)

イルカのジョナサン:

おかげさまで
デスクトップは解決したのですが(10.6.0)

フォルダ内の位置も崩れてしまい、現在苦労してます
(これは 出るフォルダと出ないフォルダあり)
フォルダも同じようにスクリプトは書けないのでしょうか?

もしよろしかったら、公開お願いいたします。
現在手作業でよくつかうフォルダを、並べ直してます...
(August 12, 2010 12:49 P)

イルカのジョナサン:

フォルダの手作業つかれてしまい
先ほど、10.5にダウングレードしていしまいました。
今回のバグは結構きついです、、、

これからも、おやくだちソフト開発期待してます。
(August 12, 2010 07:36 P)

こめだわら:

はじめまして。
再起動の他にもアプリケーションからファインダーに戻ろうとした時、フリーズするのか…?みたいな間の後にばばばっと右に整列!という現象もありました。。。泣
こちらのスクリプトで無事直せました。
困っていたのでとても助かりました。
ありがとうございます!
(February 12, 2011 05:49 P)

J. Ryan:

すばらしすぎます。
整理されたアイコンが魔法のようにいつもの場所にもどっていくのは壮観です。

ありがとう!!
(April 06, 2011 01:54 P)

野田と申します:

とても感謝しています。
(July 28, 2011 10:55 P)

ハート:

すばらしいです!
どうもありがとうございました。
(November 19, 2011 10:03 P)
:

:

Trackbacks