After a year of development, the desktop engine Arcan 0.7.1 is released, combining a display server, multimedia framework, and game engine for processing 3D graphics. Arcan can be used to create various graphical systems — from user interfaces for embedded applications to standalone desktop environments. Based on Arcan, the three-dimensional user environment for virtual reality systems Safespaces and the desktop environment Durden have been created. 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 atop various system environments (BSD, Linux, macOS, Windows), using pluggable backends. For instance, it can run atop Xorg, egl-dri, libsdl, and AGP (GL/GLES). Applications based on X11, Wayland, and SDL can be executed under the control of the Arcan display server. The project is developing its fork of the X.org server — xarcan, as well as the compositing server arcan-wayland (waybridge), which allows applications based on Wayland to run. Key criteria applied in the design of the Arcan API include security, performance, and debuggability. To simplify development of interfaces, the Lua language is recommended.

Features of Arcan:
- A blend of composite server, display server, and window manager capabilities.
- Support for operating in a standalone mode, where the Arcan-based application is a self-sufficient entity, working without additional graphical layers.
- An integrated multimedia framework that provides tools for graphics, video and audio streaming, animation, image loading, and working with video capture devices.

- A multiprocess model for connecting data source handlers (e.g., video streams and outputs of running programs).

- A strict privilege separation model—engine components are broken down into small unprivileged processes that interact through the Shmif shared memory interface.
- Built-in tools for monitoring and analyzing process crashes. The engine can serialize the internal state of Lua scripts to simplify debugging.
- Fallback capability to another handler — in case of a failure due to a program error, the engine can launch a backup application while retaining the same external data sources and connections.
- Tools for remote access and desktop connection. Network access is provided by the graphical server "arcan-net," implementing the P2P protocol A12, combining capabilities of technologies such as mDNS (local service discovery), SSH (interactive command line), X11/VNC/RDP (interactive graphical interface), RTSP (media streaming), and HTTP (resource loading and state synchronization).
- The Cat9 command shell, which allows for binding command execution to individual cells that form a semblance of a spreadsheet (demonstration video). The proposed concept allows for redirecting data streams between windows, linking data and handlers across different windows similarly to cells in spreadsheets (for example, one can redirect output from one window to a shell handler running in the terminal and use the result in another window).

Project-related changes:
- The composite server Gamescope, developed by Valve, has been ported, enabling the ability to launch games from Steam without manipulating Xwayland.
- The Qt plugin qtarcan has been improved, allowing Arcan to run applications using Qt5 and Qt6, such as Qbittorrent and Binary Ninja.
- Patches and a script have been created for launching KeepassXC.
- A viewer for the A12 protocol and its interactions is being developed.
- The interactive window manager Lasso is in development.
- A utility Xkbd2Lua has been added to convert keyboard layouts from X11 to a format supported by Arcan.
- Nix packages are being developed to create a bootable working environment based on Arcan, the Durden desktop, and the command shell.
- Support for the post-quantum encryption algorithm ML-KEM has been added.
- The ability for clients to resume interrupted network connections has been added (after reconnection, the application will be rematched without losing its window state).
- The option "—cast" has been added, allowing other users to work with a read-only copy of the application's output.
- The directory server has been updated to support new unified (Unified) and referential (Referential) links, which can be used to combine servers into a single namespace or build chains. serversIn the first case, the group of servers appears as a single server to the user, while in the second, applications can be launched on one. server, connecting to another.
- The API has added the launch_target function for dynamic application launching on the server at the client’s request. A controller can be created for the application — a set of Lua scripts for managing message exchange and resource access.
- Support for external resource resolvers has been added, capable of intercepting storage operations and processing resource request operations, such as organizing local caching or loading data from the Web, BitTorrent, or IPFS instead of serving from local disk.
- A type of thin client has been implemented, allowing the client without the full Arcan stack (having only the Smash viewer) to transfer the execution logic of programs to the server. For example, to launch the durden desktop environment on the myserver server, you can execute “arcan-net —host-appl myserver@ durden”.
- A backend supporting the DAP (Debug Adapter Protocol) for local or remote debugging has been added to the Cat9 command shell.
- A significant number of changes related to the development of the A12 protocol, the Lua script execution environment, the network subsystem, the directory server for linking network-distributed components, the shared memory system Shmif, and the egl-dri module have been added.
Simultaneously, the Durden desktop environment 0.6.3 has been released. The previous release was formed in 2020. Durden supports tiled and classic window layout modes with full control capabilities using the keyboard. It is possible to work in systems with multiple monitors that have different DPI.
An extended clipboard is provided, preserving history changes and available in two variants — global and tied to individual windows. There is support for switching keyboard layouts and working with extended devices such as game controllers. Features such as global menus, window title menus, widgets, and customizable behavior for each window are supported. All settings, including input methods, fonts, and visual effects, can be changed on the fly without needing to reload the configuration.
Version 0.6.3 is a preparatory release ahead of the upcoming Durden 0.7 release, which will introduce a range of significant innovations, such as screen gestures, support for vertical headers and panels, a compact display mode for headers and panels, a new configurator, mouse hover preview, the osdkbd on-screen keyboard, window tiling mode, support for speech synthesis, and integration of a12net and a12_directory components to ensure network transparency and remote access.
Source: opennet.ru



