xinit (Русский)

Состояние перевода:
На этой странице представлен перевод статьи
xinit
. Дата последней синхронизации: 21 октября 2023. Вы можете
помочь
синхронизировать перевод, если в английской версии произошли
изменения
.
Ссылки по теме
Экранный менеджер
Xorg (Русский)
xprofile (Русский)
Ресурсы Х
Из
Википедии
:
Программа
xinit
позволяет пользователю вручную запускать дисплейный сервер
X Window System
. Сценарий
startx(1)
является фронтендом
xinit(1)
.
xinit
обычно используется для запуска
оконного менеджера
или
среды рабочего стола
. Хотя можно использовать
xinit
и для запуска других графических приложений без оконного менеджера, многие приложения ожидают наличия оконного менеджера, совместимого с
EWMH
.
Экранные менеджеры
, как правило, сами запускают
Xorg
и выполняют
source
файла
xprofile
.
Установка
Установите
пакет
xorg-xinit
.
Настройка
xinit
и
startx
принимают необязательный аргумент клиентской программы; смотрите раздел
#Переопределение xinitrc
. Если его не указать, то по умолчанию они ищут
~/.xinitrc
для его запуска в качестве скрипта, запускающего клиентские программы.
xinitrc
~/.xinitrc
удобен для запуска программ, зависящих от X, и установки переменных окружения при запуске X-сервера. Если он присутствует в домашнем каталоге пользователя,
startx
и
xinit
выполнят его. Иначе
startx
выполнит по умолчанию
/etc/X11/xinit/xinitrc
.
Примечание
Xinit
имеет собственное поведение по умолчанию, вместо выполнения файла. Для подробностей,смотрите
xinit(1)
.
Стандартный xinitrc запустит базовую среду с
Twm
,
xorg-xclock
и
Xterm
(при условии, что необходимые пакеты установлены). Поэтому, чтобы запустить другой оконный менеджер или среду рабочего стола, сначала создайте копию стандартного
xinitrc
в вашем домашнем каталоге:
$ cp /etc/X11/xinit/xinitrc ~/.xinitrc
Затем
отредактируйте
этот файл и замените программы по умолчанию нужными вам командами. Помните, что строки после команды
exec
будут игнорироваться. Например, чтобы запустить
xscreensaver
в фоновом режиме, а затем запустить
openbox
, пропишите:
~/.xinitrc
...
xscreensaver &
exec openbox-session
Примечание
Убедитесь, что последний блок
if
, взятый из файла
/etc/X11/xinit/xinitrc
, присутствует в вашем файле
~/.xinitrc
, чтобы выполнялись скрипты из
/etc/X11/xinit/xinitrc.d
.
Длительно работающие программы, запускаемые перед оконным менеджером, такие как хранитель экрана и обои, должны либо сами переходить в фоновый режим, либо запускаться в фоновом режиме с помощью добавления знака
&
в скрипте. Если этого не будет, то скрипт будет останавливаться и ждать завершения работы каждой программы перед запуском оконного менеджера или среды рабочего стола. Обратите внимание, что некоторые программы не следует уводить фон, чтобы не возникало гонки, как, например, в случае с
xrdb
. Команда
exec
заменяет процесс скрипта на процесс оконного менеджера, так что X не завершится, даже если этот процесс перейдёт в фоновый режим.
xserverrc
Файл
xserverrc
— это скрипт, отвечающий за запуск X-сервера. И
startx
, и
xinit
запускают
~/.xserverrc
, если он существует, иначе
startx
запустит стандартный
/etc/X11/xinit/xserverrc
.
Для поддержания
аутентифицированного сеанса
с
logind
и предотвращения обхода блокировщика экрана путём переключения терминалов
Xorg
должен запускаться на том же виртуальном терминале, в котором был выполнен вход в систему
[1]
. Поэтому рекомендуется указывать
vt$XDG_VTNR
в файле
~/.xserverrc
:
~/.xserverrc
#!/bin/sh

