海珀蓝记
Hyprland 是一个基于 Wayland 的动态平铺式窗口管理器。
这是我第一次使用平铺式窗口管理器,下面列举一些我的配置心得。由于 Hyprland 正好可以找到“海珀蓝”这三个还算有点诗意的汉字与之对应,所以我就依次为这篇文章命名。
总纲
下面列举一些我最近想要做的事情:
把 Neovim 的 Markdown 内容配置好,至少把下划线配置好,然后禁用掉一些不必要的 MarkdownLint;在 Fcitx5 为中文模式和英文模式的时候在 Kitty 终端中显示不同的光标图案,这样在使用 NeoVim 的时候可以方便很多;- 修复死亡按钮这个 Bug,要不写一个 workaround,要不用一个 dedicated script for multi-monitor handling;(目前的 workaround 是——禁用这个快捷键)
Nvidia 显卡
HyDE 的提醒
HyDE 在有 NVidia 显卡的电脑上会自动完成下面的配置,无需手动操作。
这个在既有英伟达显卡,又有核显的笔记本电脑上似乎不是很重要,可以忽略本部分。
/etc/mkinitcpio.conf中添加MODULES=(... i915 nvidia nvidia_modeset nvidia_uvm nvidia_drm ...)- 使用
sudo mkinitcpio -P更新 - (重启后,如果
cat /sys/module/nvidia_drm/parameters/modeset返回Y,则配置正确) - 先启动一次 Hyprland 桌面环境,自动生成配置文件
~/.config/hypr/hyprland.conf中添加:
env = LIBVA_DRIVER_NAME,nvidia
env = __GLX_VENDOR_LIBRARY_NAME,nvidia
关于 HyDE
我选择的是 HyDE,它能够能以比较有组织的形式管理配置文件,比如会把 HyDE 的配置文件存储在 ~/.config/hypr/userprefs.conf 里面而不是在默认的 ~/.config/hypr/hyprland.conf 里面。
默认的终端开始界面比较花哨,在 ~/.config/fastfetch/ 中进行相应的修改就可以了。
使用 HyDE 的一些感受
HyDE 最大的特点就是使用有层次的配置文件管理方法,把“主题配置”和“用户配置”分开;默认配置达到了一个比较开箱即用的体验,用户配置则允许我们在次基础上加以个性化;
也许有人会嗔怪 HyDE 不够“纯粹”,应该像搭积木一样开启一段“从零开始的 .conf 生活”,但这就是一个价值观的问题了。我觉得 AI 时代的学习,很多时候并不是从基础(bare-bones)开始,而是直接接触一个复杂的概念体系,然后不断查漏补缺不理解的知识点,在需要时进行一些必要的探索,这也是“终身学习”的精神;私以为,使用 HyDE 这种“预先配置好的高楼大厦”,之后再了解其细节是符合 AI 时代的学习理念的。
但是确实,透过一层浓雾看到 Hyprland 的本质,需要花费精力,也不像搭建自己的房子一样给人成就感。这也是依赖模板的问题所在。
中文输入法
在 ~/.config/hypr/userprefs.conf 里面加上以下几行:
# Chinese input method (Fcitx5)
exec-once = fcitx5
# env = GTK_IM_MODULE,fcitx5
env = QT_IM_MODULE,fcitx5
env = SDL_IM_MODULE,fcitx5
env = XMODIFIERS,@im=fcitx5
KeyD 的使用
keyd 有很多用处,比如用 Caps Lock 键切换中英文输入法,还有自定义一些键位。
先安装 keyd,在 sudo systemctl enable --now keyd 后,在 /etc/keyd/default.conf 中写下:
[ids]
*
[main]
capslock = f13
在 ~/.config/hypr/userprefs.conf 中写下:
input {
kb_layout = us,ru,tr
kb_options = fkeys:basic_13-24 # Enable F13-24 keys
}
之后再在 Fcitx5 中配置使用 F13 切换输入法,这样就可以完成输入法的配置了。
Electron 应用正确使用 Wayland
多显示器的配置
需要实现的功能:使用一个快捷键关闭内置显示器。
把 ~/.config/hypr/monitors.conf 改成:
monitor = eDP-1, 1920x1080@60, 0x0, 1.25
# monitor = eDP-1, disable
monitor = desc:YCT Sculptor AP11401Z00000, 2560x1440@100, 0x-1440, 1.25
在 ~/.config/hypr/toggle_laptop_screen.sh 中写下:
#!/bin/bash
FILE="$HOME/.config/hypr/monitors.conf"
# If the "disable" line is currently commented out → laptop screen is ON
if grep -q "^# monitor = eDP-1, disable" "$FILE"; then
echo "→ Turning laptop screen OFF"
# Comment out the active config line
sed -i 's/^monitor = eDP-1/# monitor = eDP-1/' "$FILE"
# Uncomment the "disable" line
sed -i 's/^# monitor = eDP-1, disable/monitor = eDP-1, disable/' "$FILE"
else
echo "→ Turning laptop screen ON"
# Uncomment the active config line
sed -i 's/^# monitor = eDP-1/monitor = eDP-1/' "$FILE"
# Comment out the "disable" line
sed -i 's/^monitor = eDP-1, disable/# monitor = eDP-1, disable/' "$FILE"
fi
# Reload Hyprland
hyprctl reload
并在 ~/.config/hypr/keybindings.conf 中写下:
binddl = $mainMod, D, $d toggle internal monitor , exec, ~/.config/hypr/toggle_laptop_screen.sh
但是目前有一个 Bug,就是在没有连接外接显示器的时候,按快捷键无法解除内置显示器不显示的状态(也许这可以称为“死亡按钮”)
Fontconfig
原因是 Obisidian(基于 Electron)中霞鹜文楷中的粗体显示不正常(因为霞鹜文楷没有 'Bold' typeface,只有 'Medium' typeface),需要书写 fontconfig 配置文件让 Obsidian 把 Medium 当成粗体。
nvim ~/.config/fontconfig/conf.d/50-lxgw-wenkai-bold.conf 并写下如下内容:
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<!-- Map Bold to Medium for LXGW WenKai -->
<match target="pattern">
<test name="family" compare="eq">
<string>LXGW WenKai</string>
</test>
<!-- When Bold is requested -->
<test name="weight" compare="more_eq">
<const>bold</const>
</test>
<!-- Use Medium instead -->
<edit name="weight" mode="assign">
<const>medium</const>
</edit>
</match>
</fontconfig>
之后 fc-cache -f 刷新缓存即可。现在就可以正常显示粗体和正常体文本了,虽然两者之间的差别不是很明显。