ใช้การตั้งค่าการแสดงผลกับบัญชีผู้ใช้ทั้งหมดหรือไม่


14

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

ฉันจะตั้งค่าการแสดงผลทั่วโลกสำหรับผู้ใช้ทั้งหมดและหน้าจอเข้าสู่ระบบได้อย่างไร


คุณตั้งมันได้อย่างไร จาก GUI หรือบรรทัดคำสั่งและการตั้งค่าของคุณคืออะไร
Jacob Vlijm

ด้วย GUI "การแสดงผลหน้าจอ" ฉันคิดว่าการตั้งค่าจะปรากฏขึ้นที่นั่นต่อไป สองจอภาพหนึ่งหมุน
mirams

askubuntu.com/questions/360886/…ตั้งค่าการเข้าสู่ระบบให้เหมือนกับผู้ใช้หนึ่งคนซึ่งเป็นประโยชน์ askubuntu.com/questions/372729/…ดูเหมือนว่าจะอยู่ที่การตั้งค่า xorg เก่าซึ่งไม่ได้ใช้ใน 14.04 (ฉันคิดว่า?) ไม่สามารถหาคำถามหรือคำตอบสำหรับวิธีการทำเช่นนี้ใน 14.04 ...
mirams

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

ฉันประหลาดใจกับความโปรดปรานเล็กน้อยถ้าคุณตั้งค่าจอภาพของคุณทำงานsudo cp ~/.config/monitors.xml /var/lib/lightdm/.config/ตามที่แนะนำไว้ก่อนหน้านี้ + วิธีแก้ไขด้านล่างคุณมีการตั้งค่าสำหรับผู้ใช้ทุกคน (รวมถึงผู้ใช้ใหม่) ตรงตามที่คุณอธิบาย
Jacob Vlijm

คำตอบ:


14

ขึ้นอยู่กับวิธีการตั้งค่าระบบของคุณอาจทำได้ง่ายเหมือนกับการคัดลอกmonitors.xmlไฟล์จากผู้ใช้ที่ตั้งค่าอย่างถูกต้องไปยังผู้ใช้ทั้งหมด:

เพื่อทดสอบสิ่งนี้สำหรับผู้ใช้หนึ่งคน:

cp --preserve=timestamps /home/CorrectUser/.config/monitors.xml /home/TestUser/.config/

จากนั้นออกจากระบบ TestUser หากเข้าสู่ระบบแล้วเข้าสู่ระบบอีกครั้งและดูว่าทุกอย่างถูกต้อง

คำสั่งสำหรับผู้ใช้ทั้งหมด:

