- xinit (Русский)
- Установка
- Настройка
- Запуск
- Автозапуск X при входе в систему
- Автоматический вход в виртуальной консоли
- Советы и рекомендации
- Переопределение xinitrc из командной строки
- Создание выбора DE/WM (Окружения рабочего стола/Оконного менеджера)
- Запуск приложений без оконного менеджера
- Как запустить графическую оболочку Ubuntu
- Запуск графической оболочки Ubuntu
xinit (Русский)
Состояние перевода: На этой странице представлен перевод статьи Xinitrc. Дата последней синхронизации: 2 марта 2016. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.
Файл ~/.xinitrc представляет собой шелл-скрипт передаваемый xinit посредством команды startx . Он используется для запуска Среды рабочего стола, Оконного менеджера и других программ запускаемых с X сервером (например запуска демонов, и установки переменных окружений. Программа xinit запускает Xorg сервер и работает в качестве программы первого клиента на системах не использующих Экранный менеджер.
Одной из основных функций ~/.xinitrc является указание, какой клиент X Window System будет запущен каждому пользователю при вызове startx или xinit . Существует множество дополнительных настроек и команд, которые также могут быть добавлены в ~/.xinitrc согласно вашей дальнейшей настройке системы.
Большинство DMs также используют подобный xprofile перед xinit.
Установка
Установите xorg-xinit , чтобы использовать xinit и startx.
Настройка
Если .xinitrc присутствует в домашнем каталоге пользователя, startx и xinit выполнят его. Иначе startx выполнит по умолчанию /etc/X11/xinit/xinitrc .
Примечание: Xinit имеет собственное поведение по умолчанию, вместо выполнения файла. Для подробностей,смотрите xinit(1) .
Это значение по умолчанию xinitrc запустит базовую среду с Twm, xorg-xclock и Xterm (при условии, что необходимые пакеты установлены). Поэтому, чтобы запустить другой оконный менеджер или окружение рабочего стола, сначала создайте копию по умолчанию xinitrc в вашем домашнем каталоге:
$ cp /etc/X11/xinit/xinitrc ~/.xinitrc
Это делается так (вместо создания с нуля) чтобы сохранить некоторое желаемое поведение по умолчанию в исходном файле, например, поиске скриптов из /etc/X11/xinit/xinitrc.d . Сценарии в этом каталоге без .sh расширения не считаются исходным кодом.
Добавьте нужные команды и удалите/закоментируйте противоречивые строки. Помните, строки, следующие после exec будут игнорироваться. Например, для запуска openbox:
. if [ -d /etc/X11/xinit/xinitrc.d ] ; then for f in /etc/X11/xinit/xinitrc.d/?*.sh ; 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
Примечание: Убедитесь, что блок if, приведённый в примере выше, присутствует в вашем файле .xinitrc , чтобы выполнялись скрипты из /etc/X11/xinit/xinitrc.d .
Запуск
Долговыполняемые программы стартуют перед оконным менеджером, такие как заставки и обои приложения. Они должны либо сами выполняться параллельно, либо работать в фоновом режиме (добавьте знак & ). Иначе, сценарий остановится и будет ждать каждую программу, чтобы закончить перед запуском оконного менеджера. Обратите внимание, что некоторые программы не должны стартовать параллельно, во избежании потока ошибок, как в случае с xrdb. Подготовка exec заменит процесс скрипта с процессом оконного менеджера, так что Х не завершится, даже если этот процесс распараллелен в фоне.
Для запуска Xorg от имени обычного пользователя, выполните:
$ xinit -- :1 -nolisten tcp vt$XDG_VTNR
Выбранный вами оконный менеджер (или окружение рабочего стола) теперь запустится правильно.
Для выхода из X, запустите функцию выхода вашего оконного менеджера (при условии, что он есть). Если нет такой возможности, запустите:
Примечание: pkill убьет все запущенные экземпляры X. Для специального убивания оконного менеджера на текущем VT, используйте:
WM_PID=$(xprop -id $(xprop -root _NET_SUPPORTING_WM_CHECK \ | awk -F'#' '< print $2 >') _NET_WM_PID \ | awk -F' = ' '< print $2 >') kill -15 $WM_PID
Программа xprop доступна в пакете xorg-xprop из Официальных репозиториев.
- Команды запускают Xorg на томже виртуальном терминале, в который вошёл пользователь. [1] Это поддерживает авторизованную сессию с logind , и предотвращает обход блокировщика экрана, при переключении терминалов.
- Вы должны указать vt$XDG_VTNR в качестве опции командной строки для xinit чтобы сохранить права сессии (preserve session permissions).
- xinit не обрабатывает несколько сеансов, когда вы уже вошли в другой виртуальный терминал. Для этого необходимо указать сессию добавления — :session_no . Если X уже запущен, то вы должны начать с: 1 или больше.
- По умолчанию, экран X должен быть на том же терминале, где и произошел вход. Это обрабатывается /etc/X11/xinit/xserverrc по умолчанию. Смотрите General troubleshooting#Session permissions для подробностей.
- Если вы хотите получить экран Х отдельно от консоли вызова сервера X, вы можете сделать это при помощи оболочки X сервера /usr/lib/systemd/systemd-multi-seat-x . Для удобства startx может быть настроен на использование этой оболочки, изменяя ваш ~/.xserverrc .
- Если вы решите использовать xinit вместо startx, тогда вы несете ответственность за прохождение -nolisten tcp и обеспечение не сломанной сессии запуская X на другом tty.
- Если X завершает с сообщением об ошибке «SocketCreateListener() failed», вам возможно потребуется удалить файлы сокетов в /tmp/.X11-unix . Это может произойти, если ранее Xorg был выполнен от root.
Автозапуск X при входе в систему
Примечание: Это решение запускает X на том же терминале использующимся для входа, который нужен чтобы поддержать сеанс регистрации.
Для Bash, добавьте следующее в нижнюю часть ~/.bash_profile . Если файл не существует, скопируйте шаблон-версию с /etc/skel/.bash_profile . Для Zsh, добавьте в ~/.zlogin (или в ~/.zprofile ).
[[ -z $DISPLAY && $XDG_VTNR -eq 1 ]] && exec startx
- Вы можете заменить -eq 1 на -le 3 (от vt1 до vt3) если вы хотите использовать графические логины на более чем одном VT.
- Чтобы сохранить ссессию logind, Х должен всегда работать на томже терминале, где произошел Вход (логин). Это работает по умолчанию /etc/X11/xinit/xserverrc .
- xinit может быть быстрее, чем startx , но нужны дополнительные параметры, например -nolisten tcp .
- Если вы хотите оставаться в системе, когда заканчивается Х сессия, удалите exec .
Автоматический вход в виртуальной консоли
Этот метод можно объединить с автоматическим входом в виртуальной консоли. При этом вы должны установить правильные зависимости для выполнения автологина Systemd чтобы убедиться, что dbus запускается до чтения ~/.xinitrc и старта pulseaudio (смотрите: 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
Совет: Это может быть использовано даже для запуска программ с графическим интерфейсом, но без каких-либо особенностей оконного менеджера. Смотрите также #Запуск приложений без оконного менеджера и Запуск программ в отдельном экране X.
Создание выбора DE/WM (Окружения рабочего стола/Оконного менеджера)
Если вы часто переключаетесь между различными DEs/WMs, рекомендуется использовать Display manager или добавить код в .xinitrc . Следующий код, описанный в нескольких строчках, будет принимать аргумент и загружать желаемое окружение рабочего стола или менеджера окон.
В следующем примере ~/.xinitrc показано как запустить конкретную DE/WM с аргументом:
. # Xfce передаётся по умолчанию session=$ 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
Запуск приложений без оконного менеджера
Можно запустить только определенные приложения без оконного менеджера. Хотя, это будет полезно только для одного приложения, запущенного в полноэкранном режиме. Например:
С помощью этого метода необходимо установить геометрию каждого окна приложения с помощью своих собственных файлов настроек, если вообще возможно.
Совет: Этот метод может быть полезен для запуска графических игр, чтобы улучшить их производительность. Т.к. при таком способе оконный менеджер не будет использовать память и процессор.
Как запустить графическую оболочку Ubuntu
Если вы запустили систему в текстовом режиме или вовсе это сервер и на нём надо работать только через терминал, но на нём уже есть установлено графическое окружение, есть несколько способов его запустить.
В этой статье мы постараемся разобраться как запустить графическую оболочку Ubuntu из терминала несколькими способами.
Запуск графической оболочки Ubuntu
Сначала можно посмотреть текущий уровень запуска в systemd. Для этого выполните:
systemctl list-units —type target | egrep «eme|res|gra|mul» | head -1
Если уровень запуска не graphical.target вы можете это исправить выполнив команду:
sudo systemd isolate graphical.target
После этого уровень запуска будет изменён на графический и графическая оболочка запуститься автоматически. Если вам нужно запустить менеджер входа вручную выполните такую команду:
sudo systemctl start display-manager
Эта команда запустит менеджер входа в систему, после этого вы сможете ввести логин и пароль, а затем запуститься графическая оболочка.
С более простыми графическими оболочками, вроде Openbox, Fluxbox, i3wm и даже XFCE может сработать ещё один метод, очень популярный ранее. Это команда startx. Однако чтобы она сработала в файле ~/.xinitrc надо прописать оболочку, которую вы хотите запустить. Например:
if [ -d /etc/X11/xinit/xinitrc.d ] ; then
for f in /etc/X11/xinit/xinitrc.d/?*.sh ; do
[ -x «$f» ] && . «$f»
done
unset f
fi
feh —bg-fill ~/Загрузки/52453-sklon_holm_cerkvushka_sneg.jpg &
lxpanel &
exec openbox-session
Блок if загружает все конфигурационные файлы из каталога /etc/X11/xinit*, сторчка, начинающаяся с feh добавляет фон рабочего стола, следующая — нижнюю панель, а последняя запускает сам openbox. Теперь запуск графической оболочки Ubuntu из консоли выполняется командой:
Или если, на первом экране уже что-то запущено, можно использовать любой другой доступный, например, второй:
Обратите внимание, что оболочку можно запустить только из консоли TTY, из терминала в графическом окружении это не сработает. Как видите, всё просто. Ваша оболочка запуститься в том же терминале, в котором вы выполнили startx.
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.