Nach einem Jahr Entwicklung wurde die Desktop-Engine Arcan 0.7.1 vorgestellt, die einen Display-Server, ein Multimedia-Framework und eine Spielengine zur Verarbeitung von 3D-Grafiken vereint. Arcan kann verwendet werden, um verschiedene grafische Systeme zu erstellen — von Benutzeroberflächen für eingebettete Anwendungen bis hin zu eigenständigen Desktop-Umgebungen. Auf der Grundlage von Arcan wurden die 3D-Benutzerumgebung für virtuelle Reality-Systeme Safespaces und die Desktop-Umgebung Durden entwickelt. Der Code des Projekts ist in der Programmiersprache C geschrieben und wird unter der BSD-Lizenz (einige Komponenten unter GPLv2+ und LGPL) verbreitet.
Arcan ist nicht an bestimmte grafische Subsysteme gebunden und kann über verschiedene Systemumgebungen (BSD, Linux, macOS, Windows) arbeiten, wobei anpassbare Backends verwendet werden. Beispielsweise besteht die Möglichkeit, auf Xorg, egl-dri, libsdl und AGP (GL/GLES) zu laufen. Unter dem Display-Server Arcan können Client-Anwendungen auf Basis von X11, Wayland und SDL ausgeführt werden. Das Projekt entwickelt seinen Fork des X.org-Servers — xarcan, sowie den Komposit-Server arcan-wayland (waybridge), der das Ausführen von Anwendungen auf Basis von Wayland ermöglicht. Zu den Schlüsselmerkmalen, die bei der Gestaltung der API von Arcan berücksichtigt werden, gehören Sicherheit, Leistung und Eignung für Debugging. Zur Vereinfachung der Entwicklung von Oberflächen wird empfohlen, die Sprache Lua zu verwenden.

Besonderheiten von Arcan:
- Kombination der Funktionalitäten eines Komposit-Servers, eines Display-Servers und eines Fenster-Managers.
- Unterstützung des Betriebs im isolierten Modus, bei dem die auf Arcan basierenden Anwendungen eigenständig funktionieren, ohne zusätzliche grafische Schichten.
- Integriertes Multimedia-Framework, das Werkzeuge zur Arbeit mit Grafiken, zur Verarbeitung von Streaming-Videos und -Audios, zur Animation, zum Laden von Bildern und zur Zusammenarbeit mit Videoerfassungsgeräten bereitstellt.

- Multiprozessmodell zur Anbindung von Handlern für Datenquellen (z. B. Video-Streams und Ausgaben von gestarteten Programmen).

- Striktes Modell der Trennung von Rechten — die Engine-Komponenten werden in kleine, nicht privilegierte Prozesse aufgeteilt, die über die Schnittstelle des gemeinsamen Speichers Shmif interagieren.
- Integrierte Tools zur Überwachung und Analyse von Anwendungsabstürzen. Die Engine kann den internen Zustand von Lua-Skripten zur Vereinfachung des Debuggings serialisieren.
- Fallbacks auf einen anderen Handler — im Falle eines Fehlers aufgrund eines Programmfehlers kann die Engine eine Backup-Anwendung starten, wobei dieselben externen Datenquellen und Verbindungen beibehalten werden.
- Hilfsmittel für den gemeinsamen Zugriff und die Fernverbindung zum Desktop. Der Netzwerkzugang wird durch den Grafikserver „arcan-net“ bereitgestellt, der das P2P-Protokoll A12 implementiert. Dieses kombiniert die Möglichkeiten solcher Technologien wie mDNS (lokale Dienstbestimmung), SSH (interaktive Textshell), X11/VNC/RDP (interaktive grafische Oberfläche), RTSP (Streaming von Multimedia-Inhalten) und HTTP (Ressourcendownload und Zustandsynchronisierung).
- Die Kommandozeile Cat9, die die Ausführung von Befehlen an einzelnen Zellen bindet, die eine Art elektronisches Tabellenblatt bilden (Video mit einer Demonstration). Das vorgeschlagene Konzept ermöglicht das Umleiten von Datenströmen zwischen Fenstern, indem Daten und Handler in verschiedenen Fenstern ähnlich wie in Tabellenzellen verbunden werden (zum Beispiel kann die Ausgabe aus einem Fenster an einen laufenden Shell-Handler im Terminal umgeleitet und das Ergebnis in einem anderen Fenster verwendet werden).