exec /usr/bin/Xorg -nolisten tcp "$@" vt$XDG_VTNR
Список всех доступных опций есть в
Xserver(1)
.
Совет
Можно добавить
-nolisten local
после
-nolisten tcp
для отключения абстрактных сокетов X11, чтобы улучшить изоляцию.
Небольшая справка
о том, как это может повлиять на безопасность X11.
Примечание
Для повторного включения перенаправления вывода из X-сессии в лог Xorg добавьте опцию
-keeptty
. Подробнее в разделе
Xorg (Русский)#Перенаправление журнала сеанса
.
Использование
Для запуска Xorg от имени обычного пользователя, выполните:
$ startx
Или если настроен
#xserverrc
:
$ xinit -- :1
Примечание
xinit
не обрабатывает несколько дисплеев, если уже запущен другой X-сервер. Для этого необходимо указать дисплей, добавив
-- :
display_number
, где
display_number
это
1
или более.
Выбранный вами оконный менеджер (или окружение рабочего стола) теперь запустится правильно.
Для выхода из X, запустите функцию выхода вашего оконного менеджера (при условии, что он есть). Если нет такой возможности, запустите:
$ pkill -15 Xorg
Примечание
pkill
убьет все запущенные экземпляры X. Для специального убивания оконного менеджера на текущем VT, используйте:
$ pkill -15 -t tty"$XDG_VTNR" Xorg
Смотрите также
signal(7)
.
Советы и рекомендации
Переопределение 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 -- -br +bs -dpi 96
Смотрите также
startx(1)
.
Примечание
Поскольку скрипты в каталоге
/etc/X11/xinit/xinitrc.d/
пропускаются, возможно, потребуется установить переменную окружения
DISPLAY
. Например, чтобы попробовать
i3
на определённом дисплее, можно выполнить команду
DISPLAY=:
display_number
startx /usr/bin/i3
.
Совет
Это может быть использовано даже для запуска программ с графическим интерфейсом, но без каких-либо особенностей оконного менеджера. Смотрите также
#Запуск приложений без оконного менеджера
и
Запуск программ в отдельном экране X
.
Автозапуск X при входе в систему
Убедитесь, что
startx
корректно
настроен
.
В настройках вашей
оболочки входа
(например,
~/.bash_profile
для
Bash
или
~/.zprofile
для
Zsh
) добавьте следующий код:
if [ -z "$DISPLAY" ] && [ "$XDG_VTNR" -eq 1 ]; then
  exec startx
fi
Вы можете заменить
-eq 1
на
-le 3
(от vt1 до vt3) если вы хотите использовать графические логины на более чем одном VT.
Альтернативные способы определения виртуального терминала —
"$(tty)" = "/dev/tty1"
, что не позволяет выполнять сравнение с помощью
-le
, и
"$(fgconsole 2>/dev/null || echo -1)" -eq 1
, что не работает в
последовательной консоли
.
Команда
exec
обеспечивает выход пользователя из системы при выходе из X-сервера или его аварийном завершении. Если вы хотите оставаться в системе в системе после завершения сеанса X, удалите
exec
.
Смотрите также
Fish (Русский)#Запуск X при входе
и
systemd/Пользователь#Автоматический логин в Xorg без экранного менеджера
.
Совет
Этот метод можно объединить с
автоматическим входом в виртуальную консоль
.
Переключение между средами рабочего стола/оконными менеджерами
Если вы часто переключаетесь между различными средами рабочего стола или оконными менеджерами, может оказаться удобно использовать
экранный менеджер
или добавить в
~/.xinitrc
код, упрощающий переключение.
В следующем примере
~/.xinitrc
показано как запустить конкретную DE/WM с аргументом:
~/.xinitrc
...

# По умолчанию используем Xfce
session=${1:-xfce}

case $session in
    i3|i3wm           ) exec i3;;
    kde               ) exec startplasma-x11;;
    xfce|xfce4        ) exec startxfce4;;
    # Если аргумент не соответствует известному сеансу,
    # пытаемся выполнить его как обычную команду
    *                 ) exec $1;;
esac
Теперь передать аргумент
session
можно так:
$ xinit
session
или
$ startx ~/.xinitrc
session
Запуск приложений без оконного менеджера
Можно запустить только определенные приложения без оконного менеджера. Хотя, это будет полезно только для одного приложения, запущенного в полноэкранном режиме.
Например:
~/.xinitrc
...

exec chromium
В качестве альтернативы можно запустить исполняемый файл напрямую из командной строки, как показано в разделе
#Переопределение xinitrc
.
С помощью этого метода необходимо установить геометрию каждого окна приложения с помощью своих собственных файлов настроек, если вообще возможно.
Совет
Этот метод может быть полезен для запуска графических игр, чтобы улучшить их производительность. Т.к. при таком способе оконный менеджер не будет использовать память и процессор.
Смотрите также
Display manager (Русский)#Запуск приложений без оконного менеджера
.
Перенаправление вывода при использовании startx
Смотрите
Xorg (Русский)#Перенаправление журнала сеанса
.