Độ phân giải màn hình đăng nhập sai


44

Trong trường hợp kỳ lạ, thông thường sau khi khởi động lại máy tính không chính xác, độ phân giải màn hình đăng nhập của tôi không phải là 1440x900 mặc định, nhưng tôi nghĩ 1600x900. Bây giờ, tôi có màn hình này rất tệ trong việc xử lý các độ phân giải mà nó không được thiết kế để xử lý và sẽ hiển thị một hộp "độ phân giải sai" ngớ ngẩn nhảy quanh màn hình.

Có cách nào để làm cho màn hình đăng nhập tải độ phân giải 1440x900 không có vấn đề gì? Tôi đang chạy Ubuntu 11.10 với Unity và LightDM.


Đối với tôi, từ tất cả các giải pháp, chỉ có một giải pháp này hoạt động trong 18.04 chạy lightdm
Takkat

Câu trả lời:


40

Bạn có thể tạo một tập lệnh cho điều này ( độ phân giải LightDM nguồn ).

  1. Đầu tiên chúng ta cần tìm ra định danh màn hình của bạn là gì. Mở một thiết bị đầu cuối, bắt đầu nhập terminalvào dấu gạch ngang thống nhất của bạn để xem tùy chọn hoặc nhấn Ctrl+ Alt+T
  2. Nhập / sao chép lệnh này để hiển thị chi tiết hiển thị của bạn:

    xrandr -q
    

    Nếu bạn chỉ có một màn hình, bạn sẽ thấy một dòng trong đầu ra như sau (có thể với một số giá trị khác nhau, đó là định danh khi bắt đầu chúng tôi theo sau):

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

    Số nhận dạng màn hình là DVI-0 trong trường hợp này

  3. Mở trình soạn thảo văn bản yêu thích của bạn, cho phép sử dụng gedit cho ví dụ này, nhấn Alt+ F2và gõgedit

  4. Nhập / sao chép này vào:

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

    Lưu cái này trên máy tính để bàn của bạn như lightdmxrandr.sh

  5. Bạn có thể muốn kiểm tra kịch bản trước khi chúng tôi đưa nó vào thực tế. Quay lại thiết bị đầu cuối điều hướng đến nơi chúng tôi vừa lưu nó:

    cd ~/Desktop
    

    Bây giờ chúng ta cần làm cho nó có thể thực thi được:

    chmod a+rx lightdmxrandr.sh
    

    Bây giờ chạy nó:

    ./lightdmxrandr.sh
    

    (Nếu màn hình của bạn tự động sửa lỗi sau khi đăng nhập, bạn có thể sẽ không thấy sự khác biệt nên bạn có thể muốn sử dụng độ phân giải thử nghiệm khác nhưng bạn biết là hoạt động trong khi thử nghiệm)

  6. Bây giờ, hãy di chuyển tập lệnh nhỏ mà chúng ta đã tạo:

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

    Nếu bạn không sử dụng, sudobạn có thể gặp lỗi về quyền (Tôi sử dụng thư mục này ngoài sở thích cá nhân)

  7. Bây giờ chúng ta cần chạy cái này trong lightdm, điều hướng đến đúng thư mục:

    cd /etc/lightdm
    
  8. Mở tập tin conf lightdm:

    sudo gedit lightdm.conf
    
  9. Bây giờ thêm hướng dẫn để chạy tập lệnh của bạn sau dòng cuối cùng và lưu:

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

Bây giờ khởi động lại và điều đó sẽ đặt độ phân giải chính xác trên màn hình đăng nhập lightdm của bạn.

(những hướng dẫn này có thể trông dài nhưng chúng không mất nhiều thời gian)


1
Cảm ơn! Tôi sử dụng kịch bản của Leon được đề cập dưới đây. Askubfox.com/a/88882/28071
beanaroo

Đó là một kịch bản hay, nghĩ rằng tôi sẽ lưu trữ nó để sử dụng trong tương lai!
đội trưởng_G

