After a year of development, the desktop engine Arcan 0.7.1 has been presented, combining a display server, a multimedia framework, and a game engine for processing 3D graphics. Arcan can be used to create various graphical systems — from user interfaces for embedded applications to self-contained desktop environments. Based on Arcan, the three-dimensional user environment for virtual reality systems Safespaces and the desktop environment Durden have been built. The project code is written in C and is distributed under the BSD license (some components under GPLv2+ and LGPL).
Arcan is not tied to specific graphical subsystems and can operate above various system environments (BSD, Linux, macOS, Windows), using plug-in backends. For example, it can run on top of Xorg, egl-dri, libsdl, and AGP (GL/GLES). Client applications based on X11, Wayland, and SDL can run under the Arcan display server. The project is developing its fork of the X.org server — xarcan, as well as a composite server arcan-wayland (waybridge), allowing applications based on Wayland to be launched. Key criteria applied in the design of the Arcan API include security, performance, and suitability for debugging. For ease of interface development, it is suggested to use the Lua language.

Features of Arcan:
- Combination of the capabilities of a composite server, display server, and window manager.
- Support for operating in an isolated mode, where the application based on Arcan is a self-sufficient entity working without additional graphical layers.
- Built-in multimedia framework providing tools for graphics work, streaming video and audio processing, animations, image loading, and video capture device handling.

- Multiprocess model for connecting data source handlers (e.g., video streams and output from running programs).

- Strict privilege separation model — engine components are broken down into small unprivileged processes interacting through the shared memory interface Shmif.
- Ingebouwde monitoring- en analysetools voor onverwachte beëindigingen van processen. De motor kan de interne toestand van Lua-scripts serialiseren om debugging te vergemakkelijken.
- Fallbacks naar een andere handler - in het geval van een fout door een bug in het programma kan de motor een reserve-applicatie starten, terwijl dezelfde externe gegevensbronnen en verbindingen behouden blijven.
- Middelen voor gedeelde toegang en remote desktop verbinding. Netwerktoegang wordt geleverd door de grafische server 'arcan-net', die het P2P-protocol A12 implementeert en de mogelijkheden van technologieën zoals mDNS (detectie van lokale services), SSH (interactieve tekstshell), X11/VNC/RDP (interactieve grafische shell), RTSP (streaming van multimedia) en HTTP (ophalen van resources en synchronisatie van status) combineert.
- De Cat9 command line shell, die de uitvoering van opdrachten aan specifieke cellen kan binden en een spreadsheet-achtig bereik creëert (video met demonstratie). Het voorgestelde concept maakt het mogelijk om gegevensstromen tussen vensters om te leiden, waarbij gegevens en handlers in verschillende vensters worden verbonden, vergelijkbaar met cellen in spreadsheets (bijvoorbeeld, uitvoer uit één venster kan worden doorgestuurd naar een shell-handler die in de terminal draait en het resultaat in een ander venster worden gebruikt).

