Deskflow
Deskflow 使您可以轻松地在多台计算机(甚至使用不同操作系统)之间共享单个鼠标和键盘,而无需特殊硬件。 它适用于桌面上有多台计算机的用户,因为每个系统都使用自己的显示器。
重定向鼠标和键盘就像将鼠标移出屏幕边缘一样简单。 Deskflow 还将所有系统的剪贴板合并为一个,从而允许在系统之间进行剪切和粘贴。 此外,它同步屏幕保护程序,使它们全部一起启动和停止;如果启用屏幕锁定,则只需一个屏幕密码即可解锁所有屏幕。
Deskflow 是 Synergy 的官方上游项目。 Deskflow 项目的建立是为了培养社区驱动的开发模式,让每个人都可以协作。 Synergy 通过贡献代码和提供资金支持来赞助 Deskflow 项目。
分支
从历史上看,创建了一个名为 Barrier 的分支,以从 Synergy 源代码中删除序列密钥代码。 在项目领导层内部出现分歧后,活跃的维护者创建了一个名为 input-leap 的新分支。
安装
Deskflow
安装 deskflow 软件包或 deskflow-gitAUR。
Wayland:输入捕获支持需要 GNOME 46 或 KDE 6.1+。
Input Leap 或 Barrier
您可以安装 input-leap 或 barrier 软件包。
Synergy
在 2023 年 6 月左右,Symless 发布了 Synergy 3,这是一款付费软件。 要安装最新版本,可以使用用户软件包 synergy3-binAUR。
安装完成后,运行 GUI 来设置您的配置。 然后启用/启动 synergy.service
用户单元。
现在,Synergy 3 将在没有 GUI 的情况下运行,基于您设置的配置。 您可以打开 GUI,该服务将与它一起工作。
预配置
首先确定每台机器的 IP 地址和 主机名,并确保每台机器都有正确的主机文件。 (您也可以使用 IP 地址代替主机名。)
/etc/hosts
10.10.66.1 archserver.localdomain archserver 10.10.66.100 archleft.localdomain archleft 10.10.66.105 archright.localdomain archright
服务器配置
在 Synergy 中,带有您要共享的键盘和鼠标的计算机称为服务器。 有关所有可用部分和选项的详细描述,请参阅 Synergy 配置文件格式。
Arch Linux
Synergy 将其配置存储在 /etc/synergy.conf
下,Barrier 使用 /etc/barrier.conf
或 $HOME/.local/share/barrier/.barrier.conf
。 如果配置文件不存在,您可以使用提供的 GUI(通过 $ synergy
或 $ barrier
或桌面启动器启动)以可视化方式创建它。 或者,您可以通过复制 /etc/synergy.conf.example
或 /usr/share/doc/barrier-headless/barrier.conf.example
来创建它,它们的注释应为您提供基本配置的足够信息; 如果您需要进一步参考或想使用 GUI 中不可用的更高级选项,请阅读上面提到的指南。
如果您遇到问题并且希望在前台运行服务器,则可以改为运行以下命令
# synergys -f
synergy 服务器进程需要附加到您的用户 X 会话,这意味着它需要以您的用户身份运行。 启用 synergys.service
用户单元。
synergys.socket
以在客户端尝试连接时启动服务器。 当服务无法在启动时连接到 X 服务器时,这很有用。在服务器上设置加密
为服务器生成证书和指纹以供使用。
对于 Barrier
注意:Barrier v2.4.0 引入了一种新的密钥文件格式,该格式需要 SHA256 指纹和“v2:sha256:$fingerprint”格式的行。 对于旧版本,请确保指纹为 SHA1 且不包含前缀。
$ mkdir -p ~/.local/share/barrier/SSL/Fingerprints; $ openssl req -x509 -nodes -days 365 -subj /CN=Barrier -newkey rsa:4096 -keyout ~/.local/share/barrier/SSL/Barrier.pem -out ~/.local/share/barrier/SSL/Barrier.pem; $ fingerprint=$(openssl x509 -fingerprint -sha256 -noout -in ~/.local/share/barrier/SSL/Barrier.pem | cut -d"=" -f2); $ echo "v2:sha256:$fingerprint" > ~/.local/share/barrier/SSL/Fingerprints/Local.txt;
对于 Synergy
$ mkdir -p ~/.synergy/SSL/Fingerprints; $ openssl req -x509 -nodes -days 365 -subj /CN=Synergy -newkey rsa:4096 -keyout ~/.synergy/SSL/Synergy.pem -out ~/.synergy/SSL/Synergy.pem; $ fingerprint=$(openssl x509 -fingerprint -sha1 -noout -in ~/.synergy/SSL/Synergy.pem | cut -d"=" -f2); $ echo "$fingerprint" > ~/.synergy/SSL/Fingerprints/Local.txt;
要激活 SSL 插件,请添加 --enable-crypto
选项。 (请注意,Synergy GUI 不允许您在没有有效许可证的情况下启用加密,而 Barrier GUI 允许这样做。)
- 从命令行启动
$ synergys --enable-crypto
Windows
- 打开 Synergy 程序
- 选择服务器(共享此计算机的鼠标和键盘)选项
- 选择交互式配置
- 单击配置服务器...按钮
- 这将打开一个窗口,您可以在其中根据您拥有的计算机/屏幕数量添加屏幕:只需将屏幕图标从右上角拖到屏幕区域,然后双击它以编辑其设置
- 准备就绪后,单击确定关闭屏幕窗口,然后单击启动以启动服务器
在 Windows 上,配置默认保存在 synergy.sgc
文件中,但其名称和位置当然可以随意更改。
如果您想在每次 Windows 启动时都启动 Synergy 服务器,则必须以管理员身份启动该程序,然后转到编辑 -> 服务,然后在服务器部分中选择安装; 请注意,在随后的重启中,Synergy 确实会自动启动,但托盘图标不会自动显示(至少对于 Windows 7 上的 1.4.2 beta 版本)。 要卸载该服务,请执行相同的操作,但显然选择卸载。
如果您想从命令行启动服务器,这里有一个 Windows 命令,您可以将其放在 .bat
文件中或直接从 cmd.exe
运行
C:\Program Files\Synergy+\bin\synergys.exe -f --debug ERROR --name left --log c:\windows\synergy.log -c C:/windows/synergy.sgc --address 10.66.66.2:24800
macOS
macOS 的配置与 Unix 类似:有关更多信息,请查看 官方文档。
配置示例
这是一个基本的 3 台计算机设置示例
/etc/synergy.conf
section: screens server-fire: archright-fire: archleft-fire: end section: links archleft-fire: right = server-fire server-fire: right = archright-fire left = archleft-fire archright-fire: left = server-fire end
这应该是 Arch Linux 软件包捆绑的示例
/etc/synergy.conf
section: screens # three hosts named: moe, larry, and curly moe: larry: curly: end section: links # larry is to the right of moe and curly is above moe moe: right = larry up = curly # moe is to the left of larry and curly is above larry. # note that curly is above both moe and larry and moe # and larry have a symmetric connection (they're in # opposite directions of each other). larry: left = moe up = curly # larry is below curly. if you move up from moe and then # down, you'll end up on larry. curly: down = larry end section: aliases # curly is also known as shemp curly: shemp end
以下是一个更自定义的示例
synergy.sgc
section: screens leftpc: halfDuplexCapsLock = false halfDuplexNumLock = false halfDuplexScrollLock = false xtestIsXineramaUnaware = false switchCorners = none +top-left +top-right +bottom-left +bottom-right switchCornerSize = 0 rightpc: halfDuplexCapsLock = false halfDuplexNumLock = false halfDuplexScrollLock = false xtestIsXineramaUnaware = false switchCorners = none +top-left +top-right +bottom-left +bottom-right switchCornerSize = 0 end section: aliases leftpc: 10.66.66.2 rightpc: 10.66.66.1 end section: links leftpc: right = rightpc rightpc: left = leftpc end section: options heartbeat = 1000 relativeMouseMoves = false screenSaverSync = false win32KeepForeground = false switchCorners = none +top-left +top-right +bottom-left +bottom-right switchCornerSize = 4 end
客户端配置
Arch Linux
在控制台窗口中,键入
$ synergyc server-host-name
或者,要在前台运行 synergy
$ synergyc -f server-host-name
在此处,server-host-name
是服务器的主机名。
在客户端上设置加密
如果您使用 synergy 命令行客户端,请将包含指纹的文件 ~/.synergy/SSL/Fingerprints/Local.txt
从服务器复制到客户端主目录 ~/.synergy/SSL/Fingerprints/TrustedServers.txt
。 要启动带有加密的 synergy 命令行客户端,请键入
$ synergyc --enable-crypto server-host-name
如果您想在客户端上启用 SSL 信任而无需 GUI,您可以按照以下步骤操作,但您应确认显示的指纹与您的服务器在其 GUI 中或服务器上 ~/.synergy/SSL/Fingerprints/Local.txt
中的指纹相同,如上所述。 需要 echo -n
以避免 openssl 客户端挂起等待输入。
对于 Barrier
注意:Barrier v2.4.0 引入了一种新的密钥文件格式,该格式需要 SHA256 指纹和“v2:sha256:$fingerprint”行格式。 对于旧版本,请确保指纹为 SHA1 且不包含前缀。
$ mkdir -p ~/.synergy/SSL/Fingerprints $ fingerprint=$(echo -n | openssl s_client -connect $YOUR_SYNERGY_SERVER:24800 2>/dev/null | openssl x509 -sha256 -noout -fingerprint | cut -d"=" -f2); $ echo "v2:sha256:$fingerprint" > ~/.synergy/SSL/Fingerprints/TrustedServers.txt
对于 Synergy
$ mkdir -p ~/.synergy/SSL/Fingerprints $ fingerprint=$(echo -n | openssl s_client -connect $YOUR_SYNERGY_SERVER:24800 2>/dev/null | openssl x509 -sha1 -noout -fingerprint | cut -d"=" -f2); $ echo "$fingerprint" > ~/.synergy/SSL/Fingerprints/TrustedServers.txt
- synergy 的 GUI 客户端存在一个未解决的问题(请参阅 https://github.com/deskflow/deskflow/issues/4737)。 仅当日志记录级别设置为 INFO、DEBUG 或 DEBUG2 时,才会弹出提示确认服务器指纹的对话框。
- TrustedServers.txt 也可以位于此处:
~/.local/share/synergy/SSL/Fingerprints/TrustedServers.txt
,如果上面提到的位置不起作用,请使用此位置。
自动启动
有几种方法可以自动启动 Synergy 客户端,它们实际上与可用于其他每个应用程序的方法相同。
server-host-name
替换为真实的服务器主机名。- 您可以将下一行添加到您的 xinitrc
~/.xinitrc
... #replace server-host-name with the real name synergyc server-host-name
以下是另一种选择
~/.xinitrc
XINIT_CMD='/usr/bin/synergyc -d FATAL -n galileo-fire 10.66.66.2:24800' /usr/bin/pgrep -lxf "$XINIT_CMD" || ( ( $XINIT_CMD ) & )
synergyc server-host-name
- 要使用 systemd 启动 Synergy 客户端,创建一个服务文件
~/.config/systemd/user/synergyc.service
[Unit] Description=Synergy Client Daemon After=network.target [Service] ExecStart=/usr/bin/synergyc --no-daemon server-name Restart=always RestartSec=3 [Install] WantedBy=default.target
然后执行 daemon-reload 并启动 synergyc.service
用户单元。
自动启动 Synergy 也在其 官方参考页面 中进行了记录。
Windows
安装后,打开 Synergy 程序,选择客户端(使用另一台计算机的键盘和鼠标)选项,然后在文本框中键入服务器计算机的主机名,然后单击启动以启动客户端。
如果您想在每次 Windows 启动时都启动 Synergy 客户端,则必须以管理员身份启动该程序,然后转到编辑 -> 服务,然后在客户端部分中选择安装。
如果您想从命令行启动客户端,这里有一个 Windows 命令,您可以将其放在 .bat
文件中或直接从 cmd.exe
运行。 这指向 C:\synergy.sgc
中的配置文件,并在后台像服务一样运行。
START /MIN /D"C:\Program Files\Synergy+\bin" synergys.exe -d ERROR -n m6300 -c C:\synergy.sgc -a 10.66.66.2:24800
macOS
在 synergyc 文件夹中找到 synergyc 程序,并将其拖到终端窗口上:完整路径将显示在终端中。 现在附加服务器的主机名,以便完整命令如下所示
/path/to/synergyc/synergyc server-host-name
然后按 Enter
。
已知问题
如果在 Synergy 安装中使用 Arch 作为客户端,则服务器可能无法唤醒客户端显示器。 有一些解决方法,例如通过 SSH 执行以下操作(如果已启用 ACPI)(请参阅:显示电源管理信号#运行时设置)
# xset dpms force on
故障排除
键盘 AltGr
如果您遇到 AltGr
/ISO_Level3_Shift
问题,请添加
/etc/synergys.conf
altgr = alt #1.8.2 altgr = shift #v1.8.3 and higher
到屏幕/客户端部分。
键盘重复
如果您在客户端机器(Linux 主机)上遇到键盘重复问题,只需键入
# /usr/bin/xset r on
在任何控制台中。
键盘映射
如果您在使用客户端窗口(例如终端)中的服务器键盘时遇到键盘映射问题,则在启动 synergyc 后重新设置 X 键盘映射可能会有所帮助。 以下命令将键盘映射设置为其当前值
# setxkbmap $(setxkbmap -query | grep "^layout:" | awk -F ": *" '{print $2}')
Gnome 中没有光标
当 GNOME 未检测到鼠标时,它将默认进入触摸屏模式并隐藏光标。 要启用运行
# dconf write /org/gnome/settings-daemon/plugins/cursor/active false
可以将其添加到 init 脚本或 systemd 单元
ExecStartPost=dconf write /org/gnome/settings-daemon/plugins/cursor/active false
混合 xorg 和 wayland 环境目前也无法正常工作。 尝试在 xorg 中启动 gnome 以用于客户端和服务器。
客户端返回“未能验证服务器证书指纹”
您需要将服务器的 ~/.synergy/SSL/Fingerprints/Local.txt
的内容复制到客户端的 ~/.synergy/SSL/Fingerprints/TrustedServers.txt
中。 请参阅 #在客户端上设置加密。
Scroll Lock LED 灯不亮
当使用 Scroll Lock 锁定到客户端(或进入相对鼠标移动模式)时,您可能会遇到键盘的 Scroll Lock LED 灯不亮的问题。 这可以通过将 Scroll_Lock
键绑定到空的修饰键来解决。
首先,找到一个空的修饰符。 在这种情况下,mod3 可用
$ xmodmap
xmodmap: up to 4 keys per modifier, (keycodes in parentheses): shift Shift_L (0x32), Shift_R (0x3e) lock Caps_Lock (0x42) control Control_L (0x25), Control_R (0x69) mod1 Alt_L (0x40), Alt_R (0x6c), Meta_L (0xcd) mod2 Num_Lock (0x4d) mod3 mod4 Super_L (0x85), Super_R (0x86), Super_L (0xce), Hyper_L (0xcf) mod5 ISO_Level3_Shift (0x5c), Mode_switch (0xcb)
然后,添加新的映射。
$ xmodmap -e 'add mod3 = Scroll_Lock' $ echo "add mod3 = Scroll_Lock" >> ~/.Xmodmap
请参阅 Xmodmap#激活自定义表 以在登录时加载 ~/.Xmodmap
。
进行此更改后,测试 LED 和屏幕锁定。 如果您发现需要按两次 Scroll Lock 才能锁定屏幕,请在 section: screens
中的所有屏幕上启用 halfDuplexScrollLock
。
附加鼠标按钮在客户端中不起作用
如果您发现附加鼠标按钮(即 Mouse4/Mouse5)无法转换为客户端,请尝试将以下内容添加到 section: options
mousebutton(6) = mousebutton(4) mousebutton(7) = mousebutton(5)
这将鼠标键重新映射到正确的数字。 如果这不能解决问题,请删除配置,停止 Synergy,并在启用调试日志记录的情况下在前台启动它
$ synergys -f -d DEBUG1
然后,将光标移动到出现问题的客户端屏幕。 单击不起作用的键,并注意如下日志条目
[2017-09-30T14:56:45] DEBUG1: onMouseDown id=6 ... [2017-09-30T14:56:46] DEBUG1: onMouseUp id=6
id=...
部分将具有在 mousebutton(...)
中使用的正确数字
鼠标在某些游戏中被固定
在某些应用程序(如 Overwatch 或其他游戏)中,光标会被困在屏幕中间。
根据 https://github.com/deskflow/deskflow/issues/2631,这是一个已知问题。
只需在设置中设置相对鼠标移动,并确保锁定屏幕。