Uncategorized

Rectangleの「次のディスプレイ」がフルスクリーンアプリでブロックされる?その理由

Rectangleの「次のディスプレイ」がフルスクリーンアプリでブロックされる?その理由 Rectangle appの中でも今なお関係のある最も古い報告の一つ(issue #51)に文書化されている、複数モニター特有のエッジケースがある。3台以上のディスプレイを使っていて、間にあるディスプレイの1つでネイティブのフルスクリーンアプリが動いている場合に影響する。次のディスプレイが詰まってしまい、フルスクリーンアプリを越えてその先のディスプレイまでウィンドウを移動できなくなるというものだ。 実際に報告された具体的なシナリオ 水平に並んだ3台のディスプレイを1、2、3としよう。ディスプレイ2にはmacOSネイティブのフルスクリーンでアプリが表示されている。普通の、フルスクリーンではないウィンドウがディスプレイ1にあり、それをディスプレイ2をまるごと飛び越してディスプレイ3へ移動させたい、という状況だ。 次のディスプレイを押すと、期待通りウィンドウはディスプレイ1からディスプレイ2へ移動する。しかしディスプレイ2はフルスクリーンアプリに占有されているため、ウィンドウはそこで見えるようになるのではなく、実質的にその裏に隠れた状態になる。ディスプレイ3まで続くことを期待して次のディスプレイをもう一度押しても、何も起きない。ショートカットは残りのディスプレイへと旅を続けるのではなく、実質的にそこで詰まってしまう。 なぜこれが起きるのか ネイティブのフルスクリーンアプリは、そのディスプレイ上の普通のウィンドウとして存在するのではなく、自分専用のスペースを占有する。この違いについては、このシリーズの別の記事でより詳しく扱っている。Rectangle macの視点から見ると、「ディスプレイ2」と「現在ディスプレイ2に表示されているフルスクリーンアプリのスペース」はまったく同じ対象ではない。報告者自身の説明によれば、Rectangle appはこれを自動的に検知して次の物理ディスプレイへと巡回を継続することはしない。一方、報告者自身の比較によれば、開発が終了したSpectacleアプリは同じシナリオで、どうやらそれができていたようだ。 メンテナーの回答と、現行バージョンにとっての意味 このissue自体でのやり取りによれば、メンテナーはこのアイデアを却下せず、追加すること自体には反対しないが優先度は高くなかった、という位置づけで説明しており、対象のディスプレイでフルスクリーンアプリが動いているかどうかを検知し、そうであれば次のディスプレイへ飛ばすという実装は、コントリビューターが比較的簡単に実装できるだろうと提案している。このissue自体がかなり古く、当時は実際に取り組まれているバグというより未解決の改善要望に近い位置づけだったことを踏まえると、今使っているバージョンでもこの挙動が未修正のままだと決めつけるのではなく、issueの現在の状態を直接確認するのがもっとも安全だ。プロジェクトのトラッカー上の古い未解決issueは、それ以降何も変わっていないことの永続的な保証にはならない。 今日この問題に遭遇した場合の回避策 まずウィンドウを手動でフルスクリーンディスプレイの隣に移動させる。 次のディスプレイが障害物を自動的に飛び越してくれることに頼るのではなく、Mission Controlを使うか手動でドラッグしてフルスクリーンアプリ自体の位置を変えるか、あるいは一時的にそのフルスクリーンモードを解除して、ディスプレイ2という障害物を取り除く。 ウィンドウを頻繁に通過させる必要があるディスプレイでは、ネイティブのフルスクリーンへの依存を減らす。 特定のディスプレイで常にフルスクリーンアプリが動いていて次のディスプレイのショートカットをブロックしているなら、そのアプリをネイティブのフルスクリーンではなくRectangle自身の最大化による普通の最大化ウィンドウとして保つことで、この問題を完全に回避できる。Rectangle appの次のディスプレイ動作は、サイズにかかわらず普通のウィンドウに対しては正常に機能するからだ。 環境が許すなら、1段階ずつ巡回するのではなく直接移動する。 次や前のディスプレイへ1段階ずつ進めるだけでなく、番号を指定して特定のディスプレイへウィンドウを移動できる比較的新しいRectangleの機能は、間にあるディスプレイを通り抜けるのではなく目的のディスプレイを直接指定するため、この順送りの巡回問題自体を完全に回避できる。上記の回避策に頼る前に、インストール済みのバージョンにこの機能があるかどうか確認しよう。 これがよくある不満ではなく、限定的なエッジケースである理由 この特定の相互作用は、3つの条件が同時に揃うことを必要とする。3台以上のディスプレイがあること、移動元と移動先の間に物理的に位置するディスプレイに(単なる最大化ではなく)フルスクリーンのアプリがあること、そして番号指定での直接移動ではなく、1段階ずつの次/前のディスプレイのショートカットに頼っていることだ。ディスプレイ2台の構成や、「間にある」ディスプレイでフルスクリーンアプリを動かさない構成のほとんどは、この問題にまったく遭遇しない。ここで取り上げているのは、広く見られる問題だからではなく、自分の環境がたまたまこの正確なシナリオに当てはまる場合に知っておく価値のある、実在する文書化された挙動だからだ。

Rectangleの「次のディスプレイ」がフルスクリーンアプリでブロックされる?その理由 Leer más »