xwwpで遊ぶ
本当はもっと実用的な例を作りたかった。
環境: GNU Emacs 28.0.50
xwwpパッケージ
xwwpはEmacsのxwidget-webkit機能を拡張するEmacs Lispパッケージ1。M-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")))
特に元に戻す関数は用意してないので、終わりたい場合は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); } } ")))
特に元に戻す関数は用意してないので(ry
おしまい
xwwpはJavaScriptを注入するxwwp-html-inject-script
関数やJavaScript関連の便利なマクロ・関数 (xwwp-js-def
やxwwp-js-inject
) も提供している。何か面白そうなアイディアがあったらxwwp-follow-linkのソースを参考にして実装されたい。
今回使ったソースコードはGistにも置いた。
-
xwidget-webkit plusの略だと思われる。↩