Ponownie xinitrc

Tomasz Kłoczko kloczek w rudy.mif.pg.gda.pl
Śro, 19 Sty 2000, 21:41:39 CET


On Tue, 18 Jan 2000, Bartosz Waszak wrote:

> Przyjrzałem  się  modułowi Xsession, co sądzicie o tym, aby wykorzystać
> go jako  podstawę   xinitrc.

Dla mnie jest to oczywiste jak słońce :)
Włśnie dlatego przechwiciłem to z debian-devel że było wystarczająco
elastyczne w ogólnym szkielecie jaki to tworzy.
Tylko ten szkielet trzeba jeszcze nieco przemyśleć.

> Na razie jedną poprawkę, którą należałoby
> wprowadzić   to nakazać mu  używać  /etc/X11/{window,desktop}-manager/*
> zamiast pliku  /etc/X11/window-managers  i druga to  kazać  mu pobierać
> ustawienia z /etc/profile.d. Dobrze też by było żeby plik np:
> 
> /etc/X11/window-manager/wmaker oprócz danych o pliku uruchamiającym go
> zawierał inne dane np:
> - Pełna nazwa (przyda się później przy narzędziach GUI do konfiguracji
> tego)
> - Plik uruchamiający.
> - Parametry dla wmconfig (docelowy katalog i format)
> 
> pliki /etc/X11/desktop-managers:
> - To samo co powyżej + info o tym czy sam wywołuje window managera
> (gnome-session robi to a KDE nie )
> 
> Co sądzicie o obecnej koncepcji. Sporo, rzeczy   jest do wykorzystania.
> Np: sprawdzanie   czy  dany wm  jest dostępny  na  podstawie  tego  czy
> istnieje  plik w  /etc/X11/window-manager  i sprawdzałby czy user  może
> wywoływać inne wm'y z poza listy itepe.
> 
> Pomóżcie ustalić  potrzebne informacje  do  stworzenia template wm i dm
> i można zacząć ładować do specy jeśli  nawet początkowo     jeszcze nie
> będzie działało, ale skrypt można poprawić mając pliki z danymi.

Po pierwsze zdaje się, że dałoby się wyodrębnic nie dwie co conajmniej
trzy warstwy w tej części czyli: sm, dm, wm czyli sessim manager, desktop
manager i window manager. Każdy następna zawierałaby coś co jest
podzbiorem konfiguracji poprzedniego. I tak podstawowy SM może zawierać
domyślny DM (np. SM=gnome-session może chcieć domyślnie korzystać z DM=gmc
i WM=wmaker) ale w nastpnym kroku mogłoby być to zmienione. konkretny DM
może używać domyślnego WM ale moznanby też to przysłaniać w miare
posuwania sie dalej w kolejce uruamianych rzeczy. To po pierwsze.

Po drugie powinna być możliwość rezygnacji z poszczególnych warstw i to w
kolejnosci "od czapy" czyli SM=none, ale DM=gmc, WM=afterstep (w przypadku
AS nie ma jeszcze np. supportu do GNOME wm_hint i nie ma sensu używać go
SM=gnome-session). Przy SM=DM=WM=none powinno sie IMHO uzyskać efekt
podobny do tego jaki widać po uruchomieni gołego xinit z wyświetleniem
małego okinka umożliwiającego zakończenie sesji.

Wogóle całą sprawę zależności między poszczególnymi skryptami w
/etc/X11/Xsession.d i tym jak ma to współgrać z tym jak zapisywać
konfigurację w pliku konf urzytkownika trzebaby jeszcze przemyśleć.
Osobiście byłbym za tym, żeby wszystko było w pliku standardowum
opisującym X sesję czyli w ~/.Xsession lub ~/.Xclients w postaci zmienych.
Plik ten powinien być włączany w srodowisko skryptów startowych na samym
początku i o ile nie byłoby w nich rzadnych zmiennych, a byłyby tylko
uruchamiane programy tak jak to się klasycznie robi np.

------
xterm &
exec wmamker
------

To po zakończeniu działania ostaniego programu pokazane (w tym wypadku
wmamkera) byłoby tylko jeszcze raz okienko potwierdzajace zakończenie
sesji. W sumie dałoby to coś co byłoby dość elastyczne o ile nie chciałoby
sie tego całego bagażu modularnych skryptów X sesji użyć chcąc używać to
"tak jak ociec to robili" dawałoby jednocześnie możliwość używania tego
dokładnie po swojemu bez oglądania się na to jak to można robić "po
nowemu".

Przy braku pliku ~/.Xsession lub ~/.Xclients mogłaby sie urucomić jakaś
mała aplikacyjka służąca do skompletowanie pierwszej wersji tych plików
odpytując sie o to jakiego chce sie mieć SM, DM, WM, lub inne dodatki jak
wołanie ssh-agenta co oznaczać by musiało, że /etc/X11/Xsession.d/S*setup
musiałby być sywołuwany przed error, SM, DM i WM (w zasadzie na S01).

> Jest już jakieś  ustalone rozwiązanie odnośnie  genrowania menu dla wm,
> które nie rozumieją .desktop (tzn  można to  uruchamiać    z crona albo
> podczas instalacji pakietu  zawierającego       taki  plik,     napisać
> odpowiednik   debianowego  programu generującego   Menu dla  wszystkich
> obecnych w systemie wm.

Ogólny pomysł jest nieco inny i IMHO prostrzy w konstrukcji choć nieco
bardziej skomplikowany w realizacji. Wszystkie aplikacje i WM-y opisujemy
wyłącznie plikami desktop/kdelnk przechowywanymi we wspólnym katalogu
/usr/X11R6/share/applnk (i tak teraz robią wszystkie pakiety jakie są na
ftp), a wm-y indeks aplikacji lepiej żeby czytały nie przez
wyspecjalizowane narzędzie co poprzez mała biblioteczkę, która bezie na
bierząco udostepnaiął to co jest w tym katalogu tak jak to robi kpanel z
KDE czy panel z gnome-core. Mam zaczątek takiej bibliteczki bazującej na
kodzie wyciętym z panela gnomowego ale dawno do tego niezaglądałem.

> Jak  prześlecie  swoje  opinie i ostatecznie coś  sie w końcu ustali to
> zabieram się za porządek  z tym  (to  musi być coś  genialnego na miare
> rc-inetd dla problemu z inetd'ami ;))))))
> 
> PS. Czy X'y umożliwiają  używanie różnych map  klawiatury   dla różnych
> userów  via mechanizm  xkb, żeby   móc   to  zaimplementować to   w tym
> skrypcie,  dane mógłby pobierać  z ustawień local'e  usera (czy możnaby
> zrobić plik typu ~/etc/locale,  ~/etc/lang     i tam byłyby    trzymane
> ustawienia  locale jusera,  a shelle via /etc/profile.d   itp ustawiały
> zmienne.    Ewentualnie    dodać  możliwość tworzenia userowi  własnego
> konfiga dla pam_env ->  ~/etc/environemnt,  z którego by po zalogowaniu
> pobierał zmienne  i ustawiał jeśli główny konfig na to zezwala. pam_env
> jest na prawde  bardzo dobrym narzędziem (z założenia) tylko trzeba  je
> dopracować bo może on naprawde wiele problemów ze zmiennymi rozwiązać.

Widać już, że będą musiały się pojawić skrypty
/etc/X11/Xsession/*{locale,kbssetup} i prawdopodobnie bedą one musiały być
wołane po setup i error a przed uruchomieniem wszystkich innych warstw
żeby dać możliwość ustawienia włąściwie języka itd.

Wogóle jak sam widzisz jest jeszcze sporo do przemyślenia żeby ustalić co
ma być przed czym uruchamiane, jak ma wspólgrać w tej całej "kolejce" i
ma być przechowywana konfiguracja takiej "kolejki". Jeżeli uda się całął
konfigurację opisać wyłacznie zmienymi to w ogólnym przypadku konfigurację
X sesji dałoby sie takze łątwo przenosić o ile by sie chciało do bazy
dostępnej po LDAP.

Jeżeli coś Ci się jeszcze narzuca na płat skroniowy albo komuś innemu w
tym temacie to prosiłbym o zagadywanie i pytanie się bo teraz jest
właściwa pora obgadywania takich szczegółów.

> PS2. KDE2 przechodzi na unikod jak to się ma do locali do nowych X
> 4.0.

IMHO bez unicode jaki jest planowane w KDE jest bez sensu bez unicode na
warstwie nizej czyli na tej jaką udosepnia już XF 3.9.x/4.0. Ludzie z
GNOME rozumieja to w tym wypadku i nikt nie stara sie wyskakiwać przed
orkiestrę, a rozwiazania unicodowe są szykowane dopiero w gtk+ 1.4 albo
jeszcze dalej (choć w cvs są kawałki kodu które leżakują w odpowiednich
branchach).

kloczek
-- 
-----------------------------------------------------------
*Ludzie nie mają problemów, tylko sobie sami je stwarzają*
-----------------------------------------------------------
Tomasz Kłoczko, sys adm @zie.pg.gda.pl|*e-mail: kloczek w rudy.mif.pg.gda.pl*



Więcej informacji o liście dyskusyjnej pld-devel-pl