Thật không may, điều này chỉ phá vỡ mọi thứ trong Ubuntu 13.04. Có lẽ bởi vì họ đã thực hiện một số thay đổi lớn đối với HĐH.
Patrick

Cũng không hoạt động với Ubuntu 13.10 + Trình điều khiển NVIDIA 319: Tập lệnh được thực thi nhưng độ phân giải không thay đổi - có thể do trình điều khiển NVIDIA ghi đè lên nó.
speakr

Tôi nghĩ nó cũng nên chown root:root?
Sức mạnh Bảo Bình

38

Tôi tìm thấy một cách giải quyết rất đơn giản, phù hợp với tôi khi chạy 13.04. ( cập nhật : hiện 13.10) trên máy tính xách tay có màn hình ngoài 24 "không được kết nối vĩnh viễn.

Tôi sẽ chỉ sao chép từ đây

  1. đăng nhập
  2. sử dụng xrandr hoặc tiện ích điều khiển Hiển thị để định cấu hình màn hình của bạn theo cách bạn muốn cấu hình chúng trong màn hình đăng nhập
  3. sao chép ~ / .config / Monitor.xml sang /var/lib/lightdm/.config

Vì màn hình của tôi đã được cấu hình đúng, tôi chỉ phải thực hiện bước 3.

Một số câu trả lời khác được đưa ra ở đây có hiệu quả đối với tôi nhưng chỉ trong một kịch bản cụ thể trong khi có nguy cơ hệ thống không sử dụng được trong các tình huống khác (ERROR MODE EREOR LỚN). Ví dụ: với màn hình ngoài được kết nối vĩnh viễn (câu trả lời được chấp nhận bởi @captain_G) hoặc luôn luôn có cùng một thiết bị được kết nối với đầu ra được sử dụng cho màn hình ngoài (tập lệnh của @Axlrod). Có vẻ như câu trả lời của @ MarcoV là giải pháp chung chung nhất, tuy nhiên nó vẫn liên quan đến các quy tắc kịch bản.


4
Đơn giản hơn nhiều so với các câu trả lời khác ... Tôi tự hỏi tại sao nó không có nhiều phiếu bầu hơn. Vâng, nó có của tôi.
aap

Sau đó, một lần nữa, mặc dù nó giúp màn hình đăng nhập, nhưng thật tuyệt nếu người dùng khác không phải thiết lập lại độ phân giải màn hình.
aap

3
Thay vì sao chép tệp, hãy tạo một liên kết đến nó để nó tự động được cập nhật bất cứ khi nào bạn thay đổi cài đặt màn hình của mình: $ sudo ln ~/.config/monitors.xml /var/lib/lightdm/.config/monitors.xml(Không, các liên kết tượng trưng KHÔNG hoạt động.)
Nathan JB

3
Ứng dụng nào viết / cập nhật monitors.xml? Tôi đang sử dụng XFCE và tệp này đã 2 năm tuổi và hoàn toàn lỗi thời. Tôi không thể tìm thấy một tập tin tương tự.
SCAI

1
Đây là cách tiếp cận chính xác trái ngược với việc tạo ra một kịch bản để thay đổi độ phân giải. .config / Monitor.xml có thể hỗ trợ nhiều cấu hình màn hình (nghĩa là thiết lập của bạn đang hoạt động với một dock và 2 màn hình so với thiết lập của bạn ở nhà không có dock và 1 màn hình ngoài). Tạo một tập lệnh thủ công để đặt độ phân giải sẽ tương đối phức tạp hơn để làm. |
Iyad K

20

Bạn có thể thay vì tạo tập lệnh, chỉ cần thêm vào /etc/lightdm/lightdm.confmột dòng như thế này:

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

Trước khi chèn hãy chắc chắn rằng lệnh đó hoạt động, vì với lệnh sai, lightdm sẽ không bắt đầu.


Xin chào, các xrandlệnh của bạn cho biết:warning: output default not found; ignoring
SebMa

@SebMa Bạn phải sử dụng tên đầu ra chính xác!
Ken Sharp

