2011年1月1日土曜日

プレビュー.appのPDF表示のデフォルトを1ページ表示にする

プレビュー.app、軽いし辞書との連携もばっちりだけど、不満な点が2つ。

1,PDFを表示させるとデフォルトでいつでも2ページ表示になる(表示したドキュメントごとの設定を保存してくれない)

2,ウィンドウの大きさ、表示位置を保存して次回起動時に復帰してくれない。またカスタマイズもできない。
だからrspec本を表示させると、いつもこうなってしまう。

いちいち右クリックして「単一ページ」モードにして、それから好みの場所までウィンドウを動かして少し大きくして、とやってます。

というわけでなんとかならないか、と思っていろいろ試行してみた。

まず年末に見かけたLife Hackerの「Macのアプリの隠れ機能を見つけて、自分好みにカスタマイズする秘伝の方法」から試してみる。Automarterを使ってアプリのバイナリからテキストをすべて抜き出す、という方法だ。Automater使うの初めてだったので大変興味深い。できあがったコマンド(?)がコンテキストメニューに登録されるのがすごく便利そう。

しかし記事の通りにやってもうまくいかない。首をひねりつつ記事を読み返すと、コメント欄にこんな指摘が。

なーんだ、そこをまちがってたらせっかくの記事が台無しではありませんか。(ちなみにLifeHacker、コメントは承認制だから編集部もこの間違いはわかっているはず。それなら早々に修正すべきでは。)

で、コメント欄には

こんな情報もあったでさっそくググる。ほほー、
使えるdefaultsを書き込め
なんていう素敵なサイトに出会えたぞ。
で、
今さら聞けないdefaultsコマンドの使い方
なんかも読んで理解を深める。

早速プレビュー.appで
defaults read com.apple.Preview
してみると、以下のように答えが出てきた。
{
    NSNavBrowserPreferedColumnContentWidth = 186;
    NSNavLastRootDirectory = "~/Desktop";
    "NSToolbar Configuration CommonToolbar_v1" =     {
        "TB Display Mode" = 1;
        "TB Icon Size Mode" = 1;
        "TB Is Shown" = 1;
        "TB Item Identifiers" =         (
            "previous_next",
            zoom,
            toolbarmode,
            "annotation_banner",
            NSToolbarFlexibleSpaceItem,
            sidebar,
            search
        );
        "TB Size Mode" = 1;
        "TB Visibility Priority Values" =         {
        };
    };
    NSUserKeyEquivalents =     {
        "\\U8f9e\\U66f8\\U3067\\U8abf\\U3079\\U308b" = "@$j";
    };
    "NSWindow Frame PVInspectorPanel" = "1338 1074 320 340 0 0 2560 1418 ";
    "NSWindow Frame PVPreferences" = "1020 540 520 341 0 0 2560 1418 ";
    "PVAnnotationColor_3" = <040b7374 7265616d 74797065 6481e803 84014084 8484074e 53436f6c 6f720084 84084e53 4f626a65 63740085 84016301 84046666 666683f8 f7773f83 9594943e 83f9f878 3e0186>;
    "PVAnnotationInteriorColor_3" = <040b7374 7265616d 74797065 6481e803 84014084 8484074e 53436f6c 6f720084 84084e53 4f626a65 63740085 84016303 84026666 000086>;
    "PVAnnotationLineWidth_3" = 3;
    PVGeneralSelectedPane = 2;
    PVGeneralUserName = "\\U77f3\\U5d0e \\U5fb9";
    PVImageDefaultImageSizing = 0;
    "PVInspectorPanelForDoctype_NoDocument" = PVInspectorNoDocument;
    "PVInspectorPanelForDoctype_PDFDocument" = PVInspectorPDFFileInfo;
    PVInspectorWindowOpenOnStart = 0;
    "PVPDFDefaultDocumentScaling3_5" = 0;
    PVPDFDisplayMode = 2;
    PVPDFLastSidebarWidthForOutline = 217;
    PVPDFLastSidebarWidthForThumbnails = 164;
    PVPDFScalingFactor = 100;
    PVSidebarThumbnailColumns = 1;
    kPVInspectorPDFMetricsUnit = 4;
}
とりあえずPDFのデフォルト表示ページ数は「PVPDFDisplayMode = 2」が怪しい。これを
defaults write com.apple.Preview PVPDFDisplayMode 1
にしてみると・・・
うーん、1ページ表示にはなったけど、コンテキストメニューでいうところの「単一ページ(連続)」になっている。これじゃなくて本当の「単一ページ」にしたいんだけど。

そこでヤマカンで
PVPDFDisplayMode = 3
にしてみると

あわわわわ、「2ページ(連続)」になっちゃったよ。

なるほど、

メニューに並んでいる順番ね。ということは「単一ページ」は
PVPDFDisplayMode = 0
だね。

で、やってみたらこのとおり。

ふむふむ、これひとつやってのけただけで「ばんざい!大満足!」」となります。思えばプログラミングも「大満足!」の連続体験ですね。だからおもしろくてやめられない。自己拡充感のとりこになってしまう、と。

この勢いでウィンドウの位置も、せめてあらかじめ指定した大きさと場所に配置できないか調べてみる。結論からいうとこれはまだわかりません。がっくり。

defaultsの中に
"NSWindow Frame PVInspectorPanel" = "1338 1074 320 340 0 0 2560 1418 ";
"NSWindow Frame PVPreferences" = "1020 540 520 341 0 0 2560 1418 ";
という怪しい2行があって、これはインスペクタと環境設定パネルの出現場所と大きさを記録しています。何度か場所を変えると、この2つのウィンドウに関しては位置と大きさを記録していることがわかった。ではメインウィンドウは?

Life Hackerさんに教えてもらった「Get String」でいちおうバイナリの中の文字列(つまり文字列リソースね)を探してみたら、PVWindowという名前はある。これがメインウィンドウの表しているかも、と淡い期待をして
efaults write com.apple.Preview NSWindow Frame PVWindow "100 100 1024 1024"
とやってみる。考えてみたらかなり危険ですわね、これ。結果的には
defaults[775:903] Unexpected argument PVWindow; leaving defaults unchanged.
といわれて撃沈。あらかじめ用意されているdefalt値しか受け付けてくれないのかな。defaultsは
・read
・write
・rename
・delete
が主なオプションで、create、なんてのはありません。残念。
うーん、これってcocoaアプリを作る経験があれば解けそうな疑問だなあ。本日はここまで。

0 件のコメント:

コメントを投稿