Po roku prac nad projektem zaprezentowano desktopowy silnik Arcan 0.7.1, który łączy w sobie serwer wyświetlania, framework multimedialny oraz silnik gier do przetwarzania grafiki 3D. Arcan może być wykorzystywany do tworzenia różnych systemów graficznych — od interfejsów użytkownika dla aplikacji wbudowanych po samodzielne środowiska desktopowe. Na podstawie Arcana stworzono trójwymiarowe środowisko użytkownika dla systemów wirtualnej rzeczywistości Safespaces oraz środowisko pulpitu Durden. Kod projektu napisano w języku C i jest udostępniany na licencji BSD (niektóre komponenty na licencji GPLv2+ i LGPL).
Arcan nie jest związany z osobnymi systemami graficznymi i może działać na różnych środowiskach systemowych (BSD, Linux, macOS, Windows), korzystając z wtyczek backendowych. Na przykład, istnieje możliwość uruchomienia na Xorg, egl-dri, libsdl i AGP (GL/GLES). Pod kontrolą serwera wyświetlania Arcan mogą działać aplikacje klienckie oparte na X11, Wayland i SDL. Projekt rozwija swoje rozwidlenie serwera X.org — xarcan, a także kompozytowy serwer arcan-wayland (waybridge), umożliwiający uruchamianie aplikacji opartych na Wayland. Kluczowymi kryteriami, które były stosowane podczas projektowania API Arcan, są bezpieczeństwo, wydajność i przydatność do debugowania. W celu uproszczenia rozwijania interfejsów sugeruje się używanie języka Lua.

Cechy Arcana:
- Połączenie możliwości serwera kompozytowego, serwera wyświetlania i menedżera okien.
- Wsparcie dla działania w trybie odizolowanym, w którym aplikacja oparta na Arcanie jest samodzielnym komponentem, działającym bez dodatkowych warstw graficznych.
- Wbudowany framework multimedialny, dostarczający narzędzia do pracy z grafiką, przetwarzania strumieniowego wideo i dźwięku, animacji, ładowania obrazów oraz pracy z urządzeniami przechwytywania wideo.

- Model wykorzystujący wiele procesów do łączenia obsługujących źródeł danych (np. strumieni wideo i wyjścia uruchomionych programów).

- Ścisły model podziału przywilejów — komponenty silnika dzielą się na małe, nieuprzywilejowane procesy, które współdziałają poprzez interfejs pamięci dzielonej Shmif.
- Wbudowane narzędzia monitorowania i analizy awaryjnych zakończeń pracy procesów. Silnik może serializować wewnętrzny stan skryptów Lua w celu uproszczenia debugowania.
- Możliwość przejścia (Fallbacks) na inny handler — w przypadku awarii spowodowanej błędem w programie, silnik może uruchomić aplikację zapasową, zachowując te same zewnętrzne źródła danych i połączenia.
- Narzędzia do współdzielenia i zdalnego dostępu do pulpitu. Dostęp przez sieć zapewnia serwer graficzny „arcan-net”, realizujący protokół P2P A12, łączący możliwości takich technologii jak mDNS (określanie lokalnych usług), SSH (interaktywna powłoka tekstowa), X11/VNC/RDP (interaktywna powłoka graficzna), RTSP (strumieniowe przesyłanie danych multimedialnych) oraz HTTP (ładowanie zasobów i synchronizacja stanu).
- Powłoka komend Cat9, umożliwiająca powiązanie wykonania komend z poszczególnymi komórkami, tworzącymi coś w rodzaju arkusza kalkulacyjnego (film z demonstracją). Proponowana koncepcja pozwala na przekierowywanie strumieni danych między oknami, łącząc dane i przetwarzacze w różnych oknach w analogii do komórek w arkuszach kalkulacyjnych (na przykład, można przekierować wyjście z jednego okna do uruchomionego w terminalu przetwarzacza shell i wykorzystać wynik w innym oknie).

