xrandrを実行するためのログインスクリプトをどのように設定しますか?

xrandrを実行するためのログインスクリプトをどのように設定しますか?

3つのモニターを使用し、そのうちの2つは回転するサイドモニターです。

2つのモニターの回転を正常に設定できませんでしたが、ログインマネージャの起動後に使用できるコマンドが見つかりxorg.confました。xrandr

xrandr --output DisplayPort-1 --rotate right --left-of DisplayPort-0
xrandr --output DisplayPort-2 --rotate left --right-of DisplayPort-0

現在、ログイン後に手動でこれらのコマンドを実行します。

ログイン時にモニターを回転させるには、どこに入れる必要がありますか?そしてグローバルにできますか?これにより、他のユーザーとしてログインするとモニターが回転します。または、各ユーザーがログインした後にこれを行うには、ユーザースクリプトが必要ですか?

答え1

私はあなたと少し似ている2画面レイアウトを使用しています。私は右側に通常の画面があり、左側に縦画面があります。私の設定によると、Xは両方の画面で完璧に動作します。

以下はあなたの状況に対する私の提案です(同じ画面もなく3つもないのでテストするのは難しいです)。しかし、動作するX設定を取得するのに十分です。

次のファイルを挿入します。/etc/X11/xorg.conf.d/

30-screen-dport0.conf
30-screen-dport1.conf
30-screen-dport2.conf

次のコンテンツが含まれています。

30-screen-dportcenter.conf

Section "Monitor"
  Identifier   "DisplayPort-0"
  Option       "Primary" "true"
  Option       "PreferredMode"   "3840x2160" # Adapt this if you resolution is not the same
  Option       "Position"        "1200 0" 
EndSection

Section "Screen"
  Identifier   "DPC"
  Device       "nVidia" # here you choose your driver
  Monitor      "DisplayPort-0"
EndSection

30-screen-dportleft.conf

Section "Monitor"
  Identifier   "DisplayPort-1 "
  Option       "LeftOf" "DisplayPort-0"
  Option       "Rotate" "left" 
  Option       "PreferredMode"   "1920x1200"
  Option       "Position"        "0 0"
EndSection

Section "Screen"
  Identifier   "DPL"
  Device       "nVidia"
  Monitor      "DisplayPort-1"
EndSection

30-スクリーン-dportright.conf

Section "Monitor"
  Identifier   "DisplayPort-2"
  Option       "RightOf" "DisplayPort-0"
  Option       "Rotate" "right" 
  Option       "PreferredMode"   "1920x1200"
  Option       "Position"        "5040 0" # 1200 + 3840
EndSection

Section "Screen"
  Identifier   "DPR"
  Device       "nVidia"
  Monitor      "DisplayPort-2"
EndSection

90-serverlayout.conf

Section "ServerLayout"
    Identifier   "Main"
    Screen       0 "DPL"
    Screen       1 "DPC"
    Screen       2 "DPR
EndSection

Xserver座標は次のように動作します。

 0                 X
+ -----------------> X-axis 
|0
|
|
|
|
| 
| Y
V Y-axis  

nVidia識別子は、次の名前のファイルで定義されているビデオカードへの参照です。

20-nvidia.conf

Section "Device"
  Identifier  "nVidia"
  Driver      "nouveau"
  Option      "AccelMethod"  "sna"
  Option      "GLXVBlank"    "true"
  # Need to flag this as only referring to one output on the card
  Screen      0

EndSection

答え2

$HOME/.config/systemd/user/set-display.serviceXFCEを使用し、画面をオートコンプリートしない(conkyのために短縮された)QEMU VMで同様の状況を処理するために、userland systemdサービス(フルパス=)を使用しました。

[Unit]
Description=Set Display Resolution

[Service]
ExecStartPre=/bin/sleep 5
Type=oneshot
ExecStart=/usr/bin/xrandr --output Virtual-0 --mode 1499x996

[Install]
WantedBy=default.target

DEが完全にロードされたことを確認するには、sleepコマンドを使用します。 SSDのVMは常に5秒以内に正常に動作しますが、HDD VMは時々より多くの時間がかかります。 2 つの xrandr コマンドを実行するスクリプトを作成し、次に置き換えます。実行開始=(同様ExecStart=/path/to/your/script)次に有効にします(systemctl --user enable set-display)。

アップデート:ログイン後に手動でサービスを実行しても(rootユーザーと一般ユーザーとして試しても)、Debian Busterでシステムサービステストが機能しません。

答え3

ログインマネージャまたはウィンドウマネージャの起動時に実行されるファイルの1つにこれらの2行を含める必要があります。一部のファイルは、使用するログインマネージャとウィンドウマネージャとシステムのローカル設定によって完全に異なります。

たとえば、ログインマネージャを使用している場合は、設定で指定されたファイルに起動slimコマンドを配置する必要があります。login_cmdDebian を例に挙げます:

$ grep '^login_cmd ' /etc/slim.conf
login_cmd           exec /bin/bash -login /etc/X11/Xsession %session

しかし、Slackwareでは:

$ grep '^login_cmd ' /etc/slim.conf
login_cmd           exec /bin/bash -login ~/.xinitrc %session

90xrandrDebian では、/etc/X11/Xsession.d に次の内容を含む新しいファイルを作成するのが最善の場所だと思います。

xrandr --output DisplayPort-1 --rotate right --left-of DisplayPort-0
xrandr --output DisplayPort-2 --rotate left --right-of DisplayPort-0

ソースは次のようになるため、実行可能にしたりshebangを追加したりする必要はありません/etc/X11/Xsession

# use run-parts to source every file in the session directory; we source
# instead of executing so that the variables and functions defined above
# are available to the scripts, and so that they can pass variables to each
# other
SESSIONFILES=$(run-parts --list $SYSSESSIONDIR)
if [ -n "$SESSIONFILES" ]; then
  set +e
  for SESSIONFILE in $SESSIONFILES; do
    . $SESSIONFILE
  done
  set -e
fi

また、login_cmd実行中です。後ろにユーザーがログインしているため、slim起動するたびにデフォルトのモニター設定を使用する必要があります。

答え4

コマンドラインから(nanoを使用している場合はそれ以外の場合はvimに置き換えます)

sudo nano /etc/xdg/autostart/rotate-screen-1.desktop

次に、次を貼り付けて保存します。

[Desktop Entry]
Version=1.0
Encoding=UTF-8
Type=Application
Name=Xrandr Screen 1 Rotation
Icon=preferences-desktop-screensaver
Exec=xrandr --output DisplayPort-1 --rotate right --left-of DisplayPort-0
Terminal=false
OnlyShowIn=LXDE;OPENBOX;GNOME;KDE;
Categories=System;Security;Utility;
StartupNotify=false
X-KDE-autostart-after=panel
X-OPENBOX-Autostart-enabled=true

それでは、2番目の画面も同じです。

sudo nano /etc/xdg/autostart/rotate-screen-2.desktop

次に、次を貼り付けて保存します。

[Desktop Entry]
Version=1.0
Encoding=UTF-8
Type=Application
Name=Xrandr Screen 2 Rotation
Icon=preferences-desktop-screensaver
Exec=xrandr --output DisplayPort-2 --rotate left --right-of DisplayPort-0
Terminal=false
OnlyShowIn=LXDE;OPENBOX;GNOME;KDE;
Categories=System;Security;Utility;
StartupNotify=false
X-KDE-autostart-after=panel
X-OPENBOX-Autostart-enabled=true

再起動後、画面は自動的に回転するはずです。

関連情報