Открытый клиент удалённого рабочего стола с тачпадом чехла, общим диском, микрофоном и агентом для Windows — бесплатно, без рекламы и монетизации.

Я веб-разработчик, и моя работа устроена так, что «на связи» нужно быть в самый неожиданный момент: то прод упал в субботу вечером, то заказчик просит срочно поправить одну строчку, то нужно просто посмотреть, как ведёт себя вёрстка на боевом окружении. Всё это — на моём ПК: там настроенные программы, базы, локальный сервер для тестов и все проекты, которые я веду. ПК стоит дома, и уезжать от него далеко не хочется.

Какое-то время я честно пытался решить это ноутбуками. И каждый раз упирался в одно и то же.

Почему ноутбук не подошёл

Ноутбук, который тянет мои задачи, — это тяжёлая машина с шумными вентиляторами и двумя килограммами в рюкзаке. Лёгкий и тонкий — не тянет: ни сборку, ни несколько запущенных сервисов, ни монтаж видео, который мне время от времени тоже нужен.

Вторая проблема оказалась даже неприятнее первой. Ноутбук — это отдельная система, которую надо поддерживать: обновления, настройки, версии SDK, лицензии. И главное — проекты. Всё уже развёрнуто на ПК. Чтобы работать с ноутбука, нужно либо дублировать каждый проект и периодически синхронизировать их, либо каждый раз что-то переносить руками.

Планшет, который лежал без дела

Мои планшеты Samsung Tab S9 Ultra и S7 Plus для тестов
Мои планшеты Samsung Tab S9 Ultra и S7 Plus для тестов

У меня давно есть Android-планшет, и пользуюсь я им часто — но в основном для чтения и видео. Как рабочую машину я его не воспринимал, потому что софта, который решал бы мою задачу, найти не удалось.

Я перепробовал довольно много всего. Приложения для удалённого доступа к ПК в основном работали на «троечку»: картинка есть, но тачпад корректно не поддерживается, клавиатура чехла в полной мере так же не работает, например сочетания клавиш вроде Win или Alt+Tab забирает себе Android, а не Windows. Приложения «для программирования» на планшете — это вообще отдельный жанр: редактор без нормальной сборки, без терминала, без возможности запустить то, что реально крутится у меня на ПК. Для простейшего редактирования — годится. Для работы — нет.

Так что планшет лежал и выполнял роль читалки, а мысль «а неплохо бы работать за ним» оставалась мыслью.

Первый промт и час “плясок” до первого коннекта к ПК

Дальше случилось то, что случилось со всеми нами за последние пару лет: появились инструменты, с которыми можно писать код, не умея писать код для этой платформы. Я не разрабатываю мобильные приложения. Никогда не писал на Kotlin, не открывал Android Studio, не разбирался в жизненном цикле Activity. Но в какой-то момент я понял, что это больше не блокер.

Я поставил Android Studio, набросал макет — как примерно должно выглядеть приложение — и попросил ИИ: «сделай приложение для подключения к моему ПК по стандартному протоколу RDP». Первый результат, разумеется, не заработал. Дальше был час проб и ошибок: дебаг подключения, настройки, TLS, аутентификации, того, что сервер присылает и в каком порядке ожидает ответа.

И вот в какой-то момент на экране планшета — у меня это Samsung Tab S9 Ultra — появился экран моего рабочего ПК, живой рабочий стол Windows, на котором можно уже что-то делать.

Это ощущение сложно описать. Час назад у меня не было приложения, а сейчас у меня на кухонном столе рабочий стол компьютера, который стоит в другой комнате. Первый “отрыв” от рабочего ПК есть. На данный момент, используя NPV (“все имена изменены”:) или внешний IP адрес от провайдера, можно выйти из помещения на свежий воздух и что-то делать вне “4х-стенной тюрьмы”.

Клавиатура, тачпад и прочая «мелочь»

Первое подключение — это процентов десять работы. Остальные девяносто — это довести ощущение до уровня «ноутбук».

Чехол с магнитной клавиатурой и тачпадом у планшета был, но приложение про него ничего не знало: тачпад не работал как тачпад, жесты прокрутки отсутствовали, курсор двигался, но всё это не соответствовало ожиданиям и не давало комфортного ощущения. Пришлось разбираться, как Android отдаёт события от тачпада чехла, как они соотносятся с осями экрана (тачпад в чехле установлен боком — отдельная калибровка), как сделать ускорение курсора, инерцию прокрутки, двупальцевую прокрутку в стиле macOS, щипок как Ctrl + колесо и свайпы назад-вперёд в браузере.

Отдельная песня — сочетания клавиш. Android забирает себе Win, Alt+Tab и много чего ещё, поэтому в приложении появилась служба специальных возможностей, которая перехватывает их и отправляет на ПК. Без неё работать за планшетом с Windows-привычками невозможно.