Zmiany związane z projektem:
- Portowany rozwijany przez firmę Valve serwer kompozytowy Gamescope, dzięki któremu możliwe stało się uruchamianie gier z Steama bez manipulacji z Xwayland.
- Ulepszony plugin Qt qtarcan, umożliwiający uruchamianie w Arcan aplikacji wykorzystujących Qt5 i Qt6, takich jak Qbittorrent i Binary Ninja.
- Stworzono patche i skrypt do uruchamiania KeepassXC.
- Rozwija się przeglądarka dla protokołu A12 i interakcji przez niego.
- Rozwija się interaktywny menedżer okien Lasso.
- Dodano narzędzie Xkbd2Lua do konwersji układów klawiatury z X11 do formatu obsługiwanego przez Arcan.
- Rozwija się pakiety nix do stworzenia roboczego środowiska rozruchowego opartego na Arcan, pulpitu Durden oraz powłoki.
- Dodano wsparcie dla postkwantowego algorytmu szyfrowania ML-KEM.
- Dodano możliwość wznawiania przez klientów przerwanych połączeń sieciowych (po przywróceniu zerwanego połączenia aplikacja będzie ponownie sparowana bez utraty stanu okna).
- Dodano opcję „—cast”, pozwalającą na organizację pracy innych użytkowników z kopią wyjścia aplikacji w trybie tylko do odczytu.
- Do serwera katalogów dodano wsparcie dla nowych zjednoczonych (Unified) i referencyjnych (Referential) linków, dzięki którym można łączyć serwery w jedną przestrzeń nazw lub budować łańcuchy. serwerów. W pierwszym przypadku grupa serwerów wygląda dla użytkownika jak jeden serwer, a w drugim można uruchamiać aplikacje na jednym serwerze, łącząc się z innym.
- W API dodano funkcję launch_target do dynamicznego uruchamiania aplikacji na serwerze na żądanie klienta. Dla aplikacji można stworzyć kontroler — zestaw skryptów Lua do zarządzania wymianą wiadomości i dostępem do zasobów.
- Dodano wsparcie dla zewnętrznych identyfikatorów zasobów (External Resource Resolver), które mogą przechwytywać operacje z magazynem Arcan i przetwarzać operacje żądania zasobów, na przykład organizując lokalne buforowanie lub pobieranie danych z Web, BitTorrent lub IPFS zamiast przekazywania z lokalnego dysku.
- Zrealizowano podobieństwo cienkich klientów, które pozwalają klientowi bez pełnego stosu Arcan (mając tylko przeglądarkę Smash) przenieść logikę wykonywania programów na serwer. Na przykład, aby uruchomić środowisko robocze durden na serwerze myserver, można wykonać 'arcan-net --host-appl myserver@durden'.
- Do powłoki Cat9 dodano backend z debugerem, który obsługuje protokół DAP (Debug Adapter Protocol) do lokalnego lub zdalnego debugowania.
- Dodano dużą porcję zmian związanych z rozwojem protokołu A12, środowiska wykonawczego skryptów w języku Lua, podsystemu sieciowego, serwera katalogów do łączenia komponentów rozproszonych w sieci, systemu współdzielonej pamięci Shmif oraz modułu egl-dri.
Jednocześnie opublikowano wydanie środowiska roboczego Durden 0.6.3. Poprzednia wersja została utworzona w 2020 roku. W Durden obsługiwane są mozaikowe i klasyczne tryby układania okien z pełnoprawnymi środkami zarządzania za pomocą klawiatury. Możliwa jest praca w systemach z wieloma monitorami o różnych DPI.
Oferowany jest rozszerzony schowek, który zachowuje historię zmian i jest dostępny w dwóch wariantach — globalnym i przypisanym do pojedynczych okien. Obsługiwana jest zmiana układów klawiatury oraz współpraca z zaawansowanymi urządzeniami, takimi jak kontrolery gier. Wsparcie dla takich możliwości, jak globalne menu, menu w nagłówku okna, widgety, konfiguracja indywidualnego zachowania dla każdego okna. Wszystkie ustawienia, w tym metody wprowadzania, czcionki i efekty wizualne, mogą być zmieniane na żywo, bez potrzeby restartu konfiguracji.
Wersja 0.6.3 jest wersją przygotowawczą przed nadchodzącym wydaniem Durden 0.7, które wprowadzi szereg istotnych nowości, takich jak gesty ekranowe, wsparcie dla pionowych nagłówków i paneli, kompaktowy tryb wyświetlania nagłówków i paneli, nowy konfigurator, podgląd po najechaniu myszą, ekranowa klawiatura osdkbd, tryb scalania okien, wsparcie dla syntezatora mowy oraz integrację komponentów a12net i a12_directory w celu zapewnienia przezroczystości sieciowej i zdalnego dostępu.
Źródło: opennet.ru



