Vimperator
qutebrowser

qutebrowserの紹介とvimperatorとの簡易比較ポエム

環境

v1.4.0
qutebrowser on webengine
archLinux

qutebrowserの紹介

作者曰く「たぶん信じてもらえないと思うけど現存するブラウザで満足のいくものがなかった。だから自分で書くことにした。」
詳細はリンク先の2-5を見れば他のvimキー操作を実現したブラウザのどこがダメか書いてある
もし同意出来たならqutebrowserを体感する価値はあると思う
無ければ普通のことが出来なかったりと色々面倒なので、正直お勧めできない。マイナーリリースのたびにバグるし,Qtのアップデートでもバグる.

設定サンプル

多少は一般的なブラウザの操作感に近づけたつもり
コメントアウトしてあるのは好みで
インポートするなら:config-write-py -fコマンドでこの設定を元に設定ファイルを自動生成するのをおすすめ。

c.aliases = {'q': 'quit --save'}
c.auto_save.session = True
c.backend = 'webengine'
c.scrolling.bar = True
c.scrolling.smooth = True
c.url.searchengines = {'DEFAULT': 'https://google.com/search?q={}'}
c.zoom.levels = ['25%', '33%', '50%', '60%', '70%', '80%', '90%', '100%', '110%', '125%', '150%', '175%', '200%', '250%', '300%', '400%', '500%']

config.bind('<alt+left>', 'back')
config.bind('<alt+right>', 'forward')
config.bind('<backspace>', 'back')
config.bind('<ctrl+r>', 'restart')
config.bind('<shift+backspace>', 'forward')
# config.bind('<shift+o>', 'set-cmd-text -s :open')
# config.bind('<shift+space>', 'scroll-page 0 -0.5')
# config.bind('<space>', 'scroll-page j0 0.5')
config.bind('P', 'open -t {clipboard}')
config.bind('PP', None)
config.bind('Pp', None)
config.bind('c', 'tab-clone')
config.bind('cd', None)
config.bind('co', None)
# config.bind('h', 'tab-prev')
config.bind('i', 'hint inputs')
# config.bind('l', 'tab-next')
# config.bind('o', 'set-cmd-text -s :open -t')
config.bind('p', 'open {clipboard}')
config.bind('pP', None)
config.bind('pp', None)
config.bind('q', 'close')

私の設定はgithubにdotfilesを上げています

比較の背景

vimperator+firefox基準で比較していきたい
私がさほどコードに強くないので、以下のいずれかに入らない機能の実現は守備範囲外
- 標準的にサポートされている
- もしくは十分に分かりやすい実現手順がgoogleで見つかる

良さ

quickmark(qmark)

quickmark-add http://github.com gitとか,該当ページでmgとかで追加
以後bgit{Enter}とか,mgでアクセスできるようになる
個人的にはqmarkよりもこっちのほうが良い
人によってはエンターを矯正されることがデメリットかもしれない(と言っても私のキーボードは;がエンターなので都合が良いのもある)

シェルコマンドの実行

spawnでコマンドも渡したりできる

開発が非常に活発

githubでウォッチしててもやり取りがすごく多く、他のvimcloneなブラウザよりも目下信頼出来る
ただ不満に上げる一般ユーザー的に基本的なことの優先度が低いのが気になる。

設定ファイルが自動生成可能

bind q close とかした後に動作確認して,設定ファイルに書かなくてもwrite-config-py -fで綺麗に設定ファイルにまとめてくれる.
個人的にこの機能はお気に入り.
「俺の独自の調査で設定ファイル書きましたー参考にしてねー(旧いイレギュラーな方法)」とか良く在って,参考にはするけど結局公式ドキュメントとか最新のリリースノートを読みに行かないといけなくなったりすることがない.xmonadとかのことなんだけどね.
設定ファイルに個性が出ない形式は本当に大好き.

設定ファイルがPython

Pythonを用いたカスタマイズがしやすい(してない)

カスタマイズする上で公式のドキュメントが強力で設定がしやすい

qute://helpでその用意されている機能が何が出来るか非常によく書いてある
qute://settingsやqute://bindsなどで設定がテキストベースで見られるのが検索可能で良い

操作が軽快

vimperatorと比較しても早く感じる。操作面で引っ掛かりを感じることが本当に少ない.
謎のキーボードが効かないvimperatorの現象にあたることがないのも良い。
拡張機能型で絶対に避けられない操作を受け付けない時間がない.

ドメイン別の設定が可能

