Почти бесшовый RDP в Linux

Все наверное знают, что такое бесшовные приложения (кто не знает, может прочитать), а точнее бесшовные Windows приложения под Linux.

Они предназначены для более удобной интеграции приложений в среду X Window, а если проще, что бы пользователи под Linux видели как моргает аська, работая в под терминалом.

Банально? Ну да, банально, но пользователи часто плачут от этого ))) причем этой от этой же проблемы с терминалом страдают и пользователи Windows. Ну что же, будем помогать линуксойдам, а виндузятники пусть ждут перевода серверов на Windows server 2008 и RemoteApps.

Самая частая схема такова:

1. SeamlessRDP — http://www.cendio.com/seamlessrdp/
2. RDP не ниже 4 версии
3. rdesktop 1.5.0 и выше — http://www.rdesktop.org/

Скачиваем на терминальный сервер SeamlessRDP от сюда — http://xaxatyxa.ru/download/seamlessrdp.zip или с официального сайта, кладем ее в папку, например, C:\Program Files\seamlessrdp\ и запускаем rdesktop со следующими параметрами:

rdesktop -A -s "c:\seamlessrdp\seamlessrdpshell.exe notepad"

Это все прекрасно, это все работает. НО! Подобный подход требует усложнения схемы, добавления нового компонента на Windows сервер, что делает данную схему менее универсальной и менее надежной (надо иметь свежие и совместимые версии, причем как на сервере, так и на клиентах). А все опять же ради аськи…

Можно сделать финт ушами, и пойти немного другим путем, создать псевдо бесшовное приложение. А если быть точным, то просто установить RDP соединение с определенными размерами окна и в таком положение, что бы оно не закрывала статус бар, причем делать это будем без доп компонентов.

Суть метода такова:

1. Стандартной утилитой xrandr узнаем разрешение экрана пользователя.
2. Разпарсиваем полученные значение на вертикальное и горизонтальное разрешение.
3. Подключаемся к через rdesktop откусив снизу экрана значение размером со статусбар.

В этом месте надо подобрать размер вашего статус бара и поправить цифру -g$(($X))x$(($Y-26))

P.S. Если кто то может подсказать где можно спарсить размеры панели задач, то я был бы очень благодарен за эту инфу и адаптировал бы скрипт на полную автоматику.

# Получаем текущее разрешение экрана в виде xres*yres
XY=`xrandr | grep -E -o 'current [0-9]{1,4} x [0-9]{1,4}' | tr -d current[:blank:]`

# Выделяем xres и yres
X=`echo $XY | grep -E -o '[0-9]{1,4}x' | tr -d x`
Y=`echo $XY | grep -E -o 'x[0-9]{1,4}' | tr -d x`

# Собственно строка подключения.
# Главная тут секция с разрешением экрана -g$(($X))x$(($Y-26))

rdesktop -N -z -P -xm -a 16 -g$(($X))x$(($Y-26)) -T "Заголовок окна" -D -S standard -s '"C:\Program Files\1Cv77.ADM\BIN\1cv7.exe" enterprise /D"F:\Bases\Db"' -r 'disk:Z=/home/user' -r 'printer:PRN1=HP LaserJet 6L' -u user -p "password" 192.168.0.100

Что бы не партьися по поводу поиска всех параметров, прилагаю мини справочник:

Применение: rdesktop [опция] сервер[:порт]
-u: имя пользователя
-d: домен
-s: Shell
-c: рабочий каталог
-p: пароль (- запрос)
-n: клиент хоста
-k: клавиатуры на сервер (EN-US, DE, SV и т.д.)
-g: разрешения экпана (WxH)
-f: полноэкранный режим
-b: битность обновления растрового изображения
-L: местные кодировки
-A: Включите режим SeamlessRDP
-B: использование BackingStore от X-сервера (если есть)
-e: отключить шифрование (французский TS)
-E: Отключение шифрования от клиента к серверу
-m: не передавать движение события
-C: использование собственной цветовой схемы
-D: спрятать окно менеджера украшения
-K: держать окно менеджера ключевых переплет
-S: Надпись кнопки размера (ни одной заявки в режиме)
-T: заголовок окна
-N: позволить numlock синхронизации
-X: вставлять в другое окно с заданным идентификатором.
-a: подключение глубина цвета
-z: включить сжатие RDP
-x: RDP5 experience (m[odem 28.8], b[roadband], l[an] or hex nr.)
-P: использование стойких растровый кэшировании
-r: включить указанное устройство редирект (этот флаг может быть повторен)
-0: Приложите к консоли
-4: Использование RDP версии 4
-5: Использование RDP версии 5 (по умолчанию)
-y: использование raw клавиатуры (по умолчанию нет)

Мы получили аналог бесшовного приложения, решив главную задачу, а именно, добились видимости статус бара. Причем это все без помощи дополнительных средств и усложнения «конструкции», к тому же схема работает под любой системой, в том числе и BSD.

Смотрите так же:

Почти бесшовый RDP в Linux: 4 комментария

  1. Под Windows 7 и выше похоже тоже можно через костыли завести Seamless RDP:
    https://acmyau.wordpress.com/2011/12/07/seamlessrdp-from-linux-to-windows-7/ — раздел «Disable your desktop».

  2. Да да… я пользовался вторым вариантов правда разрешение подбирал на глаз )))

    1. Ну тут тоже надо разрешение руками подбирать, точнее надо подобрать тот кусочек, который откусывается снизу. Я вот сижу рою KDE, пытаюсь найти где бы спарсить высоту панельки, что бы уж совсем все автоматом.

  3. К сожалению у меня нет возможности сделать скриншот того, как это выглядит, как только будет подобная возможность, я вставлю наглядный материал в статью.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.