windows11使用WSLg方式使用Emacs

1. wslg

在 windows 下使用原生的 Emacs 一直是个麻烦的事情,比如以下问题

  • windows 文件路径形式的匹配,
  • 缺少 Linux 常用命令(使用如 GnuWin32 , coreutils 等项目)
  • 环境变量的设置
  • 编译麻烦

而且最大的问题出在性能上,无法和在 Linux/MacOS 上使用经验相媲美。

windows 11 推出后支持使用 wslg 的形式使用 Linux 应用图形化界面。目前看来在 windows 上以这种形式使用 Emacs 体验十分不错。

在安装好 WSL2 之后,选择使用 Ubuntu 20.0 创建虚拟机。

1.1. 中文字体

配置 Ubuntu 系统的中文字体, 按照这篇文章 的 1.5.1 及 1.5.2 两个章节操作,安装中文支持及配置中文字体。

2. emacs

2.1. 安装 Emacs 29

使用本地编译方式安装 Emacs 29.0.50

  • –with-native-compilation Emacs Lisp bytecode is translated to C and then machine code, yielding performance benefits.
  • WSLg uses Wayland and Emacs 29.0.50 master has the pure GTK feature instead of relying on the older X window system.
git clone git://git.sv.gnu.org/emacs.git emacs-source
cd emacs-source

sudo apt install build-essential libgtk-3-dev libgnutls28-dev libtiff5-dev libgif-dev libjpeg-dev libpng-dev libxpm-dev libncurses-dev texinfo
# Native JSON
sudo apt install libjansson4 libjansson-dev
# Native Complilation
sudo apt install libgccjit0 libgccjit-10-dev gcc-10 g++-10

./audogen.sh

export CC=/usr/bin/gcc-10 CXX=/usr/bin/gcc-10
./configure --with-native-compilation --with-json --with-pgtk

make -j6

sudo make install

2.2. Emacs 中文输入法 pyim

使用 wslg 方式使用 Emacs,windows 的中文输入法在 Emacs 应用上无法生效。使用 Emacs 原生的中文输入法 pyim 来解决这个问题,无需使用系统 输入法来回切换,使用起来也十分流畅。

以下是使用 use-package 配置 pyim 使用五笔输入法的例子,需要安装 pyim pyim-wbdict

(use-package pyim
:ensure nil
:config
(use-package pyim-wbdict
:config
:ensure nil
:config (pyim-wbdict-gbk-enable))


(setq default-input-method "pyim")
(setq pyim-default-scheme 'wubi)
(pyim-wbdict-v86-enable)
;; (pyim-wbdict-v98-enable)
;; (pyim-wbdict-v98-morphe-enable)
;; (pyim-wbdict-v86-single-enable)

(setq pyim-page-tooltip 'popup)
(setq pyim-page-length 5)
(add-hook 'emacs-startup-hook #'(lambda () (pyim-restart-1 t)))
)

2.3. Emacs 复制文本至 Windows 剪贴板

TODO

Generated using Emacs 29.0.50 (Org mode 9.4.6)