Xpra (аббревиатура от «X Persistent Remote Applications») — это программный комплекс, предназначенный для удалённой пересылки отдельных X-приложений или целых рабочих столов. Он позволяет запускать X11-программы на одном хосте (часто удалённом) и отображать их окна на другом хосте, при этом сессия остаётся активной, даже если сетевое соединение прерывается или клиент отключается. При повторном подключении состояние приложений сохраняется без необходимости их перезапуска. Исторически проект возник как ответ на ограничения стандартной X-форвардинга и решений типа VNC, когда либо теряется состояние при отключении, либо все приложения собраны вместе в рамке, отличной от местного оконного менеджера.
Xpra реализован как сервер-клиент: серверная часть запускается на удалённой машине или на машине, где находятся X-приложения, и может использовать виртуальный X-сервер, например Xvfb или Xdummy, либо «теневой» режим уже существующего X-дисплея. Клиентская часть работает на локальной машине и отображает окно приложения так, что оно выглядит как обычное приложение, управляемое локальным оконным менеджером, а не как часть удалённого рабочего стола. Поддерживаются разные способы подключения (SSH, TCP, SSL/TLS, WebSocket/HTML5), что даёт гибкость в условиях сети, включая низкую пропускную способность или высокую задержку.
- Сохранение состояния при отключении: запущенные приложения продолжают работать на сервере, если клиент отключился, и при подключении заново отображаются на клиенте без потери данных и интерфейса.
- Раздельные окна (“rootless” режим): удалённые приложения выглядят как обычные локальные окна на экране клиента, их окна не заключены в один контейнер-рабочий стол.
- Множество способов соединения: SSH, TCP, SSL, WebSocket / HTML5 клиент, что позволяет работать через разные сети и защищённые каналы.
- Поддержка звука, буфера обмена, системного трея и уведомлений: пересылка звукового ввода/вывода, синхронизация clipboard, проверки уведомлений, печати и других дополни-тельных служб.
- Работа с существующими дисплеями: режим shadow позволяет подключаться к уже запущенным X-сессиям, отображать или управлять ими удалённо.
- Виртуальные дисплеи и Nested-режимы: использование виртуальных X-серверов или вложенных X11-сессий, что позволяет запускать десктоп-среды или приложения без непосредственного графического окружения на сервере.
- Адаптивность к условиям сети: возможности сжатия изображений (JPEG, PNG и др.), изменение качества в зависимости от пропускной способности, устойчивость к потере пакетов или высоким задержкам.
- Кроссплатформенная поддержка: сервер и клиент работают на Unix-подобных системах, есть версии для Windows и macOS, а также веб-клиент через HTML5.
- Безопасность: поддержка аутентификации, шифрования при передаче данных, возможность защиты подключения паролем, SSL/TLS, использование SSH-туннелей.