【无标题】

告别Hyprland/Niri键鼠共享难题:Pynergy ------ 为 Wayland 设计的 Synergy 兼容客户端

在 Linux 桌面全面转向 Wayland 的今天,很多老牌工具都遇到了"水土不服"。如果你是一个多设备用户,习惯使用 SynergyDeskflow (Barrier) 来共享一套键鼠,你可能发现许多 Wayland 合成器(如 hyprland/niri)因为没有实现 RemoteDesktop portal,导致官方客户端无法正常工作。

今天介绍的开源项目 Pynergy,正是为了打破这一僵局而生的。


🚀 为什么选择 Pynergy?

  • 绕过 Wayland 限制 :通过直接调用 Linux 内核的 uinput 模块来模拟输入设备。这意味着它不依赖具体的桌面环境(如 GNOME/KDE)或 Portal 接口,理论上兼容所有支持 uinput 的 Linux 发行版。
  • 兼容 Synergy 协议:它可以且仅可以作为客户端,与 Deskflow、Synergy 等服务端无缝对接。
  • 安全性:支持 TLS/mTLS 加密通信。
  • 可维护:基于 Python 3.13+ 开发,采用模块化设计,轻松添加backend。

🛠️ 功能概览

功能 状态 说明
远程控制 ✅ 已实现 完美支持鼠标和键盘的远程操控
TLS/mTLS ✅ 已实现 提供加密隧道,保障输入安全
坐标模式 ✅ 已实现 支持绝对和相对鼠标移动,适配不同显示器布局
剪贴板共享 🔄 待实现 目前可搭配 sync-clipboard 使用
NixOS 支持 ✅ 已实现 提供 Flake 支持,声明式配置更优雅

📦 快速安装与配置

1. 权限准备(重要!)

由于 Pynergy 需要直接操作 /dev/uinput,你需要给当前用户授权。

通用 Linux 做法:

创建 /etc/udev/rules.d/99-pynergy.rules

udev 复制代码
KERNEL=="uinput", GROUP="input", MODE="0660", OPTIONS+="static_node=uinput"

然后将自己加入 input 组并加载模块:

bash 复制代码
sudo usermod -aG input $USER
sudo modprobe uinput

2. 启动客户端

你可以直接通过命令行连接到你的服务端:

bash 复制代码
pynergy-client --server 192.168.1.1 --client-name my-linux-box

3. NixOS 用户

Pynergy 对 NixOS 非常友好,你只需要在 flake.nix 中添加 input,并在配置中简单声明:

nix 复制代码
# 在 configuration.nix 中
services.udev.extraRules = ''
  KERNEL=="uinput", MODE="0660", GROUP="input", OPTIONS+="static_node=uinput"
'';
users.users.<name>.extraGroups = [ "input" ];
boot.kernelModules = [ "uinput" ];

💡 使用小贴士

  • 平滑度调节 :如果你觉得鼠标移动有延迟或掉帧,可以尝试调整 --mouse-move-threshold 参数。
  • 自动启动 :建议配合 systemd --user 服务使用。项目 README 中提供了完整的 .service 模板,让你开机即享丝滑的跨屏体验。
  • 初次连接 :如果开启了 TLS 加密,第一次连接务必在终端手动运行,以便交互式确认服务器证书。

结语

Pynergy不追求极致的性能,而是追求最低开发难度和高可维护性,作为各个合成器实现RemoteDesktop portal前的解决方案。

🔗 项目地址https://github.com/GOKORURI007/pynergy

相关推荐
小小测试开发1 小时前
安装 Python 3.10+
开发语言·人工智能·python
梦想不只是梦与想1 小时前
Python 中的装饰器
python·装饰器
我叫唧唧波2 小时前
Python+AI 全栈学习笔记
人工智能·python·学习
copyer_xyf3 小时前
Python 异常处理
前端·后端·python
麻雀飞吧3 小时前
期货多合约策略目标持仓怎么更新才不乱
python·区块链
Cthy_hy3 小时前
拓扑排序超详解:原理 + Kahn 贪心算法
python·算法·贪心算法
LSssT.3 小时前
【01】Python 机器学习
开发语言·python
为爱停留4 小时前
给智能体装上「刹车」:中断(Interrupts)与人工审批全解析
python
l1t4 小时前
DeepSeek总结的使用实体-组件-系统和基于存在性处理进行Python编程39-40
开发语言·python
曾阿伦4 小时前
Python 搭建简易HTTP服务
开发语言·python·http