ฉันจะปรับแต่ง xrandr อย่างถาวรได้อย่างไร


65

ฉันใช้เพื่อแก้ไขสคริปต์เริ่มต้นสำหรับ GDM (/ etc / gdm / Init / Default) เพื่อเปลี่ยนความละเอียดการแสดงผลของฉันอย่างถาวร

ฉันจะทำสิ่งนี้กับ LigthDM ใน Ubuntu Oneiric ได้อย่างไร


เพิ่ม. xprofile ในโฟลเดอร์บ้านของคุณ ดูaskubuntu.com/questions/63863/…สำหรับคำแนะนำเบื้องต้นเกี่ยวกับการตั้งค่าความละเอียดและเพิ่มใน. xprofile
duffydack

คำตอบ:


21

ฉันคิดว่าคุณสามารถเพิ่มโหมดการแสดงผล/etc/X11/xorg.confได้

หากคุณไม่มี a xorg.confคุณสามารถใช้สิ่งต่อไปนี้เป็นพื้นฐาน คุณต้องแทนที่รายการที่มีชื่อModeline, DriverและModesกับรายการที่ถูกต้องสำหรับระบบของคุณ ขึ้นอยู่กับฮาร์ดแวร์ของคุณคุณอาจต้องการรายการเพิ่มเติมเช่นหากระบบของคุณมีชิปกราฟิกมากกว่าหนึ่งชิป

Section "Monitor"
    Identifier    "Monitor0"
    Modeline "1280x1024_60.00"  109.00  1280 1368 1496 1712  1024 1027 1034 1063 -hsync +vsync
    Modeline "1024x768_60.00"   63.50  1024 1072 1176 1328  768 771 775 798 -hsync +vsync
EndSection

Section "Screen"
    Identifier     "Screen0"
    Device         "Card0"
    Monitor        "Monitor0"
    SubSection "Display"
        Modes       "1280x1024_60.00" "1024x768_60.00"
    EndSubSection
EndSection

Section "Device"
    Identifier    "Card0"
    Driver        "nvidia"
EndSection

หากคุณไม่ทราบชื่อไดรเวอร์วิดีโอที่ระบบของคุณใช้อยู่คุณอาจได้รับชื่อดังต่อไปนี้ (หากคุณมีชิปกราฟิก Intel ชื่อไดรเวอร์นั้นเป็นเพียง "intel"):

lshw -class display | grep "driver"

modelines สามารถสร้างได้ด้วยcvt:

cvt <h-resolution> <v-resolution> [refresh]

ฉันลองสิ่งนี้และมันจะไม่บูตด้วยเหตุผลบางอย่าง ฉันใช้ modeline ที่สร้างขึ้นจากcvtคำสั่งและไดรเวอร์จากอีกอันหนึ่ง (และลองvesaด้วย) แต่มันก็แค่แขวนโดยไม่มีข้อความแสดงข้อผิดพลาด วิธีการแก้ปัญหาของจอนโรเบิร์ตทำงานได้อย่างสมบูรณ์แบบสำหรับฉันและเป็นอิสระจากสิ่งต่าง ๆ เช่นไดรเวอร์การ์ดแสดงผลที่คุณพูดถึงที่นี่ซึ่งอาจผิดพลาดได้ง่ายสำหรับมือใหม่ดังนั้นฉันจึงโหวตคำตอบของเขา
Mike

1
ดูเหมือนจะไม่ช่วยอะไรเหมือน - หมุน
Jherico

2
คำตอบนี้ล้าสมัยแล้ว ดูคำตอบของ John Roberts
ใช้งาน

+1 สมบูรณ์ -o! ใช้ GDM กับ Gnome 3.16 และนี่ทำให้ GDm ของฉันรู้จักจอภาพ 1080p ขอขอบคุณ!
eduncan911

บนคอมพิวเตอร์ของฉันlshwเอาท์พุทแต่คนขับรถที่ถูกต้องคือi915 intel
user202729

63

