GitHub
logo SHORiNのARCH
附录

附录

这部分是一些有用但是被我弃用的东西,以及一些参考。

pacman 常用命令

可以安装 pacman 的 GUI。

sudo pacman -S pamac

常用命令:

  • 下载包但不安装

    sudo pacman -Sw
    
  • 删除包,同时删除不再被其他包需要的依赖

    sudo pacman -Rns
    
  • 查询包

    sudo pacman -Ss
    
  • 列出所有已安装的包

    sudo pacman -Qe
    
  • 列出所有已安装的依赖

    sudo pacman -Qd
    
  • 清理包缓存

    sudo pacman -Sc
    
  • 列出孤立依赖包

    sudo pacman -Qdt
    
  • 清理孤立依赖包

    sudo pacman -Rns $(pacman -Qdtq)
    
  • 无视依赖关系强制删除某个包

    sudo pacman -Rdd
    

timeshift

sudo pacman -S timeshift
sudo systemctl enable --now cronie.service

自动生成快照启动项

sudo pacman -S grub-btrfs inotify-tools
sudo systemctl enable --now grub-btrfsd.service

修改服务配置

sudo systemctl edit grub-btrfsd.service
[Service]
ExecStart=
ExecStart=/usr/bin/grub-btrfsd --syslog --timeshift-auto

重启服务

sudo systemctl daemon-reload
sudo systemctl restart grub-btrfsd.service

ulauncher

ulauncher 是一个启动器,支持模糊搜索,用 GTK 编写,支持 Python 脚本

yay -S ulauncher

然后设置一个自定义快捷键,命令写 ulauncher-toggle,如果使用 GNOME 的 rounded corner 扩展记得添加 ulauncher 进黑名单。

ulauncher 最好用的是它的扩展功能,安装非常方便。打开设置进 extensions 页面,点击左侧的 discover extensions 就可以找到。

ulauncher 扩展

我安装的扩展:

flathub manager 可以从 ulauncher 管理 Flatpak 软件

emoji 可以快捷复制 emoji

process murderer可以快捷杀死进程

youtube search快捷从 youtube 搜索内容

github search快捷从 github 搜索内容

appimage launcher快捷打开指定目录里的 appimage 文件(记得在设置里指定存放 appimage 的路径,需要使用从/开始的绝对路径)

ulauncher 主题美化

浏览器搜索 ulauncher theme,存放路径在~/.config/ulauncher/user-themes

这个主题应该是最适合 GNOME 默认主题的

Steam 子卷

