Zalezenie: *xterm

Tomasz Kłoczko kloczek w rudy.mif.pg.gda.pl
Wto, 16 Mar 1999, 17:32:02 CET


Kolejne zalecenie którego chyba dobrze żebyśmy się trzymali.
Dotyczy ono tym razem aplikacji terminalowych typu *xterm, rxvt i
pochodne.

Chodzi o to, że dotychczasowe binarki z apliacjami tego typu są
nieprawdłowo preparowane. Polega to na tym, że de facto każda z tych
apliacji jest emulatorem kolorowego xterminala bazującego jednak na
pierwotnej definicji terminala xterm. Rodzi to dziwne przypadki. Otóż po
mimo tego, że TERM jest ustawiny na xterm to apliacje te używają kolorów
mając zaszyte w kodzie informację typu "a xterm -> tu koloru można używać
i będziemy ten kolor obsługiwać poprzez sekwencje colors, setaf, setab",
których w definicji terminala xterm nie ma, a które są zaszywane na
sztywno i są one takie same jak w przypadku kolorowego terminal ansi. Otóż
jest inny typ terminal, który ma legalne przyzwolenie od ludzi robiących
ncurses na to zeby był kolorowy. Jest to terminal o nazwie xterm-color.
jak ktoś chce to moze sprawdzić, że mając w środowisku TERM="xterm"
polecenia typu "tput colors" zwrócą -1 (brak kolorów), a "tput
{setaf,setab}" zwrócą poprane sekwencje takie same jak na termialu
ansi-color za pomocą których można ustawiać kolory .. czyli powinniśmy
spatchować wszystkie *term na to żeby negocjowały terminal typu
"xterm-color" żeby umożliwić legalne apliacjom korzystanie z definicji
terminfo. Ze źródeł aplikacji natomiast powinny wylecieć wszelkie zaszyte
przyporządkowania na których typach terminali można używać kolorów, a na
których nie (np. z mc powinno wylecieć sporo kodu specyficznego dla pracy
na rxvt czy nxterm) W gruncie rzeczy będą to cieęcia źródeł, a dokądać
będziemy raczej pojedyncze linijki z wykrywaniem obecności w definicji
terminala sekwencji colors, setaf, setab, a także bce i wykorzystywaniem
tego dokładnie tak jak to zakładają ludzie piszący ncurses.

Z Adamem Tlałką jesteśmy także w trakcie rozpracowywania i negocjowania (z
ludźmi od ncurses) sekwencji terminalowych do myszki (inicjacja, serwencje
termilalowe ruchu i wciśnięcia klawiszy). Po wykryciu takich sekwencji w
definicji terminala (wymagać to będzie uzupełnienia definicji niektórych
myszowatych terminali jak linux czy xterm) aplikacja bedzie mogły
zainicjiwać myszkę i z niej korzystać posługując się także tylko terminfo
bez konieczniości zaszywania dodatkowych informacji w źródłach
poszczególnych aplikacji. W podobny sposób zresztą możnaby rozwiązać
wykrywanie tego czy dany typ termianla jest zdolny wyświetlać UTF.

Przy okazji .. w rc-scripts też zamiast puszczać konkretne sekwencje
powinniśmy tak dla eleganji całego rozwiązania pobierać sobie sekwencje za
pomocą tput typu setaf, setab, colors i korzystać z nich. Da to tyle, że
pracując np. zdalnie i np. restartując jakiś serwis nie zobaczymy na
niektórych typach terminali kolorów lub nie zobaczymy kasznki o ile dany
terminala fizycznie z kolorami nie rozumie sekwencji ansi czy HP do
kolorów (np. zdaje się, że na terminalu z win* wyskakują tu zamiast
kolorów ciągi krzaczków .. o to niby ma być vt100, który rzeczywiście
kolorów nie ma w definicji).

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