Date
Oct 12, 2022
Description
关于我的 “KVM” 切换历程
Public
Public
Published
Oct 19, 2022
Tags
kvm
mac
linux
URL
Intro
这里简单介绍一下我目前使用的几种方案吧~
所用设备
- XPS 13 - Arch Linux - Gnome Desktop
- Mac Book Pro - Mac OS X
办公室方案

外置设备
- 27 寸 2k 屏幕 x 2
- 拓展坞
- 键鼠一套
这里咱给这两台笔记本都各使用一个屏幕
平时我把 MacBook 带回去使用, 而 XPS 放在办公室…
所以拓展坞连着的是 XPS, 拓展坞上再连一块屏幕
而 MacBook 上自带一个
HDMI
接口, 那我就能优雅的拔线下班啦那么, 咱的问题是如何将这一套键鼠去共享给两台设备使用
键鼠切换
这里我使用的是 Barrier 这个开源的跨平台
KVM
切换软件然后让 XPS 当
server
, MacBook 当作 client
实现鼠标挪动过去对应屏幕位置后自动切换键鼠位置


简单设置完成后, 便能够轻松使用啦
但是在这里还有些坑
Mac 的键位有点不一样, 所以要在
server
上设置一下键位映射
然后我的 Mac 是
M1 Pro
的处理器, 而 brew
上也没有原生 ARM
的版本适配根据这个 issue
我自己编译了一份并安装上了, 功能一切正常
对了, 在
wayland
上这个软件的支持程度很差…但是有个客户端实现
waynergy
r-c-f • Updated Aug 28, 2023
不过对键盘映射有点小问题
还好我在办公室外接的 N卡 对
wayland
支持一样差…所以
Xorg
保平安了剪切板同步
上一节的软件就支持啦
声音同步
由于平时上班需要听的时候会带上耳机, 而我的通讯软件又一般在 MacBook 上
这时 Arch Linux 的好处就来了
将 MacBook 蓝牙连接上, 咱的 XPS 上
你就能发现 XPS 变成了一个蓝牙音响

这时将音频输出选上它, 你就会惊喜的发现声音正常从 XPS 出来了
这应该是 无意间发现具体没研究
pipewire
和 bluez
带来的功能吧? 对了, 这时还能通过 将手机投到 显示屏上, 蓝牙再连接上 XPS
scrcpy
Genymobile • Updated Aug 31, 2023

又能将手机操作包括声音 (甚至
aptX HD
的编码) 也同步到一块显示屏上啦通知同步
利用 KDE Connect 协议实现
- Android
- Arch Linux (Gnome)
- Mac OS X
主题同步
由于 Arch Linux 的灵活性, 我在我使用的 Gnome 插件(https://extensions.gnome.org/extension/2236/night-theme-switcher/)
发现了在切换系统 Light/Dark 主题的时候, 能自动执行命令
于是我研究了一下 Mac 上的 AppleScript
通过这个命令可以切换亮暗色模式
$ osascript -e 'tell app "System Events" to tell appearance preferences to set dark mode to not dark mode'
于是咱再结合
ssh
命令就能实现切换同步了 
显示器亮度同步
待填坑…用 DDC/CI 实现
宿舍方案
由于疫情严重, 最近一周只能在宿舍度过了
外置设备
- 24 寸 1080p 屏幕 x 1
- 拓展坞
- 键鼠一套
宿舍只有一个屏幕, 所以这次打算让两台设备都使用同一台显示器 (通过切换的方式)
那么咱就要思考一下, 如何去实现切换显示器输出的信号
这里我打算使用的 DDC/CI 协议实现
那么键鼠切换怎么实现呢?
barrier
debauchee • Updated Aug 30, 2023
这个方案显然是不行的 (需要魔改一下)
难道我真的要买一个
KVM
切换的硬件了么?就在我愁眉焦急的时候, 我找到了这个项目
display-switch
haimgel • Updated Aug 29, 2023
由于不支持
M1
的 DCC/CI
功能所以我还是将
Linux
作为 Host
简单配置了一下配置文件
usb_device = "04d9:a09f" on_usb_connect = "DisplayPort1" on_usb_disconnect = "Hdmi1"
这里的
usb_device
是键鼠的 id
, 可以通过 lsusb
命令查看再运行
display_switch
命令, 就实现了将键鼠插入 XPS 后自动切换为 DP
信号拔出键鼠切换回
HDMI
信号, 这时我再插回 Macbook 上就能实现切换啦省下来了买
KVM
切换器的钱有空的时候打算尝试帮它适配一下
M1
设备的 DDC/CI
顺便练习一下
Rust
其实还是能实现不拔插设备, 通过
Barrier
那种方式(软切换) 实现键鼠输入切换很想写一个类似的软件, 甚至蓝牙就能实现
HID
+ Audio
切换 + 同步有生之年系列了…