แก้ไข/etc/lightdm/lightdm.confเพื่อเพิ่มตัวเลือกต่อไปนี้:

display-setup-script> โทร mycustomloginvideo.sh ของคุณก่อนที่หน้าจอเข้าสู่ระบบจะปรากฏขึ้น

session-setup-script> เรียก mycustomdesktopvideo.sh ของคุณก่อนเริ่มเซสชันเดสก์ท็อปผู้ใช้

[SeatDefaults]
greeter-session=unity-greeter
user-session=ubuntu
# for your login screen, e.g. LightDM (Ubuntu 11.10) or GDM (11.04 or earlier)
display-setup-script=/usr/share/mycustomloginvideo.sh
# for your desktop session
session-setup-script=/usr/share/mycustomdesktopvideo.sh

คุณอาจมีเครื่องมือ "arandr" gui สร้างสคริปต์ sh ข้างต้นเลือกพารามิเตอร์จากการกำหนดค่า X ของเซสชันปัจจุบันของคุณ

ตรวจสอบให้แน่ใจว่าเชลล์สคริปต์ของคุณสามารถเรียกใช้งานได้:

chmod a+x /usr/share/mycustom*video.sh

และคุณสามารถทดสอบว่ามันใช้งานได้ (เช่นคุณไม่มีข้อผิดพลาดในการพิมพ์หรือการกำหนดค่าในคำสั่ง xrandr ของคุณ) เพียงแค่รันมันในเทอร์มินัล:

/usr/share/mycustomdesktopvideo.sh

หากสคริปต์ล็อกอินไม่ทำงานไม่ว่าด้วยเหตุผลใดก็ตามเครื่องของคุณอาจไม่เสร็จสิ้นขั้นตอนการบู๊ตไปยังหน้าจอเข้าสู่ระบบ หากสคริปต์เดสก์ท็อปล้มเหลวคุณอาจไม่ได้รับเดสก์ท็อปหลังจากลงชื่อเข้าใช้หากคุณตั้งค่าจอภาพภายนอกสคริปต์เหล่านี้จะล้มเหลวเมื่อคุณตัดการเชื่อมต่อและ X เซสชันจะไม่เริ่มทำงาน


สำหรับ Mint 13 XFCE โดยใช้ mdm ให้แก้ไข / etc / mdm / Init / Default โทรหาสคริปต์ของคุณก่อน "exit 0"
StackUnder

Evnn ทำงานบน Fedora ... ต้องการเพียงdisplay-setup-scriptสคริปต์เนื่องจาก Xfce ตั้งค่าไว้แล้วโดยการตั้งค่าการแสดงผลดังนั้นsession-setup-scriptฉันเพิ่งทิ้งฉันที่หน้าจอเข้าสู่ระบบ
Wilf

10

บางคนโพสต์วิธีแก้ปัญหาอื่นแม้ว่าฉันต้องบอกว่ามันไม่ได้ผลสำหรับฉัน มันอาจเป็นไปได้สำหรับคุณ ในกรณีของฉันมันเป็นอันหนึ่งอันเดียวกันและฉันสามารถเลื่อนเคอร์เซอร์เมาส์ไปได้เท่านั้น แผงด้านบนตัวบ่งชี้แอพว่างเปล่า แต่หลังจากถอดปลั๊ก LCD ฉันสามารถลบบรรทัดที่เพิ่มและทุกอย่างกลับเป็นปกติ

แก้ไขไฟล์ /usr/sbin/lightdm-session

นี่คือลักษณะที่ส่วนแรกของไฟล์นั้นมีลักษณะ:

#!/bin/sh
#
# LightDM wrapper to run around X sessions.

echo "Running X session wrapper"

# Load profile
for file in "/etc/profile" "$HOME/.profile" "/etc/xprofile" "$HOME/.xprofile"; do
  if [ -f  "$file" ]; then
     echo "Loading profile from $file";
     . "$file"
  fi
done

