Jump to content

# xinit (Русский)

From ArchWiki

Состояние перевода: На этой странице представлен перевод статьи 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 (Русский)#Перенаправление журнала сеанса.

Category:

- Xorg commands (Русский)

xinit (Русский)
Add topic