ubuntuで画面の回転

 これまで座椅子に座った状態でディスプレイを右前方(かつては左前方)において作業していた。
doroyamada.hatenablog.jp

 コロナ騒動で在宅勤務が増え、会社貸与PCに27インチのディスプレイを接続し、テーブルの上に置いて使うようになった。たまにそのままクライアントPCを使ったりするとやはり正面にディスプレイがある方がやりやすいと感じた。でもディスプレイが大きすぎて、テレビを隠してしまうので、ながらPCができない。
 そこでモバイルディスプレイを導入。モバイル利用というよりも小型ディスプレイとして。

 ところが、同じピクセル数(1920*1080)なので、画面が小さい分文字も小さくなりすぎる。そこで画面のピクセル数を下げることにより解決を図る。もちろんにじみ感が出るがそれは覚悟の上。さらに、電源や映像入力端子が左にあるのを右にしたいので上下反転させたい。

 前何度かいじったことのあるxradnrでいろいろといじってみる。最終的にやったことは、モードを追加する以下のスクリプトを起動時実行プログラムに追加。GUIで接続するために必要。

#!/usr/bin/zsh
#解像度追加
OUT=`xrandr`
if [[ "$OUT" =~ "DVI-0 connected primary" ]]; then
	MONITOR_DEV="DVI-0"
elif [[ "$OUT" =~ "HDMI-0 connected primary" ]]; then
	MONITOR_DEV="HDMI-0"
else
	echo "no match"
	exit
fi

/usr/bin/xrandr --newmode "1600x900"  118.25  1600 1696 1856 2112  900 903 908 934 -hsync +vsync
/usr/bin/xrandr --addmode $MONITOR_DEV "1600x900"
export MONITOR_DEV

 HDMI出力に接続しているのにたまにDVI-0と認識されるのでこんなことをやっている。当初,zprofileに追加したが、どうもX起動と関係なく実行されるらしくうまく働かなかった。

 もう一つ、モードをトグルで切り替えるスクリプトを作成。xfceのキーボード・ショートカットのctrl+ALT+Rに割り当てる。条件設定やエラー対応はええかげん。

#!/usr/bin/zsh
OUT=`xrandr`
if [[ "$OUT" =~ "DVI-0 connected" ]]; then
	DEV="DVI-0"
elif [[ "$OUT" =~ "HDMI-0 connected" ]]; then
	DEV="HDMI-0"
else
	echo "no match"
	exit
fi

if [[ "$OUT" =~ "connected primary 1600" ]]; then
	xrandr -s 1920x1080 -o normal
else
	xrandr -s 1600x900 -o inverted
fi

 xfce4のディスプレイ設定ではディスプレイ名(メーカー名、モデル名)を取得できているけど、それをcuiで取得する方法がわからない。

 設定を保存している~/.config/xfce4/xfconf/xfce-perchannel-xml/displays.xm の内容、タイムスタンプを見るとディスプレイ設定(xfce4-disolay-setting)を起動した時に更新されるようだが、同様のことをcuiだけでやる方法がみつからない。

 最初に縮小画面にした時は1920*1080のデスクトップの左上から1600*900分しか表示しないようになって、xfceの画面下に表示させているパネルも使えなくなる。この時はguiで調整し直すとパネルが画面の下に表示されるようになる。ここはもう少し試行錯誤してみる。

 xrandrのオプション、出力を--outputで指定する時は画面サイズを--scale、開店を--rotateで指定するのに、出力を指定しない時は--size、--orientationで指定するのってどやねん。ちなみに出力を指定しない時は全ディスプレイに変更が及ぶのではなく、現在のディスプレイにだけ変更が及ぶもよう。

 デュアルスクリーンにする時、ピクセル数が違うとマウスが移動しない。同じであることがマストなのか、接触する部分のピクセル数が同じであることがマストなのかは不明。