xrandr --newmode "1368x768_60.00" 85.25 1368 1440 1576 1784 768 771 781 798 -hsync +vsync
xrandr --addmode CRT1 1368x768_60.00
xrandr --output CRT1 --mode 1368x768_60.00

# Load resources

โปรดทราบว่าควรเปลี่ยนการตั้งค่า Xrandr เพื่อให้ตรงกับความต้องการของคุณ


วิธีนี้ใช้ได้ผลดีกับ lubuntu 17.x บนเครื่องเก่า มันมีผลกับเซสชั่นเท่านั้นดังนั้นหน้าจอเข้าสู่ระบบที่ไม่แสดงผลด้วยความละเอียดที่ต้องการ
laconbass

6

ฉันพยายามแก้ปัญหาที่คล้ายกันมาระยะหนึ่งแล้วและพบวิธีแก้ปัญหาที่เหมาะกับฉันดังนั้นหวังว่ามันจะช่วย ...

ฉันมี AOA110 รุ่นเก่าที่มีหน้าจอหลายต่อหลายครั้งและหลังจากซื้อแล็ปท็อปเครื่องใหม่แล้วตัดสินใจว่าฉันจะลองเปลี่ยนเป็น HTPC แต่จอภายนอกฉันไม่รู้จัก X ดังนั้นฉันต้อง 'บิด' หลายครั้งเพื่อให้มันทำงานได้อย่างถูกต้อง

นี่คือสิ่งที่ฉันทำ:

หลังจากใช้http://ubuntuforums.org/showthread.php?t=1112186บทช่วยสอนนี้จนถึงขั้นตอนที่ 5 ฉันสามารถค้นหาวิธีแก้ไขที่ใช้งานได้และเป็นที่ยอมรับใน xrandr แต่นี่ไม่ได้ทำงานบนหน้าจอเข้าสู่ระบบ LightDM

อย่าทำตามขั้นตอนต่าง ๆ เพื่อให้ถาวรในวิธีการใช้งานข้างต้น แต่ฉันคิดว่านี่เป็นวิธีที่เหมาะสมในการทำ 11.10 ฉันพบโพสต์นี้ใน ArchWiki https://wiki.archlinux.org/index.php/Xorgซึ่งฉันปรับให้เข้ากับความต้องการของฉัน

ขั้นแรกสร้างไฟล์ที่นี่: /etc/X11/xorg.conf.d/10-monitor.conf

จากนั้นเพิ่มรายละเอียด X ที่เหมาะสมสำหรับการแสดงผลของคุณที่นี่เป็นลักษณะของฉัน:

Section "ServerLayout"
Identifier     "DualSreen"
Screen       0 "Screen0"
Screen       1 "Screen1" RightOf "Screen0" #Screen1 at the right of Screen0
#Option         "Xinerama" "1" #To move windows between screens
EndSection

Section "Monitor"
Identifier     "LVDS1"
Option         "ignore" "true"
EndSection

Section "Monitor"
Identifier     "VGA1"
Option         "Enable" "true"
Modeline "1440x900_60.00"  106.47  1440 1520 1672 1904  900 901 904 932  -HSync +Vsync
EndSection

Section "Device"
Identifier     "Device0"
Driver         "intel"
Screen         0
EndSection

Section "Device"
Identifier     "Device1"
Driver         "intel"
Screen         1
EndSection

Section "Screen"
Identifier     "Screen0"
Device         "Device0"
Monitor        "VGA1"
DefaultDepth    24
Option         "TwinView" "0"
SubSection "Display"
    Depth          24
    Modes          "1440x900_60.00"
EndSubSection
EndSection

Section "Screen"
Identifier     "Screen1"
Device         "Device1"
Monitor        "LVDS1"
DefaultDepth   24
Option         "TwinView" "0"
SubSection "Display"
    Depth          24
EndSubSection
EndSection

