Yanlış Giriş Ekranı Çözünürlüğü


44

Garip bir durumda, genellikle bilgisayarımı yanlış başlattıktan sonra, giriş ekranı çözünürlüğüm varsayılan 1440x900 değil, ancak 1600x900 olduğunu düşünüyorum. Şimdi, ele almak için tasarlanmayan çözünürlüklerle başa çıkmak için gerçekten kötü olan ve ekran etrafında atlayan aptal bir "yanlış çözünürlük" kutucuğu gösterecek bu monitöre sahibim.

Ne olursa olsun, giriş ekranının 1440x900 çözünürlükte yüklenmesini sağlamanın bir yolu var mı? Unity ve LightDM ile Ubuntu 11.10 kullanıyorum.


Benim için, tüm çözümlerden sadece bu 18.04 çalışan lightdm'de ​​çalıştı: askubuntu.com/questions/507726/…
Takkat

Yanıtlar:


40

Bunun için bir komut dosyası yapabilirsiniz (kaynak LightDM Çözünürlüğü ).

  1. Öncelikle, monitör tanımlayıcınızın ne olduğunu bulmamız gerekir. Bir terminal açın terminal, seçeneği görmek için birlik çubuğunuzu yazmaya başlayın veya Ctrl+ Alt+ tuşlarına basın.T
  2. Ekran ayrıntılarınızı göstermek için bu komutu yazın / kopyalayın:

    xrandr -q
    

    Yalnızca bir monitörünüz varsa, çıktıda aşağıdaki gibi bir çizgi görürsünüz (muhtemelen bazı farklı değerlere sahip, başlangıçtaki tanımlayıcıdır):

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

    Ekran tanıtıcısı bu durumda DVI-0'dır.

  3. Favori metin editörünü aç, bu örnek için gedit kullanalım, Alt+ tuşlarına bas F2ve yazgedit

  4. Bunu şunu yazın / kopyalayın:

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

    Bunu masaüstünüze kaydedin. lightdmxrandr.sh

  5. Senaryoyu uygulamaya koymadan önce test etmek isteyebilirsiniz. Terminale geri yeni kaydettiğimiz yere gidin:

    cd ~/Desktop
    

    Şimdi çalıştırılabilir hale getirmemiz gerekiyor:

    chmod a+rx lightdmxrandr.sh
    

    Şimdi çalıştır şunu:

    ./lightdmxrandr.sh
    

    (Giriş yaptıktan sonra ekranınız otomatik olarak düzelirse, muhtemelen bir fark görmezsiniz, bu nedenle farklı bir test çözünürlüğü kullanmak isteyebilirsiniz, ancak test sırasında çalışırsınız)

  6. Şimdi yaptığımız küçük betiği taşıyalım:

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

    Kullanmazsanız sudoizin hatası alabilirsiniz (Bu klasörü kişisel tercihimin dışında kullanıyorum)

  7. Şimdi bunu lightdm'de ​​çalıştırmamız gerekiyor, doğru klasöre gidin:

    cd /etc/lightdm
    
  8. Lightdm conf dosyasını açın:

    sudo gedit lightdm.conf
    
  9. Şimdi komut satırınızı son satırdan sonra çalıştırmak için talimatları ekleyin ve kaydedin:

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

Şimdi yeniden başlatın ve bu, lightdm oturum açma ekranınızda doğru çözünürlüğü ayarlamalıdır.

(bu talimatlar uzun görünebilir ancak hiç uzun sürmezler)


1
Teşekkürler! Leon'un aşağıda belirtilen senaryosunu kullanıyorum. askubuntu.com/a/88882/28071
beanaroo

Güzel bir senaryo, ileride kullanmak üzere saklayacağımı düşünüyorum!
captain_G

Ne yazık ki bu sadece 13.04 Ubuntu'daki şeyleri kırar. Muhtemelen işletim sistemlerinde bazı büyük değişiklikler yaptıkları için.
Patrick

Ayrıca Ubuntu 13.10 + NVIDIA sürücüsü 319 ile de çalışmaz: Komut dosyası yürütülür, ancak çözünürlük değişmez - muhtemelen NVIDIA sürücüsü geçersiz kıldığından.
saat

Ben de olması gerektiğini düşünüyorum chown root:root?
Kova Gücü

38

13.04'te benim için mükemmel çalışan çok basit bir geçici çözüm buldum. ( güncelleme : şimdi 13.10) sürekli bağlı olmayan 24 "harici ekranlı bir dizüstü bilgisayarda.

Sadece buradan kopyalayacağım

  1. oturum aç
  2. monitörlerinizi giriş ekranında nasıl yapılandırılmalarını istediğinizi yapılandırmak için xrandr veya Ekran kontrol yardımcı programını kullanın
  3. ~ / .config / monitors.xml dosyasını /var/lib/lightdm/.config dosyasına kopyalayın

