Cách thay đổi độ phân giải (Resolution) trong linux

Mỳ ăn liền:

curl -s https://caochitam.github.io/resources/linux-script/resolution_changer.sh --output rc.sh & sudo bash rc.sh 1280 1024 0

Bạn chỉ cần thay đổi độ phân giải ở 2 tham số gần cuối. (1280 1024)

Màn hình cùi bắp của mình độ phân giải đúng là 1280x1024 nên mới để tham số như vậy.
Còn số 0 cuối cùng là dùng cho máy tính chỉ có một màn hình. Nếu bạn có nhiều hơn 1 port display đã được kết nối thì bỏ số 0 đi, và lúc chạy, script sẽ cho chọn cấu hình cổng mong muốn.

Script sẽ tạo 1 file /etc/init.d/change-resolutions nên cần dùng đến sudo.
Nếu không có sudo, script vẫn chạy nhưng sẽ không lưu được file, nếu muốn lưu được file mà không cần sudo, bạn có thể tải script về và sửa đường dẫn /etc/init.d/ về nơi mình có quyền là có thể chạy được.

File này cũng chẳng có gì quan trọng, nó chứa 2 lệnh xrandr tương ứng với độ phân giải và Port bạn chọn và lưu sẵn lại. Bạn chỉ cần tạo lệnh Startup cho file này là độ phân giải sẽ được cài đặt.

Cách thêm file /etc/init.d/change-resolutions vào Start up thì bạn tự nghiên cứu vậy. Vì dường như là linux mỗi cái một khác mình làm script ko được.

Cách đơn giản nhất là thêm lệnh bash /etc/init.d/change-resolutions vào Phần Startup Applications trong System Settings như hướng dẫn ở cuối bài.
:sunglasses::sunglasses::sunglasses::sunglasses::sunglasses::sunglasses::sunglasses::sunglasses::sunglasses::sunglasses::sunglasses::sunglasses::sunglasses::sunglasses::sunglasses::sunglasses::sunglasses::sunglasses::sunglasses::sunglasses:

Bài viết:

Khi cài đặt Linux nhiều khi bạn sẽ gặp phải tình trạng màn hình chữ nào chữ nấy to đùng, lại còn mờ mờ nữa mà không biết làm sao thay đổi độ phân giải cho đúng.

Câu trả lời tất cả nằm ở đây: https://wiki.archlinux.org/index.php/Xrandr

Phần đầu của bài viết này nói về cách thay đổi giữa các độ phân giải mà hệ thống đã dò thấy. Cái này khá dễ, trong giao diện Setting của hệ điều hành cũng làm được.

Mục đáng chú ý nhất đó là:

Adding undetected resolutions - Thêm độ phân giải không được dò thấy
Trong tài liệu có hướng dẫn chạy dòng lệnh thay đổi độ phân giải chỉ trong phiên làm việc và thay đổi vĩnh viễn bằng file .conf
Mình xin tổng hợp lại như sau:

##Step1: Chạy lệnh cvt để lấy Modeline

cvt 1280 1024

Thay số 1280 1024 bằng độ phân giải của màn hình bạn. Kết quả sẽ trả về dòng tương tự thế này:

# 1280x1024 59.89 Hz (CVT 1.31M4) hsync: 63.67 kHz; pclk: 109.00 MHz
Modeline "1280x1024_60.00"  109.00  1280 1368 1496 1712  1024 1027 1034 1063 -hsync +vsync

Mục đích ở bước này là ta lấy dòng Modeline "1280x .... vsync

##Step 2: Chạy lệnh xrandr để lấy tên monitor

xrandr

Kết quả trả về giống thế này:

Screen 0: minimum 8 x 8, current 1280 x 1024, maximum 32767 x 32767
HDMI1 disconnected (normal left inverted right x axis y axis)
VGA1 connected primary 1280x1024+0+0 (normal left inverted right x axis y axis) 0mm x 0mm
    1024x768      60.00  
    800x600       60.32    56.25  
    848x480       60.00  
    640x480       59.94  
VIRTUAL1 disconnected (normal left inverted right x axis y axis)

Ở đây mình dùng monitor tên là VGA1, bạn dùng monitor nào thì nhớ lát nữa sửa trong file .conf

##Step 3: Ghi lại cấu hình vào file .conf
Mở trình soạn thảo ở quyền root, tạo fie /etc/X11/xorg.conf.d/10-monitor.conf và dán đoạn mã sau vào:

Section "Monitor"
    Identifier "VGA1"
    Modeline "1280x1024_60.00"  109.00  1280 1368 1496 1712  1024 1027 1034 1063 -hsync +vsync
    Option "PreferredMode" "1280x1024_60.00"
EndSection

Section "Screen"
    Identifier "Screen0"
    Monitor "VGA1"
    DefaultDepth 24
    SubSection "Display"
        Modes "1280x1024_60.00"
    EndSubSection
EndSection

Section "Device"
    Identifier "Device0"
    Driver "intel"
EndSection
  • Thay Modeline bằng đoạn Modeline lấy được trong Step 1
  • Thay VGA1 bằng monitor bạn chọn trong Step 2
  • Thay intel bằng driver card đồ hoạ của bạn, ví dụ: nvidia

##Lưu file lại và reboot. Enjoy!

:sunglasses::sunglasses::sunglasses::sunglasses::sunglasses::sunglasses::sunglasses::sunglasses::sunglasses::sunglasses::sunglasses::sunglasses::sunglasses::sunglasses::sunglasses::sunglasses::sunglasses::sunglasses::sunglasses::sunglasses:

Cách 2: Thay đổi độ phân giải tự động bằng Script

Thật ra cách này cũng chẳng sáng tạo gì sất, nhưng được cái nhanh gọn lẹ. Mô hình là sau khi chạy thử thanh đổi độ phân giải bằng 2 lệnh xrandr là --newmode và --addmode chúng ta chỉ cần lưu lại vào file .sh rồi cho nó chạy lúc khởi động là xong.

Bước 1: Chạy lệnh cvt để lấy Modeline
Bước 2: Chạy lệnh xrandr để lấy tên cổng màn hình đang dùng
Bước 3: Chạy lệnh xrandr --newmode
Chú ý: dán đoạn modeline lấy được từ lệnh cvt vào sau --newmode

xrandr --newmode "1280x1024_60.00"  109.00  1280 1368 1496 1712  1024 1027 1034 
1063 -hsync +vsync

Bước 4: Chạy lệnh xrandr --addmode
Chú ý: Thay VGA-1 bằng cổng mà bạn đang sử dụng (nhìn thấy khi chạy lệnh xrandr), và tên mode “1280x1024_60.00” phải trùng với tên mới tạo trên dòng lệnh --newmode

xrandr --addmode VGA-1 1280x1024_60.00

Bước 5: Lưu 2 dòng lệnh thành công trên vào file script
Sau khi chạy 2 dòng lệnh nếu thay đổi độ phân giải thành công thì chúng ta lưu vào file scpipt với nội dung bắt đầu bằng dòng #!/bin/bash

#!/bin/bash
xrandr --newmode "1280x1024_60.00"  109.00  1280 1368 1496 1712  1024 1027 1034 
1063 -hsync +vsync
xrandr --addmode VGA-1 1280x1024_60.00

Lưu lại với một tên bất kỳ đuôi .sh ở đây mình đặt là change_resolution.sh
Như vậy, bạn có thể chạy script này để đổi độ phân giải bất kỳ lúc nào với lệnh

bash /duong/dan/toi/file/change_resolution.sh

Bước 6: Tạo lệnh chạy lúc khởi động
Bây giờ bạn có thể vào google tìm cách chạy một script lúc khởi động. Ở đây mình dùng cách đơn giản nhất là

  1. Mở menu chính của hể điều hành (bấm phím Windows) tìm ứng dụng startup
  2. Tạo một startup command mới với nội dung
    bash /duong/dan/toi/file/change_resolution.sh
  3. Đặt tên cho lệnh này. Ví dụ như “Change Resolution” chẳng hạn, lưu lại là OK.

Bước 7: Reboot và enjoy!

4 Likes

Mở trình soạn thảo ở quyền root và tạo fie /etc/X11/xorg.conf.d/10-monitor.conf thế nào ạ? Mình mới tập làm quen với linux (ubuntu nên không biết nhiều, mong giúp đỡ)

Ubuntu thì bạn có thể sử dụng sudo <tên_lệnh> để chạy lệnh dưới quyền root. Ví dụ: sudo useradd dcd (tạo tài khoản có tên login là dcd).

