LINUX.ORG.RU

История изменений

Исправление firkax, (текущая версия) :

Раз уж ты хочешь всё вручную, то готов видимо разбираться, поэтому подскажу детали.

Во-первых, startx это скриптовая обёртка над xinit. По большей части бесполезная, там к комментах написано что это не продакшн-скрипт а только демка-образец для написания своего. Основное, что она делает - это поиск консоли (которые Ctrl-Alt-Fn где запустить иксы и настройка xauth).

Во-вторых, xinit тоже весьма простая штука: сначала он запускает в фоне Xorg, ждёт пока тот поднимет свой сокет и запускает session manager (который ему в аргументах указан - DE/WM/итд). Когда процесс session manager'а завершается - выключает Xorg.

Display manager'ы не используют ни startx ни xinit, они делают всё то же самое сами, но логика та же.

Вот скрипт, описывающий примерную логику работы startx+xinit

#!/bin/sh -e

mcookie=`/usr/bin/mcookie`
authfile="$HOME/.Xauthority"
display=":5"  # на самом деле он выбирает первый свободный, смотри исходник startx
vt="vt7"     # консоль где запускать - ctrl-alt-f7
rm -f $authfile
touch $authfile
echo "add $display . $mcookie" | xauth -q -f $authfile

# use xinit
# export XAUTHORITY=$authfile
# /usr/bin/xinit /path/to/sessman -- $display -auth $authfile -nolisten tcp $vt -novtswitch

# direct run
/usr/bin/Xorg $display -auth $authfile -nolisten tcp $vt -novtswitch &
XPID=$!
echo Xorg pid is $XPID
sleep 5 # на самом деле он ждёт сокет а не тупо sleep
DISPLAY=$display /path/to/sessman || true
echo killing Xorg
kill $XPID

/path/to/sessman это либо $HOME/.xinitrc (если он есть) либо через обёртки /etc/X11/Xsession (в его внутренностях я не разбирался, но по сути это просто запускалка дефолтного DE).

Исправление firkax, :

Раз уж ты хочешь всё вручную, то готов видимо разбираться, поэтому подскажу детали.

Во-первых, startx это скриптовая обёртка над xinit. По большей части бесполезная, там к комментах написано что это не продакшн-скрипт а только демка-образец для написания своего. Основное, что она делает - это поиск консоли (которые Ctrl-Alt-Fn где запустить иксы и настройка xauth).

Во-вторых, xinit тоже весьма простая штука: сначала он запускает в фоне Xorg, ждёт пока тот поднимет свой сокет и запускает session manager (который ему в аргументах указан - DE/WM/итд). Когда процесс session manager'а завершается - выключает Xorg.

Display manager'ы не используют ни startx ни xinit, они делают всё то же самое сами, но логика та же.

Вот скрипт, описывающий примерную логику работы startx+xinit

#!/bin/sh -e

mcookie=`/usr/bin/mcookie`
authfile="$HOME/.Xauthority"
display=":5"  # на самом деле он выбирает первый свободный, смотри исходник startx
vt="vt7"     # консоль где запускать - ctrl-alt-f7
rm -f $authfile
touch $authfile
echo "add $display . $mcookie" | xauth -q -f $authfile

# use xinit
# export XAUTHORITY=$authfile
# /usr/bin/xinit /path/to/sessman -- $display -auth $authfile -nolisten tcp $vt -novtswitch

# direct run
/usr/bin/Xorg $display -auth $authfile -nolisten tcp $vt -novtswitch &
XPID=$!
echo Xorg pid is $XPID
sleep 5 # на самом деле он ждёт сокет а не тупо sleep
DISPLAY=$display /path/to/sessman || true
echo killing Xorg
kill $XPID

Исходная версия firkax, :

Раз уж ты хочешь всё вручную, то готов видимо разбираться, поэтому подскажу детали.

Во-первых, startx это скриптовая обёртка над xinit. По большей части бесполезная, там к комментах написано что это не продакшн-скрипт а только демка-образец для написания своего. Основное, что она делает - это поиск консоли (которые Ctrl-Alt-Fn где запустить иксы и настройка xauth).

Во-вторых, xinit тоже весьма простая штука: сначала он запускает в фоне Xorg, ждёт пока тот поднимет свой сокет и запускает session manager (который ему в аргументах указан - DE/WM/итд). Когда процесс session manager'а завершается - выключает Xorg.

Display manager'ы не используют ни startx ни xinit, они делают всё то же самое сами, но логика та же.