跳转至

海珀蓝记

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 刷新缓存即可。现在就可以正常显示粗体和正常体文本了,虽然两者之间的差别不是很明显。

评论