web-dev-qa-db-ja.com

xrandrを実行するためにログインスクリプトを設定するにはどうすればよいですか?

私は3つのモニターを使用していますが、2つのモニターは回転しています。

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

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

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

ログイン時にモニターが回転するように、これらをどこに配置すればよいですか。また、私はおそらくそれをグローバルに行うことができますか?他のユーザーとしてログインすると、モニターが回転します。または、すべてのユーザーがログイン後にこれを行うにはユーザースクリプトが必要ですか?

4
400 the Cat

私はあなたに少し似ている2画面のレイアウトを使用しています。私の画面は右側が通常の画面、左側が縦長の画面です。私のセットアップでは、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-screen-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
4

ユーザーランドのsystemdサービス(フルパス= $HOME/.config/systemd/user/set-display.service)を使用して、XFCEを使用し、画面を自動的に埋めない(conkyのために短くする)QEMU VMで同様の状況を処理します。

[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はそれ以上必要な場合がありました。両方のxrandrコマンドを実行するスクリプトを作成し、それをExecStart =ExecStart=/path/to/your/scriptのようなもの)に置き換え、それを有効にします(systemctl --user enable set-display)。

更新:ログイン後にサービスを手動で実行した場合(rootおよび通常のユーザーとして試行)でも、Debianバスターのシステムサービスとしてのテストは機能しませんでした。

2
ajgringo619

コマンドラインから(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

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

1
intika

これらの2行は、ログインマネージャーまたはウィンドウマネージャーの起動時に実行されるファイルの1つに配置する必要があります。どのファイルを使用するかは、使用するログインマネージャーとウィンドウマネージャー、およびシステムのローカルセットアップによって異なります。

たとえば、slimログインマネージャーを使用する場合は、スタートアップコマンドを構成のlogin_cmdで指定されたファイルに配置する必要があります。例えばDebianでは:

$ 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

Debianでは、/ etc/X11/Xsession.dに作成された新しいファイルが最適な場所だと思います。たとえば、次の内容で90xrandrと言います。

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

/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が実行されるafterユーザーがログインするため、起動するたびにデフォルトのモニター設定でslimを使用する必要があることに注意してください。

1