บิตสิ่งสำคัญที่จะอยู่ภายใต้การเพิ่มที่เหมาะสมSection "Monitor"รวมถึงการที่เหมาะสมModelineที่คุณพบในขณะที่ใช้gtf 1440 900 60.00แล้วภายใต้ที่สอดคล้องกันรวมทั้งการที่ถูกต้องSection "Screen"Modes

คุณจะสังเกตเห็นว่าสิ่งที่ฉันพยายามทำไม่ใช่แค่ตั้งค่าการเชื่อมต่อ VGA1 ให้เป็นความละเอียดที่เหมาะสม แต่ยังบอกด้วยว่าอย่าใช้เอาต์พุต LVDS1 ของฉัน เห็นได้ชัดว่าคุณจะต้องปรับแต่งของคุณอย่างเหมาะสมเพื่อให้ตรงกับจำนวนเอาท์พุทที่เหมาะสมและส่วนอุปกรณ์หน้าจอและจอแสดงผลที่เหมาะสมสำหรับการตั้งค่าของคุณ

ขออภัยสำหรับมหากาพย์การโพสต์ฉันได้รับการปรับแต่งไฟล์ xorg.conf บางครั้งตอนนี้กับจอแสดงผล Hannspree ฉันได้ใช้และการตั้งค่า xorg.conf เก่าที่ฉันใช้ก่อน 11.10 เพียงไม่ทำงานอย่างถูกต้องอีกต่อไปนี่คือ ทางออกเดียวที่ฉันพบว่าใช้งานได้

โชคดี!


การใช้xrandr -qควรให้ข้อมูลที่ถูกต้องเกี่ยวกับการใช้งานจอภาพและโหมดที่เป็นไปได้
faithinfriction

ไฟล์กำหนดค่าพื้นฐานสามารถสร้างได้โดยการเรียกใช้Xorg :1 -configureซึ่งสร้างเซิร์ฟเวอร์ X ใหม่และสร้างไฟล์กำหนดค่าจากไฟล์ซึ่งสามารถคัดลอกจาก/root/xorg.conf.newไปยัง/etc/X11/xorg.confได้ ฉันพบวิธีที่ดีกว่าคือคำตอบข้างต้น
วิลฟ์

5

ฉันมีปัญหาที่คล้ายกันกับแล็ปท็อปของฉันดังกล่าวข้างต้นและฉันต้องการเพิ่มบางสิ่งบางอย่างในการสนทนา หากคุณไม่สนใจเกี่ยวกับความละเอียดในการลงชื่อเข้าใช้ (ฉันไม่ได้) แต่ต้องการให้เวิร์กสเปซจริงเป็นความละเอียดที่ถูกต้องคุณสามารถเพิ่มข้อมูลจอภาพของคุณลงใน LightDM แต่ไม่เปิดความละเอียดเต็มจนกว่าคุณจะเข้าสู่ระบบ

ฉันเพิ่งเพิ่มสคริปต์ต่อไปนี้สำหรับมอนิเตอร์ของฉันในไฟล์: lighdmxrandr

xrandr --newmode "1440x900_60.00"  106.50  1440 1528 1672 1904  900 903 909 934 -hsync +vsync
xrandr --addmode VGA1 1440x900_60.00

แล้วฉันจะเรียกมันว่า /etc/lightdm/lightdm.conf

display-setup-script=/usr/bin/lightdmxrandr

เมื่อฉันเข้าสู่ระบบฉันสามารถตั้งค่าจอภาพของฉันในการแสดงผลและใช้งานได้แม้หลังจากที่ฉันเข้าสู่ระบบอีกครั้ง (ใช้เพื่อให้ฉันข้อผิดพลาดที่น่าเกลียดขนาดใหญ่)


สิ่งนี้ทำงานได้ตามที่ต้องการ แต่ต้องรีบูตเครื่องไม่ให้ลงชื่อเข้าใช้อีกครั้ง ...
CrandellWS

4

