Журнал LinuxFormat - перейти на главную

LXF150:tut6

Материал из Linuxformat
Версия от 19:50, 21 ноября 2014; 2sash-kan (обсуждение | вклад)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Содержание

Synergy: Связь ваших машин

Алекс Кокс покажет, как за несколько простых шагов увязать все настольные компьютеры – с Linux или нет – в однородную вычислительную среду.



Одного компьютера человеку мало. Взгляд на офис LXF показывает, что на столах почти у половины сотрудников их по меньшей мере по два, а то и по три. В одних случаях это означает две мыши, две клавиатуры и два монитора. В других – дорогой (и ненадежный) переключатель KVM в действии, разделяющий один набор периферийных устройств между несколькими компьютерами. Но ни одно из этих решений не оптимально.

В первом случае мы имеем перерасход периферии. Зачем держать два набора устройств, если хватает одного? А пара клавиатур неизбежно приведет к ситуации, когда текст, набранный для одного компьютера, окажется на другом. Это неэффективно и неудобно, но по крайней мере оба компьютера доступны одновременно.

Во втором случае переключение между компьютерами неудобное и медленное. Нужно жать кнопку, ждать несколько секунд, снова ждать, пока монитор автоматически определит свои настройки, и еще подождать при переключении обратно. Устройства KVM неудобны и мешают эффективной работе. Наверное, единственный верный способ работы с несколькими компьютерами на одном столе – с одним набором периферийных устройств и несколькими мониторами, и здесь в дело вступает Synergy.

Synergy – клиент-серверная система, которая отправляет сигналы о перемещении мыши и нажатии клавиш клавиатуры с одного сервера на любое число компьютеров сети, и на этих компьютерах могут быть любые операционные системы – от Linux до Windows и до OS X. Здорово, правда? Можно связать воедино самые разношерстные устройства – ноутбуки, настольные компьютеры, моноблоки, что угодно – и таскать курсор мыши с монитора на монитор. Клавиатура будет работать с тем экраном, где находится курсор мыши.

Существует несколько вариантов первоначальной установки Synergy. Будем считать, что основной компьютер с Linux выступает как сервер, а другие компьютеры являются клиентами, хотя все, о чем мы будем говорить на нашем уроке, столь же справедливо и для случая, когда сервер – это компьютер с OS X или Windows. В работе Synergy с разными платформами отличий очень мало.

В Центре ПО [Software Centre] Ubuntu имеются загрузки для сдвоенного пакета клиент–сервер: просто наберите ‘Synergy’ в строке поиска. Это графическая версия, но по сути она (как и пакет synergy, который можно установить через apt-get из командной строки) лишь устанавливает клиент (synergyc) и сервер (synergys) с простым графическим интерфейсом, который запускает их. Нам еще придется создать файлы настройки – тут-то и пойдет потеха.

Затем установите клиент Synergy на каждом из компьютеров, которыми вы намерены пользоваться. Соответствующие установщики для других платформ можно найти на www.synergy-foss.org.

Ваш первый сервер

Начальная настройка Synergy довольно проста. Для нее мы воспользуемся графическим интерфейсом, поэтому сперва откройте графический интерфейс Synergy – если все идет по плану, он будет в списке установленных приложений. Прежде всего убедимся, что все его сетевые настройки пригодны для вашей сети. Активируйте окно и зайдите в Edit > Settings [Редактировать > Настройки]. В открывшемся окне задайте локальный IP-адрес сервера в поле интерфейса и задайте порт, который будет использоваться Synergy.

В этом пункте надо отметить, что Synergy – не самая безопасная программа на свете. Выбранный порт нужно открыть в локальной сети, но заблокировать для доступа извне, если вы не хотите, чтобы вашей мышью завладели случайные хакеры. Общего доступа к экрану нет – хотя бы это снижает риск; но нажатия клавиш могут быть считаны, поэтому будьте внимательны при настройке маршрутизатора. Если это вас действительно беспокоит, пропустите Synergy через SSH или аналогичный защищенный протокол.

Задайте имя компьютера так, чтобы понять его смысл, когда вы увидите его снова. Мы выбрали LXF-servermachine – вы можете выбрать mainlaptop или middle, в зависимости от постоянства вашей конфигурации. Помните, что настройка через графический интерфейс позволяет быстро добавлять и удалять необходимые компьютеры, но она не настолько гибкая и удобная, как текстовый файл настройки, который мы создадим позже. Нажмите ОК и вернитесь в главное окно.


Поставьте галочку рядом с Server [Сервер] в верхней части окна, выделите радиокнопку Configure Interactively [Интерактивная настройка], затем выберите Configure Server [Настроить сервер]. В этом окне вы сможете примерно разместить компьютеры на своем столе в том порядке и в том положении, в котором они на самом деле будут находиться. В центре вы видите имя сервера; перетащите монитор в правом верхнем углу окна в одну из ячеек в центре, чтобы добавить к группе другой компьютер. Задайте его положение по отношению к серверу, затем дважды щелкните на нем и введите имя. Чтобы точно узнать имя, запустите клиент и откройте меню Edit > Settings [Редактировать > Настройки] на втором компьютере – любое указанное здесь имя нужно ввести в настройки сервера. Повторите эти действия для всех ваших компьютеров.

Затем на втором компьютере (у нас это был нетбук с Windows) поставьте галочку рядом с Client [Клиент], а затем воспользуйтесь IP-адресом первого компьютера в качестве имени сервера. Запустите клиент, затем на первом компьютере запустите сервер – вы должны обнаружить, что можете перемещать курсор мыши между мониторами и пользоваться одной клавиатурой на обоих. Легко! Обратите внимание, что для управления клиентским компьютером также можно воспользоваться его собственными мышью и клавиатурой, что удобно для ноутбуков.

Разворачиваем свой

Итак, это работает. Если все, чего вы хотели – перемещать мышь между мониторами, можете здесь и остановиться. Но для Synergy это далеко не предел, если уметь им манипулировать. Большая проблема с графической утилитой настройки на данный момент – недостаток контроля. Гораздо больше настроек можно задать в текстовом файле настройки – и даже пересылать его между компьютерами, чтобы в вашем гареме любой мог выступать в роли сервера – но нужно создать этот файл с нуля самим.

Откройте любимый текстовый редактор и приступите к созданию файла – как вы его назовете и где сохраните, неважно: это простой текстовый файл. Прежде всего опишите связанные компьютеры сети в следующем формате:

section: screens
linux:
windows:
mac:
end

Каждая часть файла настройки начинается с заголовка section: и заканчивается словом end. Здесь можно использовать любые имена – главное, чтобы вы могли по имени распознать компьютер. Настоящие имена хостов мы добавим позже.

Такое задание мониторов, с двоеточиями, позволяет указать дополнительные аргументы. Например, можно переключить клавиши Ctrl и Alt на Mac (чтобы горячие клавиши были одинаковы во всех платформах), добавив ctrl = alt и alt = ctrl отдельными строками после обозначения mac:.

Также можно снабдить эти компьютеры полудуплексными клавишами блокировки, т. е. клавишами, которые при нажатии не отправляют события «нажато» и «отпущено», а вместо этого отправляют одно событие «нажато» при включении и одно событие «отпущено» при выключении. Для этого установите параметры halfDuplexCapsLock, halfDuplexScrollLock и halfDuplexNumLock в true или false. Помните, что в файле настройки регистр имеет значение, поэтому вводите все так, как здесь написано.

Назначение следующего раздела файла настройки довольно очевидно – в нем пора задать настоящие имена компьютеров, которым мы на время дали простые имена. Скопируйте и вставьте в него структуры из раздела screens, выкиньте все, кроме имен машин, и переименуйте раздел в aliases [псевдонимы].

При каждом имени компьютера укажите его имя хоста – чтобы его узнать, наберите uname в окне терминала. Если у вас сеть с доменом, можно также включить сюда доменный адрес компьютера или воспользоваться вместо него IP-адресом. Последний вариант менее надежен, так как IP-адреса имеют свойство изменяться.

Добавляя Mac, помните, что к его имени хоста часто нужно приписывать .local, чтобы оно верно распознавалось. Если оно не работает, причина именно в этом.

Связи

Вот интересный момент и настоящая причина воспользоваться текстовым файлом настройки: связи. Всего несколькими строками можно определить точную структуру сети компьютеров, учтя все, от высоты экрана до физического расположения.

Опять скопируйте раздел screens, как вы проделали с разделом aliases, и назовите его links. Теперь укажите информацию о взаимном расположении мониторов относительно друг друга. Если компьютер с Windows стоит справа от компьютера с Linux, добавьте строку right = windows после заголовка linux:. Это определяет взаимодействие между компьютерами в одном направлении – переместите курсор за правую границу монитора компьютера с Linux, и он появится на рабочем столе Windows, но в обратном направлении это не будет работать, пока вы не включите противоположную строку после заголовка windows:.

Обратите внимание и на такой случай:

section: links
linux:
right(0,50) = windows
windows:
right(50,100) = mac(0,50)
mac:
right = linux
end

Этот код по сути создает цикл – продолжайте перемещать курсор вправо (с Linux на Windows и на Mac), и вы снова окажетесь на компьютере с Linux – но при движении влево это работать не будет. Если хотите, можете также оставить один компьютер без связей. Тогда курсор застрянет на его мониторе; но, как мы узнаем позже, есть способы это обойти.

Если вы не богатей или у вас нет знакомых на заводе-изготовителе мониторов, все ваши мониторы будут разных размеров и разной высоты. Обратите внимание на числа в скобках в приведенном выше коде: они преобразуются в пару процентных величин по отношению к высоте экрана, начиная сверху или слева и заканчивая снизу или справа в зависимости от края монитора. В приведенном примере монитор Windows расположен рядом с правой верхней половиной монитора Linux, а левая верхняя половина монитора Mac расположена рядом с правой нижней половиной монитора Windows. С помощью этих параметров не нужно задавать реальное физическое расположение (например, попробуйте что-нибудь вроде (95,100), чтобы задать «горячий угол»), и можно даже задать несколько путей, ведущих от одной стороны экрана, путем разбивания их путей.

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

Личное поведение

Перемещение между мониторами – это хорошо, но Synergy способен на большее. В его опциях можно задать точнейшие настройки. Для начала – ну да, создадим новый раздел, и назовем его, да, options. Имя компьютера на сей раз не потребуется – эти настройки являются глобальными; просто укажите одну или несколько из перечисленных далее опций со знаками равенства и любыми необходимыми значениями, каждый параметр с новой строки.

С помощью параметра heartbeat, за которым идет число, можно определить интервал времени, через который клиент должен отправлять обновление статуса на сервер, в миллисекундах; если сервер не получит обновления статуса три раза, клиент будет отключен.

Чтобы задать «холодные углы», при попадании курсора мыши в которые монитор не будет сменяться, воспользуйтесь параметром switchCorners с набором наименований углов (top-left, bottom-right и т. д.). Здесь также можно указать знаки плюс и минус; чтобы сделать активными все углы кроме верхних и правых нижних, попробуйте switchCorners = all -right. Размер «горячего угла» в пикселях задает параметр switchCornerSize = x. Помните, что эти параметры применимы и к отдельным машинам – просто переместите команду в раздел screens соответствующей машины.

С помощью параметра switchDelay можно задать число миллисекунд, в течение которых курсор нужно держать у края одного монитора, прежде чем он переместится на следующий. Это позволит избежать случайных переключений. Также можно воспользоваться командой switchDoubleTap (опять же с интервалом времени в миллисекундах) чтобы для переключения требовалось двойное касание курсором края монитора в течение заданного интервала времени. Можно использовать оба параметра одновременно.

Вот интересный параметр; хотя с помощью Synergy нельзя разделять экраны, она неплохо справляется с тем, чтобы все компьютеры воспринимались как один. Как насчет синхронизации ваших хранителей экрана с тем, что выполняется на сервере? Для этого просто добавьте параметр screenSaverSync = true. Помните, что нажатие любой клавиши – даже на клиентских компьютерах – разорвет синхронизацию.

Нажмите клавишу

Последнее и самое нужное для тех, кто предпочитает клавиатуру мыши – комбинации клавиш. По умолчанию для привязки мыши и клавиатуры к одному монитору в Synergy используется тоскующая без работы клавиша Scroll Lock. Независимо от раскладки клавиатуры нажмите Scroll Lock – и периферийные устройства останутся на компьютере, которым вы сейчас пользуетесь.

В разделе options также можно определить особые клавиатурные комбинации и даже изменить те, что уже там есть. Например, если вы хотите изменить клавиши, привязывающие периферийные устройства к одному монитору, сперва отключите функции по умолчанию (keystroke(ScrollLock) = lockCursorToScreen(off)), а затем задайте другую клавишу или комбинацию клавиш командой (Ctrl+Shift+F1) = lockCursorToScreen(toggle). Также можно использовать on вместо toggle; в этом случае нужно задать еще одну комбинацию клавиш для выключения. Функцию keystroke можно использовать для отправки нажатия или комбинации клавиш всем компьютерам одновременно. Взгляните на следующий пример:

keystroke(L) = keystroke(ctrl+alt+delete,windows), keystroke(super+F1,mac)

Эта непрактичная и бесполезная команда в одну строку преобразует любое нажатие клавиши L в Ctrl Alt Delete на компьютере Windows и в то же самое время в Super+F1 на компьютере Mac. Также можно разбивать команды точкой с запятой вместо запятой, чтобы обозначить, что происходит, когда клавиша нажимается и отпускается:

keystroke(shift+A) = mousebutton(1) ; mousebutton(2)

Эта команда отправит сигнал нажатия левой кнопки мыши при первоначальном нажатии Shift+A и средней кнопки мыши при отпускании этих клавиш. Также можно указать точку с запятой, но опустить один из аргументов, чтобы отдельно задать действия, происходящие при нажатии или при отпускании клавиши.

Наконец, можно самому задать команды переключения мониторов и либо переключаться на конкретный компьютер, либо выбирать компьютер по его расположению. Просто воспользуйтесь модификаторами switchToScreen(screenname) для перехода на конкретный компьютер или switchInDirection(direction) для перехода по заданному пути. Если вы планируете использовать этот метод, вероятно, стоит избегать наличия нескольких связей в одном направлении, так как это может сбить с толку Synergy.

Закруглимся

На данный момент у вас должен быть файл настройки с четырьмя различными разделами, заполненными всевозможными командами. Резвиться с настройками можно бесконечно, но теперь пора сохранить файл: сохраните его в /etc/ под именем synergy.conf. Теперь можно запустить сервер через графический интерфейс (убедитесь, что выбрали правильный путь в соответствующем окне) или с командной строки.

В последнем случае, если файл сохранен в правильном месте с верным именем, достаточно просто выполнить команду synergys. Можно запустить сервер на переднем плане, командой synergys -f. На других компьютерах запустите synergyc с именем хоста сервера в качестве аргумента или введите имя хоста (или имя домена или IP-адрес в зависимости от конфигурации сети) в соответствующем окне. Если все прошло нормально, ваш сервер Synergy должен запуститься. Теперь вас ограничивает только собственное воображение.

Персональные инструменты
купить
подписаться
Яндекс.Метрика