web-dev-qa-db-ja.com

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

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

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

44
Ruben Bakker

このためのスクリプトを作成できます(source 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ログイン画面で正しい解像度が設定されます。

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

40
captain_G

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

here からコピーします

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

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

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

38
Tobold

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

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

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

20
eugeniy

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

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

#!/ bin/bash 
 LVDS = "LVDS-0" 
 PRIMARY = "VGA-0" 
 
 function get_displays()
 {
 xrandr -q | grep接続| awk '{print $ 1}' 
} 
 
 function get_resolution()
 {
 [[-z "$ 1"]] && return 0 || xrandr -q | grep -A1 $ 1 |テール-1 | awk '{print $ 1}' | grep -e "^ [0-9]" 
} 
 
 $(get_displays); do 
 resolution = `get_resolution $ display` 
 
 [[$ display == $ PRIMARY]] && arg ="-primary "; 
 [[-- n $ resolution]] && mode = "-mode $ resolution"; 
 
 if [[$ display == $ LVDS]]; then 
 xrandr --output $ display --off 
 Elif [[-n $ mode]]; then 
 xrandr --output $ display $ arg $ mode 
 fi 
 unset mode arg resolution; 
 done 
2
Ikko

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

実行:

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
Alex R
Sudo gedit /usr/share/X11/xorg.conf.d/52-myres.conf

次に、ファイル内:

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

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

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

回答から変更 ここ

1
Michael Faraday

役に立つとわかったのは、 buntuガイドWebサイト の投稿です。私は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の初心者なので、まともなものを書いたことを願っています。

1
Valinux

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

0
Dzamo Norton

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

さらに、awkやtailなどでgrepを使用するのは無駄に遠回りです。次のように提案します。さらに、get_resolutionでは、リターンコードを1に変更します。これは、通常、リターンコード0はエラーがないことを示しているため、最初のパラメーターが存在しない場合は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;

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

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

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

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

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

0
Nathan J.B.

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

0
cryptozoologist

これが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

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

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

これから修正された回答 question

note

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

cvt 1152 864 75

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

0
Michael Faraday