dothikoのカクカクワールド2D REBOOT

プログラミングとかLinux関連(特にOSSのグラフィックツール関連)とかレトロゲームとか色々。

デュアルモニタとフルスクリーンゲーム@ubuntu 12.04

この記事はfc2から引っ越した記事です

Ubuntu 12.04LTS、Intel HDグラフィックなノートPCで快適に使えているのですが、一つ問題点が。
HDMIVGAのデュアルモニタで使っているのですが、ゲームを起動するとSDL-BallやPingusは勝手にデュアルモニタを解除してしまうのですね。そしてなぜかクローンモードになってしまうようです。
何かSDLのフルスクリーン回りに原因があるようです。mameなんかはそうならないのですけどね。

そこでウィンドウモードに逃げてもいいのですが、ふと思いついてしまいました。

「どうせゲームやる時はサブモニタではなにもしない」

スクリプトでデュアルモニタを自動で解除し、ゲーム終了後に自動復帰すればいいのでは?」

#!/bin/sh

xrandr --output VGA1 --off
pingus
xrandr --output VGA1 --auto --right-of HDMI1



実にシンプル。
やってみましたが、普通に動きました。

ただし、VGA1側に置いてあるウィンドウがHDMI側に来ちゃうようなんですけどね。
うーむ。

いろいろ調べてみたらwmctrlというプログラムでウィンドウの位置の取得や設定ができるようです。

wmctrl -lG

とすると、ずらずらずらっと現在のウィンドウの情報が出るのですが
例えばこのようなものがあるとして

0x0302fef9 3 2721 224 602 654 e420 すべてのメモの検索

これでこの「すべてのメモの検索」ウィンドウをどっかに動かして後。

wmctrl -i -r 0x0302fef9 -e 3,2721,224,602,654

とすると、確かに動きます。
これをpythonから呼び出すスクリプトでも書けば、つまり最初に退避してゲーム終了後に全部復帰すればいいと。

…まぁ、若干執着しすぎの気がしてきたので今回はやめておきますw


この辺、NVIDIAのプロプラドライバのデュアルヘッドはそれぞれ別個のX Windowになっていた気がするのですが。
やはりNVIDIAはスバラシイですな…

ちなみにご存じないかたの為に説明しておきますとPingusとはレミングスのクローンで、ネズミの代わりにペンギンが群れで脱出するというゲームです。macwindows版もあったと思います。




レミングスはメチャクチャ好きなタイトルだったんですが、やはり時代を越えて面白いですなぁ。
以前、PingusもTutorial Islandは全クリしてしまいましたが、その続きはどうなったのだろう…と思って再インストールしてみて、この事態に陥ったため書いておきました。
まぁステージエディタついてるので、自分で作ればいいのかw

Ubuntu 12.04LTS、Intel HDグラフィックなノートPCで快適に使えているのですが、一つ問題点が。
HDMIVGAのデュアルモニタで使っているのですが、ゲームを起動するとSDL-BallやPingusは勝手にデュアルモニタを解除してしまうのですね。そしてなぜかクローンモードになってしまうようです。
何かSDLのフルスクリーン回りに原因があるようです。mameなんかはそうならないのですけどね。

そこでウィンドウモードに逃げてもいいのですが、ふと思いついてしまいました。

「どうせゲームやる時はサブモニタではなにもしない」

スクリプトでデュアルモニタを自動で解除し、ゲーム終了後に自動復帰すればいいのでは?」

#!/bin/sh

xrandr --output VGA1 --off pingus xrandr --output VGA1 --auto --right-of HDMI1



実にシンプル。
やってみましたが、普通に動きました。

ただし、VGA1側に置いてあるウィンドウがHDMI側に来ちゃうようなんですけどね。
うーむ。

いろいろ調べてみたらwmctrlというプログラムでウィンドウの位置の取得や設定ができるようです。

wmctrl -lG

とすると、ずらずらずらっと現在のウィンドウの情報が出るのですが
例えばこのようなものがあるとして

0x0302fef9 3 2721 224 602 654 e420 すべてのメモの検索

これでこの「すべてのメモの検索」ウィンドウをどっかに動かして後。

wmctrl -i -r 0x0302fef9 -e 3,2721,224,602,654

とすると、確かに動きます。
これをpythonから呼び出すスクリプトでも書けば、つまり最初に退避してゲーム終了後に全部復帰すればいいと。

…まぁ、若干執着しすぎの気がしてきたので今回はやめておきますw


この辺、NVIDIAのプロプラドライバのデュアルヘッドはそれぞれ別個のX Windowになっていた気がするのですが。
やはりNVIDIAはスバラシイですな…

ちなみにご存じないかたの為に説明しておきますとPingusとはレミングスのクローンで、ネズミの代わりにペンギンが群れで脱出するというゲームです。macwindows版もあったと思います。




レミングスはメチャクチャ好きなタイトルだったんですが、やはり時代を越えて面白いですなぁ。
以前、PingusもTutorial Islandは全クリしてしまいましたが、その続きはどうなったのだろう…と思って再インストールしてみて、この事態に陥ったため書いておきました。
まぁステージエディタついてるので、自分で作ればいいのかw