Contents

Synergy启动在登录前

介绍

Synergy是一个模拟键盘和鼠标的软件,我的win和mac都启动时可以用一套键鼠操控。 mac作为Synergy的客户端时,win作为Synergy的服务端使用。

背景

目前Synergy在登录前软件没有启动,只有登录后启动,导致登录时无法输入密码,因为我的键盘鼠标连接在win上。下面是解决办法

原理

软件在mac未登录前是root的身份运行,登录后才是选择的用户,在root身份下将软件加入mac的Launch Daemons就可以解决了

实操

synergy的存放位置是 /Applications/Synergy.app/Contents/MacOS/synergy

运行命令行启动

open  /Applications/Synergy.app/Contents/MacOS/synergy 

时,可以看到启动参数 /Applications/Synergy.app/Contents/MacOS/synergyc -f --no-tray --debug INFO --name "mac" "192.168.50.59:24800"

修改为Launch Daemons的配置

<?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>Label</key>
    <string>com.example.hello</string>
    <key>ProgramArguments</key>
    <array>
        <string>/Applications/Synergy.app/Contents/MacOS/synergyc</string>
        <string>-f</string>
        <string>--no-tray</string>
        <string>--debug</string>
        <string>INFO</string>
        <string>--name</string>
        <string>mac</string>
        <string>192.168.50.59:24800</string>
    </array>
    <key>KeepAlive</key>
    <true/>
</dict>
</plist>

ProgramArguments对象下是cli启动参数

然后以root身份 放入 /Library/LaunchDaemons/ 下,文件名随便起一个com.example.synergy.plist

这样重启后,就可以在mac上输入密码,当键盘连接在win上时候,因为synergy已经生效

总结

# 敲root密码
sudo su
# 切目录
cd /Library/LaunchDaemons/
#创建文件
touch com.example.synergy.plist
# 将xml的配置内容放入com.example.synergy.plist
# 接着重启

而xml的内容是通过open /Applications/Synergy.app/Contents/MacOS/synergy看到的