【无标题】

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

在 Linux 桌面全面转向 Wayland 的今天,很多老牌工具都遇到了"水土不服"。如果你是一个多设备用户,习惯使用 Synergy 或 Deskflow (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

相关推荐
潜创微科技7 小时前
USB2.0 还是 USB3.0:CH9338 与 CH9339 对拷线选型怎么分
对拷线·键鼠共享·沁恒
速易达网络7 小时前
如何“训练”一个 .task 模型
python
PiaoKe___7 小时前
云手机技术解析:从 ARM 虚拟化到 Python 自动化实战
python·智能手机·自动化
学习论之费曼学习法7 小时前
无人值守AI内容矩阵实战(10):Windows 上让 Python 进程 7×24 活着
人工智能·windows·python·矩阵·powershell·进程守护
Norna8 小时前
锁文件里明明有哈希,PDM 为什么说没有?
python
大侠在此在在此8 小时前
我花了不到1块钱,用python把自己一年的1500次会话做成了个人知识库
python·llm
Jino8 小时前
900×2100 的门洞,展开面积却是 3.4 ㎡ —— 不锈钢核价引擎的七条口径
python
贝壳6908 小时前
Python 布尔数组选型:list、numpy.bool_、bitarray、RoaringBitmap、bool-hybrid-array 各管一段
python
一只爱撸猫的程序猿8 小时前
全球出货第二,却不在 AI 的默认推荐里:一份悖论解剖报告
人工智能·python·产品
piaoyiren8 小时前
Python FTP 服务端项目详细功能文档
网络·数据库·python