lan-mouse

lan-mouse

开源跨平台鼠标键盘共享软件 实现多设备无缝操控

Lan Mouse是一款跨平台鼠标键盘共享软件,支持Wayland、Windows、MacOS和Linux等多种操作系统。用户可通过单一套鼠标键盘无缝操控多台设备,提高工作效率。该项目采用Rust语言开发,运行高效,并提供GTK图形界面,易于使用。作为开源项目,Lan Mouse致力于为专有软件提供自由替代方案,强调性能优化和扩展性。

Lan Mouse软件KVM切换器开源软件跨平台输入共享Github开源项目

Lan Mouse

Lan Mouse 是一款类似于 Apple 设备上 Universal Control 的鼠标和键盘共享软件。

它允许使用一套鼠标和键盘操控多台电脑。

这也被称为软件 KVM 切换器。

主要目标是 Linux 上的 Wayland,但 Windows、MacOS 和使用 Xorg 的 Linux 也有部分支持(详见下文)。

  • 现在有了 gtk 前端
<picture> <source media="(prefers-color-scheme: dark)" srcset="https://github.com/feschber/lan-mouse/assets/40996949/016a06a9-76db-4951-9dcc-127d012c59df"> <source media="(prefers-color-scheme: light)" srcset="https://github.com/feschber/lan-mouse/assets/40996949/d6318340-f811-4e16-9d6e-d1b79883c709"> <img alt="Lan-Mouse 截图" srcset="https://github.com/feschber/lan-mouse/assets/40996949/016a06a9-76db-4951-9dcc-127d012c59df"> </picture>

该项目的目标是成为专有工具如 Synergy 2/3Share Mouse 的开源替代品。

重点在于性能和干净、可管理的实现,便于扩展支持其他后端,如 Android、iOS 等。

因为使用 Rust 编写,所以超快速™

另一个替代方案(目标略有不同)是 Input Leap

[!警告] 由于这个工具在过去几天获得了一些关注:

目前所有网络流量都是未加密的,以明文方式发送。

恶意行为者如果可以访问网络,可能会读取输入数据或通过伪造 IP 发送输入事件来控制设备。

因此,目前您应该只在本地网络中使用受信任的设备使用此工具, 我不对任何数据泄露负责!

操作系统支持

下表显示了不同操作系统上对输入模拟(模拟从其他客户端接收的事件)和 输入捕获(向其他客户端发送事件)的支持:

操作系统 / 桌面环境输入模拟输入捕获
Wayland (wlroots):heavy_check_mark::heavy_check_mark:
Wayland (KDE):heavy_check_mark::heavy_check_mark:
Wayland (Gnome):heavy_check_mark::heavy_check_mark: (从 GNOME 45 开始)
Windows:heavy_check_mark::heavy_check_mark:
X11:heavy_check_mark:进行中
MacOS:heavy_check_mark:进行中

[!重要] Gnome -> Sway 只能部分工作(修饰键事件处理不正确)

[!重要] Wayfire

如果您使用 Wayfire,请确保使用较新版本(必须比 10 月 23 日更新),并且在 Wayfire 配置中的插件列表中添加 shortcuts-inhibit 否则输入捕获将无法工作。

[!重要] 如果 Windows 系统没有连接真实鼠标, 向其发送输入时鼠标光标将不可见。

安装

通过 cargo 安装

cargo install lan-mouse

从 Releases 下载

Windows、MacOS 和 Linux 的预编译发布二进制文件可在发布区获取。

对于 Windows,依赖项包含在 .zip 文件中,对于其他操作系统,请参见安装依赖项

Arch Linux

可以从官方仓库安装 Lan Mouse:

pacman -S lan-mouse

也可以在 AUR 上获取:

# git 版本(包含最新更改) paru -S lan-mouse-git # 或者 paru -S lan-mouse-bin

Nix

手动安装

首先确保安装必要的依赖项

以发布模式构建:

cargo build --release

直接运行:

cargo run --release

安装文件:

