Lingkungan desktop apa yang dijalankan oleh startx, dan bagaimana saya bisa mengubahnya?

18

Dari banyak dokumen, saya membaca bahwa startxmemulai LXDE di Raspbian OS. Saya sedikit bingung.

Akan selalu startxmenjalankan LXDE GUI?

Saya juga telah melihat contoh dengan menggunakan startlxdeperintah. Bagaimana perintah itu berbeda dan mengapa startxdan startlxdemenjalankan GUI yang sama (LXDE)? Atau mungkin itu menjalankannya karena itu adalah GUI default?

Bagaimana saya bisa memilih GUI default jika saya punya beberapa?

Bisakah Anda menjelaskan lebih detail tentang GUI di sistem Linux?

CuriousGuy
sumber

Jawaban:

27

startxmenjalankan xinityang memulai X server dan sesi klien. Sesi klien adalah ~/.xinitrcjika ada, dan sebaliknya /etc/X11/xinit/xinitrc(lokasi dapat bervariasi di antara distribusi). Apa yang dilakukan skrip ini bervariasi di antara distribusi. Di Debian (termasuk turunan seperti Raspbian), /etc/X11/xinit/xinitrcmenjalankan /etc/X11/Xsessionyang pada gilirannya menjalankan skrip di /etc/X11/Xsession.d. Script Debian mencari sesi pengguna di file lainnya ( ~/.xsession, ~/.xsessionrc, ~/.Xsession) dan, jika tidak ada pengaturan pengguna berlaku, berjalan x-session-manager(jatuh kembali ke x-window-managerjika tidak ada [sesi manager] diinstal, jatuh kembali ke x-terminal-emulatordalam kasus tidak mungkin bahwa tidak ada window manager adalah terpasang).

Jika Anda ingin mengontrol apa yang dijalankan, Anda dapat membuat salah satu file pengguna, baik ~/.xsessionatau ~/.xinitrc. File ~/.xsessionini juga digunakan jika Anda masuk pada manajer tampilan (yaitu jika Anda mengetikkan kata sandi di jendela GUI). File ~/.xinitrcini khusus untuk xinitdan startx. Menggunakan ~/.xsessionmelewati /etc/X11/Xsessionsehingga mengatur hal-hal seperti metode input, sumber daya, agen kata sandi, dll. Jika Anda menggunakan .xinitrc, Anda harus melakukan semua ini secara manual. Sekali lagi, saya menggambarkan Debian di sini, varian Unix lain mungkin mengatur segalanya dengan berbeda. Penggunaan ~/.xinitrcuntuk menentukan apa yang dieksekusi ketika Anda menjalankan startxatau xinitbersifat universal.

Apakah Anda menggunakan ~/.xinitrcatau ~/.xsession, file ini (biasanya skrip shell, tetapi tidak harus jika Anda benar-benar ingin menggunakan sesuatu yang lain) harus menyiapkan apa pun yang perlu dipersiapkan (mis. Pengaturan keyboard, sumber daya, applet yang belum dimulai) oleh manajer jendela, dll.), dan kemudian pada akhirnya jalankan program yang mengelola sesi. Ketika skrip berakhir, sesi berakhir. Biasanya, Anda akan menggunakan execdi akhir skrip, untuk mengganti skrip dengan manajer sesi atau manajer jendela.

Sistem Anda mungkin memiliki /usr/bin/startlxdesebagai manajer sesi default seluruh sistem. Pada Debian dan turunannya, Anda dapat memeriksa manajer sesi yang tersedia

update-alternatives --list x-session-manager

atau dapatkan deskripsi yang lebih jelas yang menunjukkan dengan yang sekarang

update-alternatives --display x-session-manager

Jika LXDE bukan default seluruh sistem dan Anda ingin menjadikannya default untuk akun Anda, Anda bisa menggunakan ~/.xsessionfile berikut :

#!/bin/sh
exec startlxde

