コンテンツにスキップ

Window Hints

Window Hintsは、各ウィンドウの上にアプリアイコンとキーを表示し、キー入力やクリックで対象ウィンドウへ切り替える機能です。

他のウィンドウに隠れたウィンドウや別のSpaceにあるウィンドウも候補にできます。

基本設定

全設定に、Window Hintsの全項目、デフォルト値、各項目の説明を掲載しています。

"windowHints": {
  "hotkey": {
    "modifiers": ["ctrl", "alt"],
    "key": "f"
  }
}

hotkeyを指定したときだけホットキーが登録されます。ホットキーを押すとヒントが表示されます。表示中に次の操作ができます。

  • 表示されたキーを入力してウィンドウを選択
  • ヒントをクリックしてウィンドウを選択
  • ヒント外をクリック、escape、または同じホットキーを押して閉じる
  • 1から9を押して対応するSpaceへ移動

Note

完全に隠れたウィンドウのプレビュー表示には画面収録の許可が必要です。

ヒントをカスタマイズ

ヒント表示

"windowHints": {
  "hint": {
    "chars": [
      "A", "S", "D", "F", "G", "H", "J", "K", "L",
      "Q", "W", "E", "R", "T", "Y", "U", "I", "O", "P",
      "Z", "X", "C", "V", "B", "N", "M"
    ],
    "padding": 12,
    "cornerRadius": 12,
    "icon": {
      "size": 72
    },
    "key": {
      "minWidth": 72,
      "fontSize": 48
    },
    "title": {
      "show": true,
      "fontSize": 16,
      "maxSize": 72
    }
  },
  "focusedWindowHighlight": {
    "borderColor": { "red": 0.95, "green": 0.68, "blue": 0.40, "alpha": 0.95 },
    "borderWidth": 13
  },
  "occlusion": {
    "preview": {
      "enabled": true,
      "mode": "background",
      "width": 140,
      "alpha": 0.64,
      "maxFillRatio": 0.5
    }
  }
}

occlusion.preview.maxFillRatioは、backgroundモードのプレビュー箱の合計面積が画面面積に占めてよい最大割合です。候補が多く合計面積がこれを超える場合は、すべての箱を一律に縮小して重なりを防ぎます。

ヒントの背景色、文字色、枠線色は、hint.statehint.icon.statehint.key.statehint.title.stateで変更できます。各設定ではnormaldimmedoccludedactiveの状態ごとに色や透明度を指定できます。

別のSpaceにある候補に付くSpace番号バッジは、Space番号に応じた固定の配色で表示されます。

ヒントキーの先頭文字を指定

アプリやウィンドウタイトルに応じて、ヒントキーの先頭文字を固定できます。ルールは上から順に評価され、最初に一致したものが使われます。

"windowHints": {
  "hint": {
    "prefixOverrides": [
      {
        "match": {
          "bundleID": "md.obsidian",
          "titleGlob": "Minerva*"
        },
        "prefix": "M"
      }
    ]
  }
}
  • match.bundleIDまたはmatch.titleGlobの少なくとも一方を指定します。
  • titleGlobでは*?を使用でき、大文字と小文字は区別されます。
  • prefixhint.charsに含まれる1文字または2文字で指定します。
  • 複数のヒントキーが互いの先頭と一致しないよう、残りの文字は自動調整されます。

操作をカスタマイズ

ナビゲーション

"windowHints": {
  "navigation": {
    "focusBack": {
      "key": "tab"
    },
    "direction": {
      "hints": {
        "keys": {
          "left": "h",
          "down": "j",
          "up": "k",
          "right": "l",
          "upLeft": "y",
          "upRight": "u",
          "downLeft": "b",
          "downRight": "n"
        }
      },
      "direct": {
        "modifiers": ["ctrl", "alt"],
        "keys": {
          "left": "h",
          "down": "j",
          "up": "k",
          "right": "l"
        }
      }
    },
    "spaces": {
      "numbers": true,
      "prev": { "key": "," },
      "next": { "key": "." }
    },
    "areaHints": {
      "key": "space"
    },
    "windowLayouts": {
      "key": "l",
      "jinraiMode": true
    },
    "applicationHints": {
      "key": ";",
      "jinraiMode": true
    }
  }
}

ヒント表示中のナビゲーションキーとhint.charsが重複した場合は、ナビゲーションキーが優先されます。方向移動は現在のSpaceにあるウィンドウを対象にします。 navigation.windowLayouts.keyを設定すると、Window Hints表示中にWindow Layoutsのピッカーへ切り替えられます。 "jinraiMode": trueを指定すると、通常表示からの遷移でもJINRAI Modeを開始します。

ヒントを開かずに方向移動

navigation.direction.directを設定すると、Window Hintsを開かずにグローバルホットキーで隣のウィンドウへ直接フォーカスを移動できます。

  • modifierskeysの両方を指定したときだけ有効になります。
  • keysにはhints.keysと同じ方向名(leftdownuprightupLeftupRightdownLeftdownRight)を指定します。
  • modifiersfnは使用できません。
  • Window Hintsの表示中はdirection.hints.keysが優先され、directのホットキーは発火しません。

選択対象とカーソル

"windowHints": {
  "behavior": {
    "selection": {
      "swapWindowFrame": {
        "modifiers": ["shift"]
      }
    },
    "cursor": {
      "onStart": true,
      "onSelect": true
    },
    "candidates": {
      "includeOtherSpaces": true,
      "includeActiveWindow": true
    }
  }
}

別のSpaceにある候補はSpace番号付きで画面下部に表示されます。完全に隠れたウィンドウも同じ領域へプレビュー付きで表示されます。

フルスクリーンにしたウィンドウ(専用Space)も候補に含まれ、Space番号の代わりにFバッジが付きます。選択するとそのフルスクリーンSpaceへ切り替わります。