Открытый клиент удалённого рабочего стола с тачпадом чехла, общим диском, микрофоном и агентом для 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 как устройство записи, камеры планшета — как обычные веб‑камеры 720 p в 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 47 853 с подписью HMAC, плюс UDP‑канал для команды «переключиться».

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

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

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

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

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

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

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

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

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

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

Как начать

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

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

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

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

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

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

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

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

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

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

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

Репозиторий

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

hiWeb RemoteDesk v1.1 против «Windows App» для Android

1. Назначение и модель работы

hiWeb RemoteDesk

Windows App (Android)

Что это

RDP-клиент «свой ПК + планшет», написан с нуля на Kotlin

Официальный клиент Microsoft (наследник Remote Desktop), закрытый

К чему подключается

Windows (RDP, TLS+NLA) и Ubuntu (GNOME Remote Desktop, порт 3390)

Azure Virtual Desktop, Windows 365, Dev Box, RDS, «Remote PC» (Windows)

Вход

Логин/пароль на каждый ПК, пароли в Android Keystore

Вход в облако (рабочая/учебная учётка Entra), для Remote PC можно без входа
Логин и пароль вводиться всегда вручную, при каждом подключении

Аккаунт Microsoft

не нужен

нужен для облачных сервисов; личная MSA не принимается

Список ПК

свой: карточки, поиск по локальной сети, фильтры, сортировка

лента ресурсов из Entra; Remote PC добавляется вручную

Лицензия

исходники открыты (файла лицензии в репозитории нет)

проприетарная, бесплатная

2. Подключение и сеть

hiWeb RemoteDesk

Windows App (Android)

Поиск ПК в сети

✅ скан подсети + определение ОС по баннеру SSH и ответу RDP

❌ только ввод адреса вручную

Пробуждение по сети (WoL)

✅ будит спящий ПК по MAC и ждёт порт 3389

❌

RD Gateway / прокси

❌ прямое TCP-подключение

✅ шлюзы, прокси, Private Link

RDP Shortpath (UDP, STUN/TURN)

❌ только TCP

✅ управляемые и публичные сети

Сертификат сервера

✅ закрепление по SHA-256

✅ проверка штатными средствами, политики администратора

Сеанс в свёрнутом приложении

✅ foreground-служба держит соединение

не заявлено в документации

3. Экран и графика

hiWeb RemoteDesk

Windows App (Android)

Графический конвейер

свой: bitmap-обновления + RDPEGFX (RemoteFX Progressive), без H.264/AVC

полный стек Microsoft: H.264/HEVC, аппаратное декодирование

Аппаратное ускорение

обычная отрисовка Android

✅ переключатель «Use hardware acceleration when possible»

Поворот экрана

✅ меняет размер рабочего стола на лету (RDPEDISP + GFX), с анимацией

❌ динамическое разрешение на Android не поддерживается: фиксированное «как на устройстве»/своё, ориентация auto/lock

Масштаб интерфейса Windows

✅ 100–300 % на каждый ПК (применяется к новому сеансу)

✅ процент масштаба в «Custom» разрешении

Глубина цвета

✅ 16/24/32 бита на ПК

в интерфейсе Android не настраивается

Несколько мониторов

❌

❌ (на Android); внешний монитор ✅, зависит от устройства

Видео/мультимедиа

PCM-звук; видео играет как картинка

✅ оптимизации Teams (WebRTC), лучше для видео и звонков

4. Ввод — главное отличие

hiWeb RemoteDesk

Windows App (Android)

Тачпад чехла (S9 Ultra)

✅ полноценный тачпад ноутбука: ускорение курсора, левая/правая/средняя кнопка, физический щелчок, калибровка осей

⚠️ тачпад ОС отдаёт как мышь или касания; жесты распознаёт Android до приложения, своей логики тачпада нет

Прокрутка с инерцией

✅ в стиле macOS, сила прокрутки и инерции на каждый ПК

⚠️ обычная прокрутка средствами Android

Щипок / свайпы

✅ щипок = Ctrl+колесо, свайп = назад/вперёд, 3–4 пальца = обзор окон и рабочие столы

