間違ったログイン画面解像度


44

奇妙な場合、通常、コンピューターを誤って再起動した後、ログイン画面の解像度はデフォルトの1440x900ではありませんが、1600x900と思います。今、私はこのモニターを処理するように設計されていない解像度を処理するのが本当に苦手で、画面を飛び回る愚かな「間違った解像度」ボックスを表示します。

何があってもログイン画面に1440x900の解像度をロードさせる方法はありますか?Unity 11.10でUbuntu 11.10を実行しています。


私にとっては、すべてのソリューションからこれだけはlightdmを実行している18.04で働いていた:askubuntu.com/questions/507726/...
Takkat

回答:


40

このためのスクリプトを作成できます(ソースLightDM Resolution)。

  1. まず、モニターの識別子が何であるかを知る必要があります。ターミナルを開き、terminalダッシュを入力してオプションを表示するか、Ctrl+ Alt+を押しますT
  2. このコマンドを入力/コピーして、ディスプレイの詳細を表示します。

    xrandr -q
    

    モニターが1つしかない場合は、出力に次のような行が表示されます(おそらく、いくつかの異なる値、開始時の識別子)。

    DVI-0 connected 1680x1050+0+0 (normal left inverted right x axis y axis) 473mm x 296mm
    

    この場合、画面識別子はDVI-0です。

  3. お気に入りのテキストエディターを開き、この例でgeditを使用して、Alt+ F2を押して入力します。gedit

  4. これを入力/コピー:

    #!/bin/sh
    xrandr --output DVI-0 --primary --mode 1440x900
    

    これをデスクトップに保存します lightdmxrandr.sh

  5. スクリプトを実行する前にテストすることをお勧めします。ターミナルに戻って、保存した場所に移動します。

    cd ~/Desktop
    

    次に、実行可能にする必要があります。

    chmod a+rx lightdmxrandr.sh
    

    それを実行してください:

    ./lightdmxrandr.sh
    

    (ログイン後に画面が自動的に自動修正される場合、おそらく違いは見られないので、異なるテスト解像度を使用したいかもしれませんが、テスト中に動作することはわかっています)

  6. 次に、作成した小さなスクリプトを移動します。

    sudo mv ~/Desktop/lightdmxrandr.sh /usr/share/.
    

    使用しない場合sudo、アクセス許可エラーが発生する可能性があります(私はこのフォルダを個人的な好みから使用しています)

  7. これをlightdmで実行し、正しいフォルダーに移動する必要があります。

    cd /etc/lightdm
    
  8. lightdm confファイルを開きます。

    sudo gedit lightdm.conf
    
  9. 最後の行の後にスクリプトを実行する指示を追加して保存します。

    display-setup-script=/usr/share/lightdmxrandr.sh
    

ここで再起動すると、lightdmログイン画面で正しい解像度が設定されます。

(これらの指示は長く見えるかもしれませんが、まったく長くかかりません)


1
ありがとう!私は、下記のレオンのスクリプトを使用します。askubuntu.com/a/88882/28071
beanaroo

これはすばらしいスクリプトです。将来使用するために保存すると思います。
captain_G

残念ながら、これはUbuntu 13.04の問題を解決するだけです。おそらく彼らがOSにいくつかの大きな変更を加えてきたからでしょう。
パトリック

また、Ubuntu 13.10 + NVIDIAドライバー319では動作しません:スクリプトは実行されますが、解像度は変更されません-おそらくNVIDIAドライバーがオーバーライドするためです。
スピーカー

chown root:rootもそれがあるべきだと思う?
アクエリアスパワー14年

38

13.04を実行している私にとって完璧に機能する非常に簡単な回避策を見つけました。(アップデート:現在13.10)常時接続されていない24インチの外部スクリーンを備えたラップトップで。

ここからコピーします

  1. ログインする
  2. xrandrまたはディスプレイ制御ユーティリティを使用して、ログイン画面でモニターを構成する方法をモニターを構成します。
  3. 〜/ .config / monitors.xmlを/var/lib/lightdm/.configにコピーします

モニターが既に適切に構成されているため、手順3を実行する必要がありました。

