tl;dr
# install packages for build sudo apt install -y build-essential libgtk-3-dev libgnutls28-dev libtiff5-dev libgif-dev libjpeg-dev libpng-dev libxpm-dev libncurses-dev texinfo autoconf adwaita-icon-theme-full cd /tmp # clone source only emacs 29 git clone --single-branch --branch emacs-29 git://git.sv.gnu.org/emacs.git cd emacs ./autogen.sh ./configure --with-pgtk make -j8 sudo make install # install jp font (Takao) sudo apt install -y fonts-takao sudo fc-cache -fv # fc-list | grep -i takao # IPA font sudo apt install -y fonts-ipafont sudo fc-cache -fv # fc-list | grep -i ipa
Emacs上でWSLg上のEmacsかどうか区別するならこんな感じ(Takaoフォントの設定例)
(when (and (eq system-type 'gnu/linux) (eq window-system 'pgtk) (getenv "WSLENV")) ;; Takaoフォントの利用 (set-fontset-font t 'japanese-jisx0208 "TakaoGothic") (add-to-list 'face-font-rescale-alist '(".*Takao .*" . 0.85)) ;; M-wでwindowsのクリップボードにコピーする (defun copy-selected-text (start end) (interactive "r") (if (use-region-p) (let ((text (buffer-substring-no-properties start end))) (shell-command (concat "echo '" text "' | clip.exe"))))) (global-set-key (kbd "M-w") 'copy-selected-text) ;; Teach Emacs how to open links in your default Windows browser (let ((cmd-exe "/mnt/c/Windows/System32/cmd.exe") (cmd-args '("/c" "start"))) (when (file-exists-p cmd-exe) (setq browse-url-generic-program cmd-exe browse-url-generic-args cmd-args browse-url-browser-function 'browse-url-generic search-web-default-browser 'browse-url-generic))) )
notes
Win11や Win10の新しめのバージョンから WSL 2が使える (アプリストアの Windows Subsystem for Linux (ペンギンアイコン)を入れる)
Powershellでwsl --version
を実行して、カーネルのバージョンなど表示されていれば利用できている。
WSL 2はX window systemのサーバクライアントを使わずに直接LinuxのGUIがWindowsから利用できるとのことで、Emacsが動くのを楽しみにしていた。
tl;drに書いたようにローカルでブランチ指定でビルドすれば動くことは確認した。
adwaita-icon-theme-fullは起動時の警告を消すため(GTK使ってるのにテーマ未インストール状態みたい)
ただ、WSLの制約からか、Windows側のファイルへのアクセスがかなり遅いように見え、初回起動時の設定読み込みがかなり遅い。WSL内に一通り移動してみてもいいかもしれない。
refs
appendix (xwidget)
sudo apt install -y libwebkit2gtk-4.0-dev ./autogen.sh && ./configure --with-pgtk --with-xwidgets && make -j8 && sudo make install