Apr 14, 2012

Macのマルチ画面環境の設定

11.6インチ液晶のMacBook Airを買って、13.3インチ液晶の白MacBookをお蔵入りさせた(CD/DVD-ROMドライブが必要な時は引き続き使うのであるが)ら、やっぱり11.6インチのLCDは小さく、使用頻度は激減したが一応まだ残しているWindowsデスクトップPCの17インチのモニターに繋ぎたくなった。
しかし、MacBook Airからケーブル1本でMini DisplayPortからTVにHDMI出力できるらしかったので、やっぱり26インチの液晶TVに接続することにした。

ケーブルを入手して実際に繋いでみると、一発でMacBook Airと同じ画面がTVに表示されて、「ディスプレイ設定」画面が表示された。出力画面サイズを変えたりTVの設定を変えたりしてもどうしても文字がぼやけるが、それでも画面が大きいのは快適であることがわかった。
出力解像度は1600x900(LCDとのミラーリング無し)、TV(Panasonic TH-26LX60)側の設定は、試行錯誤の末、
バックライト「+10」(TV番組受信用は+30)、
ピクチャー「+25」(TV用は+30)、
黒レベル「0」、
色の濃さ「0」、
色あい「0」、
シャープネス「±0」(TV用は+10) 、
色温度「中」(TV用は高) 、
エッジ補正「中」(以下TV用は無設定)、
細部補正「弱」、
ガンマ補正「中」、
黒伸長「+8」、
白文字補正「+8」
にした。これでLCDが狭いことは全く問題でなくなった。13.3インチモデルを買わなくて良かった。

さて、ケーブルを抜き差しして気付いたのが、外部ディスプレイの解像度やLCDをミラーリングするかどうかの設定はずっと残るのに、外部モニター使用時のウィンドウの配置は残らないことだ。何かウィンドウを外部モニターに移動し、ケーブルを抜くと外部モニターにあった全ウィンドウがLCDに移動するが、もう一度ケーブルを挿しても全てLCDに残ったままなのである。これは、特にHDMIの場合、テレビの電源を切ると、ケーブルが接続されたままでも、外部ディスプレイと切断されたことになってしまうので、その状態を保つようにPCをスリープして復帰させるには、

  1. スリープ
  2. TV OFF
  3. TV ON
  4. 復帰
という手順を守らなくてはならず、これを間違えると、せっかく外部モニターに移動した全ウィンドウがLCDに戻ってしまう。これでは外部ディスプレイを使いにくい、というか使えない。

それを解決するアプリケーションとして、Forget-Me-NotStayを見つけた。"Stay"の方が高機能で、外部ディスプレイの着脱に関係なく、ウィンドウの位置を保存することができるツールであるが、明示的にウィンドウ位置の記憶を指示する必要がある(ケーブル差しで自動的に復帰するがケーブル抜きで自動的に保存されない)のと、有料ソフトなのがいまいちである。Forget-Me-Notは、作者のページの見た目が誤解を招くが、フリーソフトであるし、ケーブルを抜いた時にウィンドウ位置が記憶されるので、Forget-Me-Notを導入した。

さてさて、LCD側にJava API Referenceを表示して、EclipseのウィンドウをドラッグしてTV側に移動して、何かJavaアプレットのコードを開いて、これぞ省スペースで理想的な開発環境、と満足してデバッグを開始すると、アプレットのウィンドウがLCD側に表示されてしまうのが非常に面倒であることがわかった。その時大体マウスカーソルがTV側にあるので、アプレット上のボタンを触るために、マウスカーソルを長距離移動しないといけないのである。
それを解決するために、色々調べた。こういう時は、
(a) アプリケーション毎に出力先ディスプレイを設定する
(b) 外部モニターを主にする
(c) キーボード操作でウィンドウを別モニターに移動する
といった方法が常道である。他には、(d)アクティブウィンドウが切り替わった時にマウスポインターがウィンドウ上に無ければ自動的にアクティブウィンドウに移動させるという解も考えられるが、自分が意図しないタイミングでダイアログとかが開いて、ポインターが勝手に移動するのは不便であろう。それに、フォーカスロストした時にワンクリックでフォーカスを復帰させることができなくなるのは不便に違いない。

(a)については、前のMacに最初から入っていたSpaces(仮想デスクトップ)なら、アプリケーション毎にどのデスクトップで開くかを設定できたのだが、新しいMacにはSpacesが無く、代わりにMission Controlというのはあったが、同じような設定をする方法がわからなかった。

(b)は、割と意外な方法で実現できる。「ディスプレイ環境設定」の「調整」ペインを開くと、外部ディスプレイとLCDとの位置関係と、メニューバーをどちらに置くかを決められるが、このメニューバーがある方がメインディスプレイになり、メニューバーを外部ディスプレイに置くと、新たに開くウィンドウは全て外部ディスプレイで開くようになるのである。上記の問題はこれであっさり解決した。

(c)は、ジェスチャー入力を拡張するフリーの超人気ソフト、BetterTouchToolで実現できるので、他の方法を探すまでもない。筆者は元々ジェスチャー入力でなくキー操作でのウィンドウのモニター間移動に病みつきなので、上記の問題とは別に、

