สภาพแวดล้อมเดสก์ทอปใดที่ startx ทำงานและฉันจะเปลี่ยนได้อย่างไร


18

จากเอกสารจำนวนมากฉันอ่านว่าstartxกำลังเริ่ม LXDE ใน Raspbian OS ฉันสับสนเล็กน้อย

จะstartxเรียกใช้ LXDE GUI เสมอหรือไม่

นอกจากนี้ฉันได้เห็นตัวอย่างด้วยการใช้startlxdeคำสั่ง คำสั่งนั้นแตกต่างกันอย่างไรและทำไมstartxและstartlxdeใช้ GUI เดียวกัน (LXDE) อย่างไร หรืออาจเป็นเพราะมันเป็น GUI เริ่มต้น

ฉันจะเลือก GUI เริ่มต้นได้อย่างไรถ้าฉันมีหลายตัว

คุณช่วยอธิบายรายละเอียดเพิ่มเติมเกี่ยวกับ GUI ในระบบ Linux ได้ไหม?

คำตอบ:


27

startxรันxinitซึ่งเริ่มต้นเซิร์ฟเวอร์ X และเซสชันไคลเอ็นต์ เซสชั่นลูกค้าคือ~/.xinitrcถ้ามีและอื่น ๆ/etc/X11/xinit/xinitrc(สถานที่อาจแตกต่างกันระหว่างการกระจาย) สิ่งที่สคริปต์นี้จะแตกต่างกันระหว่างการแจกแจง ใน Debian (รวมถึงสัญญาซื้อขายล่วงหน้าเช่น Raspbian) /etc/X11/xinit/xinitrcวิ่งซึ่งจะเรียกใช้สคริปต์ใน/etc/X11/Xsession /etc/X11/Xsession.dสคริปต์ Debian มองหาเซสชั่นของผู้ใช้ในไฟล์อื่น ๆ ( ~/.xsession, ~/.xsessionrc, ~/.Xsession) และหากไม่มีการตั้งค่าผู้ใช้บังคับวิ่งx-session-manager(ลดลงกลับไปx-window-managerหากไม่มี [ผู้จัดการเซสชั่น] มีการติดตั้งลดลงกลับไปx-terminal-emulatorในกรณีที่ไม่น่าที่ไม่มีผู้จัดการหน้าต่าง ติดตั้ง)

หากคุณต้องการที่จะควบคุมสิ่งที่ได้รับการดำเนินการที่คุณสามารถสร้างไฟล์ของผู้ใช้อย่างใดอย่างหนึ่งหรือ~/.xsession ~/.xinitrcไฟล์~/.xsessionนี้ยังใช้หากคุณเข้าสู่ระบบจัดการหน้าจอ (เช่นถ้าคุณพิมพ์รหัสผ่านในหน้าต่าง GUI) ไฟล์ที่~/.xinitrcมีเฉพาะและxinit startxการใช้งาน~/.xsessionผ่านการ/etc/X11/Xsessionตั้งค่าต่าง ๆ เช่นวิธีการป้อนข้อมูลทรัพยากรตัวแทนรหัสผ่าน ฯลฯ หากคุณใช้.xinitrcคุณจะต้องทำสิ่งเหล่านี้ด้วยตนเอง อีกครั้งฉันอธิบาย Debian ที่นี่ตัวแปร Unix อื่น ๆ อาจตั้งค่าสิ่งที่แตกต่าง การใช้~/.xinitrcเพื่อระบุสิ่งที่ได้รับการดำเนินการเมื่อคุณเรียกใช้startxหรือxinitเป็นสากล

ไม่ว่าคุณจะใช้~/.xinitrcหรือ~/.xsessionไฟล์นี้ (มักจะเป็นเชลล์สคริปต์ แต่ไม่จำเป็นต้องใช้ถ้าคุณต้องการใช้อย่างอื่น) ต้องเตรียมสิ่งที่จำเป็นต้องเตรียม (เช่นการตั้งค่าแป้นพิมพ์ทรัพยากรแอปเพล็ตที่ยังไม่เริ่ม โดยตัวจัดการหน้าต่าง ฯลฯ ) จากนั้นในตอนท้ายให้เรียกใช้โปรแกรมที่จัดการเซสชัน เมื่อสคริปต์สิ้นสุดเซสชันจะสิ้นสุดลง โดยทั่วไปแล้วคุณจะใช้execที่ส่วนท้ายของสคริปต์เพื่อแทนที่สคริปต์ด้วยตัวจัดการเซสชันหรือตัวจัดการหน้าต่าง

ระบบของคุณน่าจะ/usr/bin/startlxdeเป็นผู้จัดการเซสชันเริ่มต้นทั่วทั้งระบบ บนเดเบียนและตราสารอนุพันธ์คุณสามารถตรวจสอบผู้จัดการเซสชันที่มีอยู่ได้

update-alternatives --list x-session-manager

หรือรับรายละเอียด verbose เพิ่มเติมระบุว่าเป็นปัจจุบันด้วย

update-alternatives --display x-session-manager

หาก LXDE ไม่ใช่ค่าเริ่มต้นทั้งระบบและคุณต้องการให้เป็นค่าเริ่มต้นสำหรับบัญชีของคุณคุณสามารถใช้~/.xsessionไฟล์ต่อไปนี้:

#!/bin/sh
exec startlxde