# 安装 lan-mouse sudo cp target/release/lan-mouse /usr/local/bin/ # 安装应用图标 sudo mkdir -p /usr/local/share/icons/hicolor/scalable/apps sudo cp resources/de.feschber.LanMouse.svg /usr/local/share/icons/hicolor/scalable/apps # 更新图标缓存 gtk-update-icon-cache /usr/local/share/icons/hicolor/ # 安装桌面入口 sudo mkdir -p /usr/local/share/applications sudo cp de.feschber.LanMouse.desktop /usr/local/share/applications # 使用 firewalld 时:安装防火墙规则 sudo cp firewall/lan-mouse.xml /etc/firewalld/services # -> 在 firewalld 设置中启用服务

条件编译

目前只支持 x11、wayland、windows 和 MacOS 后端。 根据使用的工具链,自动省略对其他平台的支持 (在 Windows 的 .exe 中包含 x11 和 wayland 后端支持是没有意义的)。

然而,在 Linux 系统上可能仍然想要省略对 wayland、x11 或 libei 的支持。

这可以通过 cargo features 实现。

例如,如果只需要 wayland 支持,以下命令将生成 一个只支持 wayland 的可执行文件:

cargo build --no-default-features --features wayland

有关可用功能的详细列表,请查看 Cargo.toml

安装依赖项

<details> <summary>MacOS</summary>
brew install libadwaita
</details> <details> <summary>Ubuntu 及其衍生版</summary>
sudo apt install libadwaita-1-dev libgtk-4-dev libx11-dev libxtst-dev
</details> <details> <summary>Arch 及其衍生版</summary>
sudo pacman -S libadwaita gtk libx11 libxtst
</details> <details> <summary>Fedora 及其衍生版</summary>
sudo dnf install libadwaita-devel libXtst-devel libX11-devel
</details> <details> <summary>Windows</summary>

[!注意] 这只在从源代码构建 lan-mouse 时需要。Windows 发布版附带预编译的 gtk dll。

简要说明:

从源代码构建 gtk

  • 以下命令应在管理员权限的 PowerShell 实例中运行:
# 安装 chocolatey Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1')) # 安装 gvsbuild 依赖项 choco install python git msys2 visualstudio2022-workload-vctools
  • 以下命令应在普通 PowerShell 实例中运行:
# 使用 python 安装 gvsbuild python -m pip install --user pipx python -m pipx ensurepath
  • 重新启动 PowerShell 实例,以使环境变化生效。
pipx install gvsbuild # 构建 gtk + libadwaita gvsbuild build gtk4 libadwaita librsvg

为避免从源代码构建 GTK,可以禁用 gtk 前端(参见下面的条件编译)。

</details>

使用方法

Gtk 前端

默认情况下,运行 lan-mouse 时会打开 gtk 前端。

要添加新连接,只需在两个设备上点击 添加 按钮, 输入相应的主机名并激活它。

如果鼠标无法移动到设备上,请确保在防火墙中开放了端口 4242(或所选端口)。

命令行界面

可以使用 --frontend cli 作为命令行参数启用 cli 界面。 输入 help 列出可用命令。

例如:

$ cargo run --release -- --frontend cli (...) > connect <host> left|right|top|bottom (...) > list (...) > activate 0

守护进程

Lan Mouse 可以以守护进程模式启动,以在后台保持运行。 要这样做,请在命令行参数中添加 --daemon

$ cargo run --release -- --daemon

为了在图形会话中自动启动 lan-mouse, 可以使用 systemd-service

将文件复制到 ~/.config/systemd/user/ 并启用服务:

cp service/lan-mouse.service ~/.config/systemd/user systemctl --user daemon-reload systemctl --user enable --now lan-mouse.service

配置

为了在启动时自动加载客户端,会解析 $XDG_CONFIG_HOME/lan-mouse/config.toml 文件。 $XDG_CONFIG_HOME 默认为 ~/.config/

要创建此文件,您可以复制以下示例配置:

示例配置

[!提示] 释放绑定中的键符号按照 src/scancode.rs#L172 中的名称命名。 这可能会改变

