i3-wmでxrandrを実行するとブラックアウトする
タイル型wmを使ってみようと思い、i3-wmを導入しました。
マルチディスプレイ環境なのでxrandr
等でディスプレイの設定を行う必要がありますが、毎回手動で設定するのは面倒なため、https://github.com/fogine/i3-workscreenを導入しました。
最初のうちはうまく動いていたように見えたのですが、何度か起動をしていくうちにi3の起動と同時に画面がブラックアウトしてしまうようになってしまいました。
原因を調べたところ以下のことがわかっています。
- 直接的な原因は
xrandr --output ~~
のコマンドにあると思われる
i3-workscreenを使わないで自分で作成したスクリプトやarandr
で生成されるシェルスクリプト、xrandr
のコマンドを実行した際も同様の動作になるため。
- 起動と同時に動かさなければ発生しない
~/.config/i3/config
から該当行を消してi3を起動し、端末からxrandrを実行する場合には問題なくディスプレイが拡張される。
また、このことからシェルスクリプトには問題がないと思われる。
~/.config/i3/config
と自分で作成したスクリプトは以下のとおりです。
~/.config/i3/config(長すぎて本文の文字数制限を超過したのでgistにしています)
https://gist.github.com/f248ac7c5ed9b08393c4574e417c1e71
python:python
1# 自作スクリプト 2 3import subprocess 4import re 5from typing import List 6import json 7import os 8 9 10def monitor_setting(config: dict) -> str: 11 cmd = "xrandr" 12 xrandr = subprocess.check_output("xrandr").decode("UTF8") 13 for output in config["outputs"]: 14 if re.search(f"{output['name']} connected", xrandr): 15 cmd += " " + " ".join(["--output", output["name"], "--auto"] + 16 output.get("xrandr", ["--primary"])) 17 18 if config["disableEmptyOutputs"] and cmd == "xrandr ": 19 raise ValueError 20 return cmd 21 22 23if __name__ == "__main__": 24 with open(f"{os.environ["HOME"]/.config/i3-workscreen/config.json") as f: 25 d = json.load(f) 26 print(d) 27 # print(monitor_setting(d)) 28 subprocess.run(monitor_setting(d)) 29
bash
1# arandrで出力されたファイル 2 3#!/bin/sh 4xrandr --output eDP1 --primary --mode 1366x768 --pos 3840x312 --rotate normal --output DP1 --off --output DP2 --off --output DP2-1 --off --output DP2-2 --mode 1920x1080 --pos 1920x0 --rotate normal --output DP2-3 --mode 1920x1080 --pos 0x0 --rotate normal --output HDMI1 --off --output HDMI2 --off --output VIRTUAL1 --off 5
解決策をご教示いただければ幸いです。
## 環境
- OS: Manjaro Linux x86_64
- i3-gaps Version 4.19.1-1
- i3-workscreen 1.0.0
追記
症状が発生する状況が少しはっきりしたので追記します。
Thinkpad X270をドックにつないいますが、起動時にマルチディスプレイ環境だと2種類の挙動をします。
- 起動時(lightdmのログイン画面に到達したタイミング)でノートPCにのみ画面が描画されている
- 〃外部ディスプレイにもログイン画面が描画されている
(1)の状況だと問題が発生するようです。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/05/14 05:20
2021/05/14 09:38