モニター構成を設定するスクリプトの実行

モニター構成を設定するスクリプトの実行

こんにちは、VGA1出力が接続されている場合は、デスクトップを構成するために起動時に作成した小さなスクリプトを実行しようとしています。 BunsenLabs-Hydrogen(Debianベース)を実行します。

スクリプト:

#!/bin/bash
### BEGIN INIT INFO
# Provides:          resVGA1
# Required-Start:
# Required-Stop:
# Default-Start:     2 3 4 5 
# Default-Stop:      0 1 6
# Short-Description: Setup xrandr with VGA1
# Description:       Setup Multi-screen resolution with VGA1 connected
### END INIT INFO

if xrandr | grep "VGA1 connected"; then
    xrandr -s 1366x768                     #As it doesn't default to this with VGA1 connected
    xrandr --auto                          #To populate the second screen
    xrandr --output VGA1 --right-of LVDS1  #Right of VGA1, not duplicate
fi

スクリプトを実行可能にし、呼び出すと機能します。その後、/etc/init.d/に入れて、次のコマンドを実行します。

update-rc.d resVGA1 defaults

“ls -l /etc/rc?.d/の出力解像度VGA「例:

lrwxrwxrwx 1 root root 17 Dec 19 12:33 /etc/rc0.d/K01resVGA1 -> ../init.d/resVGA1
lrwxrwxrwx 1 root root 17 Dec 19 12:33 /etc/rc1.d/K01resVGA1 -> ../init.d/resVGA1
lrwxrwxrwx 1 root root 17 Dec 19 12:33 /etc/rc2.d/S01resVGA1 -> ../init.d/resVGA1
lrwxrwxrwx 1 root root 17 Dec 19 12:33 /etc/rc3.d/S01resVGA1 -> ../init.d/resVGA1
lrwxrwxrwx 1 root root 17 Dec 19 12:33 /etc/rc4.d/S01resVGA1 -> ../init.d/resVGA1
lrwxrwxrwx 1 root root 17 Dec 19 12:33 /etc/rc5.d/S01resVGA1 -> ../init.d/resVGA1
lrwxrwxrwx 1 root root 17 Dec 19 12:33 /etc/rc6.d/K01resVGA1 -> ../init.d/resVGA1 

私が理解したところ、これは起動時に機能するはずですが、そうではありません。 /var/log/syslogを確認し、次のレポートを見つけました。

Dec 19 12:33:46 DankPad resVGA1[553]: Can't open display
Dec 19 12:33:46 DankPad kernel: [    0.244129] ACPI: bus type PNP unregistered
Dec 19 12:33:46 DankPad kernel: [    0.250523] pci 0000:00:1c.0: PCI bridge to [bus 02]
Dec 19 12:33:46 DankPad systemd[1]: Started LSB: Setup xrandr with VGA1.
Dec 19 12:33:46 DankPad kernel: [    0.250541] pci 0000:00:1c.1: PCI bridge to [bus 03]
Dec 19 12:33:46 DankPad kernel: [    0.250548] pci 0000:00:1c.1:   bridge window [mem 0xf2400000-0xf24fffff]
Dec 19 12:33:46 DankPad kernel: [    0.250560] pci 0000:00:1c.3: PCI bridge to [bus 05-0c]

私が何か間違っているのでしょうか、それとも私がやろうとしていることを根本的に誤解していますか?

どんな助けでも大変感謝します。

ベストアンサー1

利用可能なX11セッションがないシステム起動スクリプトに接続しています。これが「ディスプレイを開けません」というエラーが発生する理由です。 (システム単位ではなく、システムシステムでスクリプトを作成していることを忘れてはいけませんinit.d。初期化スクリプトは実際にはAPIに準拠していません。たとえば、「開始」または「停止」を確認しません)。

代わりに、起動するにはX11に接続する必要があります。 5つの選択肢があります(少なくともこの記事を書いている間も考え続けてください)。

  1. システム全体にスクリプトを挿入します/etc/X11/Xsession.d/。スクリプトはXセッションの設定から派生しており、デフォルトでこのifブロックだけが必要です。これが私の選択になります。

  2. コンテンツを入力してモニターのデフォルト設定を設定できる必要があります/etc/X11/xorg.conf.d/(最初にこれを行う必要があるかもしれませんmkdir)。 Xorgの構成構文を学ぶ必要がありますが。

  3. ユーザーの場合~/.Xsession

  4. 1人のユーザーの場合は、それをデスクトップ環境の起動スクリプトに入れます(ほとんどはこのスクリプトがあります)。あるいは、DEは実際にモニタ設定を覚えて自動的に適用することもできます。

  5. システム全体(または1人のユーザー)をsystemdに入れます。ユーザー会議。これには、ユニットファイルを/etc/system.d/userまたはに配置する作業が含まれます~/.config/systemd/user/。非常に柔軟ですが、体系的な学習が必要です。

おすすめ記事