несколько X11 со своими WM

Используемые графические окружения, особенности, баги, отслеживание версий и изменений...

Модераторы: Olej, adminn, vikos

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

несколько X11 со своими WM

Непрочитанное сообщение Olej » 16 дек 2011, 20:33

Лихо я тему назвал :?: :lol:

На самом деле, это тема, которая переползла вот отсюда: viewtopic.php?f=9&t=1574
dmitriev писал(а):очень хочется самому попробовать все, что вы в этой теме разобрали.
Но трудно разбираться в 17 ваших постах, которые родились в муках свободного эксперимента. Не могли бы вы сделать итоговый пост, в котором будут пошаговые инструкции для желающего запустить несколько X серверов с несколькими WM.
И это, как оказалось, очень правильно, потому как Х11 оказалась темой, огромной до неисчерпаемости! :lol:
Последний раз редактировалось Olej 16 дек 2011, 22:51, всего редактировалось 1 раз.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: несколько X11 со своими WM

Непрочитанное сообщение Olej » 16 дек 2011, 20:47

Начнём с самого начала: как это традиционно происходит? "это" - это запуск Х-сервера.

Это происходит 2-мя способами:

1. запуск Х-серваера прямо одной из команд запуска бинарной программы, или скрипта, который конечным своим шагом имеет такой запуск, итак, это:

Код: Выделить всё

$ startx
...
$ xinit
...
$ Xorg
...
$X
...
- последний "Х" - это просто ссылка на исполнимый файл Xorg, который и является ключевым в запуске Х11.

2. Запуск посредством "менеджера дисплея": xdm, gdm, kdm ... и прочие там m-ы ;)
Сделайте у себя вот так ;-) :

Код: Выделить всё

[olej@notebook 01]$ ps ahx | grep gdm
 2008 ?        Ss     0:00 /usr/sbin/gdm-binary -nodaemon
 2038 ?        S      0:00 /usr/libexec/gdm-simple-slave --display-id /org/gnome/DisplayManager/Display1 --force-active-vt
 2039 tty1     Rs+    8:11 /usr/bin/Xorg :0 -nr -verbose -auth /var/run/gdm/auth-for-gdm-KmE0p6/database -nolisten tcp vt1
 2114 ?        S      0:00 pam: gdm-password
 3105 ?        S      0:00 /usr/libexec/gdm-user-switch-applet --oaf-activate-iid=OAFIID:GNOME_FastUserSwitchApplet_Factory --oaf-ior-fd=27
 9198 pts/14   S+     0:00 grep gdm

или у кого KDE, то там будет kdm...

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: несколько X11 со своими WM

Непрочитанное сообщение Olej » 16 дек 2011, 20:59

Olej писал(а):или у кого KDE, то там будет kdm...
Запуск через менеджер дисплея является на сегодня основным во всех пакетных дистрибутивах Linux, т.е. он именно и используется (на 99.9%) в вашей инсталляции.

Но графический экран с GUI logon (это и есть "лицо" *dm) - это не есть Х11 (или: X Window System - это полное титульное название графической системы Linux, но Х11 - её полный эквивалент).

Создать графический экран может любая программа (даже ваша собственная), лучший тому пример: графический экран, который рисует начальный мультизагрузчик GRUB:

Код: Выделить всё

[olej@notebook 01]$ sudo cat /boot//grub/grub.conf | grep splash
splashimage=(hd0,0)/grub/splash.xpm.gz
- вот тот файл splash.xpm.gz и есть графической картинкой экрана на время выбора режима загрузки ... вы можете поместить сюда картинку вашей любимой голой бабы и будет вам счастье :lol:

Точто так же, любая программа (в том числе и примитив a'la ваш собственный "Hello world!") может перевести адаптер (записью по аппаратным портам) в графический режим + рисовать на нём всё что захочется...
Это и делают xdm, gdm, kdm, ...

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: несколько X11 со своими WM

Непрочитанное сообщение Olej » 16 дек 2011, 21:06

Olej писал(а):Это и делают xdm, gdm, kdm, ...
Но кроме того, что они рисуют картинку (видимая часть айсберга), *dm являются циклическими программами, которые требую logon, чтобы просто пройти "за них"... в точности так, как это делают известная программа mingetty на входе в каждую текстовую консоль (<Ctrl><Alt><Fi>):

Код: Выделить всё

[olej@notebook 01]$ ps ahx | grep tty
 2009 tty4     Ss+    0:00 /sbin/mingetty tty4
 2010 tty5     Ss+    0:00 /sbin/mingetty tty5
 2011 tty2     Ss+    0:00 /sbin/mingetty tty2
 2012 tty3     Ss+    0:00 /sbin/mingetty tty3
 2013 tty6     Ss+    0:00 /sbin/mingetty tty6
 2039 tty1     Ss+    8:34 /usr/bin/Xorg :0 -nr -verbose -auth /var/run/gdm/auth-for-gdm-KmE0p6/database -nolisten tcp vt1
 9378 pts/14   S+     0:00 grep tty
Собственно, это и есть главное действие *dm, после чего (при успешном logon) он запускает Х-менеджер той же командой из группы 1 (см. ранее), что-то типа:

Код: Выделить всё

[olej@notebook 01]$ ps ahx | grep Xorg
 2039 tty1     Rs+    8:42 /usr/bin/Xorg :0 -nr -verbose -auth /var/run/gdm/auth-for-gdm-KmE0p6/database -nolisten tcp vt1
 9438 pts/14   S+     0:00 grep Xorg

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: несколько X11 со своими WM

Непрочитанное сообщение Olej » 16 дек 2011, 21:26

Итого, запуск через менеджеры дисплея, который используется на сегодня во всех пакетных дистрибутивах Linux - это только способ проконтролировать вход c корректным logon, с последующим запуском Х-сервера посредством команд из группы:
Olej писал(а):

Код: Выделить всё

$ startx
...
$ xinit
...
$ Xorg
...
$X
...
(в более ранних UNIX, или в тех дистрибутивах, где сохранились эти рудиментарные формы - MINIX 3, или в ранних Linux - в slackware 7, как помниться я это делал - такие формы запуска Х11 и есть основными).
Из них:
- startx - использует при запуске сохранённые конфигурационные скрипты, запускает установленный оконный менеджер WM, а мне это не надо...
- xinit - выполняет скрипт ~/.xinit, если таковой имеется ... запуская WM, xterm ... но в конечном итоге, это запуск Xorg;
- X - это просто ссылка на Xorg:

Код: Выделить всё

[olej@notebook 01]$ ls -l /usr/bin/X
lrwxrwxrwx 1 root root 4 Май 25  2011 /usr/bin/X -> Xorg
В итоге: как бы не запускался Х-сервер, в конечном итоге он запускается командой Xorg...
Это почти как то, как утверждал Генри Форд относительно окраски автомобиля Ford-T:
Ford может быть любого цвета ... при условии, что он - чёрный.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: несколько X11 со своими WM

Непрочитанное сообщение Olej » 16 дек 2011, 21:39

Olej писал(а): В итоге: как бы не запускался Х-сервер, в конечном итоге он запускается командой Xorg...
Итого:

Нас интересует команда запуска нового экземпляра Х-сервер, что-то вида:

Код: Выделить всё

$ Xorg :1
В интернет бытуют рассуждения о а). возможности-невозможности такой команды, б). о необходимости её выполнения из текстовой консоли (<Ctrl><Alt><Fi>), в). о необходимости прав root для неё ...

И то, и другое, и третье - фигня ;)
т.е. вы вполне можете выполнять такую команду из текстовой консоли, но с таким же успехом вы можете её выполнять и из текстового терминала X11... это уже дело вкуса ;)
Так же и относительно остальных ... пересказанных мной предрассудков а), б) и в) ;)
Последний раз редактировалось Olej 17 дек 2011, 00:26, всего редактировалось 1 раз.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: несколько X11 со своими WM

Непрочитанное сообщение Olej » 16 дек 2011, 21:47

Olej писал(а): Нас интересует команда запуска нового экземпляра Х-сервер, что-то вида:

Код: Выделить всё

$ Xorg :1
Выполнив такую команду, вы запускаете Х-сервер, который будет обслуживать дисплей localhost:1.0 , или :1.0 просто :1. Дисплей, который у вас запускается в дистрибутиве по дефаулту, это - :0.0 (или :0.1 в конфигурациях с 2-мя мониторами на 2-головой видеокарте).
С таким же успехом вы можете создать дисплей :3, или любой другой который вам вздумается...

После выполнения такой команды ... похоже что ничего не происходит :shock:
(если вы делаете её в текстовой консоли то экран у вас может очиститься и почернеть - это он переключился на новый vt)

Но! Переключитесь на виртуальный терминал (vt) на котором отображается новый дисплей :1...
Если у вас в системе 6 консолей (обычно по дефаулт, если вы не меняли), то новый vt откроется на следующей неинициализированной консоли, т.е. vt7: <Alt><Ctrl><F7>.
Перейдя в vt вы увидите ... ... :-o
Последний раз редактировалось Olej 17 дек 2011, 00:30, всего редактировалось 1 раз.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: несколько X11 со своими WM

