web-dev-qa-db-ja.com

lightdm.confの編集がデスクトップ画面の解像度に影響しないのはなぜですか?

デスクトップ画面の解像度を1366x768に変更したかった。しかし、私のVESA drivers(AMD REDWOOD)はその解像度を検出しませんでした。そこで、次のようにシェルスクリプトを作成しました。

xrandr --newmode "1368x768_60.00"   85.25  1368 1440 1576 1784  768 771 781 798 -hsync +vsync  
xrandr --addmode DVI-0 1368x768_60.00  
xrandr --output DisplayPort-0 --off --output DVI-0 --mode 1368x768_60.00 --pos 0x0 --rotate normal --output HDMI-0 --off

lightdmxrandr.sh/usr/binとして保存し、実行可能にしました。そして、次の行を /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf (これはよく知られている/etc/lightdm/lightdm.confに相当します。/etc/lightdm/lightdm.confがない14.04で上記のファイルを使用しています。):-

greeter-session=unity-greeter  
display-setup-script=/usr/bin/lightdmxrandr.sh  
session-setup-script=/usr/bin/lightdmxrandr.sh

保存しました。理論的には、これによりログイン画面の解像度とデスクトップ画面の解像度の両方が1366x768に変更されるはずです。しかし、驚くべきことに、これはログイン画面の解像度のみを変更しました。デスクトップの解像度は変更されていません。その後、スクリプトをスタートアップアプリケーションに追加し、デスクトップの解像度を変更しました。

したがって、私がlightdm.confファイル(または50-ubuntu.confファイル)に行った編集がデスクトップの解像度に影響を与えなかった理由を知りたいです。これは、ランチパッドで報告する必要がある何らかのバグですか、それともlightdmの編集がデスクトップ画面に影響すると言うのは間違っていますか?

PS:-私の意見では、これはUbuntu 14.04に固有のものではありません。

13
VenkiPhy6

同様のことを試してみましたが、いくつかのデバッグの後、何が起こっているのかがわかったと思います。スクリプトはおそらくis実行され、おそらく解像度を正しく設定します。ただし、ログインマネージャーによって実行されるため、Unityがデスクトップ環境のセットアップを完了する前に実行され、Unityは独自の設定を読み取り、解像度をユーザーの設定にリセットします。だから、私は何が起こると思う:

  1. lightdmはスクリプトを正しく実行します
  2. これにより、目的の解像度が設定されます
  3. Unityが起動し、設定を読み取り、そこにあるデフォルトの解像度に戻します
  4. 解決策は以前の状態に戻ります

これは、VESAドライバーが目的の解像度を自動的に検出しないためです。つまり、Unityの設定の[ディスプレイ]セクションから解像度を変更すると、xrandrコマンドを実行しない限り使用できない解像度が設定されます。したがって、次回再起動するとこれは無視され、Unityはデフォルトの解像度に戻ります。

したがって、あなたがする必要があるのは、Unityで解像度を利用可能にし、それをデフォルトとして設定し、それを処理させることです。これを行うには、最初にこの行を/usr/share/lightdm/lightdm.conf.d/50-ubuntu.confに追加する必要があります。

session-setup-script=/usr/bin/lightdmxrandr.sh

次に、/usr/bin/lightdmxrandr.shが次のようになっていることを確認します。

xrandr --newmode "1368x768_60.00"   85.25  1368 1440 1576 1784  768 771 781 798 -hsync +vsync  
xrandr --addmode DVI-0 1368x768_60.00  

私は実際に解像度を設定していないことに注意してください。この再起動が完了したら、ログインします。新しい解像度が[設定] => [ディスプレイ]で利用可能になります。その場合、そこで選択し、ログアウトしてから再度ログインすると、解像度が正しく設定されるはずです。これで、再起動後も解決されます。


代替アプローチ:

  1. /etc/X11/xorg.confファイルを作成 目的の解像度をリストします。このようなもの:

    Section "Monitor"
        Identifier    "Monitor0"
        Modeline "1368x768_60.00"  109.00  1280 1368 1496 1712  1024 1027 1034 1063 -hsync +vsync
    EndSection
    
    Section "Screen"
        Identifier     "Screen0"
        Device         "Card0"
        Monitor        "Monitor0"
        SubSection "Display"
            Modes       "1368x768_60.00"
        EndSubSection
    EndSection
    
    Section "Device"
        Identifier    "Card0"
        Driver        "vesa"
    EndSection
    
  2. xrandrコマンドを実行するスクリプトをセッションのスタートアップアプリケーションに追加します。

11
terdon