つーさにブログ

つうさにのメモ用ブログ

MacでもEmacsでWebKitブラウザする!

Emacs 27がリリースされたので、Emacs 28していく時期ですね!(エッ)

環境: macOS Mojave (10.14.6)

MacでのWebKitブラウザ機能がマージされた

github.com

github.com

github.com

上に3つ、関連するコミットを挙げました(2つ目と3つ目は別コミットです)。

皆さんご存知の通り、現在のEmacsWebKitGTKを利用して、Emacs内で本格的にWebブラウジングをすることができます(xwidget-webkit-browse-url)1。この機能はWebKitGTKを使っていることからわかるように、ツールキットとしてGTKを使うようにビルドしたEmacsでのみ利用可能なものでした。

今回のコミットで、そんな変態な機能がmacOSでのEmacsCocoaを使うようにビルドしたEmacs)でも利用可能になりました。

早速試しましょう。--with-xwidgetsが必要です2

./autogen.sh
./configure --with-xwidgets
make

src/emacs -qでビルドしたEmacsを実行します。M-x xwidget-webkit-browse-urlして、URLとしてhttps://gnu.org/software/emacsを入力してみると...

f:id:tsuu_mmj:20200814000348p:plain
Emacs内でEmacsのWebページ読んでる!

ということでWebページを閲覧できました。

まあ、GNU/Linuxプラットフォームでは既に利用できてた機能なので目新しさはないですが、多くのプラットフォームで使えるようになると嬉しいですね。

操作感

h(もしくは?)を押すことでxwidget-webkit-modeでのキーバインドを確認できます。おなじみのキーバインドだけでなくマウス3でも操作できそうです。ページの戻る/進むはb/fでできます。C-sで検索といったことはできません。

一つ気になったのは、私の環境の問題なのか実装上仕方ないことなのかわかりませんが、ブラウザをマウスでクリックすると、Emacsキーバインドが利用できなかったり(xwidget-webkit-modeSPCが効かない)、Emacsの文字入力ができなくなってしまったり(M-xした後文字が入力できない)しました。こうなったときはC-g(連打)で抜けられるようです。

また、今回はMac版を試しましたが、Mac版ではC-x 2などでウィンドウを分割する際、1ウィンドウにしかWebページが表示されないという制限があるようです。

マージの経緯

「今回のコミットで(中略)利用可能になりました。」と書きましたが、実はこの機能はGitHub上でかなり前から開発されていたものでした。

Mac用の機能(Mac上でのみ動作するコード)ということで紆余曲折あったようですが、Lars Ingebrigtsenさんの尽力でEmacs本家にマージされることとなりました。圧倒的感謝。

下はメーリングリストでの議論。気になる人用。

https://lists.gnu.org/archive/html/bug-gnu-emacs/2020-08/msg00766.html

おしまい

MacでもEmacsWebKitブラウザを利用できるようになりました。 現在grip-modexwwpなどWebKitブラウザ機能を利用した便利なパッケージもすでに開発されています。

Emacsだけで完結することが大好きな人は、既存のパッケージを使ったり📦自分でEmacs Lispを書いたり💪して、どんどんWebKitブラウザ機能を使っていきましょう!


  1. WebKitWebViewウィジェットをバッファ内に表示することで実現しています。

  2. GTKウィジェットEmacsバッファ上に表示する機能なのでxwidget機能とされています。訂正: “eXternal widget” に由来するそうです(参考: GitHub - jave/xwidget-emacs)。)ただし、現在はWebViewウィジェットの表示にしか対応していないため、この記事では主に「WebKitブラウザ機能」と書きました。

  3. 正確にはトラックパッド