Потом оказалось, что планшетом хочется пользоваться и без чехла — просто с экрана. Так появились настройки для чисто сенсорного управления, а для смартфона — отдельная раскладка: панель сеанса внизу двумя строками, кнопка «Клавиатура», экранная клавиатура Android, которая работает как ввод на ПК.

Что получилось в итоге

За последние недели приложение обросло функциями, которые я добавлял ровно в тот момент, когда они мне становились нужны.

Рабочий стол. RDP с TLS и NLA, закрепление сертификата ПК по SHA-256. Графика двумя путями: обычные битмап-обновления для Windows и конвейер RDPEGFX для Ubuntu с GNOME Remote Desktop. Сеанс продолжается, даже если свернуть приложение, — служба переднего плана не даёт Android заморозить соединение. При повороте планшета меняется размер рабочего стола, без выхода из сеанса. Масштаб интерфейса Windows и глубина цвета настраиваются на каждый ПК отдельно.

Тачпад чехла как в ноутбуке. Курсор с ускорением, левая-правая-средняя кнопка, физический щелчок, прокрутка двумя пальцами с настраиваемой силой и инерцией, щипок — масштаб, быстрый свайп — назад и вперёд, свайпы тремя-четырьмя пальцами — обзор окон и виртуальные рабочие столы, перетаскивание «лежащий палец + второй палец», как на трекпаде Mac.

Жесты на самом экране. Три-пять пальцев превращаются в сочетания клавиш Windows и GNOME: копировать, вставить, вырезать, отмена, повтор, Alt+Tab, рабочий стол.

Файлы, буфер и звук. Текст через буфер обмена в обе стороны. Файлы тоже: скопировали файл на планшете — вставили на ПК по Ctrl+V, и наоборот. Общий диск — папка планшета видна в Проводнике Windows как сетевой диск, в том числе только для чтения. Звук ПК идёт на планшет. Микрофон планшета виден в Windows как устройство записи, камеры планшета — как обычные веб-камеры 720p в Zoom, Teams и «Камере».

Список компьютеров. Не просто список IP: карточки с живым превью экрана, поиском по сети одной кнопкой, фильтрами по доступности и ОС, человеческими статусами («онлайн», «за ПК работают», «экран заблокирован», «сон», «гибернация», «выключен»). Питание ПК — выключить, перезагрузить, сон, гибернация — тремя путями: через агент, через SSH для Ubuntu или через сеанс RDP, если ничего другого нет. Спящий ПК приложение будит по Wake-on-LAN и ждёт, пока поднимется порт RDP.

HiWeb Agent для Windows. Это необязательная, но очень приятная часть. Агент устанавливается прямо из приложения: exe доставляется на ПК как временный диск через уже открытый сеанс и запускается в окне «Выполнить» — без скачивания, флешек и почты. С ним появляется команда «Переключиться на Планшет» в меню в трее: ПК сам зовёт планшет, сеанс открывается, мониторы гаснут. Уведомления Windows приходят на планшет, пока приложение свёрнуто. Сенсорная клавиатура Windows показывается сама, когда планшет без клавиатуры. А ещё агент следит за журналами RDP: замечает подбор пароля и вход с незнакомого адреса и предлагает заблокировать подсеть в брандмауэре одним нажатием.

Как это устроено под капотом

Самое интересное в проекте — то, что RDP-клиент написан с нуля на Kotlin, без FreeRDP и без NDK. Готовой сборки FreeRDP для Android нет, а тащить в проект чужой протокольный слой мне не хотелось. Получилась цепочка X.224 → TLS → CredSSP/NTLM → MCS → согласование возможностей → графика, плюс статические и динамические каналы: буфер обмена (cliprdr), диск (rdpdr), звук (rdpsnd), микрофон (AUDIO_INPUT), камеры (RDCamera), смена размера стола (RDPEDISP) и агент (HiWeb::Agent). Раскладки PDU я сверял по исходникам FreeRDP — документации по протоколу в открытом доступе много, но местами она расходится с тем, что реально присылает Windows.

Агент для Windows — это C# 5 на .NET Framework 4.8: так его можно собрать компилятором, который уже есть в системе, без установки чего-либо. Связь агент ↔ планшет — по локальной сети по TCP 47853 с подписью HMAC, плюс UDP-канал для команды «переключиться».

Логика, которую можно проверить без устройства, покрыта JVM-тестами: разбор PDU, жесты тачпада и тачскрина, инерция прокрутки, определение ОС по сети, криптография, статусы ПК.

Честные ограничения

Чтобы не создавать ложных ожиданий, сразу скажу, где приложение не всесильно.

Клиент рассчитан на Windows и Ubuntu с GNOME Remote Desktop. Другие RDP-серверы не гарантируются.

Микрофон и камера планшета перенаправляются только в Windows: GNOME Remote Desktop не отдаёт эти

устройства в сеанс.

