静的にディスプレイの設定を行う仕組みのサポート
「Mir」に静的にディスプレイの設定を行う仕組みが追加されました。「Xサーバー」で言うところの「xorg.conf」に相当するものと思えば分かりやすいでしょう。
「IoT」デバイスなど一部の利用方法で、ディスプレイの設定をユーザーが明示的に指定できたほうが都合が良いケースがあります。
これに対応するため「Mir」に静的にディスプレイの設定を行う「Static Display Configuration」という仕組みが追加されました。
ファイルフォーマット
ディスプレイの設定は、設定ファイルに記述します。設定ファイルのフォーマットは「YAML」形式です。
設定ファイルの記述例は、以下のようになります。
layouts: # keys here are layout labels (used for atomically switching between them) # when enabling displays, surfaces should be matched in reverse recency order default: # the default layout cards: # a list of cards (currently matched by card-id) - card-id: 0 VGA-1: state: disabled # Defaults to preferred enabled HDMI-A-1: orientation: inverted # {normal, left, right, inverted}, Defaults to normal
miral-shellで初期実装が行われる
「Static Display Configuration」の初期実装は、「miral-shell」で行われています。今後「miral-kiosk」にも実装が拡大される予定です。
Static Display Configurationを利用するには
「Static Display Configuration」を利用する方法です。1.開発版Mirのインストール
現状「Static Display Configuration」を利用するには、開発版の「Mir」が必要です。開発版の「Mir」は、以下のコマンドを1行ずつ実行すれば、インストールできます。
sudo add-apt-repository --update ppa:mir-team/release
sudo apt install mir-demos mir-graphics-drivers-desktop
sudo apt install qterminal qtwayland5
sudo apt install mir-demos mir-graphics-drivers-desktop
sudo apt install qterminal qtwayland5
2.miral-desktopの実行
「VT4」に切り替え、以下のコマンドを実行します。
miral-desktop --display-config static=static-display-layout
「static-display-layout」が設定ファイルになりますが、設定内容の雛形を取得するため、事前に「static-display-layout」ファイルを作成せず実行するのがポイントです。
3.設定ファイルの編集
「Mir」を終了させコンソールログを見ると、以下のようなログが出力されます。
[2018-08-24 18:08:03.506576] mesa-kms: Output: DisplayPort-2 (disconnected)
[2018-08-24 18:08:03.506742] miral: Display config:
8>< ---------------------------------------------------
layouts:
# keys here are layout labels (used for atomically switching between them)
# when enabling displays, surfaces should be matched in reverse recency order
default: # the default layout
cards:
# a list of cards (currently matched by card-id)
- card-id: 0
VGA-1:
# This output supports the following modes: 1920x1080@60.0, 1680x1050@60.0,
# 1280x1024@75.0, 1280x1024@60.0, 1440x900@59.9, 1280x960@60.0, 1280x800@59.8,
# 1152x864@75.0, 1280x720@60.0, 1024x768@75.0, 1024x768@70.1, 1024x768@60.0,
# 832x624@74.5, 800x600@75.0, 800x600@72.2, 800x600@60.3, 800x600@56.2,
# 640x480@75.0, 640x480@66.7, 640x480@59.9, 720x400@70.1
#
# Uncomment the following to enforce the selected configuration.
# Or amend as desired.
#
# state: enabled # {enabled, disabled}, defaults to enabled
# mode: 1920x1080@60.0 # Defaults to preferred mode
# position: [0, 0] # Defaults to [0, 0]
# orientation: normal # {normal, left, right, inverted}, defaults to normal
HDMI-A-1:
# This output supports the following modes: 1920x1080@60.0, 1680x1050@59.9,
# 1280x1024@75.0, 1280x1024@60.0, 1440x900@59.9, 1280x960@60.0, 1280x800@59.9,
# 1152x864@75.0, 1280x720@60.0, 1024x768@75.0, 1024x768@70.1, 1024x768@60.0,
# 832x624@74.5, 800x600@75.0, 800x600@72.2, 800x600@60.3, 800x600@56.2,
# 640x480@75.0, 640x480@66.7, 640x480@59.9, 720x400@70.1
#
# Uncomment the following to enforce the selected configuration.
# Or amend as desired.
#
# state: enabled # {enabled, disabled}, defaults to enabled
# mode: 1920x1080@60.0 # Defaults to preferred mode
# position: [0, 0] # Defaults to [0, 0]
# orientation: normal # {normal, left, right, inverted}, defaults to normal
DisplayPort-1:
# (disconnected)
HDMI-A-2:
# (disconnected)
DisplayPort-2:
# (disconnected)
8>< ---------------------------------------------------
[2018-08-24 18:08:03.674614] <WARNING> mesa-kms: drmModeCrtcSetGamma failed: Invalid argument
[2018-08-24 18:08:03.674669] <WARNING> mesa-kms: drmModeCrtcSetGamma failed: Invalid argument
[2018-08-24 18:08:03.506742] miral: Display config:
8>< ---------------------------------------------------
layouts:
# keys here are layout labels (used for atomically switching between them)
# when enabling displays, surfaces should be matched in reverse recency order
default: # the default layout
cards:
# a list of cards (currently matched by card-id)
- card-id: 0
VGA-1:
# This output supports the following modes: 1920x1080@60.0, 1680x1050@60.0,
# 1280x1024@75.0, 1280x1024@60.0, 1440x900@59.9, 1280x960@60.0, 1280x800@59.8,
# 1152x864@75.0, 1280x720@60.0, 1024x768@75.0, 1024x768@70.1, 1024x768@60.0,
# 832x624@74.5, 800x600@75.0, 800x600@72.2, 800x600@60.3, 800x600@56.2,
# 640x480@75.0, 640x480@66.7, 640x480@59.9, 720x400@70.1
#
# Uncomment the following to enforce the selected configuration.
# Or amend as desired.
#
# state: enabled # {enabled, disabled}, defaults to enabled
# mode: 1920x1080@60.0 # Defaults to preferred mode
# position: [0, 0] # Defaults to [0, 0]
# orientation: normal # {normal, left, right, inverted}, defaults to normal
HDMI-A-1:
# This output supports the following modes: 1920x1080@60.0, 1680x1050@59.9,
# 1280x1024@75.0, 1280x1024@60.0, 1440x900@59.9, 1280x960@60.0, 1280x800@59.9,
# 1152x864@75.0, 1280x720@60.0, 1024x768@75.0, 1024x768@70.1, 1024x768@60.0,
# 832x624@74.5, 800x600@75.0, 800x600@72.2, 800x600@60.3, 800x600@56.2,
# 640x480@75.0, 640x480@66.7, 640x480@59.9, 720x400@70.1
#
# Uncomment the following to enforce the selected configuration.
# Or amend as desired.
#
# state: enabled # {enabled, disabled}, defaults to enabled
# mode: 1920x1080@60.0 # Defaults to preferred mode
# position: [0, 0] # Defaults to [0, 0]
# orientation: normal # {normal, left, right, inverted}, defaults to normal
DisplayPort-1:
# (disconnected)
HDMI-A-2:
# (disconnected)
DisplayPort-2:
# (disconnected)
8>< ---------------------------------------------------
[2018-08-24 18:08:03.674614] <WARNING> mesa-kms: drmModeCrtcSetGamma failed: Invalid argument
[2018-08-24 18:08:03.674669] <WARNING> mesa-kms: drmModeCrtcSetGamma failed: Invalid argument
「8>< ---------------------------------------------------」間の内容が、設定ファイルの雛形になります。
余談ですが「8><」はハサミを表しています。
この雛形を元に設定ファイルを記述し、「static=」オプションにその設定ファイルを指定して「Mir」を起動すれば、「Static Display Configuration」を利用できます。