EvertyDesk Lite: зачем мы написали свой RustDesk-совместимый клиент на Rust и добавили в него ИИ

Всем привет! Меня зовут Артур Валиев. Недавно я уже рассказывал на Хабре о том, как мы собирали собственный RustDesk Pro при помощи патчей и кастомных сборок. Но со временем стало понятно, что нам тесно в рамках обычной кастомизации. Мы захотели пойти намного дальше. Начать стоит немного издалека. Почти пять лет я проработал в районной больнице. И если кто-то когда-либо занимался поддержкой медицинских учреждений, то прекрасно знает этот зоопарк инфраструктуры: старые компьютеры, терминальные серверы, виртуальные машины, Astra Linux, закрытые сети, ограничения безопасности и постоянная необходимость помогать пользователям удалённо. Тогда я постоянно мечтал об одном инструменте: простом удалённом клиенте, который запускался бы везде и не требовал танцев с бубном. Да и помогал мне избегать лишних выездов из теплой кровати. Прошли годы, и теперь мы наконец сделали именно такой инструмент. Так появился EvertyDesk Lite. Это полностью нативный клиент удалённого доступа на Rust и egui. Один бинарник. Без браузера внутри. Без Electron, flutter. Без десятков зависимостей. Без необходимости тянуть половину интернета через репозитории. Причём мы специально проектировали его так, чтобы он запускался даже там, где графический стек уже практически сдался. Astra Linux? РЕД ОС? Пожалуйста, старый марсианский корабль? Работает. Старая виртуалка без нормального OpenGL? Тоже запускается. Для таких случаев мы даже реализовали программную отрисовку интерфейса (Вполне достойную к тому же), чтобы клиент можно было открыть там, где аппаратное ускорение скорее мешает, чем помогает.

https://habr.com/ru/articles/1042428/

#Rust #RustDesk #удалённый_доступ #terminal #AI #системное_администрирование #open_source #egui #remote_desktop #DevOps

EvertyDesk Lite: зачем мы написали свой RustDesk-совместимый клиент на Rust и добавили в него ИИ

Всем привет! Меня зовут Артур Валиев. Недавно я уже рассказывал на Хабре о том, как мы собирали собственный RustDesk Pro при помощи патчей и кастомных сборок. Но со временем стало понятно, что нам...

Хабр

𝗙𝗲𝗿𝗿𝗶𝘁𝗲:

#IDE #Markdown #YAML #TOML #JSON #EGUI #Ferrite

https://thewhale.cc/posts/ferrite

A fast, lightweight text editor for Markdown, JSON, YAML, and TOML files. Built with Rust and egui for a native, responsive experience.

Приложение real-time face swap на чистом Rust: ONNX Runtime, lock-free потоки и 60 кадров в секунду

Большинство инструментов для замены лиц это Python-скрипты, склеенные из PyTorch, OpenCV и надежды. Они работают, но тащат за собой гигабайты зависимостей, требуют правильно настроенного CUDA и разваливаются в тот момент, когда ты пытаешься запустить их в реальном времени. Мне стало интересно: можно ли собрать весь пайплайн на чистом Rust? Без Python. Без PyTorch. Без обёрток. Один бинарник, который скачал, распаковал и запустил. Оказалось, можно. 60 fps на веб-камере. Пайплайн На каждом кадре последовательно отрабатывают четыре нейросети. RetinaFace находит лица и извлекает пять ключевых точек. ArcFace вычисляет 512-мерный эмбеддинг исходного лица. InSwapper принимает регион целевого лица и эмбеддинг источника, на выходе отдаёт заменённое лицо. GFPGAN опционально улучшает результат для более высокого качества. Все четыре модели работают через ONNX Runtime. Никаких кастомных CUDA-ядер, никакого оверхеда фреймворков. Тензор на вход, тензор на выход. Архитектура потоков Три потока, ноль блокировок на горячем пути. Поток захвата получает кадры с веб-камеры через nokhwa и публикует их через ArcSwap. Поток пайплайна подхватывает новые кадры, прогоняет инференс и публикует обработанные кадры через второй ArcSwap. Поток UI читает актуальный буфер и рендерит через egui. Никаких мьютексов на данных кадра. Никаких каналов. Никакого async. Только атомарные счётчики поколений и lock-free замена указателей. Структуры разделяемого состояния занимают ровно по 64 байта каждая и выровнены по кэш-линиям, чтобы исключить false sharing между ядрами. Это проверяется compile-time ассертами.

https://habr.com/ru/articles/1024700/

#Rust #ONNX #Machine_Learning #Computer_Vision #Face_Detection #egui #Open_Source #lockfree #multithreading #realtime

Приложение real-time face swap на чистом Rust: ONNX Runtime, lock-free потоки и 60 кадров в секунду

Большинство инструментов для замены лиц - это Python-скрипты, склеенные из PyTorch, OpenCV и надежды. Они работают, но тащат за собой гигабайты зависимостей, требуют правильно настроенного CUDA и...

Хабр

EGUI's rendering has very nifty trick with the scheduled frames. Your widget can request render for example 500ms from now. Like the text cursor in a text field.

It doesn't make a queue of requests, but keep only the next time it needs to render in memory. Suppose I render something 2ms from now, then the text widget will request render in 498ms from now. On every tick each widget schedules the next one, but latest only counts.

#ImGui doesn't have this, and I wish it did!

#Rust #Egui #GUI

I am still developing my “grab a repo to build and run it” skills with #rust.
On my (mostly up to date) MacOS boxes this is fairly straightforward, but trying to coax code into building and running successfully on older hardware (eg ten year old raspberry pi) is harder and I’m still working out which things to fiddle on Cargo.toml to adjust how things are built. #GLEW #egui #wgpu
gotta have that Positionable toolbar #egui

I got kind of annoyed by Joplin since its app is Electron-based on desktop (meaning 500+ MB of RAM use and a ~15 second startup time), so I made my own notes library called vhm [vulpine headmate] .

I'm almost done with the first client for it, which is egui-based! As soon as it's finished I'm going to jump right into making an Android client so it's cross platform :D

#rust #egui

@notgull egui has a library that hooks into the accessibility tools to interact with the UI programmatically, and renders screenshots that you can commit to the repo to do regression tests in CI.

https://github.com/emilk/egui/tree/main/crates/egui_kittest

#egui #rustlang #accessibility

#rust #egui #accessibility

But people did come up with solutions, like this proposal for Canvas hit testing.

https://www.w3.org/wiki/Canvas_hit_testing?utm_source=chatgpt.com#Change_Proposal

From 2012. That never went anywhere.

Canvas hit testing - W3C Wiki

Seeing that I have a egui web application that is essentially a giant canvas element, making it an opaque blob to all screen-readers, I started looking into why all the smart people working on web technology never came up with a solution to provide some sort of metadata for what a canvas is displaying.

#rust #egui #accessibility