Blog (76)
Komentarze (5.6k)
Recenzje (0)
@nintyfanTao-multishell

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.

Przykład polecenia cat
Przykład polecenia cat

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.

Tao-multishell pozwala dodatkowo na komunikację z aplikacjami napisanymi w libgreattao
Tao-multishell pozwala dodatkowo na komunikację z aplikacjami napisanymi 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ć.

Wybrane dla Ciebie
Komentarze (11)