これは人によっては神機能かもしれないが,個人的には使いたいシチュエーションがなくて何も言えない.
そこまで設定したところで設定する時間以上に活かしきれるものなのか少し疑問なので

ダイアログボックスがy,n,などで選択可能だったりすべてがキーボードで完結している.

他のブラウザの様にメニューバーやポップアップを操作しないで良い
qutebrowserならy,n,などなどでそのままキーボードで出来る.(その代わりブラウジングの最中に出てこられると間違えて選択しちゃうので,モード切替で的なもの経由で押せるとかの改善がされると良いね)

使用するツールやプロセスのセンスが良い

私は開発者ではないが,使用するツールや方法にセンスを感じる.ツッコミどころあったら直します.
・セマンティックバージョニング
・充実したCIやレビューサービスとのインテグレーション
・関係パッケージの自動更新
・Qt
・changelogが高い頻度でリリース前から更新されるので何が乗るかわかりやすいし,先行して試すことも出来る
・小さく高いコミット頻度
・asciidoc
・helpや設定方法のドキュメントが豊富すぎる
・他の似たツールの紹介や比較が明確
・XDG_CONFIG

不満

focus input (first)

1.4で実装されたが画面内にしか働かないので,hint inputsをiに割り当ててiaとやるのなんかと大して変わらない
とはいえ,画面内にinputs要素があるなら何のアルファベットが割り当てられてようが,bind i hint inputsとして割り当ててあればiaとかでその要素にジャンプするので最近は苦痛に感じない.
というのも,インプット要素はページボトムかページトップにあることが多いイメージで,iaとggiaでカバーできるケースがそれなりにあることがわかった.

IMEがONだとキーボードショートカットが正常に動かない

日本語imeとvim系の宿命なんでまぁ...

対応していないcssがある.

greasemonkeyが動くようになったので問題なくなった.
userstyle.orgからuserscriptとしてインストールしよう.
ただし,問題はロード前は白く反転するので目がチカチカして疲れることbgをblackにしたら解決
個人的な趣味を言えばGlobal dark style - changes everything to DARK by stormiが良い

プラグイン対応

adblockは超簡易版なら入ってるけどあんまり役には立たない.
すごく重いから開発側も乗り気ではないみたい
GreaseMonkeyは結構動いてSuper_preloaderPlus_one_Newとかが使えることがわかったので概ね満足してる.
パスワード入力が動かないのがちょっと不満だったけどqute-lastpassとして呼び出せるユーザースクリプトがある.
lastpass-cliをインストールしてlpass loginしたあとqutebrowserからspawn -u qutebrowserとパスワードを入れたいページで入力すれば入れられる.
でもやっぱりアドブロック系はほしいなぁ.

レイアウトが壊れる.

そこそこのサイトでレイアウトが他のブラウザに比べて平気で崩れたりする.
でもこの手のを使う層にとってはそんな表徴なんてどうでもいいのかなと思ったりする.

ベースブラウザのバージョンが古い

qtwebengineはchromiumベースなのだがそのバージョンが古い

PDFがブラウザ上で見れない

qtwebengineでは未対応
個人的にはdownloadしてzathuraで見るのがメインなので特に言及しない
issue

開発リソースの問題

既存の多種多様なブラウザがほとんど部分的に古かったり開発が非活発であったりするように,ブラウザ開発には多大なリソースがいると思っているのでメインメンテナが抜けたら開発が継続されない不安

動画を見るには適さない.

動画を見てるときに例えばコマンドラインからコマンドを打つと一文字打つごとに動画がカクつく
Alt-Mを押してミュートにすると動画がほんの少し先に送られる.
動画見ながら何かするときは不安定なので,spawnでvlc とかで投げて回避しています.

個人的な副作用

これを使ってからだと思う.Vivaldiを捨ててその悪口を言うようになったのは.
あんなゴールが中途半端なブラウザの何が信頼できるのか.クラッシュ頻度は高いし拡張機能の動作がまちまちだし.
半端だからvimライクな拡張機能に頼ることになるけどそれとの親和性が糞だし.
vimライクなブラウザ愛好者は絶対に使いたくないぐらいにバインドの選択肢が不十分だし.
パワーユーザーを頷かせる作りじゃなくて,パワーユーザー気取りを満足させるための作りだろうと軽口を叩くようになりました.

結論

個人的にはadblockがないので娯楽には厳しい.

これ以上にvimブラウジングを快適に出来るブラウザは存在しないと思うので,不安定さが許容できるならぜひ一度使ってほしい.