Mit dem Projekt verbundene Änderungen:
- Der von Valve entwickelte Composite-Server Gamescope wurde portiert, mit dem die Möglichkeit geschaffen wurde, Spiele aus Steam ohne Manipulationen mit Xwayland zu starten.
- Das Qt-Plugin qtarcan wurde verbessert, das die Ausführung von Anwendungen in Arcan ermöglicht, die Qt5 und Qt6 verwenden, wie Qbittorrent und Binary Ninja.
- Es wurden Patches und Skripte erstellt, um KeepassXC auszuführen.
- Ein Viewer für das A12-Protokoll und die Interaktion darüber wird entwickelt.
- Ein interaktiver Fenstermanager Lasso wird entwickelt.
- Ein Werkzeug Xkbd2Lua wurde hinzugefügt, um Tastaturlayouts von X11 in ein von Arcan unterstütztes Format zu konvertieren.
- Es werden nix-Pakete entwickelt, um eine Arbeitsstartumgebung auf Basis von Arcan, dem Durden-Desktop und der Kommandozeile zu schaffen.
- Die Unterstützung des post-quanten Verschlüsselungsalgorithmus ML-KEM wurde hinzugefügt.
- Die Möglichkeit, unterbrochene Netzwerkverbindungen durch Clients wiederherzustellen, wurde hinzugefügt (nach Wiederherstellung der unterbrochenen Verbindung wird die Anwendung erneut verbunden, ohne dass der Zustand ihres Fensters verloren geht).
- Eine Option „—cast“ wurde hinzugefügt, die es anderen Benutzern ermöglicht, mit einer Kopie der Anwendungsausgabe im Nur-Lese-Modus zu arbeiten.
- Im Verzeichnisdienst wurde die Unterstützung neuer einheitlicher (Unified) und referenzieller (Referential) Links hinzugefügt, mit denen Server in einem einheitlichen Namensraum zusammengeführt oder Ketten aufgebaut werden können. ServerIm ersten Fall sieht die Gruppe von Servern für den Benutzer wie ein einzelner Server aus, während im zweiten Fall Anwendungen auf einem Server gestartet werden können, indem man sich mit einem anderen verbindet. Server.
- Im API wurde die Funktion launch_target hinzugefügt, um Anwendungen auf dem Server auf Anfrage des Clients dynamisch zu starten. Für die Anwendung kann ein Controller erstellt werden – eine Sammlung von Lua-Skripten zur Steuerung des Nachrichtenaustauschs und zum Zugriff auf Ressourcen.
- Die Unterstützung externer Ressourcenlösungen (External Resource Resolver) wurde hinzugefügt, die Operationen mit dem Arcan-Speicher abfangen und Ressourcenanforderungen bearbeiten können, zum Beispiel lokale Caching-Mechanismen oder Datenübertragungen aus dem Web, BitTorrent oder IPFS anstelle der Auslieferung von der lokalen Festplatte.
- Ähnlichkeiten mit dünnen Clients wurden realisiert, die es dem Client erlauben, ohne den vollständigen Arcan-Stack (nur mit dem Smash-Viewer) die Programmausführungslogik auf den Server zu verlagern. Zum Beispiel kann zur Ausführung der Desktop-Umgebung durden auf dem Server myserver der Befehl «arcan-net —host-appl myserver@ durden» verwendet werden.
- In die Cat9-Shell wurde ein Backend mit einem Debugger integriert, der das DAP (Debug Adapter Protocol) für lokale oder remote Debugging unterstützt.
- Eine große Anzahl von Änderungen, die die Entwicklung des A12-Protokolls, die Umgebung zur Ausführung von Skripten in Lua, die Netzwerkinfrastruktur, den Verzeichnisdienst zur Vernetzung über das Netzwerk verteilten Komponenten, das Shared Memory-System Shmif und das egl-dri-Modul betreffen, wurde implementiert.
Gleichzeitig wurde die Version der Desktop-Umgebung Durden 0.6.3 veröffentlicht. Die vorherige Version wurde im Jahr 2020 erstellt. In Durden werden mosaik- und klassische Fensteranordnungen mit vollständigen Steuerungsmöglichkeiten über die Tastatur unterstützt. Die Verwendung in Systemen mit mehreren Monitoren mit unterschiedlichem DPI ist möglich.
Es wird ein erweiterter Zwischenspeicher bereitgestellt, der die Änderungsverläufe speichert und in zwei Varianten verfügbar ist – global und in Bezug auf einzelne Fenster. Es gibt Unterstützung für das Umschalten von Tastaturbelegungen und die Arbeit mit erweiterten Geräten wie Game Controllern. Funktionen wie ein globales Menü, ein Menü in der Fensteroberfläche, Widgets und die Anpassung des spezifischen Verhaltens für jedes Fenster werden ebenfalls unterstützt. Alle Einstellungen, einschließlich Eingabemethoden, Schriftarten und visuellen Effekten, können dynamisch geändert werden, ohne dass eine Neukonfiguration erforderlich ist.
Die Version 0.6.3 ist eine vorbereitende Veröffentlichung vor dem in Entwicklung befindlichen Release von Durden 0.7, das eine Reihe wesentlicher Neuerungen bieten wird, darunter Bildschirmgesten, Unterstützung für vertikale Überschriften und Panels, einen kompakten Anzeige-Modus für Überschriften und Panels, einen neuen Konfigurator, eine Vorschau beim Überfahren mit der Maus, die Bildschirmtastatur osdkbd, einen Fenstermodus und die Unterstützung eines Sprachsynthesizers sowie die Integration der Komponenten a12net und a12_directory zur Gewährleistung von Netztransparenz und Fernzugriff.
Quelle: opennet.ru