ここで与えられた他のいくつかの答えは私のために働いたが、特定のシナリオでのみ使用され、他のシナリオでは使用できないシステムのリスクを実行していました(低グラフィックモードエラー)。たとえば、外部モニターが永続的に接続されている場合(@captain_Gによる回答を受け入れた場合)、または外部モニターに使用される出力に接続されている同じデバイスが常にある場合(@Axlrodによるスクリプト)。@MarcoVの答えは最も一般的なソリューションのようですが、それでもスクリプトルールが関係しています。


4
他の回答よりもはるかに簡単です...なぜそれ以上の票を持っていないのだろうか。まあ、それは私のものです。
aap

繰り返しますが、ログイン画面には役立ちますが、他のユーザーがディスプレイの解像度を再度設定する必要がなければ便利です。
aap

3
ファイルをコピーするのではなく、画面設定を変更するたびに自動的に更新されるように、リンクを作成します。$ sudo ln ~/.config/monitors.xml /var/lib/lightdm/.config/monitors.xml(いいえ、シンボリックリンクは機能しません。)
ネイサンJB

3
どのアプリケーションが書き込み/更新しますmonitors.xmlか?私はXFCEを使用していますが、このファイルは2年前のもので、完全に古くなっています。同様のファイルが見つかりません。
scai

1
これは、解像度を変更するスクリプトを作成するのではなく、正しいアプローチです。.config / monitors.xmlは、マルチモニター構成をサポートできます(つまり、ドックと2つのモニターを使用する職場でのセットアップと、ドックと1つの外部モニターを持たない自宅でのセットアップ)。手動スクリプトを作成して解像度を設定するのは、比較的複雑です。|
イヤドK

20

スクリプトを作成する代わりに、次の/etc/lightdm/lightdm.confような行をファイルに追加するだけです。

display-setup-script=xrandr --output default --mode 1280x720

挿入する前に、コマンドが機能することを確認してください。コマンドが間違っていると、lightdmが起動しません。


こんにちは、あなたのxrandコマンドは言う:warning: output default not found; ignoring
SebMa

@SebMa正しい出力名を使用する必要があります!
ケンシャープ

2

ラップトップを切断して使用せずに使用する可能性があるマルチモニター設定の場合、次の簡単な解決策があります。

実行:

xrandr

ラップトップを使用しているデバイスは通常LVDS1であり、私にはDP2(ディスプレイポート2)があります。HDMI1またはその他のもので、隣にリストされている解像度のデバイスを見つけてください。

この小さなbashファイルを作成します。

#!/bin/bash

mode="$(xrandr -q|grep -A1 "DP2 connected"| tail -1 |awk '{ print $1 }')"
if [ -n "$mode" ]; then
  xrandr --output LVDS1 --off
  xrandr --output DP2 --primary --mode 2540x1440
fi

LVDS1をラップトップモニター接続に置き換えます。

DP2を外部モニター接続に置き換えます。

bashスクリプトを/ usr / bin / local /に配置します

chmod + xスクリプト

/etc/lightdm/lightdm.confを編集します

追加

display-setup-script=/path/to/my/script

リブート。

解像度の変更は、実際にそのディスプレイにいるときにのみ発生します。

同じコネクタ上に異なるモニター/解像度を持つ複数の場所がある場合、bashスクリプトにより多くのインテリジェンスを配置する必要があります。


2

上記のAxlrodのスクリプトを少し改善しました。

必要なことは、プライマリを使用するモニタとラップトップディスプレイ(LVDS)を指定することだけです。

#!/ bin / bash
LVDS = "LVDS-0"
PRIMARY = "VGA-0"

関数get_displays()
{
        xrandr -q | grep接続| awk '{print $ 1}'
}

関数get_resolution()
{
        [[-z "$ 1"]] && 0を返す|| xrandr -q | grep -A1 $ 1 | テール-1 | awk '{print $ 1}' | grep -e "^ [0-9]"
}

$(get_displays)での表示用; 行う
        resolution = `get_resolution $ display`

        [[$ display == $ PRIMARY]] && arg = "-primary";
        [[-n $ resolution]] && mode = "-mode $ resolution";

        if [[$ display == $ LVDS]]; それから
                xrandr --output $ display --off
        elif [[--n $ mode]]; それから
                xrandr --output $ display $ arg $ mode
        fi
        モード引数の解決を解除します。
やった

1
sudo gedit /usr/share/X11/xorg.conf.d/52-myres.conf

次に、ファイル内で:

Section "Monitor"
    Identifier "VGA1"
    Option "PreferredMode" "1152x864"
EndSection

