是时候谈谈我的writerdeck了
摘要
一篇个人博客文章,讲述了如何将旧笔记本电脑改装成专用写作设备(writerdeck),采用基于tty的Debian配置,消除干扰,专注于写作。
暂无内容
查看缓存全文
缓存时间: 2026/05/23 21:33
# 是时候聊聊我的写作机了
来源:https://veronicaexplains.net/my-first-writerdeck/
我有注意力问题。
几周前,我决定把旧笔记本改造成一台**写作机**(writerdeck,https://www.writerdeck.org/?ref=veronicaexplains.net),这是一种专门用于写作的设备,不受现代互联网干扰。
很多人为此打造了非常精致的离线设备,我也很想这么做……总有一天。但目前我手头的项目已经不少,关键是先开始写,所以我用了手头现有的东西:一台用了六年的笔记本电脑,它运行良好、性能充足,但已经不怎么用了。
关键的是,这台笔记本键盘手感极佳,而且是磨砂屏,长时间打字非常舒服,在白天也够用(我喜欢带着狗坐在外面写东西)。它还是一台 **System76**(https://system76.com/?ref=veronicaexplains.net)Galago Pro(非赞助),这意味着它本来就很适合 Linux,而且内核支持也很好。
## 设置 TTY 而非桌面环境
当然,你也可以只用普通的桌面操作系统并保持离线,但这说起来容易做起来难。我不认为你能彻底从现代 Mac 或 Windows 电脑上移除浏览器——至少不能用官方支持的方式。
当然,我是 Linux 用户,我有许多选择。我本可以用一个简单的桌面环境或窗口管理器,并且**就是不安装浏览器**,但我想要的东西能打破桌面操作系统的肌肉记忆,迫使我专注在文字上。
我选择了基于 TTY 的设置,使用 **Debian**(https://debian.org/?ref=veronicaexplains.net)(写作时是 Trixie 版本)。纯控制台——没有 X11 或 Wayland,没有桌面来干扰我。
安装 Debian 很简单。我用了文本模式安装程序,对于这台写作机,我选择跳过全盘加密(这台设备上没有任何不公开的内容)。
总有人跟我说,他们在 Debian 上卡住是因为没给自己设置 sudo。如果你是从 Mint、Ubuntu 或其他桌面版发行版过来的,这可能会绊倒你。如果你想用 `sudo` 来执行管理任务,那就跳过设置 root 密码。这样会禁用 root 并将你设为 `sudo` 用户。
(此处为 Debian TUI 安装器界面截图,显示“设置用户和密码”对话框,用于设置 root 密码。如果想用 sudo 用户,这里留空!很多人不知道这个小窍门,如果从其他发行版过来容易出问题。)
在桌面选择界面,我选择了移除所有桌面功能,因为还是那句话,我要让这个设备尽可能精简。只有我和文字,没有 GUI 挡路。
(此处为 Debian TUI 安装器界面截图,显示“软件选择”对话框。我取消了“Debian 桌面环境”和“GNOME”的选择。这样就只有 TTY 了。)
安装完成后,你会看到一个平淡的控制台登录提示。这正是开始的好地方。
(一个 Debian TTY 登录提示,黑色背景,白色小字显示登录提示。)很无聊。完美。
## 安装 network-manager
首次登录后,先用 `sudo apt update` 和 `sudo apt upgrade` 确保系统是最新的,然后我选择用 `network-manager` 包替换常规的网络栈。主要是为了使用非常好用的 curses 工具 `nm-tui` 来连接网络。
`nm-tui` 比编辑配置文件来设置网络设备简单一千倍。虽然这台设备离家时我主要离线使用,但能连接网络备份文件也是不错的,以备不时之需。
安装完 `network-manager`(`sudo apt install network-manager`)后,可以用 `nm-tui` 扫描可用的 Wi-Fi 网络并连上。根据硬件情况,你可能还能访问 WAN。很酷。
(一个网络管理器的 TUI 界面。是一个 curses 界面,提供少量网络配置选项。)有一个 TUI 来管理网络是生活质量的一个提升。
## 安装 neovim 和 kmscon
我等不及了,赶紧用 `sudo apt install neovim` 安装了 `neovim`。我可不想用 `nano` 编辑。没有针对谁,我只是个完全的 vim 用户。
平时我用传统的 `vim`,但这次选了 `neovim`,因为我想多了解它一些。
然后,我安装了 `kmscon`,对于 Debian Trixie,需要从 backports 添加。
首先,我更新了 Debian 源列表,编辑 `/etc/apt/sources.list` 文件,添加以下两行:
```
deb http://deb.debian.org/debian/ trixie-backports main contrib non-free non-free-firmware
deb-src http://deb.debian.org/debian/ trixie-backports main contrib non-free non-free-firmware
```
快速运行 `sudo apt update`,然后就可以直接运行 `sudo apt install -t trixie-backports kmscon`。这会将 `kmscon` 包及其依赖从 backports 安装,并设置它为开机自启。下次重启时,你会看到熟悉的 TTY,但现在它可以用 `ctrl-plus` 和 `ctrl-minus` 缩放,就像大多数现代网页浏览器一样。
至此,我有了一个完全可用的写作机。我完全可以在这里停下来,对离线且愉快的写作体验感到相当满意。但我想添加一些我已经习惯的便利功能。
## tmux:终端复用与漂亮的状态栏
接着,我安装了 `tmux`,用于基本的终端平铺和漂亮的状态栏。Debian(以及几乎所有发行版)都打包了它,安装命令是 `sudo apt install tmux`。
我还安装了 `acpi` 来显示电池信息,以及 `light` 来控制屏幕背光。你可以同时安装它们:`sudo apt install acpi light`。我把这些设置写进了家目录下的 `.tmux.conf` 文件。以下是我如何使用它们的。
### 用 ACPI 显示电池电量
安装完 `acpi` 包后,你可以用 `acpi -b` 查看电池(前提是你的笔记本有电池且能被 `acpi` 检测到,这一点在我试过的每台笔记本上都有效)。
为了只获取电量百分比,你可以把 `acpi -b` 的输出通过 `grep` 处理:
```
acpi -b | grep -m1 -o -P '.{0,2}%'
```
这个 grep 有点难懂,让我们拆解一下:
- `-m1` 表示只读取第一行后停止。我这么做是因为有些笔记本有多个电池,而我只关心主电池。如果你 `acpi -b` 只返回一行,可以省略这个参数。
- `-o` 表示只打印匹配的部分。我不想要显示剩余时间的大量输出——你可能需要。
- `-P` 表示将模式解释为 Perl 兼容的正则表达式。然后 `'.{0,2}%'` 获取百分号及其前面的两个数字(不会显示“100%”,但我可以接受,因为这笔记本电池已经达不到 100% 了)。
我想用电池信息替换 `tmux` 状态栏中的默认内容,所以在 `.tmux.conf` 中加入以下内容:
```
# 用电池电量代替时间显示
set-window-option -g status-right "#(acpi -b | grep -m1 -o -P '.{0,2}%')"
```
### 用 Light 控制亮度
接下来,我们可以用之前安装的简单命令 `light` 来控制亮度。在我的笔记本上,F8 和 F9 键上印有亮度图标,正好配对。
`light -U 10` 减少 10% 亮度,`light -A 10` 增加 10% 亮度。
因此,要将 F8 和 F9 绑定到减少/增加亮度,只需在 `.tmux.conf` 中添加:
```
# 亮度快捷键
bind -n F8 run-shell 'light -U 10' # 降低
bind -n F9 run-shell 'light -A 10' # 提高
```
现在,下次启动 `tmux` 时,我就有亮度控制了。非常整洁!
### 其他 tmux 自定义设置
最后,我喜欢把 `tmux` 的状态栏放在屏幕顶部,因为 `neovim` 的状态栏在底部。这通过添加 `set -g status-position top` 到 `.tmux.conf` 文件实现。
另外,我习惯指定颜色。默认是绿色,但我还是设置了一下(以后可能会改,谁知道呢),用 `set -g status-style bg=green`。
所以,我的最终 `tmux.conf` 如下:
```
# 状态栏位置和颜色
set -g status-position top
set -g status-style bg=green
# 亮度快捷键
bind -n F8 run-shell 'light -U 10' # 降低
bind -n F9 run-shell 'light -A 10' # 提高
# 用电池电量代替时间显示
set-window-option -g status-right "#(acpi -b | grep -m1 -o -P '.{0,2}%')"
```
这不是一堂 `tmux` 课,但默认情况下,要分屏,先用 Ctrl-B 进入 `tmux` 命令模式,然后按 `%` 垂直分屏,或按 `"` 水平分屏。Ctrl-B 后再按方向键可以在窗格间移动焦点。
总有一天,我会专门写一篇 `tmux` 教程。继续吧!
## neovim 和 vimwiki
我知道很多人不会用 `neovim` 或 `vim`,而是选择 `emacs`、`helix`、`micro`、`nano`、`blammo` 或其他我没提到的(但肯定会有人提)。
那很好。我为你高兴。不过我是 `vim` 用户,所以我就这样设置了。
`neovim` 内置了一些相当不错的配色方案,你可以用 `:colorscheme` 选项尝试。我选择了 `blue`,它很适合我的复古风格,但你可以选择任何你喜欢的方案,甚至自己从头写一个。
我在 `.config/nvim/init.vim` 文件中添加了 `colorscheme blue`,还加了 `set linebreak` 让单词自动换行(在台式机上我通常不这样做,但这台机器的唯一工作就是写作)。
最后,我设置了 `vimwiki`,这在另一篇 %博客文章% 中已经介绍过。唯一不同的是,Trixie 版本中 `vimwiki` 已经打包,所以你可以用 `sudo apt install vim-vimwiki` 安装。
## 安装 Syncthing
我按照 **Syncthing 文档**(https://docs.syncthing.net/intro/getting-started.html?ref=veronicaexplains.net#getting-started)设置了 `syncthing`,文档写得很好,我就不在这里重复了。
我设置了 `syncthing`,将写作机的 `vimwiki` 文件夹与服务器的 `writing` 文件夹同步,这个 `writing` 文件夹是另一个更私密的 `vimwiki` 配置的子目录。我这样做是为了让桌面 `vimwiki` 中的敏感笔记不会同步到写作机上。如果这台设备有加密,我其实不介意,而且我可能会设置基于密码的 `LUKS` 加密,以便在写作机上访问我的 `vimwiki` 日记。
我与标准 `syncthing` 设置的不同之处在于:由于我没有带传统浏览器的桌面,我不得不将 `syncthing` 的 Web GUI **设置为监听所有地址**(https://docs.syncthing.net/intro/getting-started.html?ref=veronicaexplains.net#getting-started),而不是仅仅 `127.0.0.1`。我不太喜欢这个方法,但再说一次,这东西上没有私密内容。更好的方法是通过 SOCKS 代理连接,但这将是未来文章的主题。
## 设置自动登录
为了让这台写作机真正属于我,做的最后一件事是设置自动登录。
我希望能够打开它就开始快速写作——自动登录是实现这一目标的简单方法。
### 使用 kmscon 自动登录
因为我安装了 `kmscon`,这很简单,只需更新 systemd 服务:`sudo systemctl edit [email protected]`。
然后,我添加了以下内容:
```
[Service]
ExecStart=
ExecStart=/usr/bin/kmscon --login -- /bin/login -f my_username_goes_here
```
这告诉 `kmscon` 在 `--login` 之后启动 `--` 后面的内容。在我的例子中,这是默认的 `/bin/login` 程序,参数是 `-f` 和我的用户名。
### 开机启动 tmux
当 `kmscon` 帮我登录后,我希望 `tmux` 自动启动并进入 `vimwiki`。但仅限在主 `tty`(默认虚拟终端)上。
我可以通过在 `.bashrc` 中添加一个小的 bash if/then 来实现:
```
# 如果不在 tmux 中且当前是默认 tty,则启动 tmux
if [ -z "${TMUX}" ] && [ $(tty) == "/dev/pts/0" ]; then
exec tmux new-session -d 'vim -c VimwikiIndex' \; attach
fi
```
这通过检查两个条件:确保我们不在 `tmux` 中(否则会递归,导致问题),以及确保我们在第一个虚拟 `tty` 上。如果两个条件都满足,则启动一个新的 `tmux` 会话,运行命令 `vim -c VimwikiIndex`(告诉 `vim` 连接到 `Vimwiki` 索引),然后附加到该会话。
## 用了几个项目之后,我很喜欢它
这台机器我已经用了大约一周,用它写了这篇博客文章、配套视频的脚本,以及另一个我正在写的未来脚本。感觉太棒了。
我可能会扩展这个想法,加入拼写检查,或者在工作区用一台旧的 486 设置一个“写作机终端”,让自己真正回到更专注的体验中(搭配更好的键盘!)。
重点是写更多,并且写的时候更少分心。我一直很难克服浏览器对我的诱惑。它通知我有应用需要关注,我的音乐播放器告诉我下一首要播什么歌。这一切都很方便,但也非常让人分心。
我正尝试在技术选择上更加有意识。我想要那些只做一件事且做得非常好的设备,当我做完那一件事后,就可以把它们收起来,去做别的事。我不想**所有东西**都跟着我**去任何地方**。
如果你也是这样,也许你会受益于一台写作机。对我来说,它真的很好。:)
相似文章
赛博终端曾经看起来像小笔记本电脑,但现在它们变得更加个性化
TikTok上的DIY爱好者们正在制作越来越个性化和艺术化的赛博终端——隐藏在包包、玩具和二手物品中的迷你Linux电脑——标志着从传统赛博朋克美学向时尚和个人表达的转变。
把事情做完
一篇个人博客文章,反思完成项目的困难、放弃年度计划,并转向简单的实体项目清单。
在维持你对技术的热爱与工作的同时,你在哪些方面(如果有的话)是一个技术极简主义者?
lobste.rs 上的一场讨论,技术工作者分享他们的技术极简主义实践,例如避免使用智能家居设备、改用纸笔以及编写自定义软件。
@hellokillian:受 @karpathy 启发,打造本地 Markdown 编辑器 + 终端代理工作区
一位开发者发布了一款集成终端代理工作区的本地 Markdown 编辑器,灵感源自 Andrej Karpathy。
@RoundtableSpace:当开发者把终端配置做成艺术品时,就成了 NEOVIM + HERD + GITU + GHOSTTY + KEEBY 这副模样……
精选终端组合(Neovim、Herd、Gitu、Ghostty、Keeby)展示,将开发环境美学化的潮流。