Ubuntuの起動時にxrandrコマンドを実行する方法


13

xrandr起動時に次のコマンドを実行するにはどうすればよいですか?

xrandr

cvt 1368 768 
xrandr --newmode "1368x768_60.00"   85.25  1368 1440 1576 1784  768 771 781 798 -hsync +vsync
xrandr --addmode VGA1 1368x768_60.00
xrandr --output VGA1 --mode 1368x768_60.00 

1
こんにちはUdhaya Kumarさん、答えがあることに気づきましたか?あなたが管理するかどうかを教えてください。
ジェイコブVlijm

回答:


21

スタートアップアプリケーションに複雑なコマンドを追加する

一般に、[ダッシュ]> [スタートアップアプリケーション]> [追加]を選択して、起動時に実行するコマンド(ログイン)を追加できます。この場合、複雑なコマンドを実行する必要があります。

それを行うには2つのオプションがあります。

  1. 別のスクリプトを作成します。

    #!/bin/bash
    
    cvt 1368 768 
    # xrandr only works in X11 sessions, not Wayland
    [ "$XDG_SESSION_TYPE" = x11 ] || exit 0
    xrandr --newmode "1368x768_60.00"   85.25  1368 1440 1576 1784  768 771 781 798 -hsync +vsync
    xrandr --addmode VGA1 1368x768_60.00
    xrandr --output VGA1 --mode 1368x768_60.00

    スクリプトを空のファイルにコピーし、名前を付けて保存し、set_monitor.sh 上記のように起動アプリケーションに次のコマンドを追加します。

    /bin/bash /path/to/set_monitor.sh
    
  2. コマンドを1つの(非常に長い)コマンドにチェーンします。

     /bin/bash -c "cvt 1368 768&&xrandr --newmode "1368x768_60.00"   85.25  1368 1440 1576 1784  768 771 781 798 -hsync +vsync&&xrandr --addmode VGA1 1368x768_60.00&&xrandr --output VGA1 --mode 1368x768_60.00"
    

    この場合、&&コマンド間で使用すると、各コマンドが別々の行にあるように、前のコマンドが正常に実行されるとすぐに(および実行される場合)各コマンドが実行されます。

    次に、上記のように、コマンドをスタートアップアプリケーションに追加します。

重要な注意:スタートアップアプリケーションにxrandrコマンドを追加する

xrandrスタートアップにコマンドを追加するのは難しい場合があります。実行が早すぎると、デスクトップが完全にロードされる前に壊れることがあります。したがって、(おそらく)コマンドまたはスクリプトを実行するために(最後のケースのように)コマンドに少し休憩を追加する必要があるかもしれません。

/bin/bash -c "sleep 15&&cvt 1368 768&&xrandr --newmode "1368x768_60.00"   85.25  1368 1440 1576 1784  768 771 781 798 -hsync +vsync&&xrandr --addmode VGA1 1368x768_60.00&&xrandr --output VGA1 --mode 1368x768_60.00"

sleep 15最適な時間を見つけるために、少し遊んでみる必要があるかもしれません。

注意

最初の行は省略しました。

xrandr

それはnothinではありませんが、画面設定にいくつかの情報を表示するためです:)


6
cvtモードラインが既にわかっている場合は、コマンドを含める必要はありません。
thethakuri

1
/bin/bash -c "..."ラッピングは、私のためのトリック:)やった
Superole

Kubuntu 17.10でsleep、「セッション開始前」オプションを選択して、「スタートアップアプリケーション」に部品なしのコマンドを追加しました。
pat-s

1
3年前に書いた+1 # xrandr only works in X11 sessions, not Wayland。当時の良い将来の校正。
WinEunuuchs2Unix

7

よると、この時に今すぐログインの上、それを自動化する部分、私は自分のスクリプトを作ってきた45custom_xrandr-settingsし、中にそれを置きます/etc/X11/Xsession.d/。Ubuntu 14.04 LTSでうまく動作します。caseそのセクションで説明されているコマンドの後に、以下のコードを配置できます。

PRI_OUTPUT="DVI-0";
# Make and force resolution
myNewMode=$(cvt 1366 768 60 | grep -oP 'Modeline\K.*') &&                           #grep evrything after 'Modline'
myNewModeName=\"$(echo $myNewMode | grep -oP '"\K[^"\047]+(?=["\047])' )\" &&       #grep everything inside quotes
xrandr --newmode $myNewMode;
sleep 15;       
xrandr --addmode $PRI_OUTPUT $myNewModeName;

上記があなたが探しているものだと思います。xrandrコマンドを実行するだけで、使用可能な出力を確認できます。出力があってもよいVGAVGA-0DVI-0TMDS-1またはDisplayPort-0

これが私が作成した完全なスクリプトです。

# To configure xrandr automatically during the first login, 
# save this script to your computer as /etc/X11/Xsession.d/45custom_xrandr-settings: 

# If an external monitor is connected, place it with xrandr
# External output may be "VGA" or "VGA-0" or "DVI-0" or "TMDS-1"

# More info at http://www.thinkwiki.org/wiki/Xorg_RandR_1.2


PRI_OUTPUT="DVI-0";
SEC_OUTPUT="DisplayPort-0";
SEC_LOCATION="left";    # SEC_LOCATION may be one of: left, right, above, or below

case "$SEC_LOCATION" in
       left|LEFT)
               SEC_LOCATION="--left-of $PRI_OUTPUT"
               ;;
       right|RIGHT)
               SEC_LOCATION="--right-of $PRI_OUTPUT"
               ;;
       top|TOP|above|ABOVE)
               SEC_LOCATION="--above $PRI_OUTPUT"
               ;;
       bottom|BOTTOM|below|BELOW)
               SEC_LOCATION="--below $PRI_OUTPUT"
               ;;
       *)
               SEC_LOCATION="--left-of $PRI_OUTPUT"
               ;;
esac

# Make and force resolution
myNewMode=$(cvt 1366 768 60 | grep -oP 'Modeline\K.*') &&                           #grep evrything after 'Modline'
myNewModeName=\"$(echo $myNewMode | grep -oP '"\K[^"\047]+(?=["\047])' )\" &&       #grep everything inside quotes
xrandr --newmode $myNewMode;
sleep 15;       
xrandr --addmode $PRI_OUTPUT $myNewModeName;


# Activate secondary out (display port)
xrandr | grep $SEC_OUTPUT | grep " connected "
if [ $? -eq 0 ]; then
#   xrandr --output $SEC_OUTPUT --auto $SEC_LOCATION
    xrandr --output $PRI_OUTPUT --mode $myNewModeName --output $SEC_OUTPUT --auto $SEC_LOCATION
else
    xrandr --output $PRI_OUTPUT --mode $myNewModeName --output $SEC_OUTPUT --off
fi

2

ファイル~/.xprofileを作成し、その中に行を入れます。Xユーザーセッションの開始時に実行されます。


3
これは機能しませんでした。コマンドの起動が早すぎます。
ネクトウィ

@neckTwiありがたいことに、それxrandr --output ...は機能しませんが、前の2行は機能します。全体としてこれは私にとってはうまくいきます。
ゴロポット
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.