奇妙な場合、通常、コンピューターを誤って再起動した後、ログイン画面の解像度はデフォルトの1440x900ではありませんが、1600x900と思います。今、私はこのモニターを処理するように設計されていない解像度を処理するのが本当に苦手で、画面を飛び回る愚かな「間違った解像度」ボックスを表示します。
何があってもログイン画面に1440x900の解像度をロードさせる方法はありますか?Unity 11.10でUbuntu 11.10を実行しています。
奇妙な場合、通常、コンピューターを誤って再起動した後、ログイン画面の解像度はデフォルトの1440x900ではありませんが、1600x900と思います。今、私はこのモニターを処理するように設計されていない解像度を処理するのが本当に苦手で、画面を飛び回る愚かな「間違った解像度」ボックスを表示します。
何があってもログイン画面に1440x900の解像度をロードさせる方法はありますか?Unity 11.10でUbuntu 11.10を実行しています。
回答:
このためのスクリプトを作成できます(ソースLightDM Resolution)。
terminal
ダッシュを入力してオプションを表示するか、Ctrl+ Alt+を押しますTこのコマンドを入力/コピーして、ディスプレイの詳細を表示します。
xrandr -q
モニターが1つしかない場合は、出力に次のような行が表示されます(おそらく、いくつかの異なる値、開始時の識別子)。
DVI-0 connected 1680x1050+0+0 (normal left inverted right x axis y axis) 473mm x 296mm
この場合、画面識別子はDVI-0です。
お気に入りのテキストエディターを開き、この例でgeditを使用して、Alt+ F2を押して入力します。gedit
これを入力/コピー:
#!/bin/sh
xrandr --output DVI-0 --primary --mode 1440x900
これをデスクトップに保存します lightdmxrandr.sh
スクリプトを実行する前にテストすることをお勧めします。ターミナルに戻って、保存した場所に移動します。
cd ~/Desktop
次に、実行可能にする必要があります。
chmod a+rx lightdmxrandr.sh
それを実行してください:
./lightdmxrandr.sh
(ログイン後に画面が自動的に自動修正される場合、おそらく違いは見られないので、異なるテスト解像度を使用したいかもしれませんが、テスト中に動作することはわかっています)
次に、作成した小さなスクリプトを移動します。
sudo mv ~/Desktop/lightdmxrandr.sh /usr/share/.
使用しない場合sudo
、アクセス許可エラーが発生する可能性があります(私はこのフォルダを個人的な好みから使用しています)
これをlightdmで実行し、正しいフォルダーに移動する必要があります。
cd /etc/lightdm
lightdm confファイルを開きます。
sudo gedit lightdm.conf
最後の行の後にスクリプトを実行する指示を追加して保存します。
display-setup-script=/usr/share/lightdmxrandr.sh
ここで再起動すると、lightdmログイン画面で正しい解像度が設定されます。
(これらの指示は長く見えるかもしれませんが、まったく長くかかりません)
chown root:root
もそれがあるべきだと思う?
13.04を実行している私にとって完璧に機能する非常に簡単な回避策を見つけました。(アップデート:現在13.10)常時接続されていない24インチの外部スクリーンを備えたラップトップで。
- ログインする
- xrandrまたはディスプレイ制御ユーティリティを使用して、ログイン画面でモニターを構成する方法をモニターを構成します。
- 〜/ .config / monitors.xmlを/var/lib/lightdm/.configにコピーします
モニターが既に適切に構成されているため、手順3を実行する必要がありました。
ここで与えられた他のいくつかの答えは私のために働いたが、特定のシナリオでのみ使用され、他のシナリオでは使用できないシステムのリスクを実行していました(低グラフィックモードエラー)。たとえば、外部モニターが永続的に接続されている場合(@captain_Gによる回答を受け入れた場合)、または外部モニターに使用される出力に接続されている同じデバイスが常にある場合(@Axlrodによるスクリプト)。@MarcoVの答えは最も一般的なソリューションのようですが、それでもスクリプトルールが関係しています。
$ sudo ln ~/.config/monitors.xml /var/lib/lightdm/.config/monitors.xml
(いいえ、シンボリックリンクは機能しません。)
monitors.xml
か?私はXFCEを使用していますが、このファイルは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スクリプトにより多くのインテリジェンスを配置する必要があります。
上記の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 モード引数の解決を解除します。 やった
sudo gedit /usr/share/X11/xorg.conf.d/52-myres.conf
次に、ファイル内で:
Section "Monitor"
Identifier "VGA1"
Option "PreferredMode" "1152x864"
EndSection
保存して終了。値はcommandから取得されましたxrandr -q
。VGA1
はコネクタ1152x864
の名前であり、解像度の名前です。
これはXubuntu 16.04で機能します。推奨解像度を設定し、サポートされている最高の解像度にデフォルト設定する代わりに、ログイン画面の解像度を設定できるようにします。
ここの回答から修正
私が有用だとわかったのは、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の初心者なので、まともなものを書いたことを願っています。
ログイン画面が使用できなくなる可能性があるスクリプトや構成ファイルをいじらないでください!
代わりに、ログインして好みの画面設定*を設定し、次のコマンドを実行します。
sudo ln ~/.config/monitors.xml /var/lib/lightdm/.config/monitors.xml
これで、ログイン解決には、現在サインインしているユーザーの設定が常に反映されます。
*「適用」をクリックすることを忘れないでください
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;
これが、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
これにより、デスクトップの解像度とは少し異なる解像度が得られました。このため、この方法を主な回答に含めませんでした。
お使いのモニターが高画面解像度を推奨していると報告していると思います。ここで、このデフォルト設定を上書きします。これを行う方法の詳細については、非常に類似した質問に対する私の回答を参照してください。
私は反対の問題を抱えていました:私はいつも私が望むもの(1600x1200)よりも低い画面解像度(1280x1024)を得ました。ただし、私が見つけた修正プログラム(およびリンクされた回答に記載されている修正プログラム)は、問題に同様に適用できることを願っています。