You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Wayland下Emacsclient未加载配置字体Monaspace Krypton的问题

问题:Wayland下emacsclient无法加载指定字体
  • 切换到Wayland环境后,通过emacsclient -c启动Emacs守护进程时,config.el中设置的Monaspace Krypton字体未加载,自动使用Hack或Source Code Pro这类未在配置/GTK主题中定义的通用字体。
  • 仅Wayland下的emacsclient存在此问题,直接启动Emacs可正常加载字体;Xorg环境下emacsclient字体显示正常。

已尝试的无效方案:

  • 使用after-init-hook、set-frame-font替代set-face-attributes
  • 安装emacs-wayland包
  • 应用第三方推荐的配置代码

截图:

  • Xorg下正常显示:emacsclient in xorg
  • Wayland下异常显示:emacsclient in wayland

解决方案

1. 强制守护进程以Wayland模式启动

Emacs守护进程启动时可能未自动识别Wayland环境,导致字体逻辑异常。启动守护进程前设置环境变量:

export GDK_BACKEND=wayland
emacs --daemon

也可将export GDK_BACKEND=wayland写入shell配置文件(如~/.bashrc或~/.zshrc),确保全局生效。

2. 针对emacsclient创建frame的钩子设置字体

emacsclient -c是创建新frame,需在frame创建完成后强制应用字体,使用专门的钩子:

(add-hook 'server-after-make-frame-hook
          (lambda ()
            (set-frame-font "Monaspace Krypton 14" nil t)))

该钩子仅在emacsclient创建新frame时触发,比通用init钩子更精准。

3. 验证字体系统可用性

确保Monaspace Krypton已正确安装并被系统识别:

# 检查字体是否存在
fc-list | grep "Monaspace"
# 若未找到,重新安装后更新字体缓存
fc-cache -fv

4. 禁用GTK系统字体覆盖

Wayland下GTK的字体设置可能干扰Emacs配置,在config.el中添加:

(setq gtk-use-system-fonts nil)

内容的提问来源于stack exchange,提问作者n o

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 07:19:50