Saturday, February 22, 2020 / Emacs, Chromebook

ブラウザのテキストエリアで Emacs キーバインド を使いたい

Firefox Quantum がリリースされた結果、 Emacs キーバインド を簡単に実現できる Firemacs が使えなくなって随分時間がたつ。 Firemacs がなくても macOS では、もともと Firefox だろうと Chrome だろうと、ブラウザのテキストエリアで Emacs キーバインド が使えるので、その点ではよいのだが、 普段 ChromeOS と macOS と両方を使うので、うっかり Chromebook (のブラウザのテキストエリア)で、 Ctrl+N を使おうものなら、新規ウインドウが開いて大変なことになる。 たいてい Ctrl+N って連打してしまうから、無駄にウインドウがたくさん開いて、すごくいやな気分になる。

集中して作業しているときほどのこういうことになるし、 いつもキーバインドを気にしているのはとても疲れる。

結論を先に書くと、Chromebook + Crsotini + Konqueror + Ace で使えます。でもあんまり実用的ではなかった。

ブラウザ標準のテキストエリアを Ace で置きかえる

実際のところ自分がそのキーバインドを使ってブラウザで文章を入力したいのは、自作のウェブメモアプリ上だけ。 ならば・・・そのウェブアプリのテキストエリアを Ace とか CodeMirror といった Emacs キーバインド をサポートしている Javascript エディタライブラリで置き換えればいいだけの話なのでは?

ということで、置き換えてみた。

macOSでは問題ない。 問題ないどころか、Ctrl + space からの範囲選択によるコピペまでできて、これはすばらしい!と思ったんだけど。 しかし、ChromeOS の方では、Ctrl + N が Ace や CodeMirror で有効にならない。 相変わらず、新規ウインドウが開いてしまう。

どうやら Chrome などでは決して Javascript で Ctrl + N を上書きできないようになっているらしい。

Ctrl+N で新規ウインドウが開かないブラウザを求めて

ChromeOS で使えるブラウザを色々試したが、Ctrl+N で新規ウインドウが開かないようにできるたは以下の2つだった。

  • Android版のBrave
  • Crostini上の Konqueror

他にもあったかもしれないが、よく覚えていない。疲れた。

Android版 Brave を Chromebook 上で使う。普通に使えて Ctrl+N で新規ウインドウは開かない。ただ コピペできない、というキーバインドとは別の問題があった。

Konqueror はデフォルト状態で Ctrl+N は新規ウインドウへのショートカットになっているが、なんと すばらしいことに これをカスタマイズできるのだ。 Ctrl + F は検索、Ctrl + P は印刷など、Emacs キーバインド とのバッティングは多々あるのだが、それらを全部無効にできるのであった。

Konqueror 神 だわ・・・って思った。

だがしかし、残念ながらそこまで神ではなかった。

Konqueror の何が問題なのか

まずアプリアイコンがダサい。いやそれはどうでもいい。僕がそう思っているだけでこれが好きな人もいるのだろうし。 以下に問題を列挙。

  • 作動が重い、遅い
  • ページレンダリング遅い
  • 閲覧できない、レンダリングされないウェブページが結構ある

インストールとセットアップがすごく面倒なのもいや(・・・というか Konqueror は apt ですぐはいるから、本当に面倒なのは日本語入力のセットアップなの)だが、これは一回やれば済む話なのでよい。 それから遅い問題も、速いChromebook を買えばいいので、回避可能な問題といえなくもない、けど、 問題なのは、閲覧できないウェブページがあること。

そのウェブメモアプリのユーケースとして、メモしたURLから該当ページを開く、という操作がかなり頻繁にあるため、これでは(自分の用途には)使えない。

その他の問題 crostini + 日本語入力の問題 とか

Ctrl + space がバッティングする。

  • ChromeOS の日本語入力切り替えは Ctrl + space 固定
  • Emacs キーバインド の範囲選択開始は Ctrl + space
  • Fcitx-mozc の切り替えは Ctrl + space (カスタマイズ可能)

Crostini 上の日本語入力は Fcitx-mozc を使うとして、この起動を ChromeOS本体と合わせて Ctrl + space にしておくと便利だが、 Emacs キーバインド の 範囲指定開始コマンドとバッティングしてしまう。 Fcitx-mozc の起動を Alt + space に変更すれば、この問題は回避できるが、 ChromeOS 上と Crostini 上とで日本語入力切り替え操作が統一できない。 もう一切 ChromeOS 上の Chrome を使わないで、Crostini だけで生きていくという使い方すれば問題はないのだろうけど。

まとめ

Ctrl+N の挙動を上書きできないブラウザばかりになってしまった。 その中で、Konqueror は、自分にとって一筋の光明に思えたが、残念ならがそうでもなかった。 ここまでの大変さを思うと、 もう Chromebook はやめて、Macbook オンリーでやっていく方が楽じゃないのか、と思えてくる。

なお Windows界隈の事情は知らない。Edge を使えば問題ないのかもしれない。使う気ないけど。

その他の可能性として emacs 上で動く browser eww を使うとか?