В какой среде рабочего стола запускается startx, и как я могу это изменить?

18

Из многих документов я читал, что startxзапускается LXDE в Raspbian OS. Я немного смущен.

Будет ли всегда startxработать LXDE GUI?

Также я видел пример с использованием startlxdeкоманды. Чем отличается эта команда, и почему она работает с одним startxи startlxdeтем же графическим интерфейсом (LXDE)? Или, может быть, он запускается, потому что это графический интерфейс по умолчанию?

Как выбрать графический интерфейс по умолчанию, если у меня их несколько?

Не могли бы вы объяснить подробнее о GUI в системах Linux?

CuriousGuy
источник

Ответы:

27

startxзапускает, xinitкоторый запускает X-сервер и сеанс клиента. Сеанс клиента, ~/.xinitrcесли присутствует, и в противном случае /etc/X11/xinit/xinitrc(местоположение может варьироваться в зависимости от распределения). То, что делает этот скрипт, зависит от дистрибутива. На Debian (включая производные, такие как Raspbian), /etc/X11/xinit/xinitrcзапускает /etc/X11/Xsessionкоторый в свою очередь запускает скрипты в /etc/X11/Xsession.d. Сценарии Debian искать для сеанса работы пользователя в других файлах ( ~/.xsession, ~/.xsessionrc, ~/.Xsession) , и , если настройки пользователя не применяется, пробеги x-session-manager(падение обратно , x-window-managerесли нет [менеджер сеансов] не установлен, падая назад , чтобы x-terminal-emulatorв маловероятном случае , что ни оконный менеджер не является установлены).

Если вы хотите контролировать, что запускается на выполнение, вы можете создать один из пользовательских файлов, либо ~/.xsessionили ~/.xinitrc. Файл ~/.xsessionтакже используется, если вы входите в систему диспетчера отображения (то есть, если вы вводите свой пароль в окне GUI). Файл ~/.xinitrcспецифичен для xinitи startx. Использование ~/.xsessionпроходит, /etc/X11/Xsessionпоэтому он настраивает такие вещи, как методы ввода, ресурсы, агенты паролей и т. Д. Если вы используете .xinitrc, вам придется делать все это вручную. Еще раз, я описываю Debian здесь, другие варианты Unix могут настроить вещи по-другому. Использование ~/.xinitrcдля указания того, что выполняется при запуске startxили xinitявляется универсальным.

Используете ли вы ~/.xinitrcили ~/.xsession, этот файл (обычно сценарий оболочки, но это не обязательно, если вы действительно хотите использовать что-то другое) должен подготовить все, что нужно подготовить (например, настройки клавиатуры, ресурсы, апплеты, которые не запускаются диспетчером окон и т. д.), а затем в конце запустите программу, управляющую сеансом. Когда сценарий заканчивается, сеанс завершается. Как правило, вы должны использовать execв конце скрипта, чтобы заменить скрипт менеджером сеансов или оконным менеджером.

Ваша система предположительно имеет /usr/bin/startlxdeв качестве системного менеджера сеансов по умолчанию. В Debian и его производных вы можете проверить доступные менеджеры сеансов с помощью

update-alternatives --list x-session-manager

или получите более подробное описание, указывающее, какой из них является текущим с

update-alternatives --display x-session-manager

Если LXDE не был общесистемным по умолчанию, и вы хотите сделать его по умолчанию для своей учетной записи, вы можете использовать следующий ~/.xsessionфайл:

#!/bin/sh
exec startlxde

В некоторых вариантах Unix это будет работать только для графических входов в систему, а не для startx, поэтому вам также необходимо создать идентичный ~/.xinitrc. (Или не идентично: в ~/.xsession, возможно, вы захотите сделать что-то другое, потому что это первый файл, который выполняется в графическом сеансе; например, вы можете поместить его . ~/.profileближе к началу, чтобы установить некоторые переменные среды.)

Если вы хотите опробовать другие среды как единовременные, вы можете указать другую программу для запуска в командной строке startx. startxПрограмма имеет странность: вы должны использовать полный путь к программе.

startx /usr/bin/startkde

Команда startxтакже позволяет вам указать аргументы для передачи на сервер. Например, если вы хотите запустить несколько сеансов GUI одновременно, вы можете каждый раз передавать разные номера дисплея. Передайте аргументы сервера после --в командной строке startx.

startx /usr/bin/startkde -- :1
Жиль "ТАК - прекрати быть злым"
источник
Я на Debian 9. Моя машина загружается на tty1. startxПосле моего входа в систему запускается сеанс Xfce4 по умолчанию. От пользователя моей жены войдите на tty1 или tty2. Ее startxкоманда настроена на запуск Cinnamon (указан в ~/.xsession). Для второго X-сервера мне не нужно указывать, $DISPLAYкак отмечено в последней части вашего ответа. Хотя это, безусловно, работает. Это автоматически делает его вторым $DISPLAYи т. Д. Настройка отличная, хотя. Нет входа и выхода из графического сеанса, просто сочетание клавиш для переключения профилей пользователей. Спасибо за этот полезный ответ!
Джоброк
10

Нет: startxнастраивается. Согласно странице руководства :

Чтобы определить клиент для запуска, startxсначала ищите файл, который вызывается .xinitrcв домашнем каталоге пользователя. Если это не найдено, он использует файл xinitrcв xinitкаталоге библиотеки.

startxэто не единственный способ начать X (как вы видите из startlxde). startxСтраничное руководство поможет еще раз:

Сценарий startx является внешним интерфейсом для xinit (1), который предоставляет несколько более приятный пользовательский интерфейс для запуска одного сеанса системы X Window. Это часто запускается без аргументов.

С другой стороны, если вы хотите выбрать GUI (LXDE, KDE и т.д.), то xdmи двойники , такие как kdm, gdmили LightDMиспользуются для выбора различных типов рабочего стола. На Debian я обычно использую kdm, потому что это позволяет использовать разные типы рабочих столов. Упаковщики gdmзапрещают большинство типов настольных компьютеров, что делает его непригодным для моих нужд.

xdmдля запуска используется другой набор скриптов, например, ваш ~/.xsessionскрипт вместе с системными скриптами. Похожие могут игнорировать это и использовать свои собственные сценарии. Но это отправная точка.

Томас Дики
источник
Итак, где-нибудь в файлах conf написано, например, для запуска LXDE?
CuriousGuy
.xinitrcскрипт, который делает его настраиваемым Он может запускать LXDE напрямую, если это закодировано.
Томас Дики
1
startlxdeэто не интерфейс для xinit, это средство запуска для менеджера сеансов LXDE. Это не замена startx, это то, что вы можете выполнить в ~/.xinitrc.
Жиль "ТАК - перестань быть злым"
Тогда нужно немного документации. Серьезно, хороший ответ указывает ОП в сторону документации, а не пытается перефразировать ее (если только у кого-то нет комментариев к документации, чтобы лучше понять ее).
Томас Дики