Strona używa cookies (ciasteczek). Dowiedz się więcej o celu ich używania i zmianach ustawień. Korzystając ze strony wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.    X

Tao-multishell

Jest to kolejny, raczej amatorski projekt, napisany w libgreattao. No cóż. Libgreattao jest przeznaczone po to, by uprościć pisanie prostych rzeczy i dać im kopa.

O czym mowa

Tao-multishell jest powłoką tekstowo/graficzną, napisaną w libgreattao. Powstało wiele powłok tekstowo-graficznych(nazw nie pamiętam), jednak żadna nie odniosła sukcesu. Tao-multishell ma to do siebie, że może pracować wyłącznie w trybie tekstowym(bez grafiki, a w postaci "kontrolek" w trybie tekstowym lub shellu). Ważne jest jednak przeznaczenie. Tao-multishell, choć przystosowany do uruchamiania normalnych poleceń tekstowych, został stworzony do uruchamiania programów napisanych w libgreattao.

Jak to działa?

Tak na poważnie, to tao-multishell wewnętrznie korzysta z Sh, a jest prawdziwą powłoką jedynie dla programów napisanych w libgreattao. Dla pozostałych jest ubogim emulatorem terminala.

r   e   k   l   a   m   a

Program tworzy pseudoterminal dla każdego uruchamianego zadania(a dla każdego zadania uruchamiana jest nowa sesja), a dodatkowo otwiera port do nasłuchu dla każdego uruchamianego zadania, by obsługiwać programy napisane w libgreattao. Pozwala to np. na zatrzymanie przetwarzania w stylu podobnym do DBus-a. Po prostu można wywołać zadania, np. przerwij przetwarzanie lub odpowiedzieć na komunikat błędu programu napisanym w libgreattao.

Taki podgląd dostarczanych interfejsów przez aplikację napisaną w libgreattao, pozwala łatwe testowanie aplikacji - możemy odkryć czy np. błąd jest w programie czy backendzie libgreattao. Nie jesteśmy też przybici interfejsem graficznym - mamy tylko wykaz opcji.

Skryptujemy!

Największą radością jest jednak oskryptować tao-multishell za pomocą skryptów libgreattao. Skrypty libgreattao pozwalają sterować programem napisanym w libgreattao. Podkreślam, że chodzi o sterowanie jednym programem przy użyciu jednego skryptu. Tao-multishell rozwiązuje ten "problem", który został wprowadzony m.in ze względów bezpieczeństwa.

Oto przykład, jak uruchomić polecenie, wkleić dane do niego, i pobrać wynik:


setinput /Objects/Atributes[1] /attribute/command cat
run /Objects/Atributes[1] /attribute/command 
setinput /app/chat[1] /target/task/text/input "Witaj świecie\n"
run /app/chat[1] /actions/input/send
run /app/chat[1] /actions/input/close
=getoutput wynik /app/chat[1] /target/task/text/output

Tak wysłaliśmy napis "Witaj świecie" z przejściem do nowej linii na końcu, a następnie pobraiśmy wynik polecenia cat, które uruchomiliśmy na samym początku. Teraz możemy uruchomić kolejne polecenie i wkleić do niego wynik naszego. Tak wygląda cytowanie poleceń - obecnie trudniejsze niż w bash-u, ale powłoka nadal się rozwija, więc nic nie przeszkodzi w dodaniu nowych funkcji.

Możemy jednak się wysilić bardziej, i posterować programem tak, by np. wkleić ścieżkę do menadżera plików:


starttimers
setinput /Objects/Attributes[1] /attributes/command /ścieżka/do/tao-manager
run /Objects/Attributes[1] /attributes/command
=window main /Objects/MultipleObjects[1]
run $main /list/items/0/selected
run $main /actions/show_command_information
=window a /system/task_information[1]
run $a /list/items/0/selected
=window b /Objects/MultipleObjects[2]
run $b /list/items/0/selected
=window c /Objects/MultipleObjects[3]
=text i 0
block find_left_path
: .false
scopelevel -1 =add i $i 1
=cat path /list/items/ $i
=cat path $path /data/path
=getlabel label $c $path
ifstreq /fileviews/left/path_edit $label
endblock
=cat path /list/items/ $i
=cat path $path /selected
setinput $c $path /etc/
run $c $path

To wszystko w tym temacie!

Przyszłość

W przyszłości planuję dopisać możliwość wyświetlania okien aplikacji libgreattao. Obecnie poszukuje osoby chętne do pomocy, by stworzyć najlepszy "emulator terminala" i "powłokę" graficzno-tekstową, jaka tylko mogłaby powstać. 

linux oprogramowanie programowanie

Komentarze