Perbedaan antara .xinitrc, .xsession dan .xsessionrc

55

Saya menemukan tiga file konfigurasi.

  1. .xinitrc
  2. .xsession
  3. .xsessionrc

Saya tahu bahwa yang pertama adalah untuk menggunakan startxdan yang kedua dan ketiga digunakan ketika menggunakan manajer tampilan. Tetapi apa perbedaan antara dua yang terakhir?

lockdoc
sumber

Jawaban:

65

~/.xinitrcdieksekusi oleh xinit, yang biasanya dipanggil via startx. Program ini dijalankan setelah masuk: pertama Anda masuk pada konsol teks, kemudian Anda memulai GUI dengan startx. Peran .xinitrcadalah untuk memulai bagian GUI sesi, biasanya dengan menetapkan beberapa pengaturan terkait GUI seperti binding kunci (dengan xmodmapatau xkbcomp), sumber daya X (dengan xrdb), dll., Dan untuk meluncurkan manajer sesi atau manajer jendela ( mungkin sebagai bagian dari lingkungan desktop).

~/.xsessiondijalankan ketika Anda masuk dalam mode grafis (pada manajer tampilan ) dan manajer tampilan memanggil tipe sesi "kustom". (Dengan pengelola tampilan historis xdm, .xsessionselalu dijalankan, tetapi dengan pengelola tampilan modern yang memberi pengguna pilihan jenis sesi, Anda biasanya perlu memilih "kebiasaan" untuk .xsessiondijalankan.) Perannya adalah untuk mengatur parameter waktu masuk (seperti variabel lingkungan) dan untuk memulai sesi GUI. Tipikal .xsessionadalah

#!/bin/sh
. ~/.profile
. ~/.xinitrc

~/.xsessionrcdieksekusi pada Debian (dan turunannya seperti Ubuntu, Linux Mint, dll.) oleh skrip startup X pada login GUI, untuk semua jenis sesi dan (saya pikir) dari semua manajer tampilan. Itu juga dieksekusi dari startxjika pengguna tidak memiliki .xinitrc, karena dalam kasus itu startxjatuh kembali pada skrip startup sesi yang sama yang digunakan untuk login GUI. Ini dijalankan relatif awal, setelah memuat sumber daya tetapi sebelum memulai program apa pun seperti agen kunci, daemon D-Bus, dll. Biasanya menetapkan variabel yang dapat digunakan oleh skrip startup yang lebih baru. Itu tidak memiliki dokumentasi resmi yang saya tahu, Anda harus menggali sumber untuk melihat apa yang berhasil.

.xinitrcdan .xsessionmerupakan fitur historis dari sistem X11 Window sehingga mereka harus tersedia dan memiliki perilaku yang sama pada semua sistem Unix. Di sisi lain, .xsessionrcadalah fitur dan distribusi Debian yang tidak didasarkan pada Debian tidak memilikinya kecuali mereka telah menerapkan sesuatu yang serupa.

.xprofilesangat mirip dengan .xsessionrc, tetapi itu adalah bagian dari skrip startup sesi GDM (manajer tampilan GNOME), jadi itu hanya dibaca jika Anda masuk dengan GDM.

Gilles 'SANGAT berhenti menjadi jahat'
sumber
5

Menurut diskusi lain, startx + ~ / .xsession dan no ~ / .xinitrc, menghasilkan fungsionalitas yang berkurang (xfce4, sid)

Pertama: .xsessionrcadalah untuk memegang variabel lingkungan global . Penekanannya adalah milikku.

Kedua: 40x11-common_xsessionrcin /etc/X11/Xsession.dbersumber sebelumnya 50x11-common_determine-startup. Begitu .xsessionrcjuga dibaca sebelum .xsessiondan setiap variabel lingkungan yang ditetapkan akan tersedia untuk aplikasi yang dijalankan oleh perintah di .xsession.

Bacaan lebih lanjut:

Thomas Dickey
sumber