薛定谔的 Linux
TL;DR
Both stable and unstable until you linux.
Linux 好玩是好玩,就是不太稳定,会遇到很多小问题。Linux 的图形界面和显示器协议的混乱和前端有的一拼。
我的 Fcitx 输入法框架在 Emacs 和系统之间反复横跳,就像薛定谔的猫一样。有时候是 Emacs 里可以用,系统不能用,有时候又刚好反过来。
折腾记录
近道都是远路,尝试过几个大佬自己封装好的 Arch Linux,附带了桌面环境的安装和配置。是挺方便的,但是遇到一些小问题的时候,由于不知道他具体是怎么实现的一些功能,又要去看文档和源码。我这个电脑又比较老了,很多问题都没有现成的答案和别人的复现。
也尝试了 DHH 的 Omarchy ,桌面环境是 hyprland + Wayland,可能是我的电脑比较老了,运行起来有点卡顿。内置的 theme 我又不太喜欢,体验了 2 天之后,感觉不是很顺手。
最后决定使用 i3 和 X11,运行起来一点不卡,所有应用都是秒开。

Arch Linux 初始安装
Arch Linux - Downloads 页面下载最新的 ISO 文件,有很多国内镜像可以选。写入 U 盘之后,进入 BIOS 启动 U 盘引导。
archinstall 是 Arch Linux 的官方安装脚本,挺方便的,命令行输入 archinstall
启动安装脚本。
- 选择仓库镜像为 China
- 设置硬盘和分区:由于我的老电脑一个硬盘是小固态,一个是机械硬盘。在
manually partition
里手动设置把 arch 的系统(挂载 EFI Root)安装在固态,home 挂在在机械硬盘。设置完之后,设定 disk encryption 硬盘加密。 - 设定 root 密码并添加用户
- 设定 audio 为 pipewire,不在这里设定就播放不了音频,之后要单独安装。
Arch Linux 的镜像对国内环境太友好了,差不多 10 分钟就安装好了。
接下来就是大坑桌面环境。
i3
i3 的简洁实在太爱了。
安装:
sudo pacman -S i3 xorg xorg-xinit echo "exec i3" > ~/.xinitrc
输入 startx 进入桌面环境。i3 会有一个引导界面,可以初始化生成配置文件到 /home/user/.config/i3/config
。
配置
设置鼠标滚轮翻转
编辑 /usr/share/X11/xorg.conf.d/40-libinput.conf 文件:
Section "InputClass" Identifier "libinput pointer catchall" MatchIsPointer "on" MatchDevicePath "/dev/input/event*" Driver "libinput" Option "NaturalScrolling" "True" EndSection
我的自定义设置
exec --no-startup-id opensnitch-ui exec --no-startup-id copyq exec --no-startup-id feh --bg-fill /home/vandee/Pictures/create.jpg bindsym $mod+period exec ghostty bindsym $mod+b exec librewolf --new--windows bindsym $mod+e exec emacsclient -c -a "" bindsym $mod+f exec thunar bindsym $mod+q kill # bindsym $mod+Mod1+v exec --no-startup-id copyq show # Gaps gaps inner 5 smart_gaps on # hide tiling window title bar for_window [tiling] border pixel 1 smart_borders on exec --no-startup-id fcitx5
其他设定
i3 是一个裸的图形化窗口管理,图片查看,文件资源管理器什么的都没有。
一些基础的 app 和系统设定,让 LLM 生成了一个安装脚本。迭代了很多次现在基本可用了。
脚本会安装好 rime 输入法,系统字体,ghostty 终端,paru 包管理器,Node.js,UV python,Emacs,thunar(文件管理器),opensnitch(轻量网络监控), flameshot(截图),mpv(媒体播放),feh(图片查看)等软件并设置好一些系统启动项服务。
应用启动就用了 dmenu,很轻量,也可以直接在 i3 的配置里写快捷键。
dotfiles 一直在用 GitHub 同步管理,迁移过来也很方便。
冤家 Fcitx 和 Emacs
~/.xprofile
export GTK_IM_MODULE=fcitx export QT_IM_MODULE=fcitx export XMODIFIERS=@im=fcitx
/etc/environment.d/90-fcitx5.conf
XMODIFIERS=@im=fcitx GTK_IM_MODULE=fcitx QT_IM_MODULE=fcitx
还有其他网上能查到的地方我都设置了。
现在他们两个的情况就是:有时候是 Emacs 里可以用,系统不能用,有时候又刚好反过来,还有的时候 Emacs 桌面不能用,但是 Emacsclient 可以,大多数时候在终端里 emacs -nw
可以,极少数情况都可以用。
这篇博客就是趁它们刚好都可以同时运行的时候抓紧时间写的!
用 Emacs rime 可以解决现在这个问题,但我更想弄明白到底是哪里出了问题。
我猜测可能的原因是因为 Emacsclient 在设置为系统的 service 之后,启动需要加载的环境和 i3 之间有顺序要求。有时候加载的顺序对了,环境就应用上了。
之前的猜测错了,是因为我用 systemd 启动了 Emacs daemon,而 i3 启动的 Fcitx5 获取的是 i3 session 的环境变量。之前就算我在 Emacs 里使用 getenv
指令获取到了 XMODIFIERS=@im=fcitx
,输入法框架还是出不来。由于某种原因,systemd 里启动的 Emacs 和 i3 的环境变量没有统一。找到一个最简单的方法,直接用 tmux 后台 Emacs --daemon
。
小结
这可能就是 Linux 一直不是流行的桌面环境的原因,它的桌面环境和 win、mac 比起来不那么稳定,不同的硬件配置和环境遇到的问题都不一样,得自己看文档解决。但这同时也是 hacker、nerd 和折腾仔(我)喜欢 Linux 的原因,它和 Emacs 一样,都是我的赛伯乐高。
Linux 就是我会一直使用下去的操作系统, Linux 太自由了 。