XRDP хорошая штука, но есть один недостаток — если ты уже открыл к сессию, а потом разъединился (без выхода из сессии), то впоследствии не факт, что ты к ней сможешь соединиться. Маялся с этим приличное время пока неудобство достигло критической точки и я решил таки взяться и глянуть в исходники, чтобы выяснить как же это поправить.
Способ не претендует на идеальность, было бы хорошо конечно вообще выложить коммит разработчику, но для этого нужно не просто тупо закомментировать указанные ниже строки, но добавить хотя бы опцию, которая позволяет включать менее разборчивый режим при определении — открыть новую сессию или использовать старую. К тому же необходимо проверить на корректность работы алгоритма с отключенным разборчивым режимом, чего я пока не делал, ибо протестировал — работает, и я рад ибо для меня сейчас прежде всего важна практическая польза.
Ну что ж, начнем. Суть способа заключается в комментировании в файле sessman/session.c пяти следующих строк:
if (g_strncmp(name, tmp->item->name, 255) == 0
//&&
//tmp->item->width == width &&
//tmp->item->height == height &&
//tmp->item->bpp == bpp &&
//tmp->item->type == type
)
Поясню. Здесь сканируются существующие сеансы и делается проверка, от какого пользователя и какого разрешения, цветовой глубины, типа (VNC, XRDP) планируется открыть сессию. Если находится сеанс с такими же параметрами, то подключаемся к той же сессии. Если нет, открываем новую. Условия: разрешение, глубина цвета, тип сеанса, я решил отключить.
Читать полностью »