vanilla 0.2.1 をリリースしました。

https://github.com/rallentando/vanilla/releases/tag/0.2.1

タブで新しいウィンドウで開く機能なのですが、なぜか構造的にできない気がしていました。

ですがよくよく考えてみれば、タブをウィンドウからはずしたからといって

タブの情報自体も変化させる必要はないんですね。

ということに気づいたので実装してみました。

他のブラウザの分割/結合(detach/attach)とは似て非なる物ですが、

使用感としては大体おんなじです。

違う点としては、上の通り、構造をすべてのウィンドウで共有しているので

新しいウィンドウで開いても依然として表示は残り続けることです。

このことによって表示しているウィンドウ以外からタブを削除したり移動したりといったことができます。





あと、今回のリリースはちょっとボリュームが大きくて、

上の部分以外にもいろいろあって、細かく説明すると長くなってしまうので、

目立つところだけ列挙します。

  • 全体的に動作が遅かったのでそれを改善
  • Operaの巻き戻し/早送り(Rewind/FastForward)の実装
  • 横タブの幅、縦タブの高さの調整がメニューからできるように
  • パスワードマネージャーの実装
  • パスワードマネージャーの実装

以上です。

最後のは大事なことなので2階言いました。

Operaのパスワードマネージャーがとにかく便利で、ほしい機能ではあったのですが、

なかなか難しくて、途中まで実装してから挫折してを繰り返してました。

今回ようやっとそれなりのものができたかと思います。

便利なので使っていただければ。

またQt5.6.1 や Qt5.7 がリリースされたらバイナリの追加か新たにリリースする予定ですので。

vanilla 0.2.0 をリリースしました。

https://github.com/rallentando/vanilla/releases/tag/0.2.0



今回の Qt5.6.0 へのバージョンアップに伴い、

パッケージには QtWebKit のバックエンドは含まれなくなりました。

大きな変更は以下の通りとなります。



・Pepper Flash への対応

・フルスクリーン API への対応

・インスペクタの追加

・プロセスの終了処理の追加

・縦タブ時の処理の改善(展開、折り畳み)

・バックグラウンドの処理の改善



このように QtWebEngine のアップデートへの対応が主です。

特にフラッシュ、インスペクタは

「これがないと常用するブラウザになれない」程、重要な機能なので、

これが使えるようになったことはとても大きいのではないでしょうか。



偉大なるQtチームに多大なる感謝を。

vanilla 0.1.5 をリリースしました。

https://github.com/rallentando/vanilla/releases/tag/0.1.5


Qt5.6 の RC 記念。


今回のは(も)、引き続きツリーバー(タブバー)の変更が大きなものにはなるのですが、



・ポップアップサムネイル

・ノードの追加、削除を見やすく

・現在のノードの変更を見やすく

・横タブ時の高さ、縦タブ時の幅をDnDで調整

・横タブ時では上の機能でタブサムネイル有効化

・横タブ時の幅、縦タブ時の高さを設定可能に

・縦タブ時では上の機能でタブサムネイル有効化



このように、主に足りない情報、情報の変化の可視化が主になっています。



他にもグラフィック全体のパフォーマンスの改善、クラッシュの修正、

Windows10 環境のみですが Edge で開く(現在のページ、タブ、リンク等)アクションを追加しています。



また今回も Qt5.6 バージョンを pre-release としてパッケージを用意しています。

RCも出て大分安定性も向上しています。またFlashも問題なく見れるレベルになってきました。

プラグインの探索も問題なく動いているようなので、

0.1.3のときのように特別な設定もする必要はありません。



大分実用的になってきたのではないでしょうか。



正式リリースまでもう少しですね。

ポップアップサムネイルとかタブサムネイルとか。

タブにタイトルとアイコンだけだと内容がわかりにくいな、とか思ったのでつけてみました。


こんなのとか、



こんなのとか。



なんだろう、徐々にVivaldi化というかOpera化してるような気がしないでもない。


というか複数行(階層)のタブでタブサムネイルは場所取りすぎな気がする。


けどまあ、邪魔になるようならそのときに縮めるか消すか縦タブに切り替えればいい話なので。


あとはテーブルビューのほうもスムーズスクロール実装したり、パフォーマンスチューニングしたり。


他にもやっときたいことがあるのでリリースはまだですが、


QtWebEngine側も 64bit ビルドでも Flash を読み込みに行くようになったり、


いくつもの修正で安定性があがっているようです。


期待せずに待っていただけると。

vanilla 0.1.4 をリリースしました。

https://github.com/rallentando/vanilla/releases/tag/0.1.4


Qt5.6 のベータ記念。


今回のリリースで一番目立つのはツリーバー(タブバー)の改善でしょうか。



実装した後で思ったのですが、タブバーのスクロールができるブラウザが少ないのってなんでなんでしょう?
出来た方が使い勝手が良いというかできないとつらいと思うのですが。
出来たとしてもインジケータがなくていまどの位置にいるのかわかんないし。


