
Ubuntu日本語フォーラム

ログインしていません。
ubuntu18.04.4で起動と同時に画面回転を行いたいのですが出来ません。
方法は、サービス化を利用して実現しようとしました。
/etc/systemd/system/Reverse.service
[Unit]
Description = Reversal daemon
[Service]
ExecStart = /opt/Reverse.sh
Restart = always
Type = simple
[Install]
WantedBy = multi-user.target
/opt/Reverse.sh
#!/bin/bash
export DISPLAY=:0
while true
do
xrandr --output Virtual1 --rotate inverted
xinput set-prop '9' 'Coordinate Transformation Matrix' -1 0 1 0 -1 1 0 0 1
done
このように実行し、ステータスを確認したところ、
サービス自体はactiveですが、
No protocol specified
Can't open display :0
と表示されており、画面回転が出来ません。
端末上で、xhost + を入力すれば画面反転が行われるので、
恐らくXサーバへのアクセス権が問題なのだと思いますが、どのように
すればよいか分かりません。教えて頂けませんか。
以下、回転のために行ったことを記します。
1、画面右上の▽ボタンのメニューか設定のディスプレイから回転できる
⇒どちらもに回転ボタンなし
2、rc.localファイルにコマンドを記入する
⇒このバージョンにはなかったため、作成し上記の回転コマンドを記入したが反映されず。catコマンドを利用したファイル書き込みコマンドは反応したため、問題はサービス化と同じか
3、Lightdmにコマンドを記入する
⇒Lightdmは、存在しなかったためダウンロードし、Lightdmの立ち上がり方法を試したが、このバージョンは、gdm3とLightdmの両立は難しいらしく、ubuntuが立ち上がらなくなり断念
4、/etc/gdm3/Init/Default
⇒Xrandrのコマンドを記入するも反応せず。
オフライン
スクリプト /opt/Reverse.sh の実行はウィンドウ マネージャーの起動後になされなければ意味がありません。
作成したユニット ファイルには実行時の依存関係も順序関係も記述されていないため、このユニットがいつ実行されるかは systemd 次第です。
このため、ウィンドウ マネージャーが起動する前にスクリプトが実行されてしまっているのではないでしょうか。
GUI を使っていないのでウィンドウ マネージャが systemd で起動されのか、されるとしてユニット名が何になるのか存じませんが。ウィンドウ マネージャのユニット名が仮に wmnager.service とするると、Reverse.service に以下を追記すればうまくいくかもしれません。
[Unit] Requires=wmnager.service After=wmnager.service
ウィンドウ マネージャーが multi-user.target の中で起動されるなら、以下のようにも書けます。
[Unit] Requires=multi-user.target After=multi-user.target
オフライン
ryさん
回答いただきありがとうございます。
確かに順序関係が記されておりませんでした。
教えていただいた方法をどちらも試してstatusを確認したところ、
Reverse.sh[1312]: No protocol specified Reverse.sh[1312]: Can't open display :0 Reverse.sh[1312]: Unable to connect to X server
と表示され、回転できませんでした。
やはりXサーバーへのアクセスの方法に問題がありそうです。
もしくは、サービス化ではなく他の方法を考えるべきなのでしょうか。
ご教示いただきたいです。
オフライン
wmnager.service は思いつきの出鱈目な名前なんだけど、正しいユニット名を調べましたか。
もっとも、ウィンドウ マネージャが systemd で起動されないときは、systemd でサービス化する方法自体が使えなさそうですが。
オフライン
ryさん
回答いただきありがとうございます。
サービスの名前に関してですが、
Requires=display-manager.service After=display-manager.service
で行いました。
ウィンドウマネージャ自体は、systemdで起動されているかと思っています。
オフライン