Камера передаёт несжатый кадр, поэтому ограничена 720p — компромисс ради отсутствия стороннего кодека.

Сенсорная клавиатура Windows и уведомления требуют агента. Без него сеанс полностью работоспособен, просто чуть менее удобен.

Защита RDP работает только на Windows и только с агентом.

На планшете с физической клавиатурой системная клавиатура Android в сеансе не показывается — ввод идёт с клавиатуры и тачпада. Это сделано намеренно.

Как начать

Установить APK на планшет или смартфон (Android 13 и новее).

На ПК включить «Удалённый рабочий стол» в параметрах системы или скриптом из репозитория.

В приложении нажать «Поиск» и добавить найденный ПК — или ввести адрес вручную.

Для Win и Alt+Tab включить службу «RemoteDesk: передача клавиш» в специальных возможностях.

По желанию установить агент кнопкой «Установить агент» в меню сеанса.

При первом запуске тачпад попросит один раз провести пальцем по осям — так приложение узнаёт, как повёрнут тачпад в чехле.

Список ПК: карточки с превью экрана, статусом и кнопками питания.
Список ПК: карточки с превью экрана, статусом и кнопками питания.
Форма ПК: подключение, определение ОС, Wake-on-LAN. Адреса на скриншотах — из документационных диапазонов, превью рабочих столов размыты.
Форма ПК: подключение, определение ОС, Wake-on-LAN. Адреса на скриншотах — из документационных диапазонов, превью рабочих столов размыты.
Масштаб Windows, глубина цвета и поведение ввода — на каждый ПК отдельно.
Масштаб Windows, глубина цвета и поведение ввода — на каждый ПК отдельно.
Микрофон и камеры планшета: каждая камера — отдельное устройство в Windows, с поворотом кадра.
Микрофон и камеры планшета: каждая камера — отдельное устройство в Windows, с поворотом кадра.
Файлы через буфер обмена и общий диск: папка планшета в Проводнике Windows.
Файлы через буфер обмена и общий диск: папка планшета в Проводнике Windows.
Права: приложение работает и без них, каждое включает только свою возможность.
Права: приложение работает и без них, каждое включает только свою возможность.

Заходить на рабочий стол ПК со смартфона - так себе идея, но это тоже работает. В конце концов, кейс с подключением смартфона к дисплею и клавиатуре с мышкой - тоже может оказаться нужным. Поэтому само приложение адаптировано под мобилку.

Тот же сеанс на смартфоне: одна колонка карточек, питание в меню, пальцевое управление.
Тот же сеанс на смартфоне: одна колонка карточек, питание в меню, пальцевое управление.
Форма ПК в узком : те же вкладки, те же настройки.
Форма ПК в узком : те же вкладки, те же настройки.

Вместо заключения

Я делал это приложение для себя — чтобы не носить ноутбук и не дублировать проекты. Оно лежит в открытом доступе, без рекламы, без монетизации, без «премиум-версии». Если кому-то окажется полезным, я буду только рад.

Репозиторий: https://github.com/denmedia/hiweb-remotedesk

Там README с описанием возможностей и сборкой, исходники клиента, исходники агента и протокол агента. Issues и пул-реквесты открыты.

Комментарии (5)


  1. InsiderCrush
    28.10.2026 12:07

    То есть Вы предлагаете нам поставить что Вы там себе навайбкодили? Потом другой умелец с ИИ найдет в Вашем репо в коде кучу уязвимостей и дыр, тем самым скомпрометирует и код этот и репозитарий и Ваш планшет и все установленные на нем проекты, а до кучи еще и наши планшеты с нашими проектам? Хм... надо подумать.


    1. DenMedia Автор
      28.10.2026 12:07

      Да, звучит сомнительно, согласен. Над уязвимостями поработаю.


  1. p7000
    28.10.2026 12:07

    А Windows App от Microsoft из Google Play не подошел?


    1. DenMedia Автор
      28.10.2026 12:07

      Нет, не видел ещё. В моём случае, я в одном приложении реализовал подключение ещё и к Ubuntu, но его я не прорабатывал, как Windows подключение.

      В целом, мне нужно было сделать удобное приложение с теми "фичами", которые меня устраивают и удобны. Проблема в готовых приложениях - в них всегда чего-то не хватает.


  1. AndreyAf
    28.10.2026 12:07

    Микрофон и камера планшета перенаправляются только в Windows: GNOME Remote Desktop не отдаёт эти...


    Помню для одной конторки года три/четыре назад делал проект на FreeRDP именно серверную часть под Linux допиливал (там еще версия была 3.0 начало), работало все, редирект дисков/папок, буфер обмена в обе стороны с картинками, динамическое разрешение экрана, принтеры, звук/микрофоны/видео через pipewire,. можно было добавлять свои каналы типа для редиректа сканера но клиент нужно тоже допиливать.