LINUX.ORG.RU
ФорумTalks

Меня огорчает Remote Desktop в Linux

 , , ,


1

3

Нет, правда, это какое-то проклятье.

Есть KDE 6.3. В нем есть только RDP. В целом ок, почему нет. В RDP есть h264. ffmpeg умеет его кодировать/декодировать через GPU. FreeRDP (основная клиентская библиотека для клиентов в Linux) умеет ffmpeg. Казалось бы, все хорошо. НО НЕТ. Сервер, судя по всему, делает кодирование аппаратно, а вот клиент, несмотря на опциальную поддержку VAAPI, все равно скатывается в CPU и тормозит как полумертвая героиновая шлюха со сгнившим мозгом. Причем любой клиент, потому что все они по сути врапперы над libfreerdp-client.so.

С гномом примерно та же история, потому что FreeRDP.

Тем временем у аутистов из тусовки вокруг wlroots все прекрасно работает через VNC. Есть wayvnc, есть wlvncc, и используя эту парочку и sway/labwc можно наслаждаться 4k@60Hz через аппаратный h264 с низким задержками, достаточными чтобы даже в игрушки играться. Да, надо обмазаться скриптами и руками надрочить разницу в скалировании, разрешениях и так далее, но в итоге оно работает.

Как так вышло-то?



Последнее исправление: gaylord (всего исправлений: 1)

Тем временем у аутистов из тусовки вокруг wlroots все прекрасно работает через VNC.

X11vnc? TigerVNC?

Kroz ★★★★★
()
Ответ на: комментарий от buddhist

Ты используешь проприетарный виндовый протокол, а виноват в этом линукс?

Во-первых спеки на него есть, во-вторых поддержка h264 в проводе реализована. Не реализовано только аппартное декодирование.

gaylord
() автор топика
Ответ на: комментарий от buddhist

Проприетарный != закрытый

Я к тому, что твой заход вообще ни о чем. То, что в FreeRDP по какой-то странной причине не работает аппаратное декодирование, хотя сама библиотека пишет что использует VAAPI вот-прям-мамой-клянусь, не имеет отношение к проприетарности протокола.

gaylord
() автор топика
Последнее исправление: gaylord (всего исправлений: 2)
Ответ на: комментарий от gaylord

Так надо пользоваться универсальными решениями. Во времена xorg, тот же x11vnc одинаково работал, в любом ДЕ. В чем проблема пользоваться wayvnc/wlvncc, не понимаю, протоколы же одинаковые wayland и vnc.

einhander ★★★★★
()
Последнее исправление: einhander (всего исправлений: 1)
Ответ на: комментарий от gaylord

А я к тому, что с линуксе rdp поддерживается по остаточному принципу, поэтому странно причитать, что что-то в нём работает не так, как должно.

buddhist ★★★★★
()
Ответ на: комментарий от einhander

Так надо пользоваться универсальными решениями. Во времена xorg, тот же x11vnc одинаково работал, в любом ДЕ.

Он одинаково везде тормозил, потому что не умеет аппаратного h264.

В чем проблема пользоваться wayvnc/wlvncc, не понимаю, протокол же один Wayland и vnc.

Там приватные расширения wlroots :)))

gaylord
() автор топика
Ответ на: комментарий от buddhist

А я к тому, что с линуксе rdp поддерживается по остаточному принципу, поэтому странно причитать, что что-то в нём работает не так, как должно.

Што? Это буквально единственный remote desktop в последнем KDE. В GNOME это дефолт, VNC там опцией идет.

gaylord
() автор топика
Ответ на: комментарий от gaylord

Так тебе картинку показывать надо или не надо?

приватные расширения

И что, у нас теперь программы от гнома в кедах не работают? Как классно придумано.

einhander ★★★★★
()
Ответ на: комментарий от einhander

Так тебе картинку показывать надо или не надо?

Мне надо её показывать быстро. Медленно не имеет смысла. Это не решает задачу.

И что, у нас теперь программы от гнома в кедах не работают? Как классно придумано.

Это программы от wlroots, но да.

gaylord
() автор топика
Ответ на: комментарий от buddhist

А линукс-то причём здесь? Чем он виноват?

Линукс здесь притом, что в 2025 году в одном из двух мейнстримных DE нельзя пошарить 4k экран с приемлемой задержкой.

gaylord
() автор топика
Последнее исправление: gaylord (всего исправлений: 1)
Ответ на: комментарий от gaylord

Только что проверил.

Под вяленым сервер отлично делается Krfb (нативно KDE), а подключается из TigerVNC.

Кажется я даже этим пользовался.

Надеюсь, я ответил на вопрос. Но, а теперь я перелогиниваюсь в Иксы, буду дальше ждать когда вяленого допилят (под вяленым DPI слетело, ну и другого по мелочи).

Kroz ★★★★★
()
Ответ на: комментарий от Kroz

Под вяленым сервер отлично делается Krfb (нативно KDE), а подключается из TigerVNC.

Там та же проблема, но уже со стороны krfb, который не умеет h264 кодировать через GPU :)))

gaylord
() автор топика
Ответ на: комментарий от gaylord

Бывает, но ты так и не ответил, причём тут собственно линукс. Разработчикам линукса нужно бросить свою работу и начать дружно запиливать аппаратное ускорение для rdp в кедах/гноме?

buddhist ★★★★★
()
Ответ на: комментарий от buddhist

Бывает, но ты так и не ответил, причём тут собственно линукс. Разработчикам линукса нужно бросить свою работу и начать дружно запиливать аппаратное ускорение для rdp в кедах/гноме?

Да, неплохо было бы.

gaylord
() автор топика

Это ещё фигня.

В оффтопике, когда подключаешься через RDP, ты по сути находишься в отдельной сессии с виртуальным седлом, в комплекте «монитора» (виртуального), мышеклавы, динамиков (которые пробрасывают звук на клиент), виртуального микрофона (по желанию) + подключаются плюшки в виде принтеров, смарт-карт и даже ФС можно с клиента пробросить по псевдосамбе.

При том, твоя безголовая сессия может гулять туда сюда. Т.е. если после этого физически сядешь за комп и залогинишься, то все программы отобразятся в неизменном виде, как и были. И наоборот тоже работает. Если подключиться после физического доступа, то всё прекрасно уйдёт обратно в безголовый режим…

Ещё и настолько всё отлажено, что не зависит от количества мониторов. У тебя на физическом входе может быть их хоть три, но при подключении, все программы сваливаются в один «монитор», с любым нужным разрешением. И наоборот.

И вся эта магия доступна в комплекте с обычным клиентским оффтопиком…

Блин, вот единственная штука, по которой плачу на онтопике. Все эти RDP доступы в KDE это лишь жалкая имитация отлаженной десятилетиями плюшки от копрорации осла. Это не удалённый рабочий стол, это УДАЛЁННОЕ УПРАВЛЕНИЕ с трансляцией экрана. И если этого экрана не будет, то не будет и удалённого рабочего стола!

Я попробовал воспользоваться фичей, отключив монитор. Получил фигу на воротник. Ну и нафиг оно такое надо? Для техподдержки в копроративной среде может и пригодится, чтобы не бегать ножками к пользователю. Но это не УДАЛЁННЫЙ РАБОЧИЙ СТОЛ. Это больше напоминает теневой доступ (RDP Shadow), я им вместо удалённого помощника и стороннего софта пользуюсь.

А вот когда завезут удалённый рабочий стол? Хз. :(

egzakharovich
()
Ответ на: комментарий от egzakharovich

В оффтопике, когда подключаешься через RDP, ты по сути находишься в отдельной сессии с виртуальным седлом, в комплекте «монитора» (виртуального), мышеклавы, динамиков (которые пробрасывают звук на клиент), виртуального микрофона (по желанию) + подключаются плюшки в виде принтеров, смарт-карт и даже ФС можно с клиента пробросить по псевдосамбе.

Лялекс это, кстати, тоже умеет.

При том, твоя безголовая сессия может гулять туда сюда. Т.е. если после этого физически сядешь за комп и залогинишься, то все программы отобразятся в неизменном виде, как и были. И наоборот тоже работает. Если подключиться после физического доступа, то всё прекрасно уйдёт обратно в безголовый режим…

А вот этого да, не хватает.

gaylord
() автор топика
Ответ на: комментарий от buddhist

А ничего другого нет. Через SSH картинку не передать. А VNC весь такой юниксвейный, делает только одно, но тупой, и до удалённого рабочего стола не дотягивает…

egzakharovich
()
Ответ на: комментарий от egzakharovich

А ничего другого нет. Через SSH картинку не передать. А VNC весь такой юниксвейный, делает только одно, но тупой, и до удалённого рабочего стола не дотягивает…

Аутисты из wlroots породили специальный протокол, который позволяет создать transient seat и HEADLESS дисплей. И wayvnc это даже умеет. Т.е. оно создает тебе как раз то, что должен бы создавать RDP. Но это разумеется никак не интегрировано и тебе надо обмазываться скриптами для wayvnc и страдать.

gaylord
() автор топика
Последнее исправление: gaylord (всего исправлений: 2)
Ответ на: комментарий от gaylord

Попробовал: wayvnc и правда не работает.

Лишний раз подтверждает, что иксы хоронить рановато… :)

Kroz ★★★★★
()
Ответ на: комментарий от Kroz

Лишний раз подтверждает, что иксы хоронить рановато… :)

Так а что в иксах умеет vnc со стороны сервера с аппаратным кодированием?

gaylord
() автор топика
Ответ на: комментарий от egzakharovich

Создай тикет чтоли, это больше похоже на баг.

Я rustdesk поставлю сперва, возможно там все хорошо. Я не уверен что хочу ходить с багами в FreeRDP, я не для этого DE ставил.

gaylord
() автор топика
Ответ на: комментарий от gaylord

Есть ещё один фактор, почему у RDP аналоговНет.

Потому что RDP, он как пробросы портов в SSH, может выступать транспортом для всякого. Смарт-карты, принтеры, да даже USB-IP при желании.

Ещё он умеет в UDP.

egzakharovich
()
Ответ на: комментарий от egzakharovich

Потому что RDP, он как пробросы портов в SSH, может выступать транспортом для всякого. Смарт-карты, принтеры, да даже USB-IP при желании.

И звук! В VNC оно только в qemu есть.

gaylord
() автор топика
Ответ на: комментарий от gaylord

но да

Плохо работают, надо чтобы работоспособность прог зависела не только от ДЕ, но и погоды на марсе. Идиотизм.

einhander ★★★★★
()
Ответ на: комментарий от einhander

Плохо работают, надо чтобы работоспособность прог зависела не только от ДЕ, но и погоды на марсе. Идиотизм.

Да ладно, вспомни EVMH или как его там. Это же тоже был полный треш.

gaylord
() автор топика
Ответ на: комментарий от egzakharovich

Причём тут DE, если аппаратного ускорения нет на уровне клиента?

Потому что в KDE есть KRDC и я надеялся что он нормальный и все будет хорошо. А там опять тонкий слой ручек поверх FreeRDP и придется идти к этим людям в багтрекер и убеждать их сделать хорошо.

gaylord
() автор топика
Последнее исправление: gaylord (всего исправлений: 1)
Ответ на: комментарий от egzakharovich

Через SSH картинку не передать. А VNC весь такой юниксвейный, делает только одно, но тупой, и до удалённого рабочего стола не дотягивает…

Как вариант, только сделать такую лапшу, что коннектишься по SSH, а там тебе пробрасывается VNC, pipewire, pkcsd, ssh-агент, gpg-агент, WebDAV… Что только можно пробросить по сети.

ХЗ как при этом всём богатстве будет вести себя картинка, у которой по сути realtime приоритет, но никто пока до этого не додумался.

egzakharovich
()
Ответ на: комментарий от einhander

Не помню, чтобы до EWMH были какие-то серьёзные проблемы.

Тайлинги были постоянно сломаны потому что кто-то неправильные типы окон в программах ставил.

gaylord
() автор топика
Ответ на: комментарий от egzakharovich

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

gaylord
() автор топика
Ответ на: комментарий от gaylord

Моя любознательность имеет пределы.

Поэтому в данном вопросе остановился на общении с ChatGPT.

Надеюсь, не нужно говорить, что всему нижесказанному верить нельзя. Но направление даёт. P. S. зависимость в TigerVNC от ffmpeg я обнаружил.

Так а что в иксах умеет vnc со стороны сервера с аппаратным кодированием?


ChatGPT said:
Сервер VNC с аппаратным кодированием (например, через GPU) умеет снимать кадры рабочего стола (X-сессии) и сразу кодировать их в видеопоток (обычно H.264, иногда HEVC) аппаратными средствами. Это снижает нагрузку на CPU и позволяет достичь более высокой частоты кадров и меньших задержек при передаче, особенно на высоких разрешениях.

Такие решения часто используются в профессиональных системах удалённого доступа (например, NVIDIA GRID, AMD Remote Workstation) или специализированных сборках x11vnc/VirtualGL/TigerVNC с поддержкой аппаратного ускорения. Сам по себе протокол VNC прост, но с аппаратным энкодером он становится более конкурентоспособным с RDP и PCoIP по качеству видео и отклику.

Нужны примеры таких серверов или софт, который это поддерживает?







You said:
Нужны примеры


ChatGPT said:
Вот несколько примеров VNC-серверов и решений с поддержкой аппаратного кодирования:

TurboVNC + VirtualGL — популярное решение для Linux, использует аппаратное ускорение OpenGL через VirtualGL и может подключать аппаратные видеокодеки (через ffmpeg, VAAPI, NVENC) для ускоренной передачи.

NVIDIA GRID / RTX Virtual Workstation — коммерческое решение от NVIDIA для виртуализации рабочих станций с аппаратным кодированием H.264/HEVC на GPU.

TigerVNC — базовый сервер не использует аппаратное кодирование напрямую, но может быть собран с поддержкой внешних энкодеров через ffmpeg.

x11vnc + ffmpeg — можно собрать вручную связку, где x11vnc передаёт захваченные кадры через ffmpeg с аппаратным энкодером (например, NVENC, QuickSync).

Если хочешь, могу собрать конкретные команды или конфиги для такого сценария. Хочешь?







You said:
Да. Для x11vnc + ffmpeg


ChatGPT said:
Вот пример базовой схемы для x11vnc + ffmpeg с использованием аппаратного кодирования (например, NVENC):

1️⃣ Запускаешь x11vnc, чтобы он выводил захваченный экран как raw-стрим:

bash
Copy
Edit
x11vnc -display :0 -viewonly -raw-fb -o /tmp/x11vnc.raw
2️⃣ Передаёшь этот raw-стрим в ffmpeg (с аппаратным энкодером):

bash
Copy
Edit
ffmpeg -f rawvideo -pix_fmt rgb24 -s 1920x1080 -i /tmp/x11vnc.raw \
-c:v h264_nvenc -preset fast -b:v 5M -f mpegts udp://<client_ip>:1234
Здесь:
✅ -c:v h264_nvenc — аппаратное кодирование через NVIDIA NVENC.
✅ -preset fast — баланс качества/скорости.
✅ udp://<client_ip>:1234 — отправка по сети.

Этот пример упрощённый: в реальных сценариях придётся подгонять разрешение, частоту кадров (-r), возможно, использовать -vf для преобразования форматов. Также стоит настроить x11vnc на работу без большого лага (например, уменьшить polling).

Если хочешь, могу собрать более конкретный скрипт под твою задачу (укажи разрешение, частоту кадров, протокол доставки). Нужно?







You said:
Пример для TigerVNC сервера с поддержко внешний кодеков. Gentoo linux.


ChatGPT said:
Для TigerVNC на Gentoo с поддержкой внешних кодеков (например, ffmpeg с NVENC) нужно собрать TigerVNC с нужными USE-флагами и прописать внешний encoder.

Вот примерный порядок:

1️⃣ Собери TigerVNC с ffmpeg:
В make.conf или через package.use добавь:

bash
Copy
Edit
net-misc/tigervnc ffmpeg
2️⃣ Установи ffmpeg с поддержкой NVENC:

bash
Copy
Edit
media-video/ffmpeg nvenc
3️⃣ Настрой запуск TigerVNC:
В конфиге /etc/tigervnc/vncserver-config-defaults или в профиле пользователя пропиши:

python
Copy
Edit
$ vncserver :1 -geometry 1920x1080 -SecurityTypes None
4️⃣ Настрой внешний encoder (если TigerVNC собран с поддержкой ffmpeg):
В Gentoo, как правило, TigerVNC напрямую не использует внешний ffmpeg encoder, но можно прокинуть его через внешний stream, например:

bash
Copy
Edit
vncserver :1
ffmpeg -f x11grab -s 1920x1080 -i :1 -c:v h264_nvenc -b:v 5M -f mpegts udp://<client_ip>:1234
Это позволяет использовать аппаратное кодирование поверх сессии VNC.

Если хочешь, могу подготовить конкретный unit-файл или скрипт для автозапуска. Подскажи, нужно ли?







You said:
Пример TurboVNC + VirtualGL  поддержкой внешний кодеков


ChatGPT said:
Вот пример связки TurboVNC + VirtualGL с использованием внешнего ffmpeg-энкодера (например, с NVENC):

1️⃣ Установи TurboVNC и VirtualGL:
На Gentoo:

bash
Copy
Edit
emerge net-misc/turbovnc net-misc/virtualgl media-video/ffmpeg
2️⃣ Запусти TurboVNC сервер:

bash
Copy
Edit
vncserver :1 -geometry 1920x1080 -depth 24
3️⃣ Запускай OpenGL-программы через VirtualGL:

bash
Copy
Edit
vglrun <OpenGL-программа>
4️⃣ Перехвати VNC-вывод с ffmpeg:
Если хочешь передавать поток с аппаратным кодированием (например, H.264 через NVENC):

bash
Copy
Edit
ffmpeg -f x11grab -video_size 1920x1080 -i :1 -c:v h264_nvenc -preset fast -b:v 5M -f mpegts udp://<client_ip>:1234
Это позволяет:
✅ VirtualGL использовать GPU-рендеринг.
✅ ffmpeg аппаратно кодировать готовую картинку для быстрой доставки.

Если хочешь, могу написать готовый скрипт, объединяющий эти шаги (с автоматическим запуском). Хочешь? 

Kroz ★★★★★
()
Ответ на: комментарий от Kroz

зависимость в TigerVNC от ffmpeg я обнаружил.

Он точно умеет со стороны клиента, это туда @liksys носил.

gaylord
() автор топика
Последнее исправление: gaylord (всего исправлений: 1)
Ответ на: комментарий от gaylord

А можно ещё вопрос: а это для домашнего использования? Если да, то Google Remote Desktop - просто идеален. Под вяленым я его не завёл, но иксы, винда - работает идеально. Если фактор религии не существенен, то могу рекомендовать. Пользуюсь регулярно.

Kroz ★★★★★
()
Последнее исправление: Kroz (всего исправлений: 1)
Ответ на: комментарий от Kroz

А можно ещё вопрос: а это для домашнего использования? Если да, то Google Remote Desktop - просто идеален. Под вяленым я его не завёл, но иксы, винда - работает идеально. Если фактор религии не существенен, то могу рекомендовать.

Да, для домашнего. Я думаю попробовать rustdesk, если нет, заценю это, спасибо.

Меня просто порвало оттого что вроде бы такая базовая штука все ещё не работает, несмотря на то, что все кубики присутствуеют и в других местах (wayvnc) из тех же кубиков все собрали нормально.

gaylord
() автор топика
Последнее исправление: gaylord (всего исправлений: 1)
Ответ на: комментарий от gaylord

Это буквально единственный remote desktop в последнем KDE. В GNOME это дефолт, VNC там опцией идет.

Кеды... гномы... Вам узко заточенные из оболочки что ли трэба, ака как винде, ПКМ-кляц-блямс... ?

anc ★★★★★
()
Ответ на: комментарий от anc

Кеды… гномы… Вам узко заточенные из оболочки что ли трэба, ака как винде, ПКМ-кляц-блямс… ?

В определенный момент я пришел к мысли что я не хочу пердолиться больше. Вот эти все скрипты, руками в ffmpeg, прочее говно. Это должно быть решенной задачей. В венде же решили? Вроде да. Может и в лялексе смогли? Пока что впечатления смешанные.

gaylord
() автор топика
Ответ на: комментарий от egzakharovich

Есть ещё один фактор, почему у RDP аналоговНет.

Вообще у x2go (и других ответвлений продуктов NoMachine) в фичах есть и client-side printing, и sound support, и shared folders.

Правда, подключения к существующей обычной X-сессии нет. Но полагаю, к ней можно подключится локально.

К слову, когда я попытался под оффтопиком настроить аналог x2go (RDP в режиме seamless mode) у меня тоже ничего хорошего не вышло - по невыясненным причинам окна seamless app подвисали.

MirandaUser2
()
Ответ на: комментарий от gaylord

Линукс здесь притом, что в 2025 году в одном из двух мейнстримных DE нельзя пошарить 4k экран с приемлемой задержкой.

Вы не поверите, но посчитайте размер одного кадра вашего 4k потом умножьте на кол-во кадров в секунду и как минимум поймете требование к скорости интерфейса для передачи этой тряхомундии.

anc ★★★★★
()
Ответ на: комментарий от anc

Вы не поверите, но посчитайте размер одного кадра вашего 4k потом умножьте на кол-во кадров в секунду и как минимум поймете требование к скорости интерфейса для передачи этой тряхомундии.

Я уже писал выше – авторы wayvnc и wlvncc эту задачу прекрасно решили. Просто в KDE не работает. А так я пользовался и это прекрасно работало через мой WiFi. Скорость интерфейса там копье требуется, я даже половину не занял.

gaylord
() автор топика
Последнее исправление: gaylord (всего исправлений: 3)
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)