Разница между .xinitrc, .xsession и .xsessionrc

55

Я нашел три файла конфигурации.

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

Я знаю, что первый предназначен для использования, startxа второй и третий используются при использовании диспетчера отображения. Но в чем разница между двумя последними?

lockdoc
источник

Ответы:

65

~/.xinitrcвыполняется xinit, который обычно вызывается через startx. Эта программа выполняется после входа в систему : сначала войти в текстовой консоли, то вы запустите графический интерфейс с startx. Роль .xinitrcзаключается в том, чтобы запустить часть сеанса с графическим интерфейсом, обычно путем установки некоторых параметров, связанных с графическим интерфейсом, таких как привязки клавиш (с помощью xmodmapили xkbcomp), ресурсы X (с помощью xrdb) и т. Д., И запустить диспетчер сеансов или менеджер окон ( возможно, как часть среды рабочего стола).

~/.xsessionвыполняется, когда вы входите в графический режим (в диспетчере отображения ), и диспетчер отображения вызывает «пользовательский» тип сеанса. (С помощью диспетчера исторических данных xdm .xsessionвсегда выполняется, но с современными диспетчерами отображения, которые предоставляют пользователю выбор типа сеанса, вам обычно нужно выбрать «пользовательский» для .xsessionзапуска.) Его роль заключается в установке параметров времени входа в систему. (например, переменные среды) и начать сеанс графического интерфейса. Типичным .xsessionявляется

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

~/.xsessionrcвыполняется в Debian (и его производных, таких как Ubuntu, Linux Mint и т. д.) сценариями запуска X при входе в систему с графическим интерфейсом для всех типов сеансов и (я думаю) из всех диспетчера отображения Он также выполняется, startxесли у пользователя нет .xinitrc, потому что в этом случае используются startxте же сценарии запуска сеанса, которые используются для входа в систему с графическим интерфейсом. Он выполняется относительно рано, после загрузки ресурсов, но перед запуском любой программы, такой как ключевой агент, демон D-Bus и т. Д. Он обычно устанавливает переменные, которые могут использоваться более поздними сценариями запуска. У меня нет официальной документации, о которой я знаю, вам нужно поискать источник, чтобы посмотреть, что работает.

.xinitrcи .xsessionявляются историческими особенностями системы X11 Window, поэтому они должны быть доступны и иметь одинаковое поведение во всех системах Unix. С другой стороны, .xsessionrcэто функция Debian, и дистрибутивы, не основанные на Debian, не имеют ее, если не реализовали нечто подобное.

.xprofileочень похож .xsessionrc, но он является частью сценария запуска сеанса GDM (диспетчера отображения GNOME), поэтому он читается только при входе в систему с помощью GDM.

Жиль "ТАК - перестань быть злым"
источник
5

Согласно другому обсуждению, startx + ~ / .xsession и отсутствие ~ / .xinitrc приводит к снижению функциональности (xfce4, sid)

Во-первых: .xsessionrcдля хранения глобальных переменных среды . Акцент мой.

Во-вторых: 40x11-common_xsessionrcв /etc/X11/Xsession.dисточнике раньше 50x11-common_determine-startup. Так .xsessionrcчитается раньше, .xsessionи любой набор переменных окружения станет доступным для приложений, запускаемых командами .xsession.

Дальнейшее чтение:

Томас Дики
источник