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 (Русский)#Запуск приложений без оконного менеджера.