2

Đối với thiết lập đa màn hình nơi bạn có thể ngắt kết nối máy tính xách tay của mình và sử dụng mà không cần, đây là một giải pháp đơn giản:

chạy:

xrandr

Nhận các thiết bị bạn đang sử dụng máy tính xách tay thường là LVDS1 và đối với tôi, tôi có DP2 (displayport 2), đó có thể là HDMI1 hoặc bất cứ thứ gì khác, chỉ cần tìm những thiết bị có độ phân giải được liệt kê bên cạnh chúng.

Tạo tập tin bash nhỏ này:

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

Thay thế LVDS1 bằng kết nối màn hình máy tính xách tay của bạn.

Thay thế DP2 bằng kết nối màn hình ngoài của bạn.

Đặt tập lệnh bash vào / usr / bin / local /

chmod + x tập lệnh

chỉnh sửa /etc/lightdm/lightdm.conf

Thêm vào

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

Khởi động lại.

Thay đổi độ phân giải sẽ chỉ xảy ra khi bạn thực sự ở màn hình đó ngay bây giờ.

Nếu bạn có nhiều vị trí với các màn hình / độ phân giải khác nhau trên cùng một đầu nối, bạn sẽ phải đặt thêm thông minh vào tập lệnh bash của mình.


2

Chỉ một chút cải thiện kịch bản của Axlrod ở trên .

Tất cả những gì bạn cần làm là chỉ định màn hình nào sẽ sử dụng chính và màn hình máy tính xách tay của bạn (LVDS).

#! / bin / bash
LVDS = "LVDS-0"
CHÍNH = "VGA-0"

hàm get_displays ()
{
        xrandr -q | kết nối grep | awk '{in $ 1}'
}

hàm get_resolution ()
{
        [[-z "$ 1"]] && trả về 0 || xrandr -q | grep -A1 $ 1 | đuôi -1 | awk '{in $ 1}' | grep -e "^ [0-9]"
}

để hiển thị bằng $ (get_displays); làm
        độ phân giải = `get_resolution $ display`

        [[$ display == $ PRIMARY]] && arg = "- chính";
        [[-n $ độ phân giải]] && mode = "- chế độ $ độ phân giải";

        if [[$ display == $ LVDS]]; sau đó
                xrandr --output $ display --off
        elif [[-n $ mode]]; sau đó
                xrandr --output $ display $ arg $ mode
        fi
        chế độ unset độ phân giải arg;
làm xong

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

sau đó trong tập tin:

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

Lưu và thoát. Các giá trị được lấy từ lệnh xrandr -q. VGA1là tên của trình kết nối của tôi và 1152x864là tên của độ phân giải.

Điều này hoạt động cho Xubfox 16.04. Nó đặt độ phân giải ưa thích và đối với tôi, nó cho phép tôi đặt độ phân giải của màn hình đăng nhập, thay vì đặt mặc định ở độ phân giải cao nhất được hỗ trợ.

Sửa đổi từ câu trả lời ở đây


1
Sau khi cài đặt open-vm-tools và open-vm-tools-desktop, việc sao chép Monitor.xml sang /var/lib/lightdm/.config không còn hoạt động với tôi nữa. Chỉ định độ phân giải ưa thích như thế này đã sửa nó cho tôi.
jropella

1

Những gì tôi thấy hữu ích là một bài đăng trên trang web hướng dẫn Ubuntu . Tôi đã thử rất nhiều thứ trong Ubuntu 11.10 và thậm chí đã thử sử dụng đơn giản là Gnome Classic. Độ phân giải luôn là 1024x768 và khi tôi đặt thủ công thành 1440x900 thì nó là "ảo", ý tôi là tôi phải cuộn bằng chuột để khám phá toàn bộ màn hình nằm ngoài kích thước màn hình thực.

Trong Terminal tôi đã chạy lệnh này:

sudo gedit /etc/default/grub