多数のタブを管理するためにほかのブラウザが採っている手法としては、
タブバー自体を複数行にしたりタブ幅を小さくしたりとありますが、
複数行にすると画面を圧迫するしタブ幅を小さくするとタイトルが見えなくなるし、
あんまりいい解決法だとは思えないんですよね。
だからと言ってスクロールできるからそれが正義かといえばそうではなくて、
「全て」のタブに「すぐに」アクセスすることができないので、
それが気になる人にとってはむしろ複数行やタブ縮小の方がましなやり方なのかもしれません。


vanilla がタブバーのスクロールを採用したのは、上の理由もありますが
行が階層を意味するので複数行にはできず、
またタブ縮小は「無制限」のツリーを扱えるのがいいと作者が思ったいるので、
一階層のタブの数を制限することにもなりかねないやり方が許容できないということで、
結局のところ消去法というか、
タブという限られたインターフェイスの枠の中でまだましなものを選んだ形になりますね。


あとタブのウィンドウ外へのドラッグで別ウィンドウを作るのが最近流行りみたいですが、
vanilla ではタブがウィンドウに属さず、全てのツリーをすべてのウィンドウで共有するので、
設計上難しいところがあります。
代わりに新規ウィンドウで開くメニューは用意しました。
上述の通り、ウィンドウを閉じてもタブを閉じたことにはならないですがあしからず。

vanilla 0.1.3 をリリースしました。

https://github.com/rallentando/vanilla/releases/tag/0.1.3



0.1.2 をアナウンスするつもりだったのですが、
ツリーバーの閉じるボタンが聞いてないという(気分的に)致命的なバグがあったので
他にもいくつか修正含めつつ 0.1.3 のリリースとさせていただきます。


ついでにQt5.6バージョンを pre-release ということでパッケージをダウンロードできるようにしました。
正式なベータ版ですらなく snapshot 版なのでご利用は自己責任でよろしくお願いいたします。
まあ、そもそも vanilla 自体が正式版どころかベータでもアルファでもなく人柱バージョンなので
あんまり気にすることもないような気もしますが。


その 5.6 バージョンのQtWebEngine で Flash を利用できないという方はショートカットの設定などで
アプリケーションの呼び出しを以下のような形で設定するとうまくいくかもしれません。
バージョンやパスなどは適宜環境に合わせてください。


32bit の場合
"C:\Program Files (x86)\vanilla\vanilla.exe" --ppapi-flash-path="C:\Windows\System32\Macromed\Flash\pepflashplayer32_19_0_0_245.dll"


64bit の場合
"C:\Program Files\vanilla\vanilla.exe" --ppapi-flash-path="C:\Windows\SysWOW32\Macromed\Flash\pepflashplayer64_19_0_0_245.dll"

ツリーバー?的な。

QtWebEngine 、というか Qt 自体、ですが、
新しいスナップショットは特に頻繁に落ちる、なんてことはなくなったようですね。
どころか WebKit だった頃より安定しているかもしれないくらいです。
(32bitパッケージ特有の問題として、ある程度メモリ使うとクラッシュするようです。
普通の使い方だと全然発生しませんが、他のブラウザでいうタブ50個、
みたいな開き方するとクラッシュします。)


さて、vanilla が快適になったのはいいのですが、最近たまーにタブ的なものが欲しくなるのですよ。
ということで、表題のようにツリーバーを実装することにしました。



現状では以下の機能が実装済みです( Github にはまだ push してませんが)。


・ノードの並べ替え
・ノードの別階層への移動
・ノードに閉じるボタン
・縦長の状態でスクロール
・横長の状態だと階層別のスクロール


そして以下の機能は実装予定です。


・テーブルビューを開くボタン。
・ノードのコンテキストメニュー
・新規ノード、ノード複製、最近閉じたノードをメニューに。
・閉じるボタンを設定で消せるように
・縦長の状態でのリサイズ
・自動で隠す機能


QWidget で作った方がましな気もしますが(コードの見た目的に)、
今回は QGraphicsItem ベースです。
QWidget ベースだとアイテム数が増えたときにどうしても不安なので。
しかしアニメーションを実装するために QGraphicsObject を使っている矛盾。
なにかいいやり方はないものか…


ちなみに「他のブラウザでいうタブ50個」ですが、
vanilla はメモリ上に持っておくページの数を設定できるのですが、
それをわざわざ50とか100とかに設定したうえでページ開きまくると
メモリ消費量が爆発します。
通常は10なので、メモリがより少ない環境ではさらに小さくした方がいいかもしれません。
confix.xml の application/@MaxViewCount ですね。
ページを開いていてこの値を超えた場合最後に見たページから解放されます。


あと次のリリースを Qt5.5.1 のままで QtWebKit がある状態で 0.1.2 として出すか、
Qt5.6.0 にして QtWebKit 削除して 0.2.0 として出すか悩み中。
Qt5.6.0の場合は 32bit と 64bit のパッケージにするかな。