Непрочитанное сообщение Olej » 16 дек 2011, 21:59

Olej писал(а):Перейдя в vt вы увидите ... ... :-o
Вы увидите или такую картинку:
X.gif
X.gif (8.1 КБ) 18836 просмотров
.. или никакой не увидите ... только из-за контраста-прорисовки, я так это понимаю...
P.S. Вот здесь тонкое место: как отличить чёрный экран Х-сервера (если серая сетка не прорисовывается) от неактивизированного виртуального терминала (<Ctrl><Alt><F9>, например), или от vt, где Х-серверу не удалось запуститься?
Запоминайте!: :lol: в левом верхнем углу неинициализированного vt (8,9,10, ...) вы видите текстовый курсор - мерцающий знак подчёркивания, в Х-экране вы его не видите, здесь однородно чистй экран.

Но, в любом случае, Х-сервер у вас запущен и стартовал, но к нему нет запущенного оконного менеджера!

А вот в том, что у вас к этому времени 2 Х-сервера, убеждаетесь командой:

Код: Выделить всё

[olej@nvidia ~]$ ps ahx | grep Xorg
13037 tty8     Ss+    0:13 /usr/bin/Xorg :0 -br -verbose -auth /var/run/gdm/auth-for-gdm-df5fML/database -nolisten tcp
15674 tty7     Ss+    0:00 Xorg :1
15828 pts/9    S+     0:00 grep --color=auto Xorg
Можете выполнить команду:

Код: Выделить всё

[olej@nvidia ~]$ DISPLAY=:1 xterm
xterm:  fatal IO error 11 (Ресурс временно недоступен) or KillClient on X server ":1.0"
...
И вы получаете картинку:
Изображение
- это терминал ... на нём можно вводить и выполнять команды ... но! без рамки окна, без возможности захватить рамку и перемещать окно, менять размеры, закрывать - потому, что всё это функции оконного менеджера, которого у вас ещё нет!
Последний раз редактировалось Olej 17 дек 2011, 00:37, всего редактировалось 1 раз.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: несколько X11 со своими WM

Непрочитанное сообщение Olej » 16 дек 2011, 22:35

Olej писал(а): Нас интересует команда запуска нового экземпляра Х-сервер, что-то вида:

Код: Выделить всё

$ Xorg :1
Если же вам захочется запускать дополнительный Х-сервер командой xinit, можете воспользоваться такой формой:

Код: Выделить всё

$ xinit -- :1

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: несколько X11 со своими WM

Непрочитанное сообщение Olej » 16 дек 2011, 22:45

Следующая наша задача: "приделать" к дополнительному Х-серверу оконный менеджер!

Скорее всего, у нас нет в резерве установленных оболочек WM.
Но ... смотрим на это дело проще:

Код: Выделить всё

[olej@notebook ~]$ yum list all *wm*
...
Установленные пакеты
libwmf.i686                                               0.2.8.4-21.fc12
libwmf-lite.i686                                          0.2.8.4-21.fc12
whaawmp.noarch                                            0.2.12.1-2.fc12
whaawmp.noarch                                            0.2.12.1-3.fc12
xfwm4.i686                                                4.6.2-1.fc12
xfwm4-theme-nodoka.noarch                                 0.2-1.fc12
Доступные пакеты
9wm.i686                                                  1.2-2.fc12
WindowMaker.i686                                          0.92.0-20.fc12
WindowMaker-devel.i686                                    0.92.0-20.fc12
bwm-ng.i686                                               0.6-5.fc12
claws-mail-plugins-newmail.i686                           3.7.6-1.fc12
cwiid-wminput.i686                                        0.6.00-14.20100505gitfadf11e.fc12
dwm.i686                                                  5.8.2-4.fc12
dwm-user.i686                                             5.8.2-4.fc12
fmio-wmfmio.i686                                          2.0.8-13.fc12
fvwm.i686                                                 2.5.30-2.fc12
gtksourceviewmm.i686                                      2.2.0-4.fc12
gtksourceviewmm-devel.i686                                2.2.0-4.fc12
icewm.i686                                                1.2.37-7.fc12
icewm-clearlooks.i686                                     1.2.37-7.fc12
icewm-gnome.i686                                          1.2.37-7.fc12
icewm-xdgmenu.i686                                        1.2.37-7.fc12
lesstif-mwm.i686                                          0.95.2-1.fc12
libgtksourceviewmm.i686                                   1:0.3.1-5.fc12
libgtksourceviewmm-devel.i686                             1:0.3.1-5.fc12
libgtksourceviewmm-doc.i686                               1:0.3.1-5.fc12
libopensync-plugin-synce-wm5.i686                         0.15-1.fc12
libwmf-devel.i686                                         0.2.8.4-21.fc12
pekwm.i686                                                0.1.12-4.fc12
viewmtn.noarch                                            0.10-4.fc12
wmCalClock.i686                                           1.25-13.fc12
wmacpi.i686                                               2.2-0.6.rc1.fc12
wmapmload.i686                                            0.3.4-10.fc12
wmctrl.i686                                               1.07-7.fc12
wmfire.i686                                               1.2.3-3.fc12
wmfrog.i686                                               0.2.2-1.fc12
wmweather+.i686                                           2.11-2.fc12
wmx.i686                                                  7-6.fc12
xfwm4-themes.noarch                                       4.6.0-2.fc12
xorg-x11-twm.i686                                         1:1.0.3-5.fc12
Во! сколько оконных менеджеров! :lol:

Если в вашем дистрибутиве другой менеджер пакетной системы (dpkg, apt, pkgtools, Portage) то поиск нужных пакетов WM будет аналогичным, большинство из них вы сможете идентифицировать по ключевой последовательности 'wm' в имении пакета. Устанавливаем пакеты:

Код: Выделить всё

[olej@notebook ~]$ sudo yum install *wm*
...
В итоге:

Код: Выделить всё

[olej@notebook 12.2011]$ ls /usr/bin/*wm*
/usr/bin/9wm                  /usr/bin/icewm-xdg-menu
/usr/bin/cmuwmtopbm           /usr/bin/libwmf-fontmap
/usr/bin/dwm                  /usr/bin/mwm
/usr/bin/dwm-start            /usr/bin/pbmtocmuwm
/usr/bin/fvwm                 /usr/bin/pekwm
/usr/bin/fvwm2                /usr/bin/slim-dynwm
/usr/bin/fvwm-bug             /usr/bin/twm
/usr/bin/FvwmCommand          /usr/bin/update_slim_wmlist
/usr/bin/fvwm-config          /usr/bin/whaawmp
/usr/bin/fvwm-convert-2.4     /usr/bin/wmagnify
/usr/bin/fvwm-convert-2.6     /usr/bin/wmaker
/usr/bin/fvwm-menu-desktop    /usr/bin/wmaker.inst
/usr/bin/fvwm-menu-directory  /usr/bin/wmf2eps
/usr/bin/fvwm-menu-headlines  /usr/bin/wmf2fig
/usr/bin/fvwm-menu-xlock      /usr/bin/wmf2gd
/usr/bin/fvwm-perllib         /usr/bin/wmf2svg
/usr/bin/fvwm-root            /usr/bin/wmf2x
/usr/bin/fvwm-xdg-menu        /usr/bin/wm-oldmenu2new
/usr/bin/gnome-wm             /usr/bin/wmsetbg
/usr/bin/icewm                /usr/bin/wmsetup
/usr/bin/icewmbg              /usr/bin/wmxmms
/usr/bin/icewmhint            /usr/bin/xfwm4
/usr/bin/icewm-menu-gnome2    /usr/bin/xfwm4-settings
/usr/bin/icewm-session        /usr/bin/xfwm4-tweaks-settings
/usr/bin/icewmtray            /usr/bin/xfwm4-workspace-settings
- выбирай - не хочу :lol:
Но я воспользуюсь стареньким-маленьким twm, известным ещё из ранних UNIX:

Код: Выделить всё

[olej@nvidia init.d]$ DISPLAY=:1 twm
bash: twm: command not found...
Установить пакет 'xorg-x11-twm' предоставляющий команду 'twm'? [N/y] 
* Выполнение.. 
* Разрешение зависимостей.. 
* Ожидание авторизации.. 
* Ожидание в очереди.. 
* Разрешение зависимостей.. 
* Загрузка пакетов.. 
* Проверка изменений.. 
* Установка пакетов.. 
* Сканирование приложений.. 
...
(то, что пишется в терминале, не должно вас сильно напрягать...)

... по нажатию левой мышкой в vt7 открывается меню, в котором я выберу xterm:
twm.png
(7.38 КБ) 15534 скачивания

Ответить

Вернуться в «Графические окружения в дистрибутивах»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя