【无标题】

告别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

相关推荐
workflower2 小时前
原子需求的属性
python·测试用例·需求分析·软件需求
尘缘浮梦2 小时前
协程asyncio入门案例 2
开发语言·python
kronos.荒2 小时前
滑动窗口+哈希表:最小覆盖子串
数据结构·python·散列表
AC赳赳老秦2 小时前
文旅AI趋势:DeepSeek赋能客流数据,驱动2026智慧文旅规模化跃迁
人工智能·python·mysql·安全·架构·prometheus·deepseek
一个处女座的程序猿O(∩_∩)O2 小时前
Python面向对象的多态特性详解
开发语言·python
秋刀奈3 小时前
Python 现代工程实践
python
清水白石0083 小时前
Fixture 的力量:pytest fixture 如何重新定义测试数据管理
数据库·python·pytest
lanbo_ai3 小时前
基于yolov10的火焰、火灾检测系统,支持图像、视频和摄像实时检测【pytorch框架、python源码】
pytorch·python·yolo
databook3 小时前
🚀 Manim CE v0.20.0 发布:动画构建更丝滑,随机性终于“可控”了!
python·动效