cp /home/CorrectUser/.config/monitors.xml /tmp/
for szUser in /home/* ; do sudo cp --preserve=timestamps /tmp/monitors.xml $szUser/.config/ ; done

คำสั่งสำหรับหน้าจอเข้าสู่ระบบ:

sudo cp --preserve=timestamps /home/CorrectUser/.config/monitors.xml /var/lib/lightdm/.config/

คำสั่งสำหรับผู้ใช้ในอนาคตทั้งหมด ¹:

sudo mdkdir -p /etc/skel/.config
sudo cp --preserve=timestamps /home/CorrectUser/.config/monitors.xml /etc/skel/.config/

หมายเหตุ:ผู้ใช้ทั้งหมดที่คุณกำลังจะสร้างในอนาคต


1
ฉันแนะนำแล้วในความคิดเห็น (และในคำตอบของฉันก่อนหน้านี้ แต่ย้อนกลับ) แต่ OP กล่าวถึงมันไม่เพียงพอ สิ่งนี้ใช้งานได้เฉพาะกับหน้าจอเข้าสู่ระบบ :) มันไม่สามารถใช้ได้กับผู้ใช้ใหม่เว้นแต่คุณจะคัดลอกพวกเขาไปยังผู้ใช้เหล่านั้นอีกครั้ง
Jacob Vlijm

@JacobVlijm: อ่านอีกครั้ง ... ของฉันมีไว้สำหรับหน้าจอเข้าสู่ระบบและผู้ใช้ทั้งหมด ... : P (ทิ้งไว้ในนั้นเป็นความคิดเห็นด้านล่างนี้โดย OP ที่มันไม่ทำงานจะเตือนโปสเตอร์อื่น ๆ จากการพิมพ์ทั้งหมดที่ ครั้งที่สาม) > :-)
Fabby

1
ฉันไม่แนะนำให้คัดลอกไฟล์ไปยังผู้ใช้ทุกคนเนื่องจากสิ่งนี้: ฉันต้องการโซลูชันที่ใช้การตั้งค่ากับบัญชีผู้ใช้ทั้งหมด (และบัญชีในอนาคต) และทำให้หน้าจอเข้าสู่ระบบดูถูกต้อง การเพิ่มไปยัง/etc/xdg ดูเหมือนจะเป็นเพียงกลลวงเดียวเท่านั้นที่ทำเพื่อผู้ใช้ใหม่เช่นกัน
Jacob Vlijm

@JacobVlijm: อ้าพลาดไป! (เพิ่มโซลูชันสำหรับสิ่งนั้นด้วย) ;-)
Fabby

2
นี่เป็นคำตอบที่ดีที่สุด - ตั้งค่ามอนิเตอร์ทั้งหมดอย่างถูกต้องและทำงานได้ทันทีสำหรับผู้ใช้ทั่วไปเช่นกัน ในฐานะโบนัส - มีวิธีใดที่จะคัดลอกการตั้งค่า "ตำแหน่งตำแหน่ง" จาก GUI การตั้งค่าการแสดงผลด้วยหรือไม่ สำหรับผู้ใช้ของฉันมันเป็นเพียงหน้าจอเดียว แต่สำหรับทั้งผู้ใช้ใหม่ / แขก
mirams

3

ในการตั้งค่าหน้าจอสำหรับผู้ใช้ทุกคนที่เข้าสู่ระบบ (ซึ่งจะไม่เปลี่ยนการกำหนดค่าในหน้าจอเข้าสู่ระบบ) คุณสามารถสร้าง.desktopไฟล์ใน/etc/xdg/autostart

วิธีการทำ

  1. xrandrหาชื่อของหน้าจอที่คุณต้องการที่จะหมุนโดยการเรียกใช้ มันจะส่งออกจำนวนบรรทัดในหมู่ thos สองสามบรรทัดที่มีลักษณะดังนี้:

    VGA-0 connected
    

    นี่จะให้ข้อมูลเกี่ยวกับชื่อของหน้าจอที่เชื่อมต่อ

  2. เลือกอันที่คุณต้องการหมุนในตัวอย่างด้านล่าง VGA-0
  3. สร้างตัวเรียกใช้งานด้วย (เช่น) gedit:

    sudo -i gedit /etc/xdg/autostart/set_screens.desktop
    

    วางข้อความด้านล่างลงในไฟล์:

    [Desktop Entry]
    Name=set_screens
    Exec=/bin/bash -c "sleep 10&&xrandr --output VGA-0 --rotate left"
    Type=Application
    

    แทนที่ในบรรทัด:

    Exec=/bin/bash -c "sleep 10&&xrandr --output VGA-0 --rotate left"
    

    สตริง: VGA-0ตามชื่อหน้าจอ (หมุน) ของคุณ

บันทึกย่อที่สำคัญ

  • ในสาย

    Exec=/bin/bash -c "sleep 10&&xrandr --output VGA-0 --rotate left"
    

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

  • คำสั่ง:

    xrandr --output VGA-0 --rotate left
    

    หมุนจอไปทางซ้ายไม่จำเป็นต้องบอกว่าถ้าคุณต้องการประเภทของการหมุนอื่นคุณสามารถเลือกอย่างใดอย่างหนึ่งleft, right, normal, inverted(ดูเพิ่มเติมที่นี่)

คำอธิบาย

คุณสามารถเรียกใช้คำสั่งในการเริ่มต้น (ที่จริงเข้าสู่ระบบ) โดยการวาง.desktopไฟล์ (ปล่อย) ~/.config/autostartใน สิ่งนี้จะเรียกใช้ตัวเรียกใช้งานสำหรับผู้ใช้คนเดียว หากคุณทำเช่นเดียวกัน แต่วางตัวเรียก/etc/xdg/autostartใช้งานคำสั่งจะเรียกใช้เมื่อใดก็ตามที่ผู้ใช้ลงชื่อเข้าใช้เว้นแต่ผู้ใช้เฉพาะปิดการใช้งานตัวเรียกใช้งานสำหรับเขาหรือเธอใน Dash> แอปพลิเคชันเริ่มต้น

นอกจากนี้คุณสามารถคัดลอก~/.config/monitors.xmlไฟล์ในเครื่องของคุณ/var/lib/lightdm/monitors.xmlไปยังเพื่อให้การตั้งค่าใช้งานได้บนหน้าจอเข้าสู่ระบบ

Imo การรวมกันของสิ่งนี้และโซลูชันด้านบน (ตัวเรียกใช้งานใน/etc/xdg) เป็นโซลูชันที่ง่ายที่สุดเพื่อให้ได้สิ่งที่คุณต้องการสำหรับทั้งหน้าจอการเข้าสู่ระบบและผู้ใช้ (ใด ๆ ) นอกจากนี้โซลูชันของตัวเรียกใช้งาน/etc/xdgคือ (มาก) ย้อนกลับหรือเปลี่ยนแปลงได้ง่ายในกรณีที่คุณต้องการทำการตั้งค่าอื่นโดยไม่ต้องแก้ไขไฟล์หลายไฟล์ในระดับผู้ใช้ (แต่ละคน) เนื่องจากทั้งการตั้งค่าของผู้ใช้และหน้าจอเข้าสู่ระบบ ผู้ใช้ทั้งหมดพร้อมกันในสองไฟล์ง่าย ๆ


ซึ่งอาจใช้งานได้ - เปลี่ยนการตั้งค่า 10 วินาทีหลังจากเข้าสู่ระบบ แต่ฉันต้องการทราบว่าพวกเขาจะตั้งค่าเริ่มต้นที่ใดและเปลี่ยนให้ทุกคน (และหน้าจอเข้าสู่ระบบซึ่งปัจจุบันอยู่ด้านข้าง)
mirams

ทำไมบางคนลงคะแนนนี้
Fabby

2

แค่ต้องการเพิ่มความคิดเห็นสำหรับใครก็ตามที่พบปัญหานี้ในประเด็นที่คล้ายกัน ฉันติดอยู่กับความละเอียดของจอภาพเก่าของฉัน (1280x1024) ทุกครั้งที่ฉันเข้าสู่ระบบ แต่หน้าจอเข้าสู่ระบบและการเข้าสู่ระบบของผู้ใช้ทั่วไปใช้ค่าเริ่มต้นที่ถูกต้อง 1680x1050

ฉันได้อ่านบทความจำนวนมากในช่วงสี่เดือนที่ผ่านมาเพื่อค้นหาคำตอบอ่านบนxorg.conf, จอภาพ.xml, lightdmและxrandrและคำแนะนำอื่น ๆ - แต่การเปลี่ยนแปลงการกำหนดค่าบางอย่างมีความซับซ้อนและเสี่ยงต่อการทำลายการแสดงผล ทั้งหมดดังนั้นฉันจึงใช้ gui เพื่อเปลี่ยนการตั้งค่าจอภาพด้วยตนเองทุกครั้งที่เข้าสู่ระบบ

วันนี้ฉันได้ grep สำหรับความละเอียดเก่าในโฟลเดอร์. config ของฉัน

grep -HrnIF '1280' .config | less

ผลลัพธ์แรกคือไฟล์ ~ / .config / autostart / xrandr.desktop มีสิ่งนี้

Exec=xrandr -s 1280x1024 -r 75

ดังนั้นฉันเพิ่งย้ายไฟล์ออกจากที่นั่น และจากนั้นฉันเข้าสู่ระบบและรับความละเอียดเริ่มต้น 1680x1050

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


ยินดีต้อนรับสู่ถาม Ubuntu ขอบคุณที่แบ่งปันสี่เดือน (เวลาที่ผ่านไป) ของการวิจัย
WinEunuuchs2Unix

อ่านอีกครั้งฉันคิดว่าฉันอาจสร้างไฟล์ xrandr.desktop สองปีที่ผ่านมาเพื่อให้รอบ Ubuntu เริ่มต้นการตั้งค่าจอภาพพื้นฐาน 'Goldstar' เสมอและนั่นอาจเป็นปัญหาความเข้ากันได้กับการ์ดวิดีโอของฉัน
MattB

0

คุณอาจต้องการผนวกสิ่งที่/etc/lightdm/lightdm.confต้องการ ที่นี่เราสร้างสคริปต์ที่ใช้xrandrคำสั่งเพื่อตั้งค่าการแสดงผลของคุณ คุณสามารถใช้เครื่องมือบาง RandR arandrกราฟิกในการสร้างคำสั่งสำหรับคุณเช่น ในกรณีของฉันสคริปต์จะมีลักษณะดังนี้:

#!/bin/sh
xrandr --output DVI-I-1 --mode 1600x1200 --pos 0x0 --rotate left --output DVI-I-0 --off --output DP-3 --off --output DP-2 --off --output DP-1 --mode 1600x900 --pos 1200x700 --rotate normal --output DP-0 --off

คุณสามารถใส่สคริปต์นี้ใน/usr/shareหรือที่ใดก็ได้ที่คุณต้องการ สคริปต์ของคุณอาจดูซับซ้อนน้อยกว่ามากเนื่องจากเป็นแบบการตั้งค่าจอภาพสองจอที่ซับซ้อน จากนั้นจึงผนวกสิ่งที่ต้องการ:

session-setup-script=/usr/share/mycustomxrandr.sh

และ:

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

ตรวจสอบให้แน่ใจว่าไฟล์ปฏิบัติการได้ดังนั้น:

chmod a+x mycustomxrandr.sh

session-setup-scriptจะตั้งค่าการแสดงผลสำหรับหลังจากที่คุณเข้าสู่ระบบผ่าน LightDM และdisplay-setup-scriptจะเปลี่ยนการแสดงผลหน้าจอเข้าสู่ระบบ


มันคงจะดีมากถ้าคุณสามารถลองสิ่งนี้ได้ฉันสนใจที่จะดูว่าสิ่งนี้จะได้ผลสำหรับคุณหรือไม่
nixpower

0

ในระบบของฉัน (Ubuntu 16.04) สำหรับหน้าจอเข้าสู่ระบบเพียงแค่cpใช้ราก (ใช้sudo) ไม่ทำงาน นอกจากนี้คุณยังอาจจะต้องตรวจสอบให้แน่ใจว่าเจ้าของ / กลุ่ม monitors.xml lightdm:lightdmคือ

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