Skip to content

HUD をマウスカーソルのそばに出せるようにする - #62

Merged
somei-san merged 1 commit into
mainfrom
feature/hud-cursor-position
Oct 12, 2026
Merged

somei-san merged 1 commit into
mainfrom
feature/hud-cursor-position

Conversation

@somei-san

Copy link
Copy Markdown
Owner

背景

HUD は画面の上部・中央・下部のいずれかに出るため、大きな画面の端でコピーすると視界に入らない。コピーした場所の近くに出す選択肢を設定に足す。

変更内容

  • 設定 [display] hud_position に cursor を足す。HUD を出す時点のマウスカーソルの右下に HUD を置く。設定ウィンドウのポップアップ・--help・local_check.sh --position・README・docs/development.md も合わせる
  • 配置: カーソルがある画面の可視領域を使う。右端・下端で入りきらなければ左・上へ折り返し、最後に可視領域の中へ収める

仕様の注意点

  • 選択範囲ではなくマウスカーソルのそばに出す
    • アクセシビリティ API(AXSelectedTextRange → AXBoundsForRange)で選択範囲の位置を取る形を実機で試したが、Zed は属性を持たず(-25205)、VS Code と Claude(Electron)は値を返さなかった(-25212)
    • 選択範囲を使うにはアクセシビリティの許可も要る。カーソル位置(NSEvent mouseLocation)なら許可は要らない
    • 選択範囲の案は コピーしたテキストの選択範囲のそばに HUD を出したい #61 に残した
  • テキスト・画像(スクショ)・ファイルのコピーは同じ規則で置く。スクショやファイルのコピーには選択範囲が無く、カーソル位置なら内容の種類によらず決まるため
  • HUD はカーソルの指す点から矢印の大きさと余白のぶん離す。矢印が右下へ伸びるので、HUD が矢印に重ならないようにするため
  • カーソルがどの画面にも乗っていないときは top と同じ位置に出す

確認

  • cargo test(168 件)
  • ./scripts/visual_regression.sh(全ケース ok)
  • cargo fmt --check / cargo clippy --all-targets -- -D warnings
  • ./scripts/build_app_bundle.sh
  • UT: 右下への配置、右端・下端での折り返し、右上の隅で画面に収まること、メインディスプレイの左にある画面(x が負)への配置
  • 実機: local_check.sh --position cursor でコピーすると、カーソルのそばに HUD が出る
  • 実機での折り返しと外部ディスプレイへの配置は未確認

関連リンク

大きな画面の端でコピーすると、画面上部に出る HUD が視界に入らない
(#58)。cursor を選ぶと、コピーを検知した瞬間のマウスカーソルの右下に
HUD を出す。右端・下端で入りきらなければ左・上へ回り込み、カーソルが
ある画面の可視領域に収める。テキスト・画像・ファイルとも同じ規則で置く。

選択範囲のそばに出す案は、アクセシビリティ API で選択範囲の位置を取る
形で試したが、Zed は属性を持たず(-25205)、VS Code と Claude
(Electron)は値を返さなかった(-25212)。よく使うアプリで効かず、
アクセシビリティの許可も要るので見送り、許可の要らないマウスカーソルの
位置にした。

カーソルがどの画面にも乗っていないときは top と同じ位置に出す。

動作確認: cargo test、visual_regression.sh、cargo fmt --check、
cargo clippy、build_app_bundle.sh が通る。端での回り込みと、メイン
ディスプレイの左にある画面への配置は UT で確かめた。実機では
local_check.sh --position cursor で、カーソルのそばに出ることを見た。
実機での回り込みと外部ディスプレイは未確認。

Closes #58
@somei-san
somei-san marked this pull request as ready for review October 12, 2026 11:42
@somei-san
somei-san merged commit ad1556c into main Oct 12, 2026
2 checks passed
@somei-san
somei-san deleted the feature/hud-cursor-position branch October 12, 2026 11:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

コピー対象のそばにHUDが出るようにしたい

1 participant