Monitörleri zaten doğru şekilde yapılandırdığım için 3. adımı yapmam gerekiyordu.

Burada verilen bazı diğer cevaplar benim için çalıştı ancak başka senaryolarda kullanılamaz bir sistem riski oluştururken sadece belirli bir senaryoda (DÜŞÜK GRAFİK MODU HATASI). Örneğin, kalıcı olarak bağlanmış harici monitör (@captain_G tarafından kabul edilen cevap) veya harici monitör için kullanılan çıkışa bağlı her zaman aynı cihazla (script @Axlrod). @ MarcoV'in cevabının en genel çözüm olduğu anlaşılıyor, ancak hala komut dosyası kuralları içeriyor.


4
Diğer cevaplardan çok daha basit ... Neden daha fazla oyu olmadığını merak ediyorum. Benim de var.
aap

Sonra tekrar, giriş ekranına yardımcı olmasına rağmen, diğer kullanıcıların ekran çözünürlüğünü tekrar ayarlamak zorunda kalmaması iyi olurdu.
aap

3
Dosyayı kopyalamak yerine, ekran ayarlarınızı değiştirdiğinizde otomatik olarak güncellenmesi için bir link oluşturun: $ sudo ln ~/.config/monitors.xml /var/lib/lightdm/.config/monitors.xml(Hayır, sembolik linkler ÇALIŞMAYIN.)
Nathan JB

3
Hangi uygulama yazıyor / güncelliyor monitors.xml? XFCE kullanıyorum ve bu dosya 2 yaşında ve tamamen eski. Benzer bir dosya bulamıyorum.
scai

1
Kararları değiştirmek için bir senaryo oluşturmak yerine, bu doğru bir yaklaşımdır. .config / monitors.xml birden fazla monitör yapılandırmasını destekleyebilir (örn. kurulumunuz bir yuva ile işte ve kurulumunuz evde kurulum yokken ve 1 harici monitör olmadan 2 monitör). Çözünürlük ayarlamak için bir el ile komut dosyası oluşturmak, yapmak için nispeten daha karmaşık olurdu.
Iyad K

20

Komut dosyası oluşturmak yerine, dosyaya şu şekilde /etc/lightdm/lightdm.confbir satır eklemek yeterlidir:

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

Eklemeden önce komutun çalıştığından emin olun, çünkü yanlış komutla lightdm başlamaz.


Merhaba, xrandemirleriniz diyor ki:warning: output default not found; ignoring
SebMa

@SebMa Doğru çıktı adını kullanmak zorundasınız!
Ken Sharp,

2

Dizüstü bilgisayarınızın bağlantısını kesebileceğiniz ve kullanmadan kullanabileceğiniz çoklu monitör kurulumu için basit bir çözüm:

Çalıştırmak:

xrandr

Dizüstü bilgisayarı kullandığınız aygıtları alın genellikle LVDS1'dir ve benim için bir DP2'ye (displayport 2) sahip olduğumda HDMI1 veya başka bir şey olabilir, yanlarında listelenen çözünürlüklere sahip olanları bulabilirsiniz.

Bu küçük bash dosyasını oluşturun:

#!/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'i dizüstü bilgisayar monitörü bağlantınızla değiştirin.

DP2'yi harici monitör bağlantınızla değiştirin.

Bash betiğini / usr / bin / local / dizinine yerleştirin

chmod + x komut dosyası

/etc/lightdm/lightdm.conf dosyasını düzenleyin

Eklemek

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

Yeniden Başlatma.

Çözünürlük değişikliği yalnızca o anda ekrandayken gerçekleşecektir.

Aynı bağlayıcı üzerinde farklı monitör / çözünürlüklerde birden fazla yeriniz varsa, bash betiğinize daha fazla zeka katmanız gerekir.


2

Birazcık yukarıdaki Axlrod'un senaryosunu geliştirdi .

Tek yapmanız gereken, hangi monitörü kullanacağınızı ve hangisinin dizüstü bilgisayarınızın ekranının (LVDS) olduğunu belirlemektir.

#! / Bin / bash
LVDS = "LVDS-0"
İLKÖĞRETİM = "VGA-0"

get_displays () işlevi
{
        xrandr -q | grep bağlı | awk '{$ 1} yazdır
}

get_resolution () işlevi
{
        [[-z "$ 1"]] && dönüş 0 || xrandr -q | grep -A1 $ 1 | kuyruk -1 | awk '{print $ 1}' | grep -e "^ [0-9]"
}