Command+Opt+C
Move Window to Next Monitor(隣のモニターへ)
Command+Opt+E
Maximize Window to Next Monitor(隣のモニターで最大化)
という設定にした。

(d)については、意外と方法が見つからず、LazyMouseという、ダイアログが開く時にマウスカーソルを自動的にデフォルトのボタンに移動させる有料ソフトがあったのと、java.awt.Robotクラスを使ってマウスカーソルを移動させるJavaアプリを自分用に作って常駐させている人が世の中に存在するらしいのをどこかで目にしたくらいだった。

See more ...

Posted at 23:34 in PC一般 | WriteBacks (2)
WriteBacks

はじめまして Emacsのフォント設定の情報を参考にさせていただきました。 有用な情報提供ありがとうございます。 ささやかなお返しですが、テレビ接続時に  "出力画面サイズを変えたりTVの設定を変えたりしてもどうしても文字がぼやける" 件について、 Macに外付けディスプレイを接続すると、それが液晶であってもブラウン管用のアンチエイリアスが 適用されるというバグがあり、MacFanという雑誌のサイトに対策が出ています。 http://macfan.jp/guide/2009/09/02/snow_leopard.html OSX 10.5 Leopardまではシステム環境設定に設定メニューがあった(上記記事参照)のですが OSX 10.6 SnowLeopard以後はなくなってしまい、terminalからコマンドを使うか xcodeのplist editor(あるいは直接エディタで編集)を使わないと設定ができなくなっています。 ややこしいことに、Mac本体ディスプレイと外付けディスプレイの2画面状態では 液晶用のアンチエイリアスになり、Mac本体のディスプレイを閉じて、 外付けディスプレイ単独にするとブラウン管用アンチエイリアスになるという症状となってます。 私はバグだと思っていますが、Appleはありえない使い方と考えているのかもしれません。

Posted by ふるき328 at 05/21/2012 11:51:16 AM

専門的な情報ありがとうございます。「滑らかな文字のスタイル」の設定の意味を理解できていないこともあり、今ちょっと試しただけでは違いがわかりませんでしたが、次にもう一度本気で調整する時にヒントになりそうです。

Posted by ynomura at 05/21/2012 11:04:04 PM

Apr 07, 2012

Dia 0.97.2の半円状の矢印が消える問題の修正パッチ

Dia 0.97.2-1には、ジグザグ線の先端の矢印の形状が開いた半円の場合、先端のY座標によっては表示されなくなってしまう不具合がある。例えば、UMLシートのReceptacle(要求I/F、Required I/F)の先端を上向きか下向きにして、Y座標が10〜50の間に先端を持って行くと、先端が消えてしまう。これは表示上だけの問題ではなく、その状態で図を画像ファイルとしてエクスポートすると、Diaがクラッシュしてしまうこともある。

筆者はMacPortsのDia 0.97.2-1とFreeBSDの0.97.1とでこの現象を確認した。

それを修正するパッチを作ったので、公開する。
patch-arrow.diff(MacPortsでのみテスト済み)

MacPortsでこれを使うには、
/opt/local/var/macports/sources/rsync.macports.org/release/ports/gnome/dia/Portfile

patchfiles patch-arrow.diff

という行を足して、Portfileがあるディレクトリにfilesというサブディレクトリを作って、そこにこのパッチを置く。

See more ...

Posted at 21:34 in PC一般 | WriteBacks (0)
WriteBacks

Apr 01, 2012

MacPortsでPython対応Diaをインストールするには

先週、今更ながらPythonでDiaのプラグインが作れることを知ったので、早速試してみようと思ったら、MacPortsでインストールしたDia-0.97.2ではPythonが使えないことがわかった。
ソースコードからDiaをmakeする時に、configureスクリプトに--with-pythonを渡す必要があるのだが、MacPortsのDiaのPortfileがそうなっていないのである。そのようにするMacPortsのパッチは既に作られているが、これはかなり昔のMacPortsに対するパッチで、現在ではそのまま当てられないのはもちろん、それに従って手でパッチを当てても、configureがエラーになるだけだった。

エラーログを見ると、

:info:configure checking for libpython2.7.a... not found config
:info:configure configure: error: could not find files required to build python plugin

というように、どうもインストールされたpy27-gtkにうまく対応できないようだ。

試行錯誤の末、かなり強引だが、以下のようにすると成功した。
(このブログが提供するPortfile-dia.diffpatch-configure.diffが~/Downloadsにあるとする)
1. libpython2.7.soの作成
(MacPortsのpython27はインストール済だとする。)

cd /opt/local/lib
sudo ln -s libpython2.7.dylib libpython2.7.so

2. Portfileの修正
cd /
sudo patch -p0 < ~/Downloads/Portfile-dia.diff

3. configureのパッチの用意
cd /opt/local/var/macports/sources/rsync.macports.org/release/ports/gnome/dia/
sudo mkdir files
sudo cp ~/Downloads/patch-configure.diff files/

4. port install dia
sudo port install dia

See more ...

Posted at 22:58 in PC一般 | WriteBacks (0)
WriteBacks