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

编辑推荐精选

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

Trae

Trae

字节跳动发布的AI编程神器IDE

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

AI工具TraeAI IDE协作生产力转型热门
咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

Hunyuan3D-2

Hunyuan3D-2

高分辨率纹理 3D 资产生成

Hunyuan3D-2 是腾讯开发的用于 3D 资产生成的强大工具,支持从文本描述、单张图片或多视角图片生成 3D 模型,具备快速形状生成能力,可生成带纹理的高质量 3D 模型,适用于多个领域,为 3D 创作提供了高效解决方案。

3FS

3FS

一个具备存储、管理和客户端操作等多种功能的分布式文件系统相关项目。

3FS 是一个功能强大的分布式文件系统项目,涵盖了存储引擎、元数据管理、客户端工具等多个模块。它支持多种文件操作,如创建文件和目录、设置布局等,同时具备高效的事件循环、节点选择和协程池管理等特性。适用于需要大规模数据存储和管理的场景,能够提高系统的性能和可靠性,是分布式存储领域的优质解决方案。

下拉加载更多