pit-rayの備忘録

知識のあうとぷっと

EasyClickの高速化 - win-vind4.1

win-vind 4.1の更新内容です。

前回記事 (4.0) www.pit-ray.com

GitHub github.com

ホームページ pit-ray.github.io

ウィンドウの整列の例外リスト

 Twitterでご指摘がありましたが、rainmeterなどの常駐ウィジェットはウィンドウハンドルを所持しているため、<C-w>=によるウィンドウ整列でレイアウトが崩れてしまうそうです。そこで、整列対象から外すためのarrangewin_ignoreオプションを追加しました。

set arrangewin_ignore = notepad
set arrangewin_ignore = notepad, rainmeter

 このようにプロセスの実行ファイル名(拡張子なし)を指定します。複数指定する場合にはカンマで区切ります。現在は各プロセスが異なる実行ファイル名であると仮定しているため、同じ実行ファイル名のプロセスがあると、同様に例外リストに追加されます。

テキスト領域の自動選択

 Editor Normalモードに移行するためにEscキーを押すと、アプリケーションによってはテキストフィールドのフォーカスが外れることがあるようです。そこで、Editor Normalモードに移行する際に、ウィンドウ内のテキストフィールドを全て検出し、マウスカーソルから最も近いものにフォーカスするautofocus_textareaオプションを追加しました。

set autofocus_textarea " 有効化

UIスキャンの高速化

 デフォルトのEasyClickやautofocus_textareaは、コマンドを実行するたびにスキャンを行うため、処理時間がネックとなっていました。そこで、別スレッドで非同期的にUIをスキャンし、そのキャッシュを利用するuiacachebuildというオプションを追加しました。このオプションはいくつかのパラメータがあります。

set uiacachebuild " 有効化
set uiacachebuild_lifetime = 1500 " 1.5秒
set uiacachebuild_staybegin = 500 " 0.5秒
set uiacachebuild_stayend = 2000 " 2秒

 uiacachebuildは、EasyClickなどを使っていない時でも、定期的なスキャンを行います。頻繁なスキャンを行うと負荷が増大するため、uiacachebuild_lifetimeという処理時間とキャッシュの信頼度のトレードオフを決定するパラメータがあります。値には、キャッシュの有効期間をミリ秒を指定します。この値が小さいと精度と負荷が上昇し、大きいと精度と負荷が減少します。

 さらに、uiacachebuild_staybeginuiacachebuild_stayendというパラメータがあり、これらは有効期間よりも優先されます。先ほど述べたように、uiacachebuildは定期的なキャッシュ生成を行うため、その回数を必要最低限にすることが望ましいと言えます。このパラメータは、マウスカーソルが同じ位置にいるとき操作していないとみなし、停止してからの指定した期間内にスキャンします。どちらもミリ秒の値を取ります。

https://github.com/pit-ray/win-vind/blob/gh-pages/imgs/uiacachebuild_stay.png?raw=true

デフォルトのバインディングを変更 (※注意)

 Residentモードへの移行を<Esc-Down>に、ResidentモードからInsertモードへの移行を<Esc-Up>に変更しました。以前の<C-i>は、MS Officeの斜体にするショートカットと重複しているため、このような変更となりました。

https://github.com/pit-ray/win-vind/blob/gh-pages/imgs/mode_overview.png?raw=true

方向キーは、図中の位置関係に対応しています。

最後に

 Windows 11には対応する予定です。