Project Icon

lan-mouse

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

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

Lan Mouse

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

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

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

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

  • 现在有了 gtk 前端
Lan-Mouse 截图

该项目的目标是成为专有工具如 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

安装依赖项

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

[!注意] 这只在从源代码构建 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 前端(参见下面的条件编译)。

使用方法

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 服务器,用于需

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

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

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号