How My Heart Sings

Tue, 01 Feb 2011

スケジュールを組んでMacをスリープから復帰させる方法を知ったのはつい最近だ

朝は目覚まし時計なんかじゃなく優しい音楽で目覚めたい。iTunes.appの自動運転について知識は得た。でもスケジュールを組んでMacをスリープから復帰させる方法が分らなかった。つい最近その方法を知った。恥しいです。

System PreferenceからEnergy SaverScheduleってボタンあるやん。でも、これって簡単なんしか作れんやんなあ…以下は、iTunes.app用に作ったAppleScriptです。備忘のため。

set somePlayList to {"クラシック-ドイツ-古典-ハイドン", "クラシック-古典以前-ヘンデル・テレマン", "クラシック-フランス-古典以前-クープラン・ラモー", "クラシック-イタリア", "クラシック-フランス-古典以前"}
set aPlayList to some item of somePlayList

tell application "iTunes"
        set aOldSound to sound volume
        set sound volume to aOldSound - 40
        
        set aCount to count tracks of playlist aPlayList
        set aRandomNum to random number from 1 to aCount
        set aTrackNum to track number of track aRandomNum of playlist aPlayList
        
        
        play track (aRandomNum - aTrackNum + 1) of playlist aPlayList
        reveal current track
        delay 10
        set sound volume to aOldSound - 20
        delay 10
        set sound volume to aOldSound
end tell

いくつかのプレイリストからランダムに選び、音量を下げ、プレイリストの曲数の範囲でランダムな数字を作り、プレイリストの該当する曲を選択する。その曲がそのアルバムの何曲目か調べ、アルバムの途中でなく最初から再生するようにする。そのままだと再生はするけれどブラウザ上で表示してくれないので、revealする。音量を戻していく。最後まで分らなかったのは再生中の曲をrevealする箇所。

Meta Infomation of this entry

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

Mon, 06 Oct 2008

Leopardで使えるASLfontとNiigataを作ってみた

Classic Mac OSの時代のフォントには、何というか味のあるというか趣きのあるものが少なくありません。ChicagoGenevaMonaco等々。日本語フォントにおいても、いくつか。そうしたフォント達の中には、今のシステムにも受け継がれているものもあり、またそうでないものもあります。タイトルにあるASLfontNiigataは、後者に属するものです。

ASLfontにせよNiigataにせよ、丸漢フォントの時代からある古いフォントです。これらが現在使われることがないのは、ひとつにはClassic Mac OS時代の独自フォーマットのフォントであるためです。Mac OS Xで使える形式に変換する方法も公開されていますが、それが公開されたのはMac OS Xの時代になってかなり経ってからでした。今となっては、その変換方法を行なえる環境が手元にある人も少ないと思います。そしてもうひとつの理由は、Mac OS Xにおいてアンチエイリアスされた美麗なフォント環境が主流となったこと。ヒラギノの表示を見てしまった後では、日本語ビットマップフォントを使う意味が見出せない…でも最近、何でもアンチエイリアスがかかっていれば良いというものでもない、と思い始めました。切っ掛けは、Leopardのターミナルのデザインのひとつ、Proというものを見てからです。アンチアイリアスのかかっていないMonacoによる表示は、新鮮でした。

…ハードディスクの中を漁っていると、以前に丸漢フォントから変換したASLfontNiigataが出てきました。9ポイントか12ポイントでないと表示が崩れてしまうのと、チルダやバックスラッシュの問題があって、放ってあったものです。自分の考え方は、以前とは違っています。今回、これを使って、fontforgeというオープンソースのフォントエディタで修正してみようと思い立ちました。特に変ったことや難しいことはしていないので中略…以下のようになりました。十分に味も趣きもあり、結構見易い感じになっていると思います。

aslfont-leopard

niigata-leopard

terminal-aslfont

terminal-niigata

ということで、ASLfontNiigataを置いておきます。ご使用は自己責任で。

Meta Infomation of this entry

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

Sun, 14 Sep 2008

フォルダにパスワードをかけて管理する

AppleScriptは書き方にクセがあるので、集中して書かないとすぐ書けなくなるのです。ということで、Folder Actionを使って、フォルダにパスワードロックをかける、というのを書こうと思いたちまして…でわさっそく。

…ところが、フォルダを開けなくする、というのがそもそも上手くいきません。妥協点として、フォルダは開けちゃうけどすぐ閉じちゃうよ、一瞬だし良く見えなかったよね、ね?という感じで、以下のように書いてみました。

on opening folder this_folder
        
        tell application "Finder"        
                close every Finder window
                display dialog "Enter Password." default answer "" buttons {"OK"} default button "OK"
                set aPass1 to text returned of result
                set aPass2 to "pass" as string
                if not aPass1 = aPass2 then
                        beep
                        display dialog "Password does not match." buttons {"OK"} default button "OK" with icon stop
                        --close this_folder
                        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
                else
                        make new Finder window
                        set target of Finder window 1 to this_folder
                        set bounds of Finder window 1 to {10, 48, 1671, 893}
                        set (icon size of icon view options of window 1) to 96
                end if
                
                
        end tell
end opening folder

スクリプトがアタッチされたフォルダを開こうとすると、一瞬フォルダは開くけれどすぐ閉じてしまう。パスワードを要求するダイアログが表示され、あらかじめ決められたパスワードと入力されたパスワードが異なっていた場合は、何事もなかったようにホームフォルダを開く。入力されたパスワードが一致していれば、開こうとしたフォルダが開く。ウィンドウのサイズやら何やらは個人的な話しですが、これで目的は達成している…のかな。フォルダを開けなくする方法をご存じの方はお教えください。

Meta Infomation of this entry

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

最全面のウィンドウをカレントディレクトリとしたターミナルを開く

いわゆるひとつの、BeOSにおけるSummon(召喚)のようなコンテキストメニューが欲しいと思ったので作りました。Terminal.app用とiTerm.app用。ありがち。

on run {input, parameters}
        
        tell application "Finder"
                try
                        set aFolder to (the target of the front window) as alias
                        set aPath to POSIX path of aFolder
                end try
        end tell
        
        tell application "Terminal"
                activate
                try
                        if front window is busy then
                                display dialog "Terminal is busy. Try later." buttons {"OK"} default button 1
                        else
                                do script with command "cd " & quoted form of aPath in window 1
                                do script with command "clear" in window 1
                        end if
                end try
        end tell
        
        return input
end run

on run {input, parameters}
        
tell application "Finder"
        try
                set aFolder to (the target of the front window) as alias
                set aPath to POSIX path of aFolder
        end try
end tell

tell application "iTerm"
        activate
        try
                tell current terminal
                        launch session "Default Session"
                        tell the last session
                                write text "cd " & quoted form of aPath
                                write text "clear"
                        end tell
                end tell
        end try
end tell
        
        return input
end run

Terminal.appでは、最全面のウィンドウがビジーであるかどうかを調べ、もしビジーであるならスクリプトの実行を止めています。System Eventsを使って新たにタブを開くこともできたのですが、何となくイヤだったのでそうしていません。iTerm.appでは逆に、最全面のウィンドウがビジーであるかどうか調べられなかったので、常に新しいタブを開いて、そこでコマンドを実行させています。実行速度に不満があって、実行してからターミナルが開くまでに一呼吸どころか三呼吸ほど待たされますが、それいがいは問題ありません。

Meta Infomation of this entry

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

ブックマークを特定のアプリケーションに縛りつけない

ウェブブラウザは自分的には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

Meta Infomation of this entry

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

Page 1 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