ในบางพันธุ์ Unix ที่จะทำงานเฉพาะสำหรับการเข้าสู่ระบบกราฟิกไม่ได้สำหรับดังนั้นคุณจะต้องสร้างเหมือนกันstartx ~/.xinitrc(หรือไม่เหมือนกัน: ใน~/.xsessionคุณอาจต้องการทำสิ่งอื่น ๆ เนื่องจากเป็นไฟล์แรกที่ถูกเรียกใช้ในเซสชันกราฟิกเช่นคุณอาจวางไว้. ~/.profileใกล้ด้านบนเพื่อตั้งค่าตัวแปรสภาพแวดล้อมบางอย่าง)

หากคุณต้องการลองใช้สภาพแวดล้อมอื่น ๆ แบบครั้งเดียวคุณสามารถระบุโปรแกรมอื่นให้ทำงานบนบรรทัดคำสั่งของstartxตัวเอง startxโปรแกรมมีมุมแหลม: คุณจำเป็นต้องใช้เส้นทางแบบเต็มในการเขียนโปรแกรม

startx /usr/bin/startkde

startxคำสั่งนอกจากนี้ยังช่วยให้คุณระบุข้อโต้แย้งที่จะผ่านไปยังเซิร์ฟเวอร์ ตัวอย่างเช่นหากคุณต้องการเรียกใช้เซสชัน GUI หลายรายการพร้อมกันคุณสามารถส่งหมายเลขการแสดงผลที่แตกต่างกันในแต่ละครั้ง ผ่านข้อโต้แย้งเซิร์ฟเวอร์หลังจากในบรรทัดคำสั่งของ--startx

startx /usr/bin/startkde -- :1

ฉันใช้ Debian 9 เครื่องของฉันบูทเป็น tty1 จากการเข้าสู่ระบบของฉันstartxเริ่มต้นเซสชัน Xfce4 เริ่มต้น จากการเข้าสู่ระบบผู้ใช้ของภรรยาของฉันใน tty1 หรือ tty2 startxคำสั่งของเธอถูกตั้งค่าให้เรียกใช้ Cinnamon (ระบุใน~/.xsession) สำหรับเซิร์ฟเวอร์ X ที่สองฉันไม่ต้องระบุ$DISPLAYดังที่ระบุไว้ในส่วนสุดท้ายของคำตอบของคุณ แม้ว่ามันจะใช้งานได้อย่างแน่นอน มันทำให้$DISPLAYการตั้งค่าที่สองเป็นไปโดยอัตโนมัติ ไม่มีการเข้าสู่ระบบและออกจากเซสชันกราฟิกเพียงแป้นพิมพ์ลัดเพื่อสลับโปรไฟล์ผู้ใช้ ขอบคุณสำหรับคำตอบที่เป็นประโยชน์นี้!
jbrock

10

ไม่: startxสามารถกำหนดค่าได้ ตามคู่มือหน้า :

หากต้องการกำหนดไคลเอ็นต์ให้เรียกใช้startxอันดับแรกให้ค้นหาไฟล์ที่เรียกว่า.xinitrcในโฮมไดเรกทอรีของผู้ใช้ หากไม่พบจะใช้ไฟล์xinitrcในxinitไดเรกทอรีไลบรารี

startxไม่ใช่วิธีเดียวที่จะเริ่ม X (ตามที่คุณเห็นstartlxde) startxหน้าคู่มือช่วยอีกครั้ง:

สคริปต์ startx เป็นส่วนหน้าของxinit (1)ที่ให้อินเทอร์เฟซผู้ใช้ที่ค่อนข้างดีกว่าสำหรับการใช้งานเซสชันเดียวของ X Window System มันมักจะทำงานโดยไม่มีข้อโต้แย้ง

ในทางกลับกันถ้าคุณต้องการที่จะเลือก GUI (LXDE, KDE ฯลฯ ) แล้วxdmและดูลุคเช่นkdm, gdmหรือLightDMจะใช้สำหรับการเลือกประเภทสก์ท็อปที่แตกต่างกัน บนเดเบียนฉันมักจะใช้kdmเพราะมันช่วยให้เดสก์ทอปประเภทต่าง แพ็คเกจสำหรับการgdmไม่อนุญาตประเภทเดสก์ท็อปส่วนใหญ่ทำให้ไม่เหมาะสมกับความต้องการของฉัน

xdmใช้ที่แตกต่างกันชุดของสคริปที่จะเริ่มต้นเช่นคุณ~/.xsessionสคริปต์พร้อมกับสคริปต์ระบบ look-alikes อาจไม่สนใจสิ่งนี้และใช้สคริปต์ของตนเอง แต่มันเป็นจุดเริ่มต้น


ดังนั้นมีบางที่ในไฟล์ conf ที่มันถูกเขียนเพื่อรัน LXDE เช่น?
CuriousGuy

.xinitrcเป็นสคริปต์ซึ่งทำให้สามารถกำหนดค่าได้ มันสามารถเรียกใช้ LXDE ได้โดยตรงหากมีรหัสให้ทำ
Thomas Dickey

1
startlxdeไม่ใช่ส่วนหน้าของ xinit แต่เป็นตัวเรียกใช้งานสำหรับผู้จัดการเซสชัน LXDE มันไม่ใช่สิ่งทดแทนstartxสิ่งที่คุณสามารถดำเนินการ~/.xinitrcได้
Gilles 'SO- หยุดความชั่วร้าย'

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