Pada beberapa varian Unix, itu hanya akan berjalan untuk login grafis, bukan untuk startx, jadi Anda juga harus membuat yang identik ~/.xinitrc. (Atau tidak identik: di ~/.xsession, Anda mungkin ingin melakukan hal-hal lain, karena itu file pertama yang dieksekusi dalam sesi grafis; misalnya Anda mungkin meletakkan . ~/.profiledekat bagian atas, untuk mengatur beberapa variabel lingkungan.)

Jika Anda ingin mencoba lingkungan lain sebagai satu kali, Anda dapat menentukan program lain untuk dijalankan pada baris perintah startxitu sendiri. The startxProgram memiliki kekhasan: Anda perlu menggunakan path lengkap ke program.

startx /usr/bin/startkde

The startxPerintah juga memungkinkan Anda menentukan argumen untuk lolos ke server. Misalnya, jika Anda ingin menjalankan beberapa sesi GUI secara bersamaan, Anda dapat memberikan nomor tampilan yang berbeda setiap kali. Lewati argumen server setelah --pada baris perintah startx.

startx /usr/bin/startkde -- :1
Gilles 'SANGAT berhenti menjadi jahat'
sumber
Saya menggunakan Debian 9. Mesin saya melakukan booting ke tty1. Dari login saya, menjalankan startxsesi Xfce4 default dimulai. Dari login pengguna istri saya di tty1 atau tty2. Her startxperintah diatur untuk menjalankan Cinnamon (ditentukan dalam ~/.xsession). Untuk server X kedua saya tidak harus menentukan $DISPLAYseperti yang tercantum di bagian terakhir dari jawaban Anda. Meskipun itu tentu berhasil. Secara otomatis menjadikannya yang kedua $DISPLAYdll. Pengaturannya bagus. Tidak ada masuk dan keluar dari sesi grafis, hanya pintasan keyboard untuk beralih profil pengguna. Terima kasih atas jawaban yang bermanfaat ini!
jbrock
10

Tidak: startxdapat dikonfigurasi. Menurut halaman manual :

Untuk menentukan klien untuk dijalankan, startxpertama mencari file yang disebut .xinitrcdi direktori home pengguna. Jika itu tidak ditemukan, ia menggunakan file xinitrcdi xinitdirektori perpustakaan.

startxbukan satu-satunya cara untuk memulai X (seperti yang Anda lihat dari startlxde). The startxhalaman pengguna membantu lagi:

Skrip startx adalah ujung depan ke xinit (1) yang menyediakan antarmuka pengguna yang lebih baik untuk menjalankan sesi tunggal Sistem X Window. Ini sering dijalankan tanpa argumen.

Di sisi lain, jika Anda ingin memilih GUI (LXDE, KDE, dll), maka xdmdan mirip seperti kdm, gdmatau LightDMdigunakan untuk memilih jenis desktop yang berbeda. Pada Debian saya biasanya menggunakan kdm, karena itu memungkinkan berbagai jenis desktop. Para pembuat paket gdmmelarang sebagian besar tipe desktop, membuatnya tidak cocok untuk kebutuhan saya.

xdmmenggunakan serangkaian skrip yang berbeda untuk memulai, mis. ~/.xsessionskrip Anda bersama dengan skrip sistem. Yang mirip mungkin mengabaikan ini, dan menggunakan skrip mereka sendiri. Tetapi ini adalah titik awal.

Thomas Dickey
sumber
Jadi, di suatu tempat di file conf itu ditulis untuk menjalankan LXDE misalnya?
CuriousGuy
.xinitrcadalah skrip, yang membuatnya dapat dikonfigurasi. Itu bisa menjalankan LXDE secara langsung jika diberi kode untuk melakukan ini.
Thomas Dickey
1
startlxdebukan antarmuka untuk xinit, ini adalah peluncur untuk manajer sesi LXDE. Ini bukan pengganti untuk startx, itu adalah sesuatu yang dapat Anda jalankan ~/.xinitrc.
Gilles 'SO- berhenti menjadi jahat'
Maka perlu beberapa dokumentasi. Serius, jawaban yang baik menunjukkan OP ke arah dokumentasi daripada mencoba untuk ulang kata-kata itu (kecuali seseorang memiliki beberapa komentar untuk dibuat pada dokumentasi, untuk membuatnya lebih masuk akal).
Thomas Dickey