Trình chỉnh sửa văn bản có thể mất một lúc để tải. Sau khi tải xong, tôi chỉnh sửa dòng

GRUB_GFXMODE=1024x768

và đổi nó thành:

GRUB_GFXMODE=1440x900

Nhớ chạy update-grubđể áp dụng các thay đổi.

Sau đó, tôi đã cố gắng cài đặt lại trình điều khiển VESA (trong máy tính này, tôi có GeForce 260 GTX). Tôi biết rằng cách tốt hơn là sử dụng trình điều khiển chính thức của Nvidia, nhưng sử dụng chúng thì vấn đề luôn giống nhau ... Chắc chắn, tôi nghĩ, bây giờ hiệu suất sẽ tệ hơn.

Vì vậy, kiểm tra bảng điều khiển Cài đặt máy chủ Nvidia X tôi đã xác minh rằng độ phân giải của tôi đã được thêm vào và, chuyển sang nó, nó làm cho màn hình hiển thị đúng. Thực tế tôi đang sử dụng Ubuntu 11.10 nhưng trong Gnome Classic.

Tôi là người mới sử dụng Linux nên hy vọng tôi đã viết những thứ tử tế.


0

Đừng muck với tập lệnh hoặc tập tin cấu hình có khả năng hiển thị màn hình đăng nhập của bạn không thể sử dụng!

Thay vào đó, đăng nhập và đặt cài đặt màn hình ưa thích của bạn *, sau đó chạy lệnh này:

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

Độ phân giải đăng nhập của bạn bây giờ sẽ luôn phản ánh các cài đặt của người dùng mà bạn hiện đang đăng nhập.

* Đừng quên nhấp vào "Áp dụng"


Điều này hoạt động nhưng nó là thứ yếu. Nó thực hiện tải bình thường ở độ phân giải tối đa và sau đó chuyển sang cài đặt của bạn. Làm thế nào bạn có thể làm cho nó tải độ phân giải chính xác để bắt đầu?
Goddard

0

Kịch bản của Axelrod có phần khiếm khuyết, vì một grep cho 'được kết nối' cũng lấy tất cả các màn hình 'bị ngắt kết nối' ... không phải là điều chúng ta muốn ...

Hơn nữa, sử dụng grep với awk và tail, v.v ... rất lãng phí và tôi đề nghị như sau đây. Ngoài ra, trong get_resolution, chúng tôi thay đổi mã trả về thành 1, vì mã trả về 0 thường là dấu hiệu thiếu lỗi, do đó chúng tôi sử dụng 1 nếu không có tham số đầu tiên.

Tóm lại, bằng cách khởi tạo phần chính của tập lệnh một hàm, nó có thể được lấy và thực hiện bất cứ lúc nào nếu cần trong thư viện hàm cũng như sử dụng các biến cục bộ, không cần phải bỏ đặt.

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

Đây là cách tôi làm cho nó hoạt động trong Xubfox 16.04.

Bạn cần phải có được chuỗi dọc cho độ phân giải mong muốn. Đây là trong kết quả của lệnh:

xrandr --verbose

Bây giờ chọn phần có độ phân giải bạn muốn. Nó sẽ trông giống như:

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

Từ dữ liệu trên, bạn sẽ nhận được chuỗi 108.000 1152 1216 1344 1600 864 865 868 900 +HSync +VSync.

Để tìm tên đầu ra của bạn, hãy tìm một dòng tương tự:

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

Ở đây đầu ra của tôi được đặt tên VGA1.

Bây giờ tạo tập lệnh:

sudo gedit /usr/share/lightdmxrandr.sh

Sau đó trong tập tin viết như sau:

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

Lưu và đóng tệp. Tạo tập lệnh thực thi:

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

Tạo một tập tin cấu hình để gọi tập lệnh vừa tạo.

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

trong tập tin này nhập:

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

Lưu và đóng tệp. Khởi động lại và hy vọng độ phân giải bạn chọn sẽ có trong lần đăng nhập của bạn.