保存して終了。値はcommandから取得されましたxrandr -qVGA1はコネクタ1152x864の名前であり、解像度の名前です。

これはXubuntu 16.04で機能します。推奨解像度を設定し、サポートされている最高の解像度にデフォルト設定する代わりに、ログイン画面の解像度を設定できるようにします。

ここの回答から修正


1
open-vm-toolsとopen-vm-tools-desktopをインストールした後、monitors.xmlを/var/lib/lightdm/.configにコピーしても機能しなくなりました。このように優先解像度を指定すると、それが修正されました。
ジョペラ

1

私が有用だとわかったのは、Ubuntuガイドのウェブサイトへの投稿でした。Ubuntu 11.10で非常に多くのことを試し、単純にGNOMEクラシックを使用しようとしました。解像度は常に1024x768で、1440x900に手動で設定すると「仮想」でした。つまり、実際の画面サイズを超えたデスクトップ全体を探索するには、マウスでスクロールする必要がありました。

ターミナルでこのコマンドを実行しました:

sudo gedit /etc/default/grub

テキストエディタのロードには時間がかかる場合があります。ロードしたら、行を編集しました

GRUB_GFXMODE=1024x768

変更して:

GRUB_GFXMODE=1440x900

update-grub変更を適用するために実行することを忘れないでください。

その後、VESAドライバーを再インストールしようとしました(このコンピューターにはGeForce 260 GTXがあります)。Nvidiaの公式ドライバーを使用するほうが良い方法であることは知っていますが、それらを使用しても問題は常に同じでした。

そのため、Nvidia X Serverの設定パネルを確認して、解像度が追加されたことを確認し、それに切り替えて、画面が正しい外観になるようにしました。実際、私はUbuntu 11.10を使用していますが、GNOMEクラシックで使用しています。

私はLinuxの初心者なので、まともなものを書いたことを願っています。


0

ログイン画面が使用できなくなる可能性があるスクリプトや構成ファイルをいじらないでください!

代わりに、ログインして好みの画面設定*を設定し、次のコマンドを実行します。

sudo ln ~/.config/monitors.xml /var/lib/lightdm/.config/monitors.xml

これで、ログイン解決には、現在サインインしているユーザーの設定が常に反映されます。

*「適用」をクリックすることを忘れないでください


これは機能しますが、二次的です。最大解像度で通常のロードを行い、設定に切り替えます。どうすれば正しい解像度をロードして開始できますか?
ゴダード

0

Axelrodのスクリプトはやや欠陥があります。「接続済み」のgrepはすべての「接続解除済み」ディスプレイも取得するためです...

さらに、awkやtailなどでgrepを使用するのは無駄に遠回りです。次のように提案します。さらに、戻りコード0は通常エラーがないことを示すため、get_resolutionでは戻りコードを1に変更します。したがって、最初のパラメーターがない場合は1を使用します。

結論として、スクリプトの主要部分を関数でインスタンス化することにより、関数ライブラリ内に必要な場合はいつでもソースを作成して実行でき、設定を解除する必要のないローカル変数を使用できます。

function get_displays()
{
    xrandr -q | awk '($2 == "connected") {print $1;}'
};

# the "\" and c/r were added for readability on this website
# I do not have them in my code variant that I use.
function get_resolution()
{
    [[ -z "$1" ]] && return 1;
    xrandr -q | \
    awk -v display="$1" '($1 == display && $2 == "connected") {getline; print $1;}';
};

function setup_displays()
{
    local   primary=${2:-"VGA-0"};
    local   lvds=${3:-"LVDS-0"};

    for display in $(get_displays);
    do
            local   resolution=${1:-"$(get_resolution $display)"};

            [[ $display == $primary ]] && local arg="--primary";
            [[ -n $resolution ]] && local mode="--mode $resolution";

            if [[ $display == $lvds ]];
            then
                    xrandr --output $display --off;
            elif [[ -n $mode ]];
            then
                    xrandr --output $display $arg $mode;
            fi;
    done;
};

setup_displays;

0

これが、Xubuntu 16.04での動作方法です。

希望する解像度の文字列に沿って取得する必要があります。これはコマンドの結果の範囲内です:

xrandr --verbose

次に、必要な解像度の部品を選択します。次のようになります。

1152x864 (0xa6) 108.000MHz +HSync +VSync
    h: width  1152 start 1216 end 1344 total 1600 skew    0 clock  67.50KHz
    v: height  864 start  865 end  868 total  900           clock  75.00Hz

