Nach einem Jahr der Entwicklung ist die Desktop-Engine Arcan 0.6.1 verfügbar, die einen Display-Server, ein Multimedia-Framework und eine Spiel-Engine zur Verarbeitung von 3D-Grafiken vereint. Arcan kann verwendet werden, um verschiedene grafische Systeme zu schaffen, von Benutzeroberflächen für eingebettete Anwendungen bis hin zu eigenständigen Desktop-Umgebungen. Unter anderem wird auf Basis von Arcan der dreidimensionale Desktop Safespaces für Virtual-Reality-Systeme und die Desktop-Umgebung Durden entwickelt. Der Code des Projekts ist in C geschrieben und wird unter der BSD-Lizenz (einige Komponenten unter GPLv2+ und LGPL) vertrieben.
Der neue Release enthält die über das Jahr angesammelten Entwicklungen, die sich hauptsächlich auf die Verbesserung der Subsysteme für den Zugriff auf den Desktop über ein Netzwerk konzentrieren. Im Großen und Ganzen wird der Plan für die Vorbereitung des ersten bedeutenden Releases 1.0 vorgestellt: In der nächsten Version 0.7 wird die Erweiterung des Audiosubsystems, die Verbesserung der Kompatibilität und die Entwicklung von 3D-Grafiktools erwartet. Die Version 0.8 wird sich auf Optimierung und Leistung konzentrieren, während 0.9 sich auf die Gewährleistung der Sicherheit konzentrieren wird.
Zu den auffälligsten Änderungen in der Version Arcan 0.6.1 gehört die Modernisierung des Display Server arcan-wayland, das das Wayland-Protokoll verwendet, in dem eine Schicht zur Verwendung von EGL implementiert ist und standardmäßig Unterstützung für dma-buf enthalten ist. Im X-Server Xarcan wurde die Verarbeitung von GPU-Umschaltungen verbessert und Unterstützung für die Zwischenablage sowie Hardwarebeschleunigung der Cursor-Darstellung hinzugefügt. Die Unterstützung für Bildschirme mit variabler Bildwiederholrate wurde verbessert. Im Eingabesystem wurde die Arbeit zur Verringerung der Latenz fortgesetzt.
Es wurden viele interne Änderungen vorgenommen, die darauf abzielen, die Synchronisation zu verbessern und die Effizienz der Ereigniswarteschlangenverwaltung zu steigern. Die Entwicklung des Grafikservers "arcan-net" für den Remote-Zugriff auf den Desktop über das Netzwerk, der in diesem Server Protokoll A12, das zur Ablösung von SSH/VNC/RDP/X11 entwickelt wird, fortgesetzt. Die Bindungen für die Entwicklung von Komponenten in Lua wurden aktualisiert.
Das vorgeschlagene Konzept von Pipeworld ermöglicht es, Datenströme zwischen Fenstern umzuleiten, indem es Daten und Handler in verschiedenen Fenstern ähnlich wie Zellen in Tabellenkalkulationen verbindet und so einen hybriden Arbeitsablauf erstellt, der grafische und konsolebasierte Schnittstellen kombiniert (z.B. kann die Ausgabe aus einem Fenster in einen im Terminal gestarteten Shell-Handler umgeleitet und das Ergebnis in einem anderen Fenster verwendet werden).

Wir erinnern daran, dass Arcan nicht an ein einzelnes Grafiksystem gebunden ist und über verschiedene Systemumgebungen (BSD, Linux, macOS, Windows) arbeiten kann, indem es pluggable Backends verwendet. So ist es beispielsweise möglich, über Xorg, egl-dri, libsdl und AGP (GL/GLES) zu laufen. Unter der Kontrolle eines Display-Servers können Client-Anwendungen auf Basis von X, Wayland und SDL2 ausgeführt werden. Zu den Schlüsselkriterien, die beim Design von APIs für Arcan angewendet werden, zählen Sicherheit, Leistung und Debugging-Freundlichkeit. Zur Vereinfachung der Entwicklung von Schnittstellen wird empfohlen, die Programmiersprache Lua zu verwenden.
Besonderheiten von Arcan:
- Die Kombination von Rollen eines Composite-Servers, Display-Servers und Window-Managers.
- Die Möglichkeit, im isolierten Modus zu arbeiten, bei dem die Anwendung als eigenständiges Element auftritt.
- Ein integriertes Multimedia-Framework, das Werkzeuge für Grafik, Animation, Streaming von Video und Audio, Bildübertragung und den Umgang mit Videoerfassungsgeräten bereitstellt.
- Ein multiprozessales Modell zur Anbindung von Handlern an dynamische Datenquellen — von Video-Streams bis zur Ausgabe einzelner Programme.
- Strenges Modell der Privilegienaufteilung. Die Komponenten der Engine werden in kleine unprivilegierte Prozesse unterteilt, die über die Schnittstelle des Shared Memory shmif miteinander kommunizieren;
- Integrierte Überwachungs- und Analysewerkzeuge für Abstürze, einschließlich der Möglichkeit, dass die Engine den internen Zustand von Lua-Skripten zur Vereinfachung des Debuggens serialisieren kann;
- Fallback-Funktion, die im Fall eines Fehlers in der Anwendung eine Ersatzanwendung starten kann, während dieselben externen Datenquellen und Verbindungen beibehalten werden;
- Erweiterte Funktionen für die gemeinsame Nutzung, die zur Aufnahme oder Übertragung bestimmter Teilmengen von Audio- und Videoquellen während der Realisierung der Desktop-Freigabe verwendet werden können.
Zusätzlich kann erwähnt werden, dass eine neue Version des Desktops Durden 0.7 in Vorbereitung ist, die für die Verwendung mit Arcan entwickelt wird. In der Version 0.7 wird Unterstützung für die vertikale Anordnung von Fenstertitelleisten und Statuszeilen hinzugefügt, und es wird ein Sprachassistenz-Tool (Text zu Sprache) ergänzt. Durden unterstützt sowohl eine Mosaikoberfläche mit vollständigen Steuerungsmöglichkeiten über die Tastatur als auch einen freien Fensteranordnungsmodus. Alle Einstellungen, einschließlich Eingabemethoden, Schriftarten und visuellen Effekten, können dynamisch geändert werden, ohne dass eine Neukonfiguration erforderlich ist.
Es ist möglich, ein individuelles Verhalten für jedes Fenster zu konfigurieren und einen an das Fenster gebundenen unabhängigen Clipboard-Bereich zu verwenden. Der Betrieb in Systemen mit mehreren Monitoren mit unterschiedlichen DPI wird unterstützt. Es besteht die Möglichkeit, die Anwendungsmenüs in einer Leiste (globales Menü) anzuzeigen oder das Menü in der Fenstertitelleiste zu platzieren. Auf dem Desktop können Widgets platziert werden. Es gibt eine integrierte Funktion zur Videoaufnahme von Aktionen auf dem Desktop und in einzelnen Fenstern. Das Eingabeverwaltungssystem unterstützt den Wechsel von Tastaturlayouts und die Möglichkeit, mit erweiterten Geräten wie Spielcontrollern zu arbeiten.
Quelle: opennet.ru