⚠️ только штатные жесты Windows App (direct touch / mouse pointer)

Режимы касания

пальцы по столу как мышь

✅ два режима: «direct touch» и «mouse pointer» (у нас аналога нет)

Нативные касания, мультитач, перо с давлением

❌ касания переводятся в мышь/жесты

✅ передаются в сеанс как есть

Win, Alt+Tab и прочие «забранные» сочетания

✅ служба спец. возможностей отправляет их на ПК

⚠️ частично: через панель подключения/настройки, с ограничениями

Экранная клавиатура

✅ своя кнопка, символы уходят скан-кодами или Unicode; скан-коды для IME

✅ значок клавиатуры в панели подключения

Режим скан-кодов/Unicode

✅ по факту (символы скан-кодом либо Unicode-событиями)

✅ переключатель «Use scancode input when available»

Сенсорная клавиатура Windows (TabTip)

✅ через HiWeb Agent: сама всплывает при щелчке в поле ввода

⚠️ только своя экранная клавиатура клиента

5. Устройства, файлы, звук

hiWeb RemoteDesk

Windows App (Android)

Звук ПК на планшете

✅ rdpsnd, только несжатый PCM 16 бит

✅, включая сжатые форматы

Микрофон планшета в Windows

✅ audin (MS-RDPEAI), кнопка в сеансе

✅ переключатель на каждый ПК / общее разрешение

Камера планшета в Windows

✅ MS-RDPECAM, до 720p, MJPG; несколько камер как отдельные устройства

✅ «Камера» в перенаправлении

Буфер обмена

✅ текст в обе стороны

✅ текст в обе стороны (файлы и картинки — нет; односторонний режим на Android не поддерживается)

Файлы через буфер

✅ файл туда и обратно, прогресс, сохранение в Загрузки/RemoteDesk

❌ (только текст)

Общий диск

✅ SAF-папка как \\tsclient\Имя, можно «только для чтения», подключение на лету

✅ «Storage» как сетевой диск; выбор папки на Android не документирован

Принтеры, смарт-карты, USB

❌

❌ на Android (принтеры ❌, смарт-карты ❌)

Геолокация

❌

✅

6. Безопасность

hiWeb RemoteDesk

Windows App (Android)

Транспорт и вход

TLS, NLA (CredSSP/NTLM), закрепление сертификата

TLS, NLA, Entra SSO, passkeys/WebAuthn, внешние идентичности

Пароли на устройстве

AES-GCM, ключ в Android Keystore

хранит токены Entra; пароли ПК — по политике

Защита от кражи экрана и водяные знаки

❌

✅ Screen capture protection (через Intune MAM), водяные знаки

Политики организации

❌

✅ Intune, условный доступ, запрет перенаправлений

Защита самого RDP-порта на ПК

✅ HiWeb Agent: журнал входов, детект подбора пароля, блокировка подсети в брандмауэре

❌ (это задача ПК/шлюза, не клиента)

7. Уникальное у каждого

Только у hiWeb RemoteDesk

  • HiWeb Agent: «Переключиться на Планшет» из трея ПК, уведомления Windows на планшет, превью экрана без сеанса, иконка-ноутбук с батареей.

  • Состояние ПК по-человечески («за ПК работают», «экран заблокирован», «сон») и кнопки питания: через агента, по SSH для Ubuntu или через сеанс RDP.

  • Кнопка «Повернуть» в сеансе, работающая при выключенном автоповороте.

  • Настройки на лету: сила прокрутки/инерции, скорость мыши и колёсика, захват жестов, микрофон.

  • Ubuntu (GNOME Remote Desktop) как полноценная цель, включая питание по SSH.

Только у Windows App

  • AVD, Windows 365 Cloud PC, Dev Box, RDS и RemoteApp — корпоративная инфраструктура целиком.

  • SSO/passkeys, условный доступ, Intune, шифрование политиками.

  • Оптимизации Microsoft Teams, мультимедиа-перенаправление (звонки/видео), Shortpath/UDP.

  • Нативные касания, перо и мультитач Windows, режим «direct touch».

  • Широкая локализация интерфейса (ru-RU в том числе).