ไฟล์ทั้งสองดูเหมือนว่าจะมีฟังก์ชั่นเหมือนกัน อะไรคือความแตกต่างระหว่างทั้งสองถ้ามี?
ไฟล์ทั้งสองดูเหมือนว่าจะมีฟังก์ชั่นเหมือนกัน อะไรคือความแตกต่างระหว่างทั้งสองถ้ามี?
คำตอบ:
~/.Xdefaults
เป็นวิธีที่เก่ากว่าของการจัดเก็บทรัพยากร X ไฟล์นี้จะถูกอ่านซ้ำทุกครั้งที่มีการเริ่มโปรแกรม Xlib หากใช้ X11 ผ่านเครือข่ายไฟล์นั้นจะต้องมีอยู่ในระบบไฟล์เดียวกับโปรแกรม
~/.Xresources
ใหม่กว่านี้ จะเต็มไปด้วยxrdb
เข้าไปในRESOURCE_MANAGER
คุณสมบัติของหน้าต่างราก X11 เมื่อใดก็ตามที่โปรแกรมใด ๆ RESOURCE_MANAGER
เงยหน้าขึ้นมองทรัพยากรก็จะอ่านตรงจาก
หากคุณสมบัตินี้ไม่มีอยู่ Xlib จะกลับไปใช้วิธีการเดิมในการ.Xdefaults
เริ่มต้นโปรแกรมทุกครั้ง โปรดทราบว่าการแจกแจงส่วนใหญ่จะโหลด~/.Xresources
โดยอัตโนมัติหากมีอยู่ซึ่ง.Xdefaults
จะทำให้ถูกเพิกเฉยแม้ว่าคุณจะไม่เคยรันxrdb
ด้วยตนเอง
ข้อดีของวิธีการใหม่นี้คือการเรียกใช้xrdb
ครั้งเดียวและทรัพยากรจะสามารถใช้ได้กับโปรแกรมใด ๆ ที่ทำงานบนจอแสดงผลนี้ไม่ว่าจะเป็นแบบโลคัลหรือแบบรีโมต (ชื่อ~/.Xresources
เป็นเพียงแบบแผน - คุณสามารถใช้xrdb
เพื่อโหลดไฟล์ใด ๆ ได้.Xdefaults
)
คู่มือการเขียนโปรแกรม Xlib P.441:
ก่อนหน้า X11R2 การตั้งค่าทรัพยากร X ถูกอ่านจากไฟล์. Xdefaults ในโฮมไดเร็กตอรี่ของผู้ใช้และเป็นทางเลือกบนเครื่องใดก็ตามที่ไคลเอ็นต์ X ทำงานอยู่ดังนั้นไฟล์หลายไฟล์จึงยากต่อการดูแลรักษา
ต่อมาโปรแกรม xrdb ถูกสร้างขึ้นเพื่อเก็บการตั้งค่าทรัพยากรของผู้ใช้จากใน. Xresources ลงในคุณสมบัติ XA_RESOURCE_MANAGER ของหน้าต่างรูทบนเซิร์ฟเวอร์ X ปัจจุบันดังนั้นไคลเอนต์ทั้งหมดที่เชื่อมต่อกับเซิร์ฟเวอร์เดียวกันจะสามารถเข้าถึงได้ หากผู้ใช้ไม่ได้เรียก xrdb เพื่อตั้งค่าคุณสมบัติแล้ว. Xdefaults จะถูกอ่าน
[... ] ทรัพยากร X ถูกเก็บไว้ในสองตำแหน่งมาตรฐานขึ้นอยู่กับว่าพวกเขาใช้กับหน้าจอทั้งหมดหรือเฉพาะ:
- คุณสมบัติ RESOURCE_MANAGER ของหน้าต่างรูทของหน้าจอ 0
- คุณสมบัติ SCREEN_RESOURCES ของหน้าต่างรูทของหน้าจอเอง
มันยังไม่จบเท่านี้
$XENVIRONMENT
ตัวแปรซึ่งจะใช้ค่าเริ่มต้นหากไม่ได้ตั้งค่าไว้ สิ่งนี้ใช้ในลักษณะเดียวกับแต่จะอ่านเสมอโดยไม่คำนึงว่ามีอยู่จริงหรือไม่ คุณสามารถใช้ไฟล์เพื่อตั้งค่าเฉพาะเครื่องในขณะที่ใช้กับไฟล์โกลบอล~/.Xdefaults-hostname
.Xdefaults
RESOURCE_MANAGER
.Xdefaults-hostname
xrdb
ทั้งสองรายการ # 4 และ # 5 ที่ปรากฏด้านล่างปรากฏว่าใช้งานโดยโปรแกรม Xlib แท้ๆเท่านั้นไม่ใช่ GTK 3 หรือชุดเครื่องมืออื่น ๆ
ตำแหน่งที่สี่คือไดเร็กทอรีที่ชี้โดย$XAPPLRESDIR
ตัวแปรสภาวะแวดล้อม (ผิดปกติหากไม่ได้ตั้งค่าตัวแปรจะ$HOME
ถูกใช้เป็นค่าเริ่มต้น) เมื่อเริ่มต้นโปรแกรมจะตรวจสอบว่ามีไฟล์ใด ๆ ต่อไปนี้อยู่หรือไม่ (ชื่อไฟล์เหมือนกับชื่อคลาสของโปรแกรม):
$XAPPLRESDIR/$LC_CTYPE/XTerm
$XAPPLRESDIR/language/XTerm
$XAPPLRESDIR/XTerm
( language
มาจาก$LC_CTYPE
การลอกทั้งหมดยกเว้นองค์ประกอบแรกตัวอย่างเช่นen_US.utf-8
→ en
)
ห้าสถานที่เป็นทั้งระบบ "การตรวจสอบค่าเริ่มต้น" ไดเรกทอรี อีกครั้งไดเรกทอรี app-defaults จะถูกตรวจสอบเมื่อเริ่มต้นโปรแกรมหากมีชื่อไฟล์อยู่หลังโปรแกรม ตัวอย่างเช่น XTerm (บน Arch Linux) ใช้:
/etc/X11/$LC_CTYPE/app-defaults/XTerm
/etc/X11/language/app-defaults/XTerm
/etc/X11/app-defaults/XTerm
/usr/share/X11/$LC_CTYPE/app-defaults/XTerm
/usr/share/X11/language/app-defaults/XTerm
/usr/share/X11/app-defaults/XTerm
ไฟล์แอปเริ่มต้นมักจะติดตั้ง/usr/share
พร้อมกับตัวโปรแกรมเอง /etc
แทนที่ผู้ดูแลระบบจะไป
ทุกอย่างที่กล่าวมาข้างต้นเป็นเอกสารในรายละเอียดมากในเอกสารชุดเครื่องมือ X.org - บทความX Toolkit Intrinsics - ภาษา C อินเตอร์เฟซส่วนโหลดฐานข้อมูลทรัพยากร
น่าเสียดายที่ฉันไม่พบคู่มือผู้ใช้ล่าสุดที่อธิบายแหล่งข้อมูล X ส่วนใหญ่เป็นเพราะไม่เกี่ยวข้องในปี 2012 แต่สำหรับข้อมูลในอดีต (อ่าน: ล้าสมัยอย่างน่ากลัว) คุณสามารถอ่านคู่มือผู้ใช้ X Window System สำหรับ X11 R3 และ R4 ของระบบ X Windowมาตรา 9: การตั้งค่าทรัพยากร (เริ่มต้นที่หน้า 181)
xrdb
ได้เคยรับการเรียกใช้สำหรับการแสดงผล X นี้ตั้งแต่เข้าสู่ระบบ - นั่นคือถ้าคุณสมบัติ X รากที่มีอยู่ - แล้ว Xlib จะไม่ใช้ .Xdefaults ที่ทุกคนอีกต่อไป