หากมี Windows X หลายเครื่องทำงานอยู่ในระบบเป็นไปได้หรือไม่ที่โปรแกรมจะสามารถทำงานบนหน้าต่างใดระบบหนึ่งได้ คุณจะระบุหน้าต่างและทำให้โปรแกรมทำงานที่นั่นได้อย่างไร
ฉันสมมติว่าฉันมีสิทธิ์ใด ๆ ก็ตามที่จำเป็นในการใช้งานโปรแกรมดังกล่าว
หากมี Windows X หลายเครื่องทำงานอยู่ในระบบเป็นไปได้หรือไม่ที่โปรแกรมจะสามารถทำงานบนหน้าต่างใดระบบหนึ่งได้ คุณจะระบุหน้าต่างและทำให้โปรแกรมทำงานที่นั่นได้อย่างไร
ฉันสมมติว่าฉันมีสิทธิ์ใด ๆ ก็ตามที่จำเป็นในการใช้งานโปรแกรมดังกล่าว
คำตอบ:
โปรแกรม X รู้ว่าเซสชัน X ใดที่พวกเขาควรจะคุยด้วยโดยดูที่DISPLAY
ตัวแปรสภาพแวดล้อม
ก่อนอื่นคุณต้องค้นหาสิ่งที่DISPLAY
ตั้งค่าไว้ในเซสชัน X ที่คุณต้องการให้โปรแกรมทำงาน ทำได้โดยออกคำสั่งecho $DISPLAY
ภายใน X-terminal ใน X session นั้น โดยทั่วไปแล้วสิ่งที่ต้องการ:0.0
คือเอาท์พุท
ช่วยบอกว่าคุณต้องการที่จะเริ่มต้นโปรแกรมที่ยอดเยี่ยมxclock
โปรแกรมในเซสชั่นของคุณ X ที่DISPLAY
เป็น:0.0
แต่คุณต้องการจะทำเช่นนี้ที่คอนโซล จากนั้นคุณกด Alt-Ctrl-F1 เพื่อเลื่อนไปยังคอนโซลนั้นแล้วพิมพ์:
DISPLAY=:0.0 xclock # variables set w/ a command are local to that command
จากนั้นคุณกลับไปที่ X โดยกด Alt-Ctrl-F7 หรือ Alt-Ctrl-F8 (หรืออาจจะเป็นปุ่ม F อื่น ๆ ขึ้นอยู่กับรสนิยม Linux ของคุณ) และดู wallclock อันใหม่ที่คุณมี
ในความเป็นจริงคุณสามารถรันคำสั่งด้านบนในเชลล์ใด ๆบนเครื่องเดียวกันนั้น (ผ่าน SSH, ในเซสชัน X, บนคอนโซลใด ๆ ฯลฯ ) - ข้อเท็จจริงที่คุณระบุไว้DISPLAY=:0.0
ก่อนหน้าคำสั่งหมายความว่าxclock
หน้าต่างจะปรากฏขึ้นเสมอ เซสชัน X เดียวกัน
ในความเป็นจริง - นอกจากความจริงที่ว่าโปรแกรม X ดูแล้ว - ไม่มีอะไรพิเศษเกี่ยวกับDISPLAY
ตัวแปร โดยปกติเมื่อคุณเริ่มต้นโปรแกรมจากเทอร์มินัล X โปรแกรมจะเริ่มต้นในตำแหน่งที่ถูกต้องเพราะDISPLAY
ได้ตั้งค่าไว้แล้วสำหรับคุณ
แทนการใช้คำสั่งดังกล่าวนอกจากนี้คุณยังสามารถแยกออกเป็นสองโดยการตั้งค่าครั้งแรกและจากนั้นทำงานDISPLAY
xclock
ในกรณีนี้DISPLAY
การตั้งค่าจะยังคงมีอยู่จนกว่าคุณจะปิดเชลล์ที่และทุกโปรแกรมที่ตามมา X เริ่มต้นจากที่นั่นจะเปิดในเซสชั่น X xclock
เดียวกับ
# variables set w/o a command are local to the shell,
export DISPLAY=:0.0 # unless exported
xclock
DISPLAY
จะถูกตั้งค่าการส่งออกโดยค่าเริ่มต้นตั้งแต่มันถูกนำเข้าโดยเปลือก (มันทำงานทั้งในzsh
และdash
สำหรับฉันโดยไม่ต้องใช้export
) แต่ใช่ถ้าคุณไม่สามารถรับรุ่นสองสายไปทำงานลองเปลี่ยนด้วยDISPLAY=:0.0
export DISPLAY=:0.0
โดยปกติแล้วโปรแกรมไคลเอนต์ X จะใช้DISPLAY
ตัวแปรสภาพแวดล้อมเพื่อทราบว่าเซิร์ฟเวอร์ X ใดที่จะแสดงผลเพื่อเชื่อมต่อ บางโปรแกรมยังยอมรับพารามิเตอร์บรรทัดคำสั่ง ( -display
หรือบางอย่างที่คล้ายกัน) ซึ่งสามารถใช้เพื่อแทนที่DISPLAY
ตัวแปรสภาพแวดล้อม