需求
最近绝大多数代码工作转移到服务器上进行,个人终端对性能其实没什么要求,相比不能移动的台式机,笔记本更加适合。 我笔记本上同时装了 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
更新 21-11-30
- 之前的方案发现笔记本还是会有卡顿,最终采取两个设备互换的方案,台式机仅使用 Linux,笔记本仅使用 Windows.
- 后来也花费了40元购买了之前提到的5口千兆交换机用于解决工位仅一个网口的问题。
- RDPwrap的配置文件更新还是有时间差,现在改为平时在台式机写代码,有需要时用 VNC 远程到笔记本上写 Word 文档,有肉眼可见的时延但完全不影响使用体验。使用的软件为 RealVNC.
- 后来除了自建 NextCloud 之外还自建了 Gitea 和 Overleaf,使用体验良好,现在基本上工作都完全依赖服务器,不管人在哪里使用体验都是一致的.