Xでのデュアルモニタの設定

テーマ:
自宅のPCはFreeBSDでデュアルモニタで利用している.Xでデュアルモニタを使う方法はネットで調べるといろいろ出てくる.

nvidiaのドライバを使う方法とかもあるがグラフィックチップ依存になるのでなるべくならXの設定のみでなんとかしたい.
xorg.confにはXineramaというオプションもあってこれだとディスプレイ2台を1枚の巨大なスクリーンとして使えるのだがこれはウィンドウマネージャが対応しているかどうかによっているらしく,そしてほとんどのウィンドウマネージャは対応していないようだ.

なのでXinerama未指定で普通にスクリーン2枚として使っているのだが,でもこれだとちょっと使いにくい部分があるので設定を改良してみたのでメモがてらブログに書いておく.

まずXineramaオプション無しでスクリーン2枚で使うような設定だと,マウスカーソルが画面端にいったときに(xorg.confでScreenの設定をLeftOfにしているなら,マウスカーソルが画面左端にいったときに)スクリーンが切り替わる.しかしこれがAfterstepの仮想画面と相性が悪くて,ゆっくり移動するとAfterstepの仮想画面が切り替わるが速く移動するとスクリーンが切り替わる,みたいな動作になってしまってとてもうっとうしい.

ということで,マウス移動ではスクリーンは切り替わらない(Afterstepの仮想画面のみ切り替わる)ようにして,さらに右Altキーでスクリーンが切り替わるように設定する.

まずマウス移動でスクリーンが切り替わらないようにする設定.xorg.confに以下の修正を入れてスクリーンの位置を離すことで,スクリーンを隣接させないようにする.もしかしたら何かオプションとかでできるのかもしれないが調べてもみつからなかったので,(あまりきれいなやりかたじゃないが)とりあえずこれで対応しておく.
 Section "ServerLayout"
Identifier "X.org Configured"
Screen 0 "Screen0" 0 0
- Screen 1 "Screen1" LeftOf "Screen0"
+# Screen 1 "Screen1" LeftOf "Screen0"
+ Screen 1 "Screen1" Relative "Screen0" 10000 0
InputDevice "Mouse0" "CorePointer"
InputDevice "Keyboard0" "CoreKeyboard"
Option "AutoAddDevices" "false"

さらにxbindkeysとxdotoolをpackagesでインストールする.xdotoolはマウス移動などのイベントを発生させることができるツールで,実はxautomationというツール(に付属するxteというツール)でも同等のことができるが,xdotoolにはスクリーンを切替えたりスクリーン番号を取得したりする機能があるので,こちらを利用する.

で,以下のようなスクリプトを chgscreen.sh として作成する.実行するとスクリーンを切替えることができる.
#!/bin/sh

OLDSCREEN=`xdotool getmouselocation | cut -d " " -f 3 | cut -d : -f 2`
XPOSITION=`xdotool getmouselocation | cut -d " " -f 1 | cut -d : -f 2`
YPOSITION=`xdotool getmouselocation | cut -d " " -f 2 | cut -d : -f 2`

NEWSCREEN=`echo "1 - $OLDSCREEN" | bc`

#echo $OLDSCREEN
#echo $XPOSITION
#echo $YPOSITION
#echo $NEWSCREEN

xdotool mousemove --screen $NEWSCREEN $XPOSITION $YPOSITION

スクリプト実行してスクリーンが切り替わることを確認する.さらに以下のような内容で.xbindkeysrcを作成する.
"/home/hiroaki/chgscreen.sh"
Alt_R

"/home/hiroaki/chgscreen.sh"
Control+Return

xbindkeysを起動し,右AltもしくはCtrl+Enterでスクリーンが切り替わることを確認する.

xbindkeysを起動するように.xinitrcに追加.これで完了.

AD
2012/9/7(金)~9/8(土)に東京の明星大学で開催されたオープンソースカンファレンス2012Tokyo/Fallに出展しました。今回は初日の金曜日のみの出展です。

今回は最近扱った各種ボードの展示とアセンブラのセミナーを行いました。

KOZOSのブログ-ブース全景
ブース全景

KOZOSのブログ-ボード多数
各種ボードの展示

KOZOSのブログ-shintaさん作拡張ボード
shintaさんによる拡張ボードも展示。詳しくは以下を参照。



KOZOSのブログ-Interface誌付録ボード
Interface誌付録のARMマイコンボードでKOZOSのプロトコルスタックを動作させ、webサーバをやっているところのデモ。(タスクレス構造なので、OSとしてのKOZOSが動作しているわけではない。オリジナルのプロトコルスタック動作のデモです)

KOZOSのブログ-KOZOS/Arduino
セキュリティ・キャンプで利用したKOZOS/Arduinoの動作デモ
AD