# 示例配置 # 配置释放绑定 release_bind = [ "KeyA", "KeyS", "KeyD", "KeyF" ] # 可选端口(默认为 4242) port = 4242 # # 可选前端 -> 如果可用,默认为 gtk # # 可能的值为 "cli" 和 "gtk" # frontend = "gtk" # 在右侧定义一个主机名为 "iridium" 的客户端 [right] # 主机名 hostname = "iridium" # lan-mouse 启动时立即激活此客户端 activate_on_startup = true # 可选的(已知)IP 地址列表 ips = ["192.168.178.156"] # 在左侧定义一个 IP 地址为 192.168.178.189 的客户端 [left] # 主机名是可选的:如果未指定主机名, # 至少需要指定一个 IP 地址。 hostname = "thorium" # 以太网和 WiFi 的 IP ips = ["192.168.178.189", "192.168.178.172"] # 可选端口 port = 4242

其中 left 可以是 leftrighttopbottom

路线图

  • 图形前端(gtk + libadwaita)
  • 遵循 xdg-config-home 的配置文件位置。
  • IP 地址切换
  • 活跃度跟踪 客户端无法访问时自动释放鼠标
  • 活跃度跟踪:服务器离线时自动释放按键
  • MacOS 键码转换
  • Libei 输入捕获
  • X11 输入捕获
  • Windows 输入捕获
  • MacOS 输入捕获
  • 延迟测量和可视化
  • 带宽使用测量和可视化
  • 剪贴板支持
  • 加密

协议

目前出于性能考虑,所有鼠标和键盘事件都通过 UDP 发送。 每个事件作为一个单独的数据包发送,目前没有任何确认机制来保证 0% 的数据包丢失。 这意味着,任何丢失的数据包都会导致鼠标/键盘事件被丢弃,目前这种情况被忽略。

UDP 还有一个额外的好处,就是不需要重连逻辑。 任何客户端都可以直接离线,一旦重新上线就会立即开始工作。

此外,还托管了一个 TCP 服务器,用于需

编辑推荐精选

Refly.AI

Refly.AI

最适合小白的AI自动化工作流平台

无需编码,轻松生成可复用、可变现的AI自动化工作流

酷表ChatExcel

酷表ChatExcel

大模型驱动的Excel数据处理工具

基于大模型交互的表格处理系统,允许用户通过对话方式完成数据整理和可视化分析。系统采用机器学习算法解析用户指令,自动执行排序、公式计算和数据透视等操作,支持多种文件格式导入导出。数据处理响应速度保持在0.8秒以内,支持超过100万行数据的即时分析。

AI工具酷表ChatExcelAI智能客服AI营销产品使用教程
TRAE编程

TRAE编程

AI辅助编程,代码自动修复

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
AIWritePaper论文写作

AIWritePaper论文写作

AI论文写作指导平台

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

AI辅助写作AI工具AI论文工具论文写作智能生成大纲数据安全AI助手热门
博思AIPPT

博思AIPPT

AI一键生成PPT,就用博思AIPPT!

博思AIPPT,新一代的AI生成PPT平台,支持智能生成PPT、AI美化PPT、文本&链接生成PPT、导入Word/PDF/Markdown文档生成PPT等,内置海量精美PPT模板,涵盖商务、教育、科技等不同风格,同时针对每个页面提供多种版式,一键自适应切换,完美适配各种办公场景。

AI办公办公工具AI工具博思AIPPTAI生成PPT智能排版海量精品模板AI创作热门
潮际好麦

潮际好麦

AI赋能电商视觉革命,一站式智能商拍平台

潮际好麦深耕服装行业,是国内AI试衣效果最好的软件。使用先进AIGC能力为电商卖家批量提供优质的、低成本的商拍图。合作品牌有Shein、Lazada、安踏、百丽等65个国内外头部品牌,以及国内10万+淘宝、天猫、京东等主流平台的品牌商家,为卖家节省将近85%的出图成本,提升约3倍出图效率,让品牌能够快速上架。

iTerms

iTerms

企业专属的AI法律顾问

iTerms是法大大集团旗下法律子品牌,基于最先进的大语言模型(LLM)、专业的法律知识库和强大的智能体架构,帮助企业扫清合规障碍,筑牢风控防线,成为您企业专属的AI法律顾问。

SimilarWeb流量提升

SimilarWeb流量提升

稳定高效的流量提升解决方案,助力品牌曝光

稳定高效的流量提升解决方案,助力品牌曝光

Sora2视频免费生成

Sora2视频免费生成

最新版Sora2模型免费使用,一键生成无水印视频

最新版Sora2模型免费使用,一键生成无水印视频

Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

下拉加载更多