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

###　書いた動機
非常に優れた理念の基書かれているVim系ブラウザなのに，ファンクション単位で愛好家の感想が書かれたサイトが見つけられなかったため．

### 環境
v1.5.2
qutebrowser on webengine
archLinux

### qutebrowserの紹介
作者曰く「たぶん信じてもらえないと思うけど現存するブラウザで満足のいくものがなかった。だから自分で書くことにした。」
詳細は[リンク先](https://www.qutebrowser.org/doc/faq.html)の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](https://github.com/geotrader/dotfiles/blob/master/config/qutebrowser/config.py)を上げています

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


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

#### シェルコマンドの実行
spawnでコマンドも渡したりできる

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

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

#### 設定ファイルがPython
Pythonを用いたカスタマイズがしやすい(してない)

#### カスタマイズする上で公式のドキュメントが強力で設定がしやすい
qute://helpでその用意されている機能が何が出来るか非常によく書いてある
qute://settingsやqute://bindsなどで設定がテキストベースで見られるのが検索可能で良い

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

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

### ダイアログボックスがy,n,<esc>などで選択可能だったりすべてがキーボードで完結している．
他のブラウザの様にメニューバーやポップアップを操作しないで良い
qutebrowserならy,n,<esc>などなどでそのままキーボードで出来る．（その代わりブラウジングの最中に出てこられると間違えて選択しちゃうので，モード切替で的なもの経由で押せるとかの改善がされると良いね）


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

#### [asciidoc](https://github.com/qutebrowser/qutebrowser/issues/345)は駆逐されそう．

やはりメジャーじゃなくドキュメント生成が難しいから．
代替案として今はクソみたいなマークダウンと汚いsyntaxのreStがあるけどどっちにすると言う議論の末reStの採用が決まりました．
悲しい決定だけどmarkdownよりマシか．



### 不満
#### focus input (first)
画面内にしか効かない．
iに割り当てて，iaとggiaでカバーしながらやっている．

#### IMEがONだとキーボードショートカットが正常に動かない
日本語imeとvim系の宿命なんでまぁ．．．

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

#### プラグイン対応
adblockは超簡易版なら入ってるけどあんまり役には立たない.adblock級のはすごく重いから開発側も乗り気ではないみたい．
GreaseMonkeyは結構動いてSuper_preloaderPlus_one_Newとかが使えることがわかったので概ね満足してる．
~~パスワード入力が動かないのがちょっと不満だったけどqute-lastpassとして呼び出せるユーザースクリプトがある．~~面倒で最近は素直にfirefox＋enpassとすることが多い
やっぱりアドブロック系はほしいなぁ．動画の間に入る広告とか，オーバーラップするとかいうクソみたいな広告さえなければ．．．

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

#### ベースブラウザのバージョンが古い
qtwebengineはchromiumベースなのだがそのバージョンが古い

#### 開発リソースの問題
既存の多種多様なブラウザがほとんど部分的に古かったり開発が非活発であったりするように,ブラウザ開発には多大なリソースがいると思っているのでメインメンテナが抜けたら開発が継続されない不安
当然ながらQtのバージョンアップとchromiumのバージョンアップに凄く左右されてしまうし，常に最新パッケージを継続的に入れる仕組みを使っているのでその対応コストだけでも結構見てて大変そう

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


### 個人的な副作用
vivaldiが嫌いになりました．
今の所パワーユーザー気取りのものだと捉えてるので，有識者と議論したい

### 結論
adblock問題から娯楽には厳しく，不安定だがそれを補ってあまりあるvimでの快適なブラウジングがあるのでぜひ使ってほしい．