私はバグの影響を受けます: https://bugs.launchpad.net/ubuntu/+source/unity-greeter/+bug/874241 それ以外の場合、私の場合はラップトップを2台目に接続しています高解像度のモニター、LIGHTDM、ログイン段階で、mirrors私の場合、両方の画面でディスプレイを表示し、デスクトップに拡張するのではなく、共通の解像度(1024X768)を割り当てます(12.04のMultiple Monitors UX仕様書に記載されているように、ロゴだけでグリーターとセカンダリのプライマリ画面)。
ここに私のxrandr -q
@L502X:~$ xrandr -q
Screen 0: minimum 320 x 200, current 1920 x 1848, maximum 8192 x 8192
LVDS1 connected 1366x768+309+1080 (normal left inverted right x axis y axis) 344mm x 193mm
1366x768 60.0*+
1360x768 59.8 60.0
1024x768 60.0
800x600 60.3 56.2
640x480 59.9
VGA1 disconnected (normal left inverted right x axis y axis)
HDMI1 connected 1920x1080+0+0 (normal left inverted right x axis y axis) 510mm x 287mm
1920x1080 60.0*+
1600x1200 60.0
1680x1050 60.0
1280x1024 60.0
1440x900 59.9
1280x960 60.0
1280x800 59.8
1024x768 60.0
800x600 60.3 56.2
640x480 60.0
DP1 disconnected (normal left inverted right x axis y axis)
各モニターに適切な解像度を設定してデスクトップを拡張するために、lightdmにいくつかのxrandrコマンドを実行させようとしたため、/ usr/share/lightdmxrand.sh:
#!/bin/sh
xrandr --output HDMI1 --primary --mode 1920x1080 --output LVDS1 --mode 1366x768 --below HDMI1
そして、lightdmに実行するように指示しました:/ etc/lightdm/lightdm.conf
[SeatDefaults]
greeter-session=unity-greeter
user-session=ubuntu
greeter-setup-script=/usr/bin/numlockx on
display-setup-script=/usr/share/lightdmxrandr.sh
lightdmを再起動しました:Sudo restart lightdm
そして、Unity greeterのログイン画面は正しいものでした。それぞれの正しい解像度の画面で、マウスを画面に移動すると、ログインボックスとパネルでフォーカスが合いますが、フォーカスのない画面にはUbuntuロゴが表示されます(MM UX仕様書で指定されているとおりです)。素晴らしい!
この回避策は、外部モニターがラップトップに接続されている限り、うまく機能します。接続されていない状況では、ログイン段階で、低グラフィックモードエラーが発生します(低グラフィックモード、画面、入力デバイスで実行しています...検出されませんでした)。 xrandr
は接続されていないモニターへの出力を試みるため、正常です。
ここでのquestionは、外部モニターが接続されていないときにxrandr
がラップトップ画面にのみ出力されるようにスクリプトを変更する方法です。外部モニターを無視します。例えば:
If (xrandr -q | grep 'HDMI1 connected') != NULL (HDMI1 is connected )
then xrandr --output HDMI1 --primary --mode 1920x1080 --output LVDS1 --mode 1366x768 --below HDMI1
else xrandr --output LVDS1 --mode 1366x768 (or do nothing - because the resolution of the laptop screen is correct when no external monitor is connected)
前もって感謝します。
私は私の質問に答える以下のこの小さな基本的なスクリプトを管理しました。これで、外部モニターが接続されているかどうかに関係なく、Lightdmはグリーター段階で適切な解像度を使用します。それでも、この同じスクリプトをgenericに変更する必要があります。これは、ユーザーがラップトップとモニター画面の解像度を手動で指定する必要がないようにするためです。
(Parse the output of `XRAND -q` command,
identify the connected devices,
grab their first/maximum resolutions
and use `XRANDR --output` to display them).
だから誰かがより良い解決策やより一般的なスクリプトを持っているなら、彼はその人です。
SCRIPT:
#!/bin/bash
# V-1.0 by Hanynowsky - April 2012.
# I am a very basic script that works around bug 874241 repprted in launchpad.
XCOM0=`xrandr -q | grep 'HDMI1 connected'`
XCOM1=`xrandr --output HDMI1 --primary --mode 1920x1080 --output LVDS1 --mode 1366x768 --below HDMI1`
XCOM2=`xrandr --output LVDS1 --mode 1366x768`
# if the external monitor is connected, then we tell XRANDR to set up an extended desktop
if [ -n "$XCOM0" ] || [ ! "$XCOM0" = "" ]; then echo $XCOM1
# if the external monitor is disconnected, then we tell XRANDR to output only to the laptop screen
else echo $XCOM2
fi
exit 0;
Hanynowskyに感謝します!あなたの答えを見つけることで私は多くの作業を節約できました(最近アップグレードされた12.04)。しかし、私の場合、完全なソリューションを提供しなかったため、学んだことを追加したいと思います。私のセットアップは、組み込みの1280x800ディスプレイとモバイルGM965/GL960統合グラフィックスコントローラーを備えたVaio VGN-CR120EのVGAポートに接続されたSamsung S22A300Bでした。
手短に私が見つけたのは:
この制限された最大解像度を回避するには、次を実行しました。
このALMOSTは機能しましたが、ログオン後に外部モニターがリセットされ、Nice 1920x1080から1024x768に戻りました。これは永続的なユーザー設定であり、ディスプレイ...システム設定(ギアメニューから)を使用して現在利用可能な1920x1080に簡単に修正できることが判明しました。外部モニターを接続した状態で起動すると、すべてが期待どおりに動作するようになりました。
1つの追加の不具合:このスクリプトが2回(たとえば端末から)実行されると、xrandr --newmode行に「BadName(名前の付いた色またはフォントが存在しません)」エラーが表示されますが、 https:// stackoverflow。 com/questions/851704/xrandr-errors-badname-named-color-or-font-does-not-exist これは説明されており、良性のようです。また、Hanynowskyの指示と手動での実行によってスクリプトがlightdm.confに接続されている場合も問題になりません。
他の人の助けになることを期待して、上記に適応した変更(EDID機能のないVGA)を提供しています。前の回答で述べたように、これを独自のセットアップに適合させる必要があります。正しいmodlineを取得するための良いアドバイスはありませんが、誰か他の人がチップを入れてください。
#!/bin/bash
# Modified for Vaio with 1920x1080 external on VGA
XCOM0=`xrandr -q | grep 'VGA1 connected'`
XCOM1="xrandr --output VGA1 --primary --mode 1920x1080 --output LVDS1 --mode 1280x800 --left-of VGA1"
XCOM2="xrandr --output LVDS1 --mode 1280x800"
NEWMODE="xrandr --newmode "1920x1080" 148.50 1920 2448 2492 2640 1080 1084 1089 1125 +hsync +vsync"
ADDMODE="xrandr --addmode VGA1 1920x1080"
# Always add this mode in case we need it (better would be to test first)
eval $NEWMODE
eval $ADDMODE
if [ -n "$XCOM0" ] || [ ! "$XCOM0" = "" ];
then
# if the external monitor is connected, then we tell XRANDR to set up an extended desktop
eval $XCOM1
else
# if the external monitor is disconnected, then we tell XRANDR to output only to the laptop screen
eval $XCOM2
fi
exit 0;
注:evalが必要かどうかはわかりません(vs. echo in the original)。ディスプレイ...設定が外部ディスプレイを低解像度にリセットすることを発見する前にこれを入れました。
--modeを使用して解像度を明示的に指定する代わりに、-autoが最適な解像度(私が信じる最大の解像度)を選択することがわかりました。
#!/bin/bash
XCOM0=`xrandr -q | grep 'VGA1 connected'`
XCOM1=`xrandr --output LVDS1 --primary --auto --output VGA1 --auto --right-of LVDS1`
XCOM2=`xrandr --output LVDS1 --primary --auto`
# if the external monitor is connected, then we tell XRANDR to set up an extended desktop
if [ -n "$XCOM0" ] || [ ! "$XCOM0" = "" ]; then echo $XCOM1
# if the external monitor is disconnected, then we tell XRANDR to output only to the laptop screen
else echo $XCOM2
fi
exit 0;
LightDMのGTK greeterを使用している場合、xrandr -q
を実行してモニターの名前を検索し、/etc/lightdm/lightdm-gtk-greeter
を編集して、そのファイル内のコメントで説明されているactive-monitor
プロパティを設定できます。このプロパティは、マウスカーソルを現在表示しているモニターの#cursor
など、複数の順序付けられた値を取ることができます。