つーさにブログ

つうさにのメモ用ブログ

xwwpで遊ぶ

本当はもっと実用的な例を作りたかった。

環境: GNU Emacs 28.0.50

xwwpパッケージ

github.com

xwwpはEmacsのxwidget-webkit機能を拡張するEmacs Lispパッケージ1M-x xwwpといった便利なコマンドや、Webページにcssやjsを注入する関数(ライブラリ)を提供してたりする。

同プロジェクト内で管理されているxwwp-follow-linkパッケージは、xwwpのライブラリとしての機能を使って実装されている。

今回はそんなxwwpを使って遊んでみた(回してみた)。

利用するGNU Emacs

MacでもEmacsでWebKitブラウザする! - つーさにブログ」で書いたように、現在のEmacs 28.0.50ではNS版でxwidget-webkit機能が利用可能なのでそれを使う。

ただ、GTK版でも問題なく動作すると思われる。

遊ぶ

xwwpが提供するxwwp-html-inject-style関数を使うことで閲覧するWebページに任意のcssを注入することができる。

ということで、 閲覧中のWebページにcssを注入して遊ぶ。

内容を消す(隠す)

body要素を{ display: none; }にするcssを注入することで、見ている内容を消し去る。

(defun my/xwwp-clear-page (&optional xwidget)
  "ページまっさら"
  (interactive)
  (let ((xwidget (or xwidget (xwidget-webkit-current-session))))
    (xwwp-html-inject-style xwidget "__my_xwwp_clear_page_style" "body { display: none; }\\n")))

f:id:tsuu_mmj:20200921022933g:plain
ページまっさら

特に元に戻す関数は用意してないので、終わりたい場合はC-u qしてバッファをキルしてください。

内容を回す

body要素をanimationを使って回す。

(defun my/xwwp-rotate-page (&optional xwidget)
  "ぐるぐるページ"
  (interactive)
  (let ((xwidget (or xwidget (xwidget-webkit-current-session))))
    (xwwp-html-inject-style
     xwidget
     "__my_xwwp_rotate_page_style"
     "\
body { 
  animation: spinner 1s steps(12, end) infinite; 
}
@keyframes spinner { 
  to { 
    transform: rotate(360deg); 
  } 
}
")))

f:id:tsuu_mmj:20200921023018g:plain
ぐるぐるページ

これはひどい

特に元に戻す関数は用意してないので(ry

おしまい

xwwpはJavaScriptを注入するxwwp-html-inject-script関数やJavaScript関連の便利なマクロ・関数 (xwwp-js-defxwwp-js-inject) も提供している。何か面白そうなアイディアがあったらxwwp-follow-linkのソースを参考にして実装されたい。

今回使ったソースコードはGistにも置いた。


  1. xwidget-webkit plusの略だと思われる。