ฉันได้ยินมาว่ามีวิธีการเปิดตัวโปรแกรมด้วยส่วนต่อประสานกราฟิกแบบไม่ใช้ตัวจัดการหน้าจอโดยตรงจากเทอร์มินัล สิ่งนี้เป็นของจริงและถ้าเป็นเช่นนั้นฉันจะทำอย่างไร
xinit
หรือstartx
?
ฉันได้ยินมาว่ามีวิธีการเปิดตัวโปรแกรมด้วยส่วนต่อประสานกราฟิกแบบไม่ใช้ตัวจัดการหน้าจอโดยตรงจากเทอร์มินัล สิ่งนี้เป็นของจริงและถ้าเป็นเช่นนั้นฉันจะทำอย่างไร
xinit
หรือstartx
?
คำตอบ:
คุณสามารถรันได้โดยไม่มีเครื่องมือจัดการหน้าจอ แต่คุณจำเป็นต้องมีเซสชัน X ที่ใช้งานอยู่ รายละเอียดจะขึ้นอยู่กับการกระจายของคุณ แต่คุณควรจะได้รับเซสชั่น X น้อยที่สุดด้วยเทอร์มินัลเดียวโดยการทำงาน
xinit
ฉันไม่ได้ทำแบบนี้มาหลายปีแล้ว แต่ครั้งล่าสุดที่ฉันทำมันจะให้อะไรแบบนี้:
เมื่อถึงที่นั่นคุณสามารถเรียกใช้โปรแกรม GUI ได้ตามปกติโดยควรเปิดใช้งานในพื้นหลัง (พร้อม&
) เพื่อที่คุณจะได้ไม่ต้องเข้าถึงเทอร์มินัลเพียงเครื่องเดียวของคุณ
xterm &
xterm
อื่น ๆ
นี่คือพื้นฐานสำหรับการเรียกใช้แอป GUI ที่ไม่มีส่วนหัวพร้อมวิธี ( vnc
) เพื่อเชื่อมต่อ ทำงานบนRHEL7
และCentos 7
กับครอบครัว และดึงออกมาจาก Docker-image ของฉันที่ฉันใช้สำหรับ Crashplan ซึ่งอยู่ที่https://github.com/xeor/dockerfiles/tree/master/crashplan/ (ดูDockerfile
การตั้งค่าและinit/setup
การเริ่มต้น
# Needed environment variables
export DISPLAY=:99.0
export SCREEN_WIDTH=1200
export SCREEN_HEIGHT=960
export SCREEN_DEPTH=24
export GEOMETRY="${SCREEN_WIDTH}x${SCREEN_HEIGHT}x${SCREEN_DEPTH}"
# Needed packages
yum install -y xorg-x11-server-Xvfb x11vnc gtk2 xorg-x11-fonts-*
# Set a password (if variable vncpass is sat, else its `secret`)
mkdir -p ~/.vnc && x11vnc -storepasswd ${vncpass:-secret} ~/.vnc/passwd
# Start up the fake display and run the application you want (the `java ...` part)
xvfb-run --server-args="$DISPLAY -screen 0 $GEOMETRY -ac +extension RANDR" java .... > log/ui_output.log 2> log/ui_error.log &
# Wait for the app to start, or else, the vnc server will die before starting
sleep 5
# vnc itself
x11vnc -forever -usepw -shared -rfbport 5900 -display $DISPLAY
ตอนนี้คุณควรจะสามารถเชื่อมต่อกับเซิร์ฟเวอร์: 5900 และดูแอปพลิเคชัน
ใช่. เพียงทำสิ่งเดียวกับที่ผู้จัดการการแสดงผลทำ นอกเหนือจากหน้าจอเข้าสู่ระบบแบบกราฟิก (ซึ่งคุณไม่ต้องการในกรณีนี้) ตัวจัดการจอแสดงผลทำสองสิ่ง:
คุณสามารถใช้เครื่องมือที่ต้องการstartx
เริ่ม X11 ในลักษณะเดียวกันจากการล็อกอินคอนโซล มันจะเปิดตัว Xorg ตามด้วยลูกค้าที่ระบุไว้ใน~/.xinitrc
ไฟล์ของคุณ
ตัวอย่างเช่นไฟล์. xinitrc อาจมีstartkde
หรือgnome-session
หรืออาจแสดงรายการส่วนประกอบแต่ละรายการ (ตัวจัดการหน้าต่างพาเนล / ทาสก์บาร์เดสก์ท็อป ... )
(โปรดทราบว่ามีความแตกต่างระหว่างxinit
และstartx
- โดยปกติคุณควรใช้หลังเนื่องจาก distros บางตัวมีการตั้งค่าที่สำคัญบางส่วนที่ xinit ธรรมดาจะไม่สนใจคือxserverrc
สคริปต์)
ด้วย Wayland เดสก์ท็อปและแผงเป็นส่วนหนึ่งของ "ผู้แต่ง" ดังนั้นอินเทอร์เฟซทั้งหมดเริ่มต้นในขั้นตอนเดียวโดยไม่ต้องใช้เครื่องมือเพิ่มเติม ตัวอย่างเช่นคุณสามารถเรียกใช้weston
หรือเริ่มใช้ GNOME gnome-session --session=gnome-wayland
ได้
คุณสามารถเปิดใช้งาน X ใช้ SSH X การส่งต่อ (SSH -X; อาจจะต้องมีการเปิดใช้งานในการตั้งค่าเซิร์ฟเวอร์เช่นกัน) ให้คุณมีในท้องถิ่นการแสดงผล X
แอปพลิเคชั่นจะเปิดและแสดงผลในเครื่องในขณะที่ทำงานบนระบบที่ไม่มีส่วนหัว คุณจะต้องมี X ติดตั้งไว้ในระบบที่ไม่มีส่วนหัวเพื่อให้มีไลบรารี่ที่ถูกต้องและอาจไม่สามารถทำงานกับแอปพลิเคชั่น GNOME ที่ทันสมัยกว่าได้
คุณยังสามารถใช้$DISPLAY
เพื่อเรียกใช้แอปบนจอแสดงผล X ที่แนบมาแม้ว่าเชลล์ของคุณจะเป็นรีโมท (ssh หรือคอนโซล) หากคุณรูทและบุคคลที่ลงชื่อเข้าใช้บนจอแสดงผล X ไม่ใช่คุณสามารถแทนที่การxauth
รักษาความปลอดภัยและเปิดหน้าต่างขึ้นบนจอแสดงผลได้ นอกจากนี้ยังใช้งานได้หากคุณมีเซิร์ฟเวอร์ดิสเพลย์ X สองตัวบนจอภาพที่แตกต่างกัน
อีกโปสเตอร์กล่าวถึง VNC; ฉันยังใช้ NX เพื่อจุดประสงค์นี้และฉันชอบ