Trong thực tế, đây là cách duy nhất hiệu quả với tôi, mặc dù việc tạo lại các nghị quyết hiện tại là không hợp lý.

Trả lời sửa đổi từ câu hỏi này .

Ghi chú

Một cách khác để có được chuỗi độ phân giải dài là chương trình cvt. Để có được chuỗi cho độ phân giải 1152x864, tốc độ làm mới 75,00:

cvt 1152 864 75

Điều này mang lại cho tôi độ phân giải hơi khác so với độ phân giải trên máy tính để bàn của tôi và đó là lý do tôi không đưa phương thức vào câu trả lời chính.


0

Nếu bạn đang sử dụng công cụ chào mừng GTK của LightDM thì bạn có thể chạy xrandr -qđể tìm tên của màn hình sau đó chỉnh sửa /etc/lightdm/lightdm-gtk-greetervà đặt thuộc tính active-monitornhư được mô tả trong các nhận xét bên trong tệp đó. Thuộc tính này có thể lấy nhiều giá trị được đặt hàng, bao gồm cả #cursormàn hình hiện đang hiển thị con trỏ chuột.


0

tôi muốn đính kèm tập lệnh cấu hình màn hình của mình vào một trong các phím đa phương tiện trên bàn phím mà tôi không sử dụng. hiện tại tôi có nút có nhãn 'windows media centre' buộc màn hình của tôi vào cấu hình ưa thích của chúng. bằng cách này nếu bạn bị mù và màn hình của bạn không đồng bộ hóa với độ phân giải mong muốn, chỉ cần nhấn phím nóng và tất cả đã được sửa.


-1

Các chế độ màn hình ưa thích của cải có thể là vấn đề

Tôi cho rằng màn hình của bạn báo cáo độ phân giải màn hình cao là ưu tiên. Bây giờ bạn muốn ghi đè tùy chọn mặc định này . Xem câu trả lời của tôi cho một câu hỏi rất giống nhau để biết chi tiết về cách điều này có thể được thực hiện.

Tôi gặp vấn đề ngược lại: Tôi luôn có độ phân giải màn hình thấp hơn (1280x1024) so ​​với độ phân giải tôi muốn (1600x1200). Tuy nhiên, cách khắc phục tôi đã tìm thấy (và được mô tả trong câu trả lời được liên kết) hy vọng sẽ được áp dụng tương tự cho vấn đề của bạn.


Bất cứ ai bỏ phiếu cho câu trả lời của tôi, bạn có thể vui lòng thêm một ghi chú về lý do tại sao bạn nghĩ câu trả lời này không hữu ích?
Chriki

-2

Tôi gặp vấn đề tương tự trên MacBook Pro giữa năm 2014 (11,1) khi chạy Xenial. Tôi đã thử tất cả các giải pháp đã nói ở trên dưới nhiều hình thức khác nhau, nhưng luôn luôn khiến X chuyển sang chế độ đồ họa thấp không an toàn (nhưng được hiển thị ở độ phân giải tôi muốn nó được đặt thành mặc định không hơn không kém.

Sau nhiều tranh cãi trên các diễn đàn và googling, hóa ra tôi đã quên mất giải pháp tiềm năng đơn giản và mặc định nhất: nomodeset. Điều đó đã khắc phục vấn đề.

TL; DR: Đừng quên dùng thử nomodeset! Đặc biệt trên MacbookPro 11,1.


-3

Tôi đã tạo tập lệnh này để làm cho nó động hơn (nhiều không gian làm việc / màn hình khác nhau).

Chỉ phiền toái: khi bạn đăng nhập từ lightdm, màn hình vẫn nhấp nháy như muốn thay đổi độ phân giải: s


1
Dán không được tìm thấy.
Tobold

Thật; nếu bạn vẫn có một bản sao cục bộ của tập lệnh, vui lòng xem xét tải lên lại tập lệnh.
wchargein

1
Tôi đã tải tập lệnh lên github. Tôi không biết lý do tại sao paste.ubfox.com đã xóa nó :(
Leon
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.