Вступление
В первую очередь надо сказать, что этот продукт уже фигурировал на ресурсах ТМ в этой статье от 2008 года. Однако по прошествии примерно 7 лет картинки потерялись и материал кажется несколько устаревшим.
Этой же публикацией я постараюсь обновить краткий мануал, раскрыть некоторые моменты, оставшиеся «за кадром», да и просто популяризовать отличное решение, которое незаслуженно страдает от недостатка внимания.
В 1996 году инженеры Cosmo Software Ричард Ли и Адам Федер решают проблему одновременной работы со станциями Irix и Windows, но руководство отказывается выделять внутреннюю разработку в отдельный продукт. Такая недальновидность оказалась симптоматичной и через некоторое время компания закрылась.
Но удачное решение продолжило свою жизнь, хотя к 2006 году оказалось в замороженном состоянии. С целью устранения багов и дальнейшего развития, в 2009 году Сорин Сбарнэ форкнул проект в Synergy+, куда позже влился Ник Болтон, который провел слияние Synergy+ с материнской веткой и в данный момент является CEO Synergy Si, занимаясь проектом уже на постоянной основе.
Что это такое?
Итак, Synergy — это программный KVM (network-based), который позволяет объединить управление двумя и более ПК в одном комплекте мышь-клавиатура. Предельно просто принцип работы отражен на заглавной картинке офицального сайта:
Пользователь просто передвигает мышь к краю экрана (либо углу, либо жмет на заданную комбинацию клавиш) и курсор чудесным образом появляется на другом мониторе, подключенном к совершенно другому ПК. Курсор можно не только перемещать, но еще и перетягивать файлы с одного ПК на другой. Круто, да?
Естественно, это требует от ПО определенного уровня отзывчивости и совместимости, поэтому для разработки используется C/C++.
Есть версии для Windows, Linux, Mac OS X, на GitHub есть даже порты для Android, Haiku и иных ОС.
Где взять?
Повторюсь, ПО готово к использованию в любой распространенной ОС, я же буду продолжать знакомство в контексте использования debian-like дистрибутива. Итак, сегодня в репозиториях Debian находится несколько устаревшая версия 1.4.16, которую не удастся использовать с актуальными на сегодняшний день 1.7.x / 1.8.x из-за смены протокола, потому воспользуемся одним из вариантов:
— Скачать (купив лицензию) с официального сайта — synergy-project.org
— Скачать доступные без регистрации ночные сборки — synergy-project.org/nightly
— Скачать и собрать своим руками, взяв код на GitHub — github.com/synergy
Для ознакомления удобней всего взять одну из ночных сборок ветки «stable». Шаг установки позволю себе пропустить, так как никаких подводных камней здесь нет.
Как пользоваться
Все достаточно просто, окно приветствия при первом запуске сразу предложит нам выбрать роль текущего ПК — сервер (с клавиатурой и мышью) или клиент (без оных):
Далее предложено будет настроить шифрование и пароль, но для домашней сети я отключил его.
И, наконец, определяем расположение ПК друг относительно друга в пространстве, например:
Все готово! Теперь остается только нажать «Start» и сервер войдет в режим ожидания подключений:
Для клиента, скорее всего, никаких настроек производить не потребуется, достаточно будет в таком же окне указать IP сервера и нажать на «Start».
А еще для настройки можно воспользоваться утилитой QuickSynergy, которая предельно проста и вполне достаточна для начальной настройки.
Хорошо, как это будет выглядеть?
Вот наиболее наглядная демонстрация использования Synergy, что мне довелось наблюдать:
… но и оно несколько неполное, ведь есть еще drag-n-drop перемещение файлов!
Надо ли платить?
Не обязательно. Продукт выпускается под GPL второй редакции, так что пользоваться им «как есть» вы можете совершенно бесплатно, а для желающих помочь разработке или получить некоторый дополнительный сервис предусмотрены следующие варианты лицензирования:
— Базовая лицензия (10$ на момент написания статьи) подразумевает поддержку со стороны разработчиков, если речь идет о каком-то сильно индивидуальном баге.
— Профессиональная лицензия (29$ на момент написания статьи) включает в себя SSL и прямую телефонную поддержку от разработчиков.
Есть еще Enterprise-версия, которая включает в себя работу разработчиков над фичами, которые запросит именно Ваша компания, она начинается для тех, кто разворачивает Synergy на парке из 100 и более машин.
Личные впечатления
— Воткнув мышь и клавиатуру в Raspberry Pi 2, работающий круглосуточно, я полностью отказался от них на основном ПК и медиа-приставке. А это 1 комплект устройств ввода вместо 3, что очень экономит место.
— Удивительная отзывчивость! Играть на ПК-клиенте в заведомо требовательные к скорости реакции игры (CS, Dota) вполне комфортно, какую-либо задержку ввода мне уловить не удалось.
— Возможность использовать на любой ОС «большой тройки». Лично мне не довелось испробовать Synergy на Mac, но связка Linux — Windows в любом порядке работала без нареканий.
И в заключение хочу добавить, что результатом запуска Synergy для «посмотреть, что это такое» стала полная реорганизация подхода к работе с ПК внутри квартиры и горячее желание помочь разработчикам, что и вылилось в эту статью. Наверное, это лучшая оценка, которую может озвучить пользователь.
Благодарю за внимание.
Комментарии (18)
beho1der
28.07.2015 17:49Пользуюсь synergy давно в связке Linux\Windows очень удобно, единственное есть один баг, может кто сталкивался и решал: Сервер на Linux, клиент Windows при этом на клиенте есть зажав правую кнопку мышь вращать камеру в 3D редакторах, то происходит какая-то инверсия и вращение происходит в другие стороны.
Знает ли кто можно ли для synergys писать макросы, чтобы на определенные кнопки выполнялись нужные комбинации клавиатуры на клиенте?agrrh Автор
28.07.2015 18:11Сталкивался только с не вполне понятным поведением мыши в Dota при вызове колеса с быстрыми репликами (двигается, куда надо, но потом вроде как отцентровывается), но списал на конкретную реализацию фичи в игре.
Насколько мне известно, сейчас можно лишь назначать клавишу или их сочетание для быстрого переключения на другой экран и т.п., то есть, только для управления самим synergy, пересылать сочетания клавиш между ПК возможности нет.
Не стесняйтесь репортить о багах и предлагать новые фичи прямо на github или форуме. Из подобных запросов нашел обратную передачу — #4505, с клиента на сервер. Попробуйте отметиться в issue, уточнив свое пожелание.
alekseev_ap
28.07.2015 22:07Экономия мышей и клавиатур — это плюс, большой. Но вот отсутствии экономии мониторов — это жирный минус. Поэтому лично я использую аппаратную KVM-ку.
yosemity
28.07.2015 23:11У Synergy и обычным KVM совсем разные задачи. Лично для меня Synergy мало применим, т.к. сижу за одним кампом на нескольких мониторах, разворачивая терминалы там и там. При том к одному из дисплев как раз подключен обычный KVM для ремонта компов.
evr1ka
29.07.2015 06:49Вот Спасибо! Все пытался найти-вспомнить, что за продукт, который позволяет мышь с монитора на монитор, на разных компьютерах двигать. )
evr1ka
29.07.2015 07:01Ночная сборка если имеет баги, куда писать?
У меня на 2х x64 win (Сервер 8.1 — клиент 7) буквы не печатаются. Цифры — да. Буквы — нет.
synergy-v1.7.4-stable-rc3-8da1b4f-Windows-x64.msi
July 28, 2015 21:55agrrh Автор
29.07.2015 08:35А пробовали другую версию? У меня одна из nightly вообще не собиралась, хотя тоже была из стейбл ветки. На другой версии все было хорошо.
Все баги можно репортить прямо на github: github.com/synergy/synergy/issues
Ничего похожего найти не удалось, так что можно сразу создавать новую issue, полагаю.
AllexIn
29.07.2015 11:20Раньше в автозапуске стояла… Но сейчас отказался. Причина проста:
«Дальше — больше. Сделал управление вертолётом и оказалось, что при нажатии на кнопку и движении мышью Qt начинает адски тормозить.
Я, как любой разумный программист, грешил на себя… Переписал внутреннюю систему обработки сообщений. Сделал проверку на дублирование сообщений… И это не помогло.
Ладно, я отказался от обычной системы сообщений и сделал считывание состояния клавиатуры и мышки… И это не помогло.
Я полностью отключил систему ввода в своём движке… И всё равно получил фризы. Сделал хук WH_GETMESSAGE на все сообщения, касающиеся ввода, с перехватом и отменой всех сообщений… Это не помогло. Ничего не осталось, кроме как исследовать систему вне моей среды разработки.
Разгадка оказалась простой… Я потратил три часа, исправляя баг, которого нет… Это Synergy тормозила, если зажимать несколько кнопок одновременно. Убрал Synergy и всё стало плавненько и аккуратненько.»
habrahabr.ru/post/252267agrrh Автор
29.07.2015 12:49Synergy тормозила, если зажимать несколько кнопок одновременно
Попробовал зажимать разные клавиши и двигать мышью — воспрозвести не получилось. Если поделитесь точными версиями ОС и Synergy — попробую еще.
К слову, не уточните, для каких задач использовали и на какую альтернативу перешли?AllexIn
29.07.2015 12:55Это проявилось только в моем проекте. Наверно если какую нибудь другую игру запустить — тоже будет видно, но я не проверял. Точными данными по версии не поделюсь — это было несколько месяцев назад. Windows 8.1
Использовал не постоянно, если вдруг надо какой-нибудь ноут настраивать или компьютер, то подрубал Synergy чтобы не плодить мышки с клавами.
Альтернативу не искал и не планирую. Synergy вполне устраивает. Просто убрал ее из автозагрузки.
homecreate
29.07.2015 23:08Обычно IP-KVM подразумевает возможность ООВ-управления. Я правильно понимаю, что Synergy, по сути своей, сильно от прочих терминальных решений не отличается? То есть это просто ещё одна софтина, которая умеет стримить ввод-вывод по сети?
agrrh Автор
30.07.2015 00:45Да, рулить упавшим сервером в удаленном ДЦ не получится. В целом само ПО позиционируется в первую очередь для использования в рамках рабочего места.
Спасибо за замечание. Очевидно, мой косяк, в процессе написания статьи потерял важное в этом контексте словосочетание «network-based». Добавил уточнение в текст.
madhead
Завалялись у меня 10 промо-кодов для этой чудесной программки, пишите в личку, может они ещё активные.
fwizard
Я не совсем понимаю для чего нужны промо-коды раз она бесплатная?
agrrh Автор
В процессе перевода наблюдал такой абзац:
То есть, если я верно понял, о каких промо-кодах говорит madhead, то Вы сможете бесплатно рассчитывать на полную техническую поддержку от разработчиков.