Хотел тему создать, но, как оказалось, ты уже начал. Хорошо, что дёрнул поиск.
В общем, ситуёвина такая: имеется рабочий компутер под управлением Windows 7 и рабочий же Mac Pro, бегущий на OS X 10.7 (знаю, старовата, но последняя попытка обновиться вообще вынудила меня выкачивать образ и ставить систему заново). За сам Synergy говорить не буду - работает, и работает... но!
Synergy server запускается на Windows. Он настроен, и с радостью принимает подключения от стоящего рядом мака. Проблема в том, что работает эта связка только после логина пользователя на машине-клиенте. Т.е., либо каждый раз доставать клаву и мышу из-под стола, либо включать автологин. Оба эти варианта мне не нравятся, и я начал шукать интернеты в поисках решения. В итоге, получилось вот что:
- Инструкция с сайта Synergy: скрытое
- Open a Terminal window, and become root:
- Create a folder for this item:
Код:
# mkdir -p /Library/StartupItems/Synergy
- In this folder, create a new script file by the same name as the directory itself, Synergy. This script should contain the following text:
Код:
#!/bin/sh
. /etc/rc.common
run=(/Applications/Synergy.app/Contents/MacOS/synergyc -n $(hostname -s) -1 -f synergy-server)
KeepAlive ()
{
proc=${1##*/}
while [ -x "$1" ]
do
if ! ps axco command | grep -q "^${proc}\$"
then
"$@"
fi
sleep 3
done
}
StartService ()
{
ConsoleMessage "Starting Synergy"
KeepAlive "${run[@]}" &
}
StopService ()
{
return 0
}
RestartService ()
{
return 0
}
RunService "$1"
However, replace synergy-server with the actual name or IP address of your Synergy server.
Note that this scripts takes care not to start Synergy if another instance is currently running. This allows it to run in the background even when synergy is also started independently, e.g. from the LoginWindow application as described below.
- Make this script executable:
Код:
# chmod 755 /Library/StartupItems/Synergy/Synergy
- In the same folder, create a file named StartupParameters.plist containing:
Код:
{
Description = "Synergy Client";
Provides = ("Synergy");
Requires = ("Network");
OrderPreference = "None";
}
- That's it! If you want to test this setup, you can run the startup script as follows:
Код:
# /Library/StartupItems/Synergy/Synergy start
Any errors, as well as output from Synergy, will be shown in your terminal window.
Next time you reboot, Synergy should start automatically.
Этот рецепт замечательно проходит тест, указанный в нём же самом. И даже стартует ещё на LoginWindow, что как бэ должно исключать необходимость логиниться, однако при попытке подключиться с ещё незалогиненного клиента, сервер Synergy бросает в лог такую строчку: 'Invalid message from client "...": DINF'. Быстрый гуглёж не дал решения этой проблемы, поэтому я попробовал второй вариант...
- С форума sourceforge по Synergy: скрытое
- Create a plist file which launches synergyc after login.
- Launch a terminal window (if you don't already have one free)
- Type "vim /Library/LaunchAgents/net.sourceforge.synergy2.plist" without quotes
- Copy the following text into the file:
Код:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>net.sourceforge.synergy2</string>
<key>KeepAlive</key>
<true/>
<key>ProgramArguments</key>
<array>
<string>/Applications/Synergy.app/Contents/MacOS/synergyc</string>
<string>-f</string>
<string>-1</string>
<string>--name</string>
<string>client_hostname</string>
<string>--debug</string>
<string>WARNING</string>
<string>server_hostname</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
- Don't forget to change client_hostname, and server_hostname.
- Save the file
- Create a plist file which launches synergyc at the login window.
- Type "vim /Library/LaunchAgents/net.sourceforge.synergy2.loginwindow.plist" without quotes
- Copy the following text into the file:
Код:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>KeepAlive</key>
<true/>
<key>Label</key>
<string>net.sourceforge.synergy2.loginwindow</string>
<key>LimitLoadToSessionType</key>
<string>LoginWindow</string>
<key>ProgramArguments</key>
<array>
<string>/install_dir/synergyc</string>
<string>-f</string>
<string>-1</string>
<string>--name</string>
<string>client_hostname</string>
<string>--debug</string>
<string>WARNING</string>
<string>server_hostname</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
- Don't forget to change client_hostname, and server_hostname.
- Save the file
- Set permissions on the new plist files:
- From the terminal, type "chmod 755 /Library/LaunchAgents/net.sourceforge.synergy2.plist" [no quotes]
- Type "chmod 755 /Library/LaunchAgents/net.sourceforge.synergy2.loginwindow.plist" [no quotes]
- To test before rebooting:
- Kill all running synergyc instances
- Start the launchd agents
- Type "launchctl load /Library/LaunchAgents/net.sourceforge.synergy2.plist" [no quotes]
- Type "launchctl load /Library/LaunchAgents/net.sourceforge.synergy2.loginwindow.plist" [no quotes]
- Reboot and make sure you can connect at the login window.
Этот вариант работает почти так же, как и предыдущий - позволяет использовать один комплект клава-мышь только после логина пользователя. Различие лишь в том, что после загрузки машины клиент успешно коннектится к серверу ещё на экране логина, но при попытке перетащить туда курсор, теряет связь. Все последующие попытки коннекта сразу завершаются разрывом. Без ошибок. Просто, якобы, добровольный дисконнект. Если залогиниться, всё работает норально, но после логина возвращается к началу - постоянные коннекты-дисконнекты.
Написал, скорее, для себя, чтобы как-нибудь в свободное время, отталкиваясь от этих "решений", снова попробовать родить работоспособный вариант, но если кто-то уже сталкивался, или имеет какие-либо мысли, буду рад выслушать.
SEO: synergy windows mac os x автозапуск автостарт autostart демон служба ланчпад launchpad