笔记本电脑与工位上台式电脑的协作

需求

最近绝大多数代码工作转移到服务器上进行,个人终端对性能其实没什么要求,相比不能移动的台式机,笔记本更加适合。 我笔记本上同时装了 linux 桌面发行版和 windows, 即便 WSL 还有 vscode 的远程插件已经挺好用了,但我还是无法适应在 windows 下面写代码(个人习惯,没有说 windows 不好的意思)。 但当前用 linux 桌面版还是会有一些功能的缺失,用虚拟机也有点不舒服。 因此想要一个解决方案,让工位上装有 Windows 10 的台式机与装有 linux 桌面发行版的笔记本之间能比较好的协作。

具体需求:

  • linux 笔记本写代码
  • windows 台式机写 office 文档、打游戏、使用腾讯系聊天软件与他人协作
  • 两个系统间的部分文件需要同步

方案

笔记本和台式机连一个显示器,平时写代码时用笔记本双屏工作,写文档时通过远程桌面用台式机, 用远程桌面不舒服(如游戏)时切换显示器信号直接用台式机。

当前方案能够比较好满足需求,笔记本上的接口 电源+键鼠+耳机+显示器+RJ45网口 正好够用。后续如果发现更好的方案随时更新。

连线

显示器

笔记本和台式机都用 HDMI 线连到同一个24寸2K显示器上。

切换信号可以手动按显示器的按钮,当然在 linux 下也有软件方案,那就是 ddcutil. 安装后要先使用sudo modprobe i2c-dev 激活内核里的模块,之后就能输命令实现手动按显示器菜单的效果,包括调节亮度和切换信号。 例如,sudo ddcutil detect可以查看已连接的显示器,sudo ddcutil capabilities 可以查看支持的命令。 对我的显示器来说,sudo ddcutil setvcp -b 4 0x60 0x11 就是切换到 HDMI 1

键鼠

各自插了一套键鼠。台式机上的平时用不到,扔到一边不碍事的地方,打游戏时拿出来。

网络

工位只有一个网口,目前是台式机连网线,笔记本连 WIFI。我的出口网关没有限制 IPv6 的下载速度,而手头上的路由器都没有 IPv6 支持,我又懒得折腾,所以就没用路由器。感觉还是不太信得过我当前环境下无线网的体验,下一步计划买个几十块钱的小型四口交换机用。

远程访问

服务端

我的 Windows 是家庭中文版,因此局域网内的远程访问需要额外安装一个 RDPwrap。 这软件目前更新不是很及时,如果发现当前 Windows 小版本不支持可以到 issues 里寻找解决方案,基本上修改一个 ini 文件就能搞定。

客户端

客户端软件用的是 remmina, 是个通用的远程连接客户端,支持各种协议。安装 freerdp 之后就可以作为 RDP 客户端使用。

从我的个人经验,局域网内用来写文档和使用腾讯系聊天软件绝对够用,不会出现可以感受到的延迟。需要打游戏时就切换显示器。

自建网盘

两个电脑互相交换文件用的是自建的 nextcloud 同步盘,搭建在另一个内网服务器上。当然也可以搭建在笔记本上, 不过这么做笔记本既是服务端也是客户端应该会用双倍的存储空间?

附上我的 docker-compose.yml

version: '3'

services:
  db:
    image: postgres:alpine
    restart: always
    volumes:
      - /home/xxx/nextcloud/db:/var/lib/postgresql/data
    env_file:
      - db.env

  app:
    image: nextcloud:apache
    restart: always
    ports:
      - 8000:80
    volumes:
      - /home/xxx/nextcloud/data:/var/www/html
    environment:
      - POSTGRES_HOST=db
    env_file:
      - db.env
    depends_on:
      - db

还有一个数据库配置 db.env

POSTGRES_PASSWORD=xxxxxx
POSTGRES_DB=xxxxxx
POSTGRES_USER=xxxxxx