上記のデータから、文字列を取得する必要があります108.000 1152 1216 1344 1600 864 865 868 900 +HSync +VSync

出力の名前を見つけるには、同様の行も見つけます。

VGA1 connected 1152x864+0+0 (0xa4) normal (normal left inverted right x axis y axis) 306mm x 230mm

ここで、私の出力はという名前VGA1です。

スクリプトを作成します:

sudo gedit /usr/share/lightdmxrandr.sh

次に、ファイルに以下を記述します。

#!/bin/sh
xrandr --newmode "1152x864_75.00"  108.000  1152 1216 1344 1600  864 865 868 900 +HSync +VSync
xrandr --addmode VGA1 "1152x864_75.00"
xrandr --output VGA1 --mode 1152x864_75.00 --pos 0x0 --rotate normal

ファイルを保存して閉じます。スクリプトを実行可能にする:

sudo chmod a+rx /usr/share/lightdmxrandr.sh

構成ファイルを作成して、作成したばかりのスクリプトを呼び出します。

sudo gedit /etc/lightdm/lightdm.conf.d/00-myres.conf

このファイル内に次を入力します。

[Seat:*]
display-setup-script=/usr/share/lightdmxrandr.sh

ファイルを保存して閉じます。再起動し、うまくいけば、選択した解像度がログイン時に表示されるようになります。

既存の解像度を再作成することは論理的ではありませんが、実際的には、これが私にとって有効な唯一の方法です。

この質問から修正された回答

注意

長い解像度の文字列を取得する別の方法はプログラムcvtです。解像度1152x864の文字列を取得するには、リフレッシュレート75.00:

cvt 1152 864 75

これにより、デスクトップの解像度とは少し異なる解像度が得られました。このため、この方法を主な回答に含めませんでした。


0

LightDMのGTK greeterを使用している場合は、実行xrandr -qしてモニターの名前を検索し、そのファイル内のコメントの説明に従って/etc/lightdm/lightdm-gtk-greeterプロパティactive-monitorを編集および設定できます。このプロパティは#cursor、現在マウスカーソルを表示しているモニターなど、複数の順序付けられた値を取ることができます。


0

他の方法では使用しないキーボードのマルチメディアキーの1つにモニターを構成するスクリプトを添付するのが好きです。現在、「windows media center」というラベルの付いたボタンを使用して、ディスプレイを優先構成に強制しています。この方法では、視覚障害者が飛行していて、モニターが目的の解像度に同期していない場合、ホットキーをマッシュするだけですべてが修正されます。


-1

「優先画面モード」が問題の可能性があります

お使いのモニターが高画面解像度を推奨していると報告していると思います。ここで、このデフォルト設定上書きします。これを行う方法の詳細については、非常に類似した質問に対する私の回答を参照しください。

私は反対の問題を抱えていました:私はいつも私が望むもの(1600x1200)よりも低い画面解像度(1280x1024)を得ました。ただし、私が見つけた修正プログラム(およびリンクされた回答に記載されている修正プログラム)は、問題に同様に適用できることを願っています。


私の答えを投票した人は誰でも、この答えが役に立たないと思う理由をメモしてください。
-Chriki

-2

Xenialを実行しているMacBook Pro 2014年半ば(11,1)でも同じ問題が発生しました。前述のすべてのソリューションをさまざまな形式で試しましたが、Xを必ずフェイ​​ルセーフの低グラフィックモードにします(ただし、非常に高い解像度で表示し、デフォルトとして設定したかったのです。

フォーラムをよく調べてグーグルで調べた後、最も単純でデフォルトの潜在的なソリューションであるnomodesetを忘れていたことがわかりました。これで問題は解決しました。

TL; DR:nomodesetを試すことを忘れないでください!特に MacbookPro 11,1で。


-3

私が作成した、このスクリプトを、それはよりダイナミック(複数のワークスペース/異なるモニタ)にします。

唯一の迷惑:lightdmからログインすると、解像度を変更するように画面が点滅します:s


1
貼り付けが見つかりませんでした。
トボルド

確かに; スクリプトのローカルコピーがまだある場合は、再アップロードを検討してください。
wchargin

1
スクリプトをgithubにアップロードしました。paste.ubuntu.comが削除した理由がわかりません:(
レオン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.