Wijzigingen gerelateerd aan het project:
- De door Valve ontwikkelde composietserver Gamescope is geporteerd, waarmee het mogelijk is om games uit Steam te draaien zonder handmatige manipulatie met Xwayland.
- De Qt-plug-in qtarcan is verbeterd, waardoor het mogelijk is om applicaties die Qt5 en Qt6 gebruiken, zoals Qbittorrent en Binary Ninja, in Arcan uit te voeren.
- Er zijn patches en een script gemaakt voor het starten van KeepassXC.
- Er wordt gewerkt aan een viewer voor het A12-protocol en interactie daarmee.
- De interactieve window manager Lasso wordt verder ontwikkeld.
- De utility Xkbd2Lua is toegevoegd voor het converteren van toetsenbordindelingen van X11 naar een formaat dat door Arcan wordt ondersteund.
- Nix-pakketten voor het creëren van een opstartomgeving op basis van Arcan, de desktop Durden en de command line shell worden verder ontwikkeld.
- Er is ondersteuning toegevoegd voor de post-kwantum encryptie-algoritme ML-KEM.
- Klanten hebben de mogelijkheid gekregen om onderbroken netwerkverbindingen te herstellen (na herstel van een verbroken verbinding wordt de applicatie opnieuw gekoppeld zonder de status van het venster te verliezen).
- De optie «--cast» is toegevoegd, waarmee andere gebruikers met een alleen-lezen kopie van de applicatie-output kunnen werken.
- De server catalogus is uitgebreid met ondersteuning voor nieuwe uniforme (Unified) en referentiële (Referential) links, waarmee servers in één naamruimte kunnen worden samengevoegd of ketens kunnen worden opgebouwd. servers. In het eerste geval verschijnt voor de gebruiker een groep servers als één server, en in het tweede geval kunnen applicaties op één worden uitgevoerd, de server, door verbinding te maken met een andere.
- In de API is de functie launch_target toegevoegd voor het dynamisch starten van een applicatie op de server op verzoek van de klant. Voor de applicatie kan een controller worden gemaakt — een set Lua-scripts voor het beheer van berichtenuitwisseling en toegang tot bronnen.
- Ondersteuning is toegevoegd voor externe resource- resolvers (External Resource Resolvers), die opslagoperaties met Arcan kunnen onderscheppen en aanvragen voor middelen kunnen verwerken, bijvoorbeeld door lokale caching of het laden van gegevens uit het web, BitTorrent of IPFS in plaats van vanaf de lokale schijf.
- Er is een soort dunne clients geïmplementeerd, waarmee de client zonder de volledige Arcan-stack (alleen met de Smash-viewer) de uitvoeringslogica van programma's naar de server kan verplaatsen. Om bijvoorbeeld de desktopomgeving durden op de server myserver te starten, kan je «arcan-net --host-appl myserver@ durden» uitvoeren.
- De Cat9 commandoregel is uitgebreid met een backend met een debugger die het DAP (Debug Adapter Protocol) ondersteunt voor lokale of externe debugging.
- Een aanzienlijke reeks wijzigingen is geïmplementeerd met betrekking tot de ontwikkeling van het A12-protocol, de omgeving voor het uitvoeren van scripts in de Lua-taal, het netwerkSubsystem, de server catalogus voor het verbinden van netwerkcomponenten, de Shmif gedeelde geheugensysteem en de egl-dri-module.
Tegelijkertijd is de release van de desktopomgeving Durden 0.6.3 gepubliceerd. De vorige release werd in 2020 gevormd. In Durden worden mozaïek- en klassieke vensterlay-outmodi ondersteund met volledige bedieningsmiddelen via het toetsenbord. Werken met systemen met meerdere monitors met verschillende DPI-instellingen is mogelijk.
Er is een geavanceerde klembordfunctie beschikbaar die de geschiedenis van wijzigingen bijhoudt en in twee versies beschikbaar is: globaal en gekoppeld aan specifieke vensters. Er is ondersteuning voor het schakelen van toetsenbordindelingen en voor het werken met geavanceerde apparaten, zoals game controllers. Functies zoals een globaal menu, een menu in de titelbalk van het venster, widgets en de configuratie van afzonderlijk gedrag voor elk venster worden ondersteund. Alle instellingen, inclusief invoermethoden, lettertypen en visuele effecten, kunnen on-the-fly worden gewijzigd zonder dat de configuratie opnieuw hoeft te worden geladen.
Versie 0.6.3 is een voorbereidende release voorafgaand aan de in ontwikkeling zijnde release van Durden 0.7, die een reeks belangrijke nieuwe functies zal aanbieden, zoals schermgebaren, ondersteuning voor verticale titels en panels, een compacte weergavemodus voor titels en panelen, een nieuwe configurator, preview bij mouse-over, het on-screen toetsenbord osdkbd, een venstercombinatiemodus, spraaksynthetizer ondersteuning, en de integratie van de componenten a12net en a12_directory voor netwertransparantie en externe toegang.
Bron: opennet.ru



