prefix+f — リージョン内で app の複数ウィンドウを順次切り替え

言語 · 中文 · English · 日本語

← 設定ヘルプに戻る

prefix+f は選択中の region の現在のアプリの 次のウィンドウ をその region に持ってきます。

デフォルト chord: f · 設定項目: cycle_region · 「設定 → ホットキー → 領域操作」で変更


典型的なシーン

レイアウトが region 0 を Chrome に配置しているが、Chrome のウィンドウを 5 つ開いているとします。最初にレイアウトを発動すると 1 つ目の Chrome が region 0 に配置されます。2 つ目、3 つ目を見たいときは prefix+f を押し続けます。1 回押すごとに次のものに切り替わり、最後まで行くと先頭に戻ります。


発動の流れ

1. (任意)prefix+q N    で region N を選択。選ばない場合はデフォルトで region 0
2.        prefix+f       で次のウィンドウが当該 region に移動してアクティブになる
3.        もう一度 prefix+f で更に次 …

一発で: prefix+qf数字 でその region を選択して本操作を即実行(prefix+q 参照)。


候補ウィンドウの選び方

エンジンは以下の順序で行います:

  1. 当該 region の現在のアプリの すべての実行中ウィンドウ を取得。
  2. 現在のレイアウトの 他の region に既に占有されている ウィンドウを除外(他 region のウィンドウを盗まないため)。
  3. 残りを MRU(最近使用)順にソートしてサイクルリストとする。
  4. 最初に f を押したとき、リストから「現在のものではない」最新の 1 つを選ぶ。
  5. 以降の f 押下ではリスト内を後ろへ進み、末尾に達したら先頭に戻る。

リストに候補ウィンドウが 1 つしかない場合(「まさに今のもの」を含む)、f を押すと サイレント無操作 です。


サイクルセッションの有効期限

f を押す間隔は サイクルタイムアウト に制御されます(デフォルト cycle_timeout_ms = 3000 ms):

  • 3 秒以内に連続して f を押すと同じサイクルセッションとみなされ、cursor は引き続き後ろへ進む。
  • 3 秒を超えてから再度 f を押す → 新しいセッションを開始し、「現在のものではない」から始める。

セッションは以下のイベントでも 強制クリア されます:

  • レイアウトの切り替え(prefix+<key> / prefix+n/p/l / prefix+w)。
  • 候補リスト中のあるウィンドウが閉じられた。
  • prefix+r(restore)。
  • prefix+m swap が完了。
  • 設定の再読み込み。

フルスクリーン / ネイティブ最大化の処理

  • 現在の region が prefix+z で一時フルスクリーン中: 順次切り替えで出てきた次のウィンドウも フルスクリーンサイズ で配置(フルスクリーンの見た目を保つ)。
  • 現在のレイアウトがその region に is_native_maximize(ネイティブウィンドウ最大化フラグ)を設定: 順次切り替えのウィンドウは move_window ではなく maximize_native を経由し、一部アプリ(Office / ブラウザ)でカスタムサイズ下のレンダリング異常を回避する。

選択状態の記憶

prefix+f は selected_region をターゲットとして使います。一度 prefix+q N で region を選択すると、以降の f / z / g / c / x の連打はすべて region N に対して有効になり、毎回選び直す必要はありません

別のバインディングに切り替えてから戻ってきた場合のみ selected_region が変化することがあります(各バインディングは独立して記憶)。


拒否条件

状況 動作
現在使用可能なレイアウトがない サイレント
selected_region が現在のレイアウトに存在しない サイレント
当該 region のアプリが [apps] に登録されていない エラー(理論上発生しないはず)
候補リストが 2 ウィンドウ未満 サイレント
cursor が指すウィンドウが既に死んでいる セッションをクリアし、本回の押下は無効

タイミングパラメータ

パラメータ デフォルト 設定位置
同セッション最長間隔 3000 ms ホットキー → アドバンスト → サイクルタイムアウト(cycle_timeout_ms