ShiftWindow icon indicating copy to clipboard operation
ShiftWindow copied to clipboard

フローティングウィンドウ

Open kingtosh opened this issue 4 years ago • 7 comments

フローティングウィンドウの機能はつきませんか?

kingtosh avatar Aug 25 '21 14:08 kingtosh

@kingtosh 現在最前面に置かれているウィンドウを常に最前面に固定するという意図でしょうか? 一度それについては調査してみたことがあるんですが、NSWindow.Levelを外部から操作する術はあまりなさそうなんですよね。

Kyome22 avatar Aug 26 '21 05:08 Kyome22

そうですね。最前面固定です。top mostともいうようですが。 OS標準の方法では難しいようで、何かしかの拡張とかで実現してるみたいです。 これとかはどうでしょうか? Macにも対応してます。 Kalmat/PyWinCtl A cross-platform module for obtaining GUI information and control windows on screen https://github.com/Kalmat/PyWinCtl

kingtosh avatar Jun 07 '22 10:06 kingtosh

@kingtosh PyWinCtlがMacにも対応しているというのは実際に動かしてみての結果でしょうか? ソースコードを見た限り、AppleScriptで制御しているようですが、最前面固定はできていないように見えます。

Kyome22 avatar Jun 11 '22 08:06 Kyome22

ここに簡単なレビューはあるんですが https://dev.classmethod.jp/articles/macbook-manipulating-windows-in-python-pywinctl/ フロントモスとは試してないですね・・・ あと、yabaiというコマンドアプリでできるのですが、Chromium系のブラウザがクラッシュしてしまったり・・・ https://github.com/koekeishiya/yabai AfloatXだとMacForgeが必要だったり、ショートカットやスクリプトに対応できなかったり・・・ https://github.com/jslegendre/AfloatX

kingtosh avatar Jul 03 '22 15:07 kingtosh

@kingtosh Yabaiのソースを見た感じ、OSXのPrivate Frameworkを使っている感じがしますね。SLSSetWindowLevel()あたりで最前面固定できるかもしれませんが、ググってもSLSというのがどのPrivate Frameworkなのか特定できず、使うのが怖いですね。

Kyome22 avatar Jul 04 '22 14:07 Kyome22

AfloatXを見た感じ、CoreGraphicsServicesというPrivate Frameworkを使ってウィンドウを制御していますね。 まぁ無理して非推奨な方法を使えば実現可能かもしれないという所感です。

Kyome22 avatar Jul 04 '22 14:07 Kyome22

調査、お疲れ様です。 YabaiもAfloatX(元のAfloatも)インジェクションスクリプトで無理やり動かしてるのは確かです。なのでAppStoreでの配布はできず、インストール時に一旦SIPを停止させる必要があったりします。 PyWinCtlはレビューのやり方を真似て”alwaysOnTop”をやってみると、エラーが出てダメでした。使い方を作者に問い合わせてみてるところです。 フローティングウインドウは、グラフィックス用途ではすごく便利で赤字修正だったり手本を見ながら作業なんて時に非常に楽になります。 実現できてるアプリはほとんどないしあっても画像化したものを表示するだけなんで、上手くできたらそれなりに評判になるのではと思います。

kingtosh avatar Jul 04 '22 17:07 kingtosh