我不想快照复制 Steam 游戏,因为这会占用大量的硬盘空间,可以创建一个和@home 平级的@steamgames 子卷让创建@home 快照的时候排除 Steam 的游戏。

  1. 挂载根分区硬盘到/mnt 下任意位置

    sudo mount --mkdir -o subvolid=5 /dev/nvme1n1p2 /mnt/btrfs_root #记得替换为自己对应的硬盘名称
    
  2. 创建@steamgames 子卷

    sudo btrfs subvolume create /mnt/btrfs_root/@steamgames
    
  3. 禁用子卷的写时复制

    sudo chattr +C /mnt/btrfs_root/@steamgames
    
  4. 取消挂载

    sudo umount /mnt/btrfs_root
    
  5. 移动并备份现有 steamapps 文件夹

    mv ~/.local/share/Steam/steamapps ~/.local/share/Steam/steamapps.bak
    
  6. 创建新的 steamapps 文件夹作为挂载点

    mkdir -p ~/.local/share/Steam/steamapps
    
  7. 配置 fstab 文件

    sudo vim /etc/fstab
    
  8. 复制粘贴 fstab 里面根分区的那一行

    # /dev/nvme1n1p2
    UUID=92a83c41-105d-4983-9536-2492d024bb52       /               btrfs           rw,relatime,compress=zstd:3,ssd,discard=async,space_cache=v2,subvol=/@  0 0
    

    粘贴到底部,把 / 修改为 steamapps 的路径 /home/shorin/.local/share/Steam/steamapps,把 subvol=/@ 改成 subvol=/@steamgames。修改后是这样的:

    # steamgames subvolume
    UUID=92a83c41-105d-4983-9536-2492d024bb52       /home/shorin/.local/share/Steam/steamapps     btrfs           rw,relatime,compress=zstd:3,ssd,discard=async,space_cache=v2,subvol=/@steamgames  0 0
    
  9. 刷新 systemd 缓存

    sudo systemctl daemon-reload
    
  10. 手动挂载 fstab 新条目

    sudo mount -a
    
  11. 修改权限(记得替换成自己的用户名)

    sudo chown shorin ~/.local/share/Steam/steamapps/
    
  12. 把刚刚备份的文件移回原位

    mv ~/.local/share/Steam/steamapps.bak/* ~/.local/share/Steam/steamapps/
    
  13. 清理残留

    rm -r ~/.local/share/Steam/steamapps.bak
    

现在创建 home 目录的快照就不会记录 Steam 的游戏库了。对 Lutris 也可以进行同样的操作。如果被识别成外部设备出现在文档管理器的挂载列表里面,就在 fstab 的那一连串逗号隔开的参数里添加 x-gvfs-hide

rEFInd

sudo pacman -S refind
refind-install
  • 启动项记忆

    编辑 ESP 里的 refind.conf 文件

    sudo vim /efi/EFI/refind/refind.conf
    

    写入 default_selection +,意思是记住启动项选择。也可以 "+,vmlinuz" 设置优先级。

  • 手动启动项

    设置 menuentry{}

    menuentry "Arch Linux" {
     icon /EFI/refind/icons/os_arch.png
     volume ****************
     loader /@/boot/vmlinuz-linux-zen
     initrd /@/boot/initramfs-linux-zen.img
     options "root=UUID=54f285eb-8140-48df-81f8-2b03cb976fc0 rw rootflags=subvol=@ zswap.enabled=0 rootfstype=btrfs loglevel=5"
     enabled
    }
    

    icon 设置图标路径,路径从 ESP 的根目录开始而不是从 Linux 的根目录开始。

    volume 设置分区,不能用 UUID,要用 PARTUUID,使用 sudo blkid 获取。

    loader 指定内核路径。

    initrd 指定 initramfs 和 ucode 的路径。

    options "" 指定启动项参数。

    enabled 表示启用这个 entry,disabled 是禁用。

  • 美化

    在/EFI/EFI/rEFInd/目录下新建一个 themes 文件夹

    sudo mkdir -p /efi/EFI/refind/themes
    

    然后浏览器搜索自己喜欢的 git clone 下来放到到刚刚创建的文件夹里

    然后编辑配置文件

    sudo vim /efi/EFI/refind/refind.conf
    
    include themes/**********/theme.conf
    
  • 隐藏启动项

    可以在 rEFInd 的引导界面按 delete 键隐藏启动项。

    或者编辑配置文件用 dont_scan_dirs= 指定要排除的目录。

    dont_scan_dirs=/@/boot,EFI/****
    

用 archinstall 安装 GNOME 后的一些清理

sudo pacman -R gnome-contacts gnome-maps gnome-music totem gnome-characters gnome-connections evince gnome-logs malcontent gnome-system-monitor gnome-console gnome-tour yelp simple-scan htop sushi gnome-user-docs epiphany

TLP 相关

(power-profiles-daemon 已经足够了,故弃用)

sudo pacman -S tlp tlp-rdw
yay -S tlpui

设置方法参考官方文档Settings — TLP 1.8.0 documentation

这里给一个现代电脑的通用设置:

processor 选项卡中

CPU DRIVER OPMODE
AC active
BAT active

CPU SCALING GOVERNOR
AC schedutil
BAT powersave

CPU ENERGY PERF POLICY
AC balance_performance
BAT power

CPU BOOST
AC on
BAT off

PLATFORM PROFILE
AC balanced
BAT low-power

MEM SLEEP
BAT deep
  • 开启服务

    sudo systemctl enable --now tlp
    

ananicy-cpp 资源调用优化

yay -S ananicy-cpp cachyos-ananicy-rules-git
sudo systemctl enable --now ananicy-cpp.service

更换 CachyOS 源

Optimized Repositories | CachyOS

(因严重软件安装异常问题弃用)

如果你渴望极致的性能优化,可以使用 CachyOS 的源。

ps:谨慎更换 CachyOS 的内核 linux-cachyos,内核恐慌(kernel panic)的概率会很大。

  • 安装

    curl https://mirror.cachyos.org/cachyos-repo.tar.xz -o cachyos-repo.tar.xz
    tar xvf cachyos-repo.tar.xz && cd cachyos-repo
    sudo ./cachyos-repo.sh
    
  • 重启电脑

  • 移除

    curl https://mirror.cachyos.org/cachyos-repo.tar.xz -o cachyos-repo.tar.xz
    tar xvf cachyos-repo.tar.xz
    cd cachyos-repo
    sudo ./cachyos-repo.sh --remove
    
  • 重启电脑

Zen 浏览器

yay -S zen-browser zen-browser-i18n-zh-cn

更改 TTY 字体大小

sudo pacman -S terminus-font
ls /usr/share/kbd/consolefonts
sudo setfont ter-v32n
  • 永久生效

    sudoedit /etc/vconsole.conf
    
    FONT=ter-v32n
    
    sudo systemctl restart systemd-vconsole-setup
    

Wayland compositor 剪贴板

yay -S clipse clipse-gui

wf-recorder

sudo pacman -S wf-recorder

示例:

wf-recorder -c h264_vaapi -d /dev/dri/renderD128 --audio --file=test.mp4 -F scale_vaapi=format=nv12:out_range=full:out_color_primaries=bt709

让 Flatpak 应用 GTK 主题

flatpak override --user --filesystem=~/.themes
flatpak override --user --filesystem=xdg-config/gtk-4.0
flatpak override --user --env=GTK_THEME=adw-gtk3-dark

限制 AMD CPU 功耗

ryzenadj

Snapper 命令行快照回滚

据官方文档说,可能会导致系统异常,但我没遇到过。

  • 使用快照进行恢复

    `1..0`这里的`1`是要使用的快照的序号。`0`代表当前状态,快照会比对两者之间的差别然后撤销所有的更改。
    
    ```bash
    snapper -c root undochange 1..0
    ```
    
    ```bash
    reboot
    ```
    

B 站 5000 粉不到开播

安装这个油猴脚本,然后在直播间开播,获取到推流码之后用 OBS 开播

B 站推流码获取工具

字体设置

ArchWiki fontconfig

字体主要分三类:

  1. 非衬线字体(sans-serif)

    主要用于界面文字之类的场景。

  2. 等宽字体(monospace)

    主要用于编程开发、终端之类的场景。

  3. 衬线字体(serif)

    主要用于文书编辑之类的场景。

以下是一个 fontconfig 的示例,设置了三种字体类型具体使用哪些字体,可以解决大多数字体异常。fontconfig 的位置在~/.config/fontconfig/fonts.conf,编辑配置文件后还需要运行fc-cache -fv刷新字体缓存。

PS:这里示例中的 serif 衬线字体使用的是 sans-serif 非衬线字体的字体。因为真正用到 serif 的时候通常会手动选择(比如使用 WPS 进行文档编辑的时候),serif 使用 sans-serif 的字体可以避免某些网站(例如 bilibili 直播)将本该是非衬线字体的内容显示为衬线字体导致大幅影响阅读体验。

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
<fontconfig>

    <match target="font">
        <edit name="antialias" mode="assign"><bool>true</bool></edit>
        <edit name="hinting" mode="assign"><bool>true</bool></edit>
        <edit name="hintstyle" mode="assign"><const>hintslight</const></edit>
        <edit name="rgba" mode="assign"><const>rgb</const></edit>
        <edit name="lcdfilter" mode="assign"><const>lcddefault</const></edit>
    </match>

    <alias>
        <family>sans-serif</family>
        <prefer>
            <family>Noto Sans</family>
            <family>Noto Sans CJK SC</family>
            <family>Adwaita Sans</family>
        </prefer>
    </alias>

    <alias>
        <family>serif</family>
        <prefer>
            <family>Noto Sans</family>
            <family>Noto Sans CJK SC</family>
            <family>Adwaita Sans</family>
        </prefer>
    </alias>

    <alias>
        <family>monospace</family>
        <prefer>
            <family>JetBrains Mono</family>
            <family>JetBrains Maple Mono</family>
            <family>Adwaita Mono</family>
        </prefer>
    </alias>

</fontconfig>

tuigreet

极速,基于 greetd 的纯 TTY tui 显示管理器(如果进入 tuigreet 之后还有日志输出会导致 tuigreet 的 tui 错位)。

  1. 安装

    sudo pacman -S --noconfirm --needed greetd greetd-tuigreet
    
  2. 简单配置

    sudo vim /etc/greetd/config.toml
    
    [terminal]
    # 绑定到 TTY1
    vt = 1
    
    [default_session]
    # 使用 tuigreet 作为前端
    # 自动扫描 /usr/share/wayland-sessions/,支持时间显示、密码星号、记住上次选择
    command = "tuigreet --time --user-menu --remember --remember-user-session --asterisks"
    user = "greeter"
    
  3. 启用 greetd

    systemctl enable greetd
    

ly 显示管理器

  1. 安装

    sudo pacman -S ly
    
  2. 启用

    这里的 TTY1 可以是任意 TTY

    systemctl enable ly@tty1
    
  3. 简单配置

    有一个很酷的代码雨动画背景可以开。

    sudo vim /etc/ly/config.ini
    
    其他内容...
    
    animation = matrix
    
    其他内容...
    

GRUB 在 Btrfs 文件系统的最佳配置方法

原理:GRUB 装进 ESP,grub.cfg生成在/boot/grub。编辑 ESP 里的grub.cfg让其在启动时读取/boot/grub/grub.cfg。这样/boot/grub/grub.cfg可以被快照回档,esp/grub/grubenv因为在 ESP 的 FAT 文件系统上,在系统初期也可以被写入。

  1. 删除链接

    如果你的/boot/grub是指向 ESP 里的 GRUB 的链接,请删除后创建真实的目录。

    sudo rm -rf /boot/grub
    
    sudo mkdir -p /boot/grub
    
  2. 查找根分区的 UUID

    findmnt / -n -o UUID
    

    findmnt /列出跟根目录挂载信息

    -n隐藏标题

    -o UUID只输出 UUID

  3. 编辑存根

    sudo vim /efi/grub/grub.cfg
    

    手动输入 UUID 有点折磨,可以运行 sudo findmnt / -n -o UUID > /efi/grub/grub.cfg 把 UUID 直接覆盖写入 ESP 中的 grub.cfg

    此处的/efi应为你实际的 ESP 位置。

    删除所有内容,只需要写以下内容:

    # 设置 root 环境变量为实际的根分区设备
    search --fs-uuid --no-floppy  --set=root 你的 Btrfs 分区 UUID
    
    # 读取根分区中的 grub.cfg 文件
    configfile /@/boot/grub/grub.cfg
    

    search --fs-uuid <你的Btrfs分区UUID>通过 uuid 搜索分区。

    --no-floppy跳过软盘设备。

    --set=root将搜索到的第一个设备设置为root

    root是 GRUB 的环境变量之一,默认值是 GRUB 所在的设备。我的 GRUB 安装在了 ESP,那root的值就是 ESP 的设备名。我们为了 Btrfs 回档要把 GRUB.cfg 存在 Btrfs 文件系统里,所以要手动指定 root 的值为 Btrfs 文件系统所在的设备。

    configfile读取配置文件。/@/boot/grub/grub.cfg是配置文件目录,不指定设备的话默认在root环境变量指定的设备上查找此目录。

  4. 配置快照启动项 grub-Btrfs

    安装了 grub-btrfs 快照启动项功能的情况下才需要进行这步的编辑。

    grub-btrfs.cfg是快照启动项的配置文件。GRUB 寻找此文件时查的目录由prefix变量指定,这个变量代表的是 GRUB 的安装位置。我的 GRUB 安装在 ESP,所以prefix的值是/efi/grub,也就是说 GRUB 查找快照启动项的配置文件时的完整路径是/efi/grub/grub-btrfs.cfg。但是快照启动项的配置文件默认被生成到/boot/grub/grub-btrfs.cfg而不是/efi/grub/grub-btrfs.cfg,所以我们要修改grub-btrfs的配置文件指定 GRUB 在/boot/grub里寻找快照启动项的配置文件。

    sudo vim /etc/default/grub-btrfs/config
    

    找到下面这段内容:

    # GRUB_BTRFS_GBTRFS_SEARCH_DIRNAME="\${prefix}"
    

    改成:

    GRUB_BTRFS_GBTRFS_SEARCH_DIRNAME="/@/boot/grub"
    

    注意,/@必须是你实际的根子卷。

  5. 生成grub.cfg

    sudo grub-mkconfig -o /boot/grub/grub.cfg
    

大功告成。现在对启动流程来说至关重要的grub.cfg就在快照的范围里啦,回档的时候引导也会跟着一起回档,除非 Btrfs 文件系统本身坏掉,否则系统 99.9%的情况下都不会再挂啦。

opencode 使用本地 Ollama 或 LM Studio 模型

vim ~/.config/opencode/opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "provider": {
    "ollama-lan": {
      "npm": "@ai-sdk/openai-compatible",
      "name": "Ollama (LAN)",
      "options": {
        "baseURL": "http://192.168.0.13:11434/v1",
        "apiKey": "ollama"
      },
      "models": {
        "qwen3-coder-next:q4_K_M": {
          "name": "Qwen3 Coder Next"
        }
      }
    },
    "lmstudio-lan": {
      "npm": "@ai-sdk/openai-compatible",
      "name": "LM Studio (LAN)",
      "options": {
        "baseURL": "http://192.168.0.13:1234/v1"
      },
      "models": {
        "qwen3-coder-next": {
          "name": "Qwen3 Coder Next"
        }
      }
    }
  }
}

内存大页 1G 和 2MB 切换的问题

内存大页的默认目录位置是/dev/hugepages,这个挂载点是在系统初始化的时候自动挂载上的,默认单页大小是 2MB,可以通过启动参数调整默认的页大小。

default_hugepagesz=1G hugepagesz=1G hugepages=16

default_hugepagesz=1G 设置没有指定内存大页大小时的默认大小

hugepagesz=1G 在开机时初始化 1GB 内存大页的管理机制

hugepages=16 是需要的内存大页的数量

问题在于/dev/hugepages不可能同时是 2MB 又是 1GB,所以需要自定义内存大页目录,将 2M 和 1G 分别存储在不同的目录,做到同时使用。

编辑/etc/fstab

hugetlbfs_2M /dev/hugepages_2M hugetlbfs pagesize=2M,mode=1777 0 0
hugetlbfs_1G /dev/hugepages_1G hugetlbfs pagesize=1G,mode=1777 0 0

hugetlbfs_2M只是一个名字;/dev/hugepages_2M挂载点;hugetlbfs指定文件系统是内存大页;pagesize=2M指定大页大小;mode=1777权限,

这样就同时存在 1G 和 2M 的内存大页系统,可以同时申请,同时使用。/dev/hugepages由系统管理,我们只动自己自定义的,于是避免了切换时会产生的各种问题。

/sys/kernel/mm/hugepages/hugepages-1048576kB/nr_hugepages是操作 1G 大页数量的接口。把1048576改成2048就是操作 2M 大页数量的接口。和sysfs这个关键词有关,我没学过 Linux,不懂。

辨别软件是运行在 Xwayland 还是 Wayland

可以使用xorg-xeyes或者xorg-xlsclients

xeyes的话,打开之后在窗口移动鼠标,如果眼睛在动就是 Xwayland,不动就是 Wayland。

xlsclients的话,在输出列表里的就是 Xwayland,不在的就是 Wayland。

Btrfs 扩容和缩小

扩容可以在系统运行的时候进行

在进行扩容和缩容操作之前要先明确一个概念:块设备。lsblk -p列出的每一个/dev开头的分区都是一个块设备,文件系统只认块设备,不看这个块设备是在你的硬盘 1 上还是在硬盘 2 上又或者在你的移动 U 盘上。

分两种情况:调整大小(resize)添加(add)

  • resize

    如果是单个硬盘上的连续空间,使用此方法(单个硬盘但是空间不连续,可以使用 GParted 移动分区)。

    原理是先调整物理分区大小,再调整 Btrfs 文件系统大小。

    1. cfdisk 调整物理分区大小

      sudo cfdisk /dev/nvme0n1
      

      /dev/nvme0n1 替换为你实际的块设备名称

      选中更改尺寸 resize扩容分区(直接回车会自动合并连续的空闲空间);然后选择写入 Write,输入yes,回车保存更改;退出 Quit退出 cfdisk。

    2. 调整 Btrfs 文件系统大小

      btrfs命令由btrfs-progs提供

      sudo btrfs filesystem resize max /
      

      filesystem resize调整文件系统大小

      max / 将根目录所在文件系统扩容至最大物理硬盘空间

    3. 确认

      df -h /
      

      通过大小那一列可以看到扩容成功。

    • 减少硬盘空间

      缩小的话只需要将过程反过来,先缩小文件系统大小再缩小分区大小。

      先用df -h /确认可用空间;然后用btrfs调整大小:

      sudo btrfs filesystem resize -10G /
      

      resize -10G / 将文件系统缩小了 10G。

      这里还可以指定缩小到多少 G,例如缩小到 50G 就是 resize 50 /

      现在用 df -h / 就可以看到大小变小了,记住这个数值后用 cfdisk 的 resize 功能缩小分区大小就行。

  • add

    如果是多个硬盘上的块设备,使用此方法(未分配空间需要先新建为块设备)。

    原理是将新的块设备加入当前文件系统,Btrfs 文件系统会智能在多个块设备之间存储数据。

    1. 添加块设备

      sudo btrfs device add /dev/vda2 /
      

      /dev/vda2替换为你实际用来扩容的新块设备名称

      device add /dev/vda2 /添加/dev/vda2到根目录所在文件系统

    2. 确认

      df -h /
      

      可以看到空间已经变大。

      btrfs filesystem show /
      

      可以看到该文件系统下有多个块设备。

    • 减少硬盘空间

      把新增的块设备移除即可(要确保移除之后的剩余空间足够存下两个块设备上已有的数据):

      sudo btrfs device remove /dev/vda2 /
      

      现在再用btrfs filesystem show /,输出结果里就没有那个设备了。

    • 更换 Swap 文件为 Swap 分区

      跨多个设备的文件系统不能使用交换文件,如果你配置了交换文件的话必须更换为交换分区,方法如下:

      1. 删除 swapfile

        swapoff命令关闭现有的交换文件,然后编辑/etc/fstab删除交换文件的自动挂载,再用rm命令删除交换文件。

      2. 腾出空间

        用上面缩容的方法腾出一块空间用作交换分区。

      3. 格式化

        使用cfdisk把腾出的空间新建为块设备,type选择Linux Swap。然后用mkswap命令格式化。

      4. 启用和自动挂载

        使用 swapon 命令现在启用交换分区。然后使用 lsblk -f 获取 swap 分区的 UUID;编辑 /etc/fstab 加上如下内容:

        UUID=你的 swap 分区的 UUID  none  swap  defaults 0 0
        
  • 在跨设备的情况下缩容

    sudo btrfs filesystem show /
    

    示例输出:

    Label: none  uuid: 7f989f8d-d2ce-4c91-9cf3-db687089ce4e
    Total devices 2 FS bytes used 629.31GiB
    devid    1 size 879.00GiB used 514.02GiB path /dev/nvme0n1p2
    devid    2 size 931.51GiB used 486.00GiB path /dev/nvme1n1
    

    记录自己要缩小的硬盘的devid,在上面的示例输出中我想要缩容的/dev/nvme0n1devid是 1。

    devid指定设备,其他的就和单设备缩容差不多了:

    sudo btrfs filesystem resize 1:-75G /
    
    cfdisk /dev/nvme0n1
    > resize
    > 879G
    > write
    > yes
    > exit。
    
    sudo btrfs filesystem resize 1:max /
    # 我前面预留了一些空间,所以这里再 max 一次补全
    

Vim/Neovim 切换模式时自动切换中文输入法

  • Vim

    .vimrc写入

    " === fcitx5 状态切换与恢复 ===
    let g:fcitx_state = 1
    autocmd InsertLeave * let g:fcitx_state = system("fcitx5-remote")[0] | call job_start("fcitx5-remote -c")
    autocmd InsertEnter * if g:fcitx_state == '2' | call job_start("fcitx5-remote -o") | endif
    autocmd VimEnter * call job_start("fcitx5-remote -c")
    
  • ~/.config/nvim/init.lua写入

    -- fcitx5 状态切换与恢复
    local fcitx_st = ""
    vim.api.nvim_create_autocmd("InsertLeave", { callback = function() fcitx_st = vim.fn.system("fcitx5-remote"); vim.fn.jobstart("fcitx5-remote -c") end })
    vim.api.nvim_create_autocmd("InsertEnter", { callback = function() if fcitx_st:match("2") then vim.fn.jobstart("fcitx5-remote -o") end end })
    vim.api.nvim_create_autocmd("VimEnter", { callback = function() vim.fn.jobstart("fcitx5-remote -c") end })
    

使用环境变量让 SDL 2/3 应用以 Wayland运行

使用 SDL_VIDEO_DRIVER=wayland 环境变量启动