$ (get_displays) cinsinden görüntülemek için; yap
        resolution = `get_resolution $ display`

        [[$ display == $ PRIMARY]] && arg = "- birincil";
        [[-n $ çözünürlüklü]] && mode = "- mod $ çözünürlüğü";

        eğer [[$ display == $ LVDS]]; sonra
                xrandr --output $ görüntüleme - off
        elif [[-n $ modu]]; sonra
                xrandr --output $ display $ arg $ modu
        fi
        ayarsız mod arg çözünürlüğü;
tamam

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

sonra dosyada:

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

Kaydet ve çık. Değerler komuttan elde edildi xrandr -q. VGA1Bağlayıcımın 1152x864adı ve çözünürlüğün adı.

Bu Xubuntu 16.04 için çalışıyor. Tercih edilen bir çözünürlük belirler ve benim için varsayılan olarak desteklenen en yüksek çözünürlüğe ayarlamak yerine, giriş ekranının çözünürlüğünü ayarlamama izin verir.

Buradaki yanıtlardan değiştirildi


1
Open-vm-tools ve open-vm-tools-desktop'ı yükledikten sonra monitors.xml dosyasını /var/lib/lightdm/.config dizinine kopyalamak artık benim için çalışmıyordu. Tercih edilen çözünürlüğü bu şekilde belirlemek benim için düzeltti.
jropella

1

Kullanışlı bulduğum şey Ubuntu kılavuzu web sitesinde bir yazıydı . Ubuntu 11.10'da pek çok şey denedim ve hatta sadece GNOME Classic'i kullanmaya çalıştım. Çözünürlük her zaman 1024x768'di ve 1440x900'e manuel olarak ayarladığımda "sanal" oldu, demek istediğim, gerçek ekran boyutlarının ötesindeki tüm masaüstünü keşfetmek için fareyle kaydırma yapmak zorunda kaldım.

Terminalde bu komutu koştum:

sudo gedit /etc/default/grub

Metin editörünün yüklenmesi biraz zaman alabilir. Yüklendikten sonra satırı düzenledim

GRUB_GFXMODE=1024x768

ve onu değiştirdi:

GRUB_GFXMODE=1440x900

update-grubDeğişiklikleri uygulamak için kaçmayı unutmayın .

Ondan sonra VESA sürücülerini yeniden kurmayı denedim (bu bilgisayarda bir GeForce 260 GTX var). Nvidia'nın resmi sürücülerini kullanmak için daha iyi bir yol olduğunu biliyorum, ama onları kullanmak her zaman aynıydı ... Tabii ki, şimdi performansın daha kötü olacağını düşünüyorum.

Bu yüzden, Nvidia X Sunucu Ayarları panelini kontrol ederek çözünürlüğümün eklendiğini doğruladım ve ekrana geçerek ekranı doğru görünüme soktum. Aslında Ubuntu 11.10 kullanıyorum ama GNOME Classic'te.

Ben Linux'un yeni çocuğuyum, umarım düzgün şeyler yazmışımdır.


0

Giriş ekranınızı kullanılamaz duruma getirme olasılığı bulunan komut dosyaları veya yapılandırma dosyalarıyla uğraşmayın!

Bunun yerine, giriş yapın ve tercih ettiğiniz ekran ayarlarını * yapın, sonra şu komutu çalıştırın:

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

Giriş çözünürlüğünüz şimdi her zaman oturum açtığınız kullanıcının ayarlarını yansıtır.

* "Uygula" yı tıklamayı unutmayın


Bu işe yarıyor ama ikincil. Maksimum çözünürlükte normal bir yükleme yapar ve ardından ayarlarınıza geçer. Başlamak için doğru çözünürlüğü nasıl yükleyebilirsiniz?
Goddard

0

Axelrod'un senaryosu bir parça kusurludur, çünkü 'bağlı' bir grep, tüm 'bağlantısız' gösterileri de kapar ... istediğimiz şeyi değil ...

Dahası, awk ve tail, vb. İle grep kullanmak israf edicidir ve bundan sonra aşağıdakileri öneririm. Ek olarak, get_resolution'da dönüş kodunu 1 olarak değiştiririz, çünkü sıfır dönüş kodu genellikle hata eksikliğinin göstergesidir, bu nedenle ilk parametre yoksa 1 değerini kullanırız.

Sonuç olarak, senaryonun ana kısmını bir fonksiyonun başlatmasıyla, bir fonksiyon kütüphanesinde olması gerektiğinde istenmeden istenildiği zaman kaynaklanıp çalıştırılabilir ve yerel değişkenlerin kullanılmasına gerek kalmaz.

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'de çalışmasını bu şekilde yaptım.

İstediğiniz çözünürlük için dize boyunca elde etmeniz gerekir. Bu komutun sonucu içinde:

xrandr --verbose

Şimdi istediğiniz çözünürlüğe sahip parçayı seçin. Gibi bir şey görünecek:

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

Yukarıdaki verilerden dize almalısınız 108.000 1152 1216 1344 1600 864 865 868 900 +HSync +VSync.

Çıktınızın adını bulmak için de benzer bir satır bulun:

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

İşte benim çıktı adlandırılır VGA1.

Şimdi script oluşturun:

sudo gedit /usr/share/lightdmxrandr.sh

Sonra dosyada aşağıdakileri yazın:

#!/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

Dosyayı kaydedin ve kapatın. Komut dosyasını yürütülebilir duruma getirin:

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

Yeni oluşturulan betiği çağırmak için bir yapılandırma dosyası oluşturun.

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

bu dosyanın içine girin:

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

Dosyayı kaydedin ve kapatın. Yeniden başlatın ve umarım seçtiğiniz çözüm girişinizde olacaktır.

Pratik açıdan, mevcut kararları yeniden oluşturmak mantıklı olmasa da, benim için çalışan tek yol budur.

Cevap bu sorudan değiştirildi .

Not

Uzun çözünürlüklü dize almanın alternatif bir yolu programdır cvt. 1152x864 çözünürlükte bir dize almak için, 75.00 yenileme oranını kullanın:

cvt 1152 864 75

Bu bana masaüstü çözünürlüğümden biraz farklı bir çözünürlük verdi ve bu yöntemi ana cevaba eklemememin sebebi.


0

LightDM'nin GTK selamlayıcısını kullanıyorsanız xrandr -q, monitörlerinizin adlarını bulmak için koşabilir , ardından bu dosyanın içindeki açıklamalarda açıklandığı /etc/lightdm/lightdm-gtk-greeterşekilde özelliği düzenleyebilir ve ayarlayabilirsiniz active-monitor. Bu özellik, #cursorşu anda fare imlecini gösteren monitör dahil olmak üzere birden çok, sıralı değeri alabilir .


0

monitörleri yapılandıran klavyemi, klavyemdeki aksi takdirde kullanmadığım multimedya tuşlarından birine eklemeyi seviyorum. şu anda 'windows media center' etiketli düğmem var, ekranlarımı tercih ettikleri konfigürasyona zorla. bu şekilde kör uçuyorsanız ve monitörleriniz istenen çözünürlükte senkronize değilse, sadece kısayol tuşunu ezin ve hepsi sabittir.


-1

“Tercih Edilen Ekran Modları” Sorun olabilir

Monitörünüzün yüksek ekran çözünürlüğünü tercih edildiğini bildiğini sanıyorum. Şimdi bu varsayılan tercihi geçersiz kılmak istiyorsunuz . Bunun nasıl yapılabileceğine dair ayrıntılar için çok benzer bir soruya cevabımı görün .

Tam tersi bir problemim vardı: Her zaman istediğimden (1600x1200) daha düşük bir ekran çözünürlüğü (1280x1024) elde ettim. Bulduğum düzeltme (ve bağlantılı cevabında açıklanmıştır), umarım, probleminize benzer şekilde uygulanabilir.


Cevabım aşağı oy verdiyse, bu cevabın neden kullanışlı olmadığını düşündüğünüze bir not ekler misiniz?
Chriki,

-2

Aynı problemi Xenial'ı çalıştıran 2014 ortasında (11,1) MacBook Pro'mda da yaşadım. Yukarıda belirtilen tüm çözümleri çeşitli biçimlerde denedim, ancak sürekli olarak X'in güvenli olmayan düşük grafik moduna geçmesini sağladım (ama çok çözünürlükte görüntülenirken varsayılan olarak daha az ayarlamamı istiyorum.

Forumlar ve googling ile ilgili çok fazla tartışma yaptıktan sonra, en basit ve varsayılan potansiyel çözümü unuttuğumu ortaya çıkardım: nomodeset. Bu sorunu çözdü.

TL; DR: Adaylığı denemeyi unutma! Esp. MacbookPro'da 11,1.


-3

Bu betiği daha dinamik hale getirmek için yarattım (çoklu çalışma alanları / farklı monitörler).

Sadece sıkıntı: lightdm'den giriş yaptığınızda, ekran çözünürlüğünü değiştirmek istediği gibi yanıp sönüyor: s


1
Yapıştır bulunamadı.
Tobold

Aslında; Hala betiğin yerel bir kopyasına sahipseniz, tekrar yüklemeyi düşünün.
wchargin

1
Senaryoyu github'a yükledim. Paste.ubuntu.com neden kaldırıldı bilmiyorum :(
Leon
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.