.NETログイン画面の前にスクリプトを実行しようとしていますUbuntu 19.04
。スクリプトは、自分のラップトップに外部モニターが接続されていることを確認し、その場合は解像度を3440x1440@44に変更し、内部ノートブックディスプレイをオフにします。これは私のスクリプトです。
#!/bin/bash
EXTERNAL_OUTPUT="HDMI-1-1"
INTERNAL_OUTPUT="eDP-1-1"
xrandr |grep $EXTERNAL_OUTPUT | grep " connected "
if [ $? -eq 0 ]; then
xrandr --output $INTERNAL_OUTPUT --off
xrandr --newmode "3440x1440_44.00" 299.75 3440 3664 4024 4608 1440 1443 1453 1479 -hsync +vsync
xrandr --addmode HDMI-1-1 "3440x1440_44.00"
xrandr --output HDMI-1-1 --mode "3440x1440_44.00"
else
xrandr --output $INTERNAL_OUTPUT --auto --output $EXTERNAL_OUTPUT --off
fi
このスクリプトを起動アプリケーションに入れようとしましたが、~/.profile
私のGDMログイン情報はまだ私のラップトップ画面にのみ表示されます。私はこのスクリプトがその前に実行され、コンピュータを起動したときに黒い画面が表示されないようにしたいです。
[更新]:提案された解決策をすべて試しましたが、どちらも機能しませんでした。まず、Fiximanのソリューションを試してみました。 Monitor-check.serviceを作成し/etc/systemd/system
て実行しようとしましたが、ラップ/bin/bash /home/user/monitor-check.service
トップの解像度が3440x1440に正常に変更されました。その後、実行を試みます。sudo systemctl start monitor-check.sh
ステータスメッセージは次のとおりです。
monitor-check.service - Service to check for external monitors during boot.
Loaded: loaded (/etc/systemd/system/monitor-check.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Tue 2019-07-09 19:27:17 CEST; 5s ago
Process: 4177 ExecStart=/bin/bash /home/user/Documents/scripts/display_setup.sh (code=exited, status=1/FAILURE)
Main PID: 4177 (code=exited, status=1/FAILURE)
Jul 09 19:27:17 acer systemd[1]: Started Service to check for external monitors during boot..
Jul 09 19:27:17 acer bash[4177]: Can't open display
Jul 09 19:27:17 acer bash[4177]: Can't open display
Jul 09 19:27:17 acer systemd[1]: monitor-check.service: Main process exited, code=exited, status=1/FAILURE
Jul 09 19:27:17 acer systemd[1]: monitor-check.service: Failed with result 'exit-code'.
Environment=XAUTHORITY=/run/user/1000/gdm/Xauthority
セクションに以下を追加して
Service
Xauthorityに環境変数を追加しようとしましたが、役に立ちませんでした。
私もPraveenが提案した解決策を試しましたが、うまくいきませんでした。実際、私はディレクトリにスクリプトを追加しましたが、/etc/profile.d
実行されていないので、私の解決策はまだ古いです。
要約すると、動作する唯一の2つのソリューションは、スタートアップアプリケーションにスクリプトを追加するか、スタートアップアプリケーションに手動で追加することでしたが、両方のソリューションが~/.profile
システムにログインした後、解像度を変更して内部ノートブックディスプレイをオフにしました。
答え1
Ubuntu 19.04でsystemd
これらのスクリプトを使用する最善の方法はsysd-serviceを使用することです。
これには2つのファイルが必要です。 1)script.sh
すでに作成したファイル(テスト済みで動作すると仮定)と2)systemdサービスを定義するユニットファイル。
後者の例は次のとおりです。
[Unit]
Description=Service to check for external monitors during boot.
[Service]
Type=Simple
ExecStart=/bin/bash /path/to/your/monitor/script.sh
[Install]
WantedBy=multi-user.target
Description
そしてExecStart
説明が必要です。Type=Simple
つまり、スクリプトは一度だけ実行され(X秒ごとに実行されない)、WantedBy=multi-user.target
「通常」起動時に(終了しない、回復モードではない、グラフィックオプション)実行されます。もちろん、-lineを追加せずにスクリプトを実行可能にすることもでき/bin/bash
ますExecStart
。
スクリプト/etc/systemd/system
名は、例えば指定されるmonitor-check.service
。.service
サフィックスは必須です!所有権root
と権限をに設定します644
。
以下を使用してサービスをテストできます。
systemctl start monitor-check
または
service monitor-check start
上記のコマンドでに置き換えてstart
状態を確認してください。status
ブートサービスとして有効にするには、次を使用します。
systemctl enable monitor-check.service
今見ると - line をservice monitor-check status
読む必要があります。enabled
Loaded:
644
もちろん、セキュリティ上の理由から、スクリプト自体は - 権限を持つルートが所有する必要があります。最良の方法は、/etc/my_scripts
などの新しいディレクトリに保存することです/etc/systemd/my_scripts
。
再起動後、サービスステータスを使用して終了コードを確認できます。
答え2
Kindly add the script in /etc/profile.d
ユーザーごとに指定するには、ユーザーがログインしたときに実行されるように以下を追加します。
/home/username/.profile