ในฐานะที่เป็นคำตอบสำหรับ Jon Roberts ให้ฉันระบุว่า arandr ไม่ได้รวมอยู่ในการสร้างสคริปต์ทุกพารามิเตอร์ที่ทำงานในเซสชันปัจจุบัน จอภาพหลัก (ในกรณีที่คุณใช้การกำหนดค่าจอภาพสองจอ) อัตราการรีเฟรชและการตั้งค่าแกมม่าสำหรับแต่ละจอภาพจะไม่รวมอยู่ สคริปต์เซสชันของฉันดูเหมือนว่า:

#!/bin/sh
xrandr --output LVDS --mode 1366x768 --pos 1600x432 --rotate normal --output HDMI-0 --off --output DVI-0 --off --output VGA-1 --mode 1600x1200 --rate 85 --pos 0x0 --rotate normal --primary
xrandr --output VGA-1 --gamma 0.8:0.7:0.55 

ฉันเองเพิ่มตัวเลือก --rate และ --primary ในบรรทัดแรกแล้วเพิ่มด้วยตนเองบรรทัดที่สองกับการแก้ไขแกมมาเพราะเห็นได้ชัดว่าการตั้งค่าแกมมา xrandr จะหายไปเมื่อใดก็ตามที่คุณเปลี่ยนจอภาพให้หลัก

ฉันไม่ทราบว่าพฤติกรรมนี้โดยเฉพาะกับการตั้งค่าแกมม่าเมื่อสร้างจอภาพหลักมีจุดประสงค์หรือเป็นข้อบกพร่อง

นอกจากนี้เซสชันเชลล์สคริปต์ไม่ถูกเรียกใช้โดย lightdm แต่เป็นแอปพลิเคชันเริ่มต้นเนื่องจากดูเหมือนว่า lightdm จะเรียกใช้สคริปต์ก่อนที่สิ่งต่าง ๆ จะพร้อมสำหรับ xrandr และสิ่งแปลก ๆ เกิดขึ้น


4

ฉันมีปัญหาในการต้องการจอแสดงผลแบบขยายบนกล่อง LXDE ใหม่ของฉัน (ไม่ใช่โคลนคู่) พบคำสั่งที่ถูกต้อง แต่ไม่สามารถทำให้ถาวรได้

xrandr --output VGA-0 --right-of DVI-0

วิธีการข้างต้นดูเหมือนยากเกินไป / ไม่ใช่วิธีที่ถูกต้อง

ในที่สุดฉันก็พบสิ่งนี้: http://www.sudo-juice.com/change-lxde-screen-resolution-ubuntu-lubuntu/

แต่ฉันใช้ gedit แทน:

gksu gedit /etc/xdg/lxsession/LXDE/autostart

จากนั้นเพิ่มบรรทัดที่ท้ายด้วยสัญลักษณ์ @ ที่จุดเริ่มต้น:

@xrandr --output VGA-0 --right-of DVI-0

หวังว่าจะช่วยและขอบคุณน้ำผลไม้ซูโดะ

ปล. สังเกต-คำสั่งคู่ในคำสั่ง xrandr --(ไม่ปรากฏขึ้นอย่างชัดเจนบนหน้าจอของฉัน)


2

สร้างเอกสารใหม่และตั้งชื่อเช่น/home/yourusername/yourscriptname.sh พิมพ์

#!/bin/bash
xrandr --newmode "1600x900_60.00"  118.25  1600 1696 1856 2112  900 903 908 934 -hsync +vsync
xrandr --addmode VGA1 1600x900_60.00
xrandr --output VGA1 --mode 1600x900_60.00
unity --replace

และบันทึกลงในโฟลเดอร์โฮมของคุณ (นี่จะกำหนดความละเอียดเป็น 1600x900)

เปิดแอปพลิเคชันเริ่มต้น(หรือเรียกใช้gnome-session-properties)และคลิก "เพิ่ม" ตั้งชื่อและประเภทในบรรทัดคำสั่ง:

bash /home/yourusername/yourscriptname.sh

บันทึกและตอนนี้สคริปต์จะทำงานตอนนี้ทุกครั้งที่คุณลงชื่อเข้าใช้ดังนั้นคุณจะต้องออกจากระบบก่อนจึงจะมีผล การรันคำสั่ง (เช่นbash /home/yourusername/yourscriptname.sh) ในเทอร์มินัลก็เป็นความคิดที่ดีเช่นกันในการตรวจสอบว่าสคริปต์ทำงานหรือไม่


นี่ถูกแก้ไข (ถ้าถูกลบ) โดย OP ของคำตอบนี้เนื่องจากมันโพสต์ที่นี่แทนที่จะเป็นที่นี่ - ฉันกู้คืนการจัดรูปแบบดั้งเดิมเนื่องจากอาจมีประโยชน์ตามที่ควรคืนค่าการกำหนดค่า xrandr ในการเข้าสู่ระบบ - เนื้อหาของสคริปต์ทุบตีควร อาจถูกแทนที่ด้วยคำสั่ง xrandr ที่ใช้เพื่อรับคอนฟิกูเรชันที่ถูกต้อง
Wilf

ในจอแสดงผลสองจอภาพของฉันกำลังอ่าน EDID สำหรับจอแสดงผล HDMI-0 ของฉัน แต่ไม่ได้อ่าน EDID สำหรับ DVI-0 ของฉัน การชี้ไปที่สคริปต์การกำหนดค่าที่จัดเก็บใน/usr/binไม่ทำงาน แต่การเพิ่มสคริปต์นั้นไปยังแอปเริ่มต้นใช้งานของฉันgnome-session-propertiesประสบความสำเร็จ!
noobninja

1

จากการตอบกลับส่วนบนฉันได้ทำการทดสอบและพบวิธีที่มีประโยชน์สำหรับฉันแล้วฉันได้สร้างสคริปต์ง่ายๆเพื่อทำให้เป็นอัตโนมัติด้วยการติดตั้งอัตโนมัติของฉัน แต่มันจะทำงานกับกรณีอื่น ๆ

สร้าง scriptinstallxrandrfixed.sh เพิ่มบรรทัดเหล่านี้:

#Variables for lightdm script and xrandr script to setup fixed resolution for old displays: 
xrandrscript=/usr/local/bin/xrandrscript.sh
lightdmstartscript=/usr/share/lightdm/lightdm.conf.d/60-xrandrscript.conf

 #Added old style configuration for lightdm: 
 sudo  ln -s /usr/share/lightdm/lightdm.conf.d /etc/lightdm/lightdm.conf.d
 #A fix to some old displays in high school at Fray Bentos, fix to 1024x768
 #Some useful information comes from: http://askubuntu.com/questions/63681/how-can-i-make-xrandr-customization-permanent
 sudo sh -c "echo '[SeatDefaults]' > $lightdmstartscript"
 # for your login screen, e.g. LightDM (Ubuntu 11.10) or GDM (11.04 or earlier)
 sudo sh -c "echo 'display-setup-script=$xrandrscript' >> $lightdmstartscript"
 # for your desktop session
 sudo sh -c "echo 'session-setup-script=$xrandrscript' >> $lightdmstartscript"
 sudo sh -c "echo 'xrandr --size 1024x768 --rate 60.0' > $xrandrscript"
 sudo chmod +x $xrandrscript

มันจะสร้างสคริปต์และไฟล์สำหรับการแสดง lightdm และเซสชั่น อย่าลืมให้สิทธิ์ในการดำเนินการ

chmod + x scriptinstallxrandrfixed.sh

และดำเนินการ

./scriptinstallxrandrfixed.sh (คุณต้องอยู่ในไดเรกทอรีเดียวกับที่คุณมีไฟล์)

หากไม่อยู่ในไดเรกทอรีเดียวกัน: /path/to/script/scriptinstallxrandrfixed.sh

ปรับเปลี่ยนตามความต้องการของคุณ ขอแสดงความนับถือ. ปาโบล

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.