遅ればせながら、あけおめことよろでございます。
さて私のPC環境は大きく変化し、Wacom cintiq13HDを導入したことでトリプルモニタ環境となりました。 ちょっと変則的ですが、正面と右にモニタを配置。これは今までと同じ。 次に、正面の下…つまり机の上にcintiq13HDを置くという形になります。
これで自然にマウスカーソルを主画面の下に動かすと、cintiqの中にカーソルが入ってくるというようになりました。 そして、貧乏性が災いし、cintiqは通常HDMIに接続されているものの、電源は落としてあります。この状況下で、XWindowシステムにモニタとして認識はされ続けており、トリプルモニタ環境は継続しています。
見えるかどうかだけの違いであり、cintiqの電源を投入すれば、USBのペンタブデバイスがプラグインされるだけで、モニタとしてはシステム上、ほぼ何も変化なしに、単に画面が見えるようになるという、理想的な状況です。
さてここで問題が発生しました。
Blenderが起動しない(ように見える)
この状況下で、何故かBlenderが起動しない。画面が全く見えない。 psで見るとプロセスは発生している。
Alt+Tabを押すとやっぱりあるなぁ。
そこでwmctrl -lGすると。やはり、ウィンドウは出ています。しかし、位置が…cintiqのなかにいる!
デュアルモニタではせいぜい2つの画面にまたがるぐらいなのですが、どうも変則的なシステムだと「最初に見つかるモニタ」に行く傾向がある模様であり、我がシステムではそれはHDMIだという…それが今回の悲劇を生んだようです。
Blenderウィンドウが動いてくれない。
調べると-pオプションを与えることで起動位置を指定できるようです。
しかし、これがまた何故かサイズだけ適用され位置が機能しない。 orz
追記:と思ったらワタクシ間違えておりました。詳細は下の「Blenderの-pオプションの正解」に書いておきました…が、一応wmctrlの効かない状況で、xdotoolでウィンドウを移動するためのサンプルとして以下に残しておきます(^^;
仕方ない、wmctrlで移動させるしかないか…
…ところが、wmctrlの-eオプションではBlenderのウィンドウを動かすことが出来ないようです。 (コレは実はKritaも同じで、xdotoolで移動できます)
仕方ないので、xdotoolを使用します。 というわけでスクリプト化してみました…
#!/bin/sh width=1920 height=1200 x=0 y=0 title="Blender" blender -p $x $y $width $height & sleep 1 id=`wmctrl -lG | grep ${title}\$ | cut -f 1 -d " "` xdotool windowmove $id $x $y
後々汎用化させることも視野に入れ、大体のところは変数化しました。
Blenderの-pオプションの正解
何気なく再度manpageを見ると…
-p or --window-geometry <sx> <sy> <w> <h> Open with lower left corner at <sx>, <sy> and width and height as <w>, <h>
lower left corner って書いてあるわw
だから正解はwmctrlやらxdotoolやらを使うのではなく、pオプションだけ、
blender -p 0 1200 1920 1200
で良いということになりますな…相変わらずアホなワタクシでございます。
おまけ - Blenderでマウス中ボタンを代用する
ワタクシ、また安マウスを購入する病気が発症しそうで苦しんでいるのですが、Blenderでは中ボタン(ミドルボタン)でビューを操作できるのが重宝されているようです。
それでもって私はマウスのミドルボタンを改造して側面に付けて別のことに使っているのでした。 以前は戻るボタンに割り振っていましたが、FirefoxのGesturefyを導入して以来、「戻る/進む」はジェスチャー(ロッカージェスチャーも)で代用できるようになったため、 現在はevdevによる、ドラッグでの快速なスクロールエミュレーションに使用しています。 つまり、ボタンが足りません。 このため、またも5ボタン以上のマウスが欲しくなり禁断症状が発症しているのでした。
そんなわけでミドルボタンを代替する方法はないものか、と調べたらあっさり見つかりました。
User preferences -> Input -> Emulate 3 button mouse
これをチェック入れるだけでAltキー押下+左ボタンでビューをグリグリ回せるのですね。とりあえずはコレで行きます。