xinitrc (Русский)
Related articles
Файл ~/.xinitrc представляет собой шелл-скрипт передаваемый xinit посредством команды startx. Он используется для запуска Среды рабочего стола, Оконного менеджера и других программ запускаемых с X сервером (например запуска демонов, и установки переменных окружений. Программа xinit запускает Xorg сервер и работает в качестве программы первого клиента на системах не использующих Экранный менеджер.
Одной из основных функций ~/.xinitrc является указание, какой клиент X Window System будет запущен каждому пользователю при вызове startx или xinit. Существует множество дополнительных настроек и команд, которые также могут быть добавлены в ~/.xinitrc согласно вашей дальнейшей настройке системы.
Большинство DMs также используют подобный xprofile перед xinit.
Contents
Установка
Установите xorg-xinit, чтобы использовать xinit и startx.
Настройка
Если .xinitrc присутствует в домашнем каталоге пользователя, startx и xinit выполнят его. Иначе startx выполнит /etc/X11/xinit/xinitrc. Это запустит основную среду с Twm, xorg-xclock и Xterm (при условии, что необходимые пакеты установлены). Xinit меет собственное поведение по умолчанию вместо выполнения файла. Смотрите man 1 xinit для подробностей.
Поэтому, чтобы использовать другой оконный менеджер или окружение рабочего стола, сначала создайте копию по умолчанию xinitrc:
$ cp /etc/X11/xinit/xinitrc ~/.xinitrc
Это делается так (вместо создания с нуля) чтобы сохранить некоторое желаемое поведение по умолчанию в исходном файле, например, поиске скриптов из /etc/X11/xinit/xinitrc.d. Сценарии в этом каталоге без .sh расширения не считаются исходным кодом: FS#41471. Таким образом, измените /etc/X11/xinit/xinitrc.d/?* на /etc/X11/xinit/xinitrc.d/?*.sh. [1]
Добавьте нужные команды и удалите/закомментируйте противоречивые строки. Помните, строки, следующие после exec будут игнорироваться. Например:
~/.xinitrc
...
if [ -d /etc/X11/xinit/xinitrc.d ] ; then
for f in /etc/X11/xinit/xinitrc.d/?* ; do
[ -x "$f" ] && . "$f"
done
unset f
fi
# twm &
# xclock -geometry 50x50-1+1 &
# xterm -geometry 80x50+494+51 &
# xterm -geometry 80x20+494-0 &
# exec xterm -geometry 80x66+0+0 -name login
xscreensaver &
xsetroot -cursor_name left_ptr &
exec openbox-session
Долговыполняемые программы стартуют перед оконным менеджером, такие как заставки и обои приложения. Они должны либо сами выполняться параллельно, либо работать в фоновом режиме (добавьте знак &). Иначе, сценарий остановится и будет ждать каждую программу, чтобы закончить перед запуском оконного менеджера. Обратите внимание, что некоторые программы не должны стартовать параллельно, во избежании потока ошибок, как в случае с xrdb. Подготовка exec заменит процесс скрипта с процессом оконного менеджера, так что Х не завершится, даже если этот процесс распараллелен в фоне.
Для запуска Xorg от имени обычного пользователя, выполните:
$ startx
или
$ xinit -- :1 -nolisten tcp vt$XDG_VTNR
Выбранный вами оконный менеджер теперь запустится правильно.
Для выхода из X, запустите функцию выхода вашего оконного менеджера (при условии, что он есть). Если нет такой возможности, запустите:
$ pkill -15 Xorg
Автозапуск X при входе в систему
Для Bash, добавьте следующее в нижнюю часть ~/.bash_profile. Если файл не существует, скопируйте шаблон-версию с /etc/skel/.bash_profile. Для Zsh, добавьте в ~/.zlogin (или в ~/.zprofile).
[[ -z $DISPLAY && $XDG_VTNR -eq 1 ]] && exec startx
Смотрите также Fish#Запуск X при входе в систему и Systemd/User#Automatic login into Xorg without display manager.
Автоматический вход в виртуальной консоли
Этот метод можно объединить с автоматическим входом в виртуальной консоли. При этом вы должны установить правильные зависимости для выполнения автологина Systemd чтобы убедиться, что dbus запускается до чтения ~/.xinitrc и старта pulseaudio (see: BBS#155416)
Советы и хитрости
Переопределение xinitrc из командной строки
Если у вас есть рабочий ~/.xinitrc, но хотите попробовать другие WM/DE, вы можете запустить его используя startx с указанием пути к оконному менеджеру:
$ startx /full/path/to/window-manager
Если оконный менеджер принимает аргументы, они должны быть взяты в кавычки в качестве части первого параметра startx:
$ startx "/full/path/to/window-manager --key value"
Обратите внимание что требуется полный путь. По желанию, вы можете также переопределить /etc/X11/xinit/xserverrc файл (который хранит значение по умолчанию X сервера) с пользовательскими опциями, путем добавления их после --, например:
$ startx /usr/bin/enlightenment -- -nolisten tcp -br +bs -dpi 96 vt$XDG_VTNR
или
$ xinit /usr/bin/enlightenment -- -nolisten tcp -br +bs -dpi 96 vt$XDG_VTNR
Смотрите также man startx.
Создание выбора DE/WM (Окружения рабочего стола/Оконного менеджера)
Если вы часто переключаетесь между различными DEs/WMs, рекомендуется использовать Display manager или добавить код в .xinitrc. Следующий код, описанный в нескольких строчках, будет принимать аргумент и загружать желаемое окружение рабочего стола или менеджера окон.
В следующем примере ~/.xinitrc показано как запустить конкретную DE/WM с аргументом:
~/.xinitrc
...
# Xfce передаётся по умолчанию
session=${1:-xfce}
case $session in
awesome ) exec awesome;;
bspwm ) exec bspwm;;
catwm ) exec catwm;;
cinnamon ) exec cinnamon-session;;
dwm ) exec dwm;;
enlightenment ) exec enlightenment_start;;
ede ) exec startede;;
fluxbox ) exec startfluxbox;;
gnome ) exec gnome-session;;
gnome-classic ) exec gnome-session --session=gnome-classic;;
i3|i3wm ) exec i3;;
icewm ) exec icewm-session;;
jwm ) exec jwm;;
kde ) exec startkde;;
mate ) exec mate-session;;
monster|monsterwm ) exec monsterwm;;
notion ) exec notion;;
openbox ) exec openbox-session;;
unity ) exec unity;;
xfce|xfce4 ) exec startxfce4;;
xmonad ) exec xmonad;;
# Не известная сессия, попробуйте запустить в качестве команды
*) exec $1;;
esac
Затем скопируйте файл /etc/X11/xinit/xserverrc в ваш домашний каталог:
$ cp /etc/X11/xinit/xserverrc ~/.xserverrc
После этого, вы можете легко запустить конкретный DE/WM передавая аргумент, например:
$ xinit $ xinit gnome $ xinit kde $ xinit wmaker
или
$ startx $ startx ~/.xinitrc gnome $ startx ~/.xinitrc kde $ startx ~/.xinitrc wmaker
Запуск приложений без оконного менеджера
Можно запустить только определенные приложения без оконного менеджера. Хотя, это будет полезно только для одного приложения, запущенного в полноэкранном режиме. Напирмер:
~/.xinitrc
... exec chromium
С помощью этого метода необходимо установить геометрию каждого окна приложения с помощью своих собственных файлов настроек, если вообще возможно.
Смотрите также Display manager (Русский)#Запуск приложений без оконного менеджера.