← На главную

Инженер Microsoft запустил XFCE на Azure Linux через WSL без XAML

06.06.2026 07:42 · hackernews

Инженер из Microsoft под ником sirredbeard собрал забавный прототип: приложение Azure Linux Desktop, которое запускает полноценный Linux-десктоп внутри окна на Windows. Идею подсказала демка Крейга Лоуэна, но автор пошёл дальше — просто потому, что «у него проблемы». Приложение открывается, стартует встроенный Linux-контейнер, и через пару секунд пользователь видит темизированный XFCE-рабочий стол на Azure Linux 4.0. Аудио, GPU-ускорение, копипаст и ресайз окна — всё работает. Никаких кнопок, терминала или мастеров настройки.

В основе — четыре штуки с Microsoft Build 2026. wslc — новый рантайм для OCI-контейнеров в Windows. Он пока не в стабильном WSL, но код уже в открытом репозитории, и его можно собрать из main. В приложении API используется напрямую: создаётся сессия, загружается образ, стартует контейнер с пробросом порта. Сам интерфейс написан на Microsoft UI Reactor — это новый код-ферст-подход к WinUI 3, где UI пишется на C# композируемыми функциями и хуками, как в React. Ни одного .xaml-файла в проекте нет.

Образ системы — Azure Linux 4.0, который базируется на снимке Fedora 43. Это серверная и контейнерная дистрибуция, в ней нет графических пакетов. Но так как это Fedora под капотом, автор просто добавил репозитории Fedora 43 и натянул XFCE поверх. Он называет это «плохим хаком», но признаёт, что общая пакетная база очень помогает.

Технически всё устроено так: приложение показывает загрузочный экран с логотипом и спиннером. За этим экраном оно проверяет образ десктопа (собирает при первом запуске), затем запускает контейнер через wslc. Внутри контейнера крутится XFCE за XRDP-сервером. Приложение коннектится к нему по loopback, паркует Windows-клиент RDP (mstscax.dll) поверх окна и убирает загрузочный экран. Всё выглядит как один цельный рабочий стол.

Самые хитрые части — там, где куски не стыковались. Спиннер — не гифка, а настоящие композиционные визуалы: шесть точек, бегающих по кругу с анимацией на Vector3-ключах, без единого кадра управляемого кода. Разместить RDP-контрол внутри WinUI-окна было отдельным квестом — DirectX-презентер не рисует при репарентинге через DesktopChildSiteBridge, а сам контрол падает, если создавать его скрытым. Пришлось вынести его в безрамочное WinForms-окно, подвладельческое главному, и приклеивать таймером, следящим за перемещениями.

Пара полезных деталей: SVG-иконки пришлось заранее растрировать в PNG, потому что Fedora 43 использует glycin, который песочничит через bubblewrap, а bubblewrap не может создать user namespace внутри контейнера — иконки отображались как плейсхолдеры. Аудио по RDP работает через pipewire-module-xrdp, собранный под свой PipeWire. В качестве вишенки — XFCE-тема Bluecurve, знакомая по Red Hat 2002 года, плюс в образе лежат Visual Studio Code и PowerShell.

Автор честно предупреждает: это игрушка. Чтобы собрать, нужно компилировать нестабильную версию WSL из исходников, которая заменит установленную, и не стоит делать это на рабочей машине. Но смысл был в другом — взять то, что Microsoft показала на Build 2026, и скрестить это в одно окно. Получилось: Linux-десктоп в контейнере, на Windows, без единой строчки XAML.

Читать оригинал →