Hầu hết các bản phân phối Linux đều có trình soạn thảo nano, bạn gõ sudo nano để chạy. vi/vim cũng có sẵn, nhưng bạn sẽ không cần nó ngay lúc này nên mình không liệt kê :joy: trên Ubuntu hình như có thêm leafpad hay gedit thì phải, nhưng là GUI.

Để tạo file bạn gõ lệnh touch <tên_file>. Ví dụ: touch /etc/X11/xorg.conf.d/10-monitor.conf. Thêm sudo cho chắc.: sudo touch /etc/X11/xorg.conf.d/10-monitor.conf

2 Likes

Tập phân quyền, tạo user, không phải lúc nào cũng cần root

4 Likes

Nếu mình đang ở trong 10-monitor.conf (sudo su), mình muốn dán đoạn mã trên vào thì phải làm sao ạ??

sudo su là vào root rồi. Mở thẳng nano .../10-monitor.conf rồi dán thẳng đoạn mã trên vào thôi.

1 Like

Mình mở thế này, giờ chỉ cần dán đoạn mã vào phải không ạ??

Đúng rồi.

20 char…

1 Like

Mình lưu nó bắt tạo tên file, mình tưởng tên file là “10-monitor.conf” nhỉ @@

Cứ exit, nó sẽ hỏi là lưu file hay không, nếu xác nhận tên file thì bạn cứ ok để qua thôi.

1 Like

Mình cài độ phân giải 1920x1080 (màn hình của mình là 1920x1080) mà khi restart lại thì nó bị như này bạn ơi @@
https://scontent-hkg3-2.xx.fbcdn.net/v/t34.0-12/28308370_349044355610484_944152358_n.jpg?oh=9c6ea1d0da3df5b136dea52b66e0292b&oe=5A8D345F

Chiều ngang của nó bị hẹp vào tầm 3cm bạn ạ, còn chiều dài mình nghĩ là ổn rồi (nét hơn trước khi đổi 1024x768 khá nhiêu)

Là ubuntu sao không xài mặc định của OS cho nhanh.
Từ 18.04 vấn đề màn hình cũng được support tốt hơn, mỗi tội cài 3 màn hình theo [1-VGA:2-DVI-3-HDMI] vẫn chưa nhận.

1 Like

Căn bản là vì màn 21.5 inch đối với mình hơi to, mà độ phân giải mặc định của Ubuntu 17.10 là 1024x760 nên nhìn gì cũng to quá, không đủ chỗ cho tác vụ khác, chữ mờ và to,… nên mình đổi thành độ phân giải mình hay dùng (1920x1080) cho quen mắt và phù hợp với nhu cầu sử dụng, mà màn có thể đáp ứng được cao hơn thì tại sao lại dùng những thứ thấp hơn rất nhiều phải không bạn.

1 Like

Trong settings của Ubuntu phần Devices->Display không có tùy chọn trực tiếp hay sao bạn?
Mặc định mấy dòng màn hình desktop nếu đã 21inc thì nó hỗ trợ luôn 1920x1080 max rồi mà ta, đâu giống như laptop đâu.

1 Like

@@ Mình vào chỉ thấy 1024x760 trở xuống, thấy cũng lạ, tìm hết mấy trang search google mà thấy mỗi cách trên hiệu quả nhưng chưa được tốt cho lắm :v :v nếu không làm được tốt hơn thì cũng đỡ hơn bởi dày công tìm cách, đau đầu bao ngày thì làm được thế này đối với mình cũng tạm ổn rồi :v chứ vẫn chưa làm được gì thì xót lắm :V :V

@DCD , Mình vừa cập nhật “Cách 2: thay đổi độ phân giải bằng Script”. bạn có thể tham khảo. Cách này hiệu quả hơn hẳn. Như dùng linuxmint mà cài bằng file .conf thì vã mồ hôi lắm.

Sao nó không làm cái lệnh đơn giản dạng:
“set monitor index res WxH” nhỉ.
Khổ d*m quá.

Ok. Để mình học Shell xíu rồi viết cái script nho nhỏ xem sao. Tối nay có hàng.

xrandr --output monitor --mode WxH

List monitors: xrandr --listmonitors
List resolutions: xrandr -q

Cách của OP để sử dụng resolutions không tự động được detected, cũng không cần phải chỉnh Xorg.conf, cứ ném xandr vào ~/.xsession là xong.

2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?