Cách nhận độ phân giải màn hình ngoài do xrandr thiết lập để duy trì


11

tl; dr

Máy tính xách tay của tôi tiếp tục quên độ phân giải chính xác của màn hình bên ngoài được gắn vào nó. Làm thế nào tôi có thể làm cho cấu hình "dính"?

Chi tiết

Tôi có một máy tính xách tay chạy Linux Mint được gắn vào màn hình ViewSonic bên ngoài. Tôi thiết lập nó để sử dụng màn hình ngoài làm màn hình thứ hai (tức là không được nhân đôi). Điều này làm việc tốt trong một số tuần.

Đột nhiên, máy tính xách tay không còn nhận ra nó là ViewSonic, tại thời điểm đó, nó không biết độ phân giải tối ưu của nó ( 1600 x 1200), chỉ cho phép tối đa 1028 x 768. 1 Điều này không hoạt động tốt với máy tính xách tay của tôi, có 1920 x 1200độ phân giải.

Sau nhiều thất vọng, tôi tìm thấy câu trả lời này . Nó giúp tôi khắc phục sự cố, như sau (đầu ra của cvtlệnh là modeline được sử dụng trong lệnh tiếp theo):

cvt 1600 1200
xrandr --newmode "1600x1200_60.00"  161.00  1600 1712 1880 2160  1200 1203 1207 1245 -hsync +vsync
xrandr --addmode VGA-1 1600x1200_60.00

Đây chính xác là những gì tôi đã ước mình có thể làm, nhưng không thể thực hiện thông qua GUI. (Có nhiều lý do tại sao tôi vẫn thích dòng lệnh ...)

Điều này một lần nữa làm việc tốt trong một thời gian. Tuy nhiên, khi tôi khởi động máy tính ngày hôm nay và đăng nhập, tôi nhận được một cửa sổ bật lên khu vực thông báo với một chuỗi lỗi về các chế độ đã thử khác nhau không hoạt động và màn hình ngoài bị tắt. Tôi lặp lại các lệnh trên, và nó đang hoạt động trở lại.

Tôi có thẻ nVidia. Tôi đã thử cài đặt trình điều khiển độc quyền khi mọi thứ bắt đầu tồi tệ, nhưng tại thời điểm đó, màn hình bên ngoài không còn được nhận ra nữa, vì vậy tôi quay lại trình điều khiển nguồn mở. Tôi không có Xorg.confhoặc Xorg.conf.dchỉ có một xorg.conf.failsafe.

Tôi không muốn lặp lại các lệnh này mỗi lần tôi khởi động máy. Có một số cách tôi có thể có được điều này được lưu vào của tôi Xorg.confhoặc một cái gì đó? Đã một số năm kể từ khi tôi làm nhiều việc với X. Ai có thể giúp tôi ở đây không?


1 Tôi đã không thể xác định tại sao điều này xảy ra. Dự đoán tốt nhất của tôi là một bản cập nhật trình điều khiển có vấn đề.


1
Bạn đang sử dụng card đồ họa nào? Và nếu đó là ATI / AMD hay Nvidia, bạn đang sử dụng trình điều khiển độc quyền hay trình điều khiển nguồn mở? Bạn hiện có một /etc/X11/corg.conftập tin hoặc bất cứ điều gì trong /etc/X11/corg.conf.d? Vì vậy, xin vui lòng chỉnh sửa câu hỏi của bạn và thêm nội dung của các tập tin.
terdon

Vui lòng chỉnh sửa câu hỏi của bạn để thêm thông tin, rất khó đọc và dễ bỏ lỡ trong các bình luận. Điều đó nói rằng, vâng, xorg.conf không còn cần thiết nữa, những điều này hiện đang được xử lý bởi udev.
terdon

Chỉ cần nhìn vào câu hỏi của bạn một lần nữa và những gì tôi đã bỏ lỡ khi tôi viết câu trả lời của tôi là bạn có một máy tính xách tay. Những gì bạn có thể muốn xem xét là viết một udevquy tắc để gọi một tập lệnh để thực hiện xrandr mỗi khi màn hình được cắm hoặc rút phích cắm, điều này sẽ tốt hơn nhiều so với máy tính của bạn không phải lúc nào cũng được gắn vào màn hình. Mặt khác, nếu bạn hài lòng khi nó được thiết lập ở cùng một nơi mọi lúc, Xorg.conflà cách để đi.
Graeme

Câu trả lời:


5

Tôi chắc chắn có một cách tốt hơn, tôi nghĩ rằng udevbây giờ tất cả đã được xử lý nhưng nếu bạn biết rằng các lệnh đó sẽ giải quyết nó, bạn luôn có thể biến chúng thành một kịch bản:

#!/usr/bin/env bash
cvt 1600 1200
xrandr --newmode "1600x1200_60.00"  161.00  1600 1712 1880 2160  1200 1203 1207 1245 -hsync +vsync
xrandr --addmode VGA-1 1600x1200_60.00

Làm cho nó có thể thực thi được và sau đó thêm nó vào các ứng dụng khởi động của Môi trường máy tính để bàn của bạn. Đây có lẽ là lựa chọn tốt nhất nếu DE của bạn cung cấp cho bạn tùy chọn.


Nếu bạn không thể làm như trên, vì một bản hack bẩn, bạn có thể thêm chúng vào ~/.profile:

if [ ! -t 0 ] 
then
    cvt 1600 1200
    xrandr --newmode "1600x1200_60.00"  161.00  1600 1712 1880 2160  1200 1203 1207 1245 -hsync +vsync
    xrandr --addmode VGA-1 1600x1200_60.00
fi

Các if [ ! -t 0 ]cần đảm bảo điều này chỉ được chạy trong GUI và .profilecó nguồn gốc bởi người quản lý đăng nhập bạc hà như tôi nhớ lại.

Bây giờ, bạn nên cũng có thể sử dụng ~/.xsessionnhưng tôi đã có vấn đề với điều đó bị bỏ qua. Rất nhiều cách tiếp cận cũ hơn đang được thay thế và tôi không chắc trạng thái của nghệ thuật là gì.


Bạn không phải sử dụng cvt 1600 1200 vì chúng tôi đã sử dụng đầu ra của nó trong hai dòng tiếp theo.
PraveenMax

4

Nếu bạn đang sử dụng trình điều khiển độc quyền của Nvidia thì nvdia-settingsnên là công cụ GUI để định cấu hình Xorg.conftệp. Nó nên có gói riêng trong Linux Mint, vì vậy việc cài đặt sẽ đơn giản như:

sudo apt-get install nvidia-settings

Điều này sẽ đặt một biểu tượng trong menu của bạn ở đâu đó, bạn có thể chạy nó từ đó (mặc dù tôi không chắc làm thế nào bạn có được nó để có quyền root). Từ dòng lệnh tôi tin rằng bạn có thể làm:

sudo /usr/lib/nvidia/current/nvidia-settings

Nếu bạn muốn làm dòng lệnh, thì nvidia-xconfigdường như là công cụ để sử dụng ( nvidia-xconfiggói cho tôi). Dù bằng cách nào, bạn thường sẽ nhận được kết quả tốt hơn với trình điều khiển độc quyền nếu nó được cấu hình đúng. Các công cụ này ít nhất sẽ tạo ra một Xorg.conftệp hợp lý mà sau đó bạn có thể điều chỉnh trực tiếp hoặc thông qua một trong các chương trình này.

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.