การเรียกใช้โปรแกรมด้วย GUI โดยไม่มีตัวจัดการหน้าจอ


9

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


คุณต้องการโต้ตอบกับ GUI หรือไม่?
Daniel B

@DanielB ใช่อาจ
เบน

1
คุณสามารถเรียกใช้งานได้โดยไม่มีเครื่องมือจัดการหน้าจอ แต่คุณจำเป็นต้องมีเซสชัน X ที่ทำงานอยู่ คุณใช้การกระจายแบบใด คุณมี X server ติดตั้งอยู่หรือไม่ คุณสามารถเรียกใช้xinitหรือstartx?
terdon

@terdon ใช่ฉันกำลังเรียกใช้ lmint แต่คำถามนี้มีความรู้ทั่วไปมากกว่า (ไม่ใช่เป้าหมาย distro)
Ben

คำตอบ:


5

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

xinit

ฉันไม่ได้ทำแบบนี้มาหลายปีแล้ว แต่ครั้งล่าสุดที่ฉันทำมันจะให้อะไรแบบนี้:

ป้อนคำอธิบายรูปภาพที่นี่

เมื่อถึงที่นั่นคุณสามารถเรียกใช้โปรแกรม GUI ได้ตามปกติโดยควรเปิดใช้งานในพื้นหลัง (พร้อม&) เพื่อที่คุณจะได้ไม่ต้องเข้าถึงเทอร์มินัลเพียงเครื่องเดียวของคุณ


2
มันอาจจะมีมูลค่าการกล่าวขวัญว่า "พวกเขาทำงานได้ตามปกติ" ส่วนใหญ่จะเกี่ยวข้องกับการ backgrounding กระบวนการดังนั้นคุณควรที่จะมีโอกาสมากที่สุดต้องการใช้ที่จะได้รับเพิ่มเติมขั้วไม่เพียงxterm & xtermอื่น ๆ
CVn

6

นี่คือพื้นฐานสำหรับการเรียกใช้แอป 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 และดูแอปพลิเคชัน


3

ใช่. เพียงทำสิ่งเดียวกับที่ผู้จัดการการแสดงผลทำ นอกเหนือจากหน้าจอเข้าสู่ระบบแบบกราฟิก (ซึ่งคุณไม่ต้องการในกรณีนี้) ตัวจัดการจอแสดงผลทำสองสิ่ง:

  1. ก่อนอื่นจะเริ่ม X11 "เซิร์ฟเวอร์การแสดงผล" เช่น Xorg
  2. จากนั้นเริ่ม "ลูกค้า" ซึ่งบอก Xorg ว่าจะวาดอะไร & ที่ไหน

คุณสามารถใช้เครื่องมือที่ต้องการstartxเริ่ม X11 ในลักษณะเดียวกันจากการล็อกอินคอนโซล มันจะเปิดตัว Xorg ตามด้วยลูกค้าที่ระบุไว้ใน~/.xinitrcไฟล์ของคุณ

ตัวอย่างเช่นไฟล์. xinitrc อาจมีstartkdeหรือgnome-sessionหรืออาจแสดงรายการส่วนประกอบแต่ละรายการ (ตัวจัดการหน้าต่างพาเนล / ทาสก์บาร์เดสก์ท็อป ... )

(โปรดทราบว่ามีความแตกต่างระหว่างxinitและstartx- โดยปกติคุณควรใช้หลังเนื่องจาก distros บางตัวมีการตั้งค่าที่สำคัญบางส่วนที่ xinit ธรรมดาจะไม่สนใจคือxserverrcสคริปต์)

ด้วย Wayland เดสก์ท็อปและแผงเป็นส่วนหนึ่งของ "ผู้แต่ง" ดังนั้นอินเทอร์เฟซทั้งหมดเริ่มต้นในขั้นตอนเดียวโดยไม่ต้องใช้เครื่องมือเพิ่มเติม ตัวอย่างเช่นคุณสามารถเรียกใช้westonหรือเริ่มใช้ GNOME gnome-session --session=gnome-waylandได้


1

คุณสามารถเปิดใช้งาน X ใช้ SSH X การส่งต่อ (SSH -X; อาจจะต้องมีการเปิดใช้งานในการตั้งค่าเซิร์ฟเวอร์เช่นกัน) ให้คุณมีในท้องถิ่นการแสดงผล X

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

คุณยังสามารถใช้$DISPLAYเพื่อเรียกใช้แอปบนจอแสดงผล X ที่แนบมาแม้ว่าเชลล์ของคุณจะเป็นรีโมท (ssh หรือคอนโซล) หากคุณรูทและบุคคลที่ลงชื่อเข้าใช้บนจอแสดงผล X ไม่ใช่คุณสามารถแทนที่การxauthรักษาความปลอดภัยและเปิดหน้าต่างขึ้นบนจอแสดงผลได้ นอกจากนี้ยังใช้งานได้หากคุณมีเซิร์ฟเวอร์ดิสเพลย์ X สองตัวบนจอภาพที่แตกต่างกัน

อีกโปสเตอร์กล่าวถึง VNC; ฉันยังใช้ NX เพื่อจุดประสงค์นี้และฉันชอบ


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