2021年4月4日日曜日

WnckとPythonを使用してウインドウが最大化されるまで待機する

WnckとPythonを使用してウインドウが最大化されるまで待機するには、以下のサンプルコードのようにデフォルトスクリーンを取得後、force_updateを実行して、state-changedシグナルに対応する関数に関連付けます。
state-changedに関連付けられた関数では、Wnck.WindowState.MAXIMIZED_HORIZONTALLYフラグまたはMAXIMIZED_VERTICALLYフラグが立っているかをチェックします。

サンプルコード

以下のサンプルコードを保存・実行します。
import gi
gi.require_version('Gtk', '3.0')
gi.require_version('Wnck', '3.0')
from gi.repository import Gtk, Wnck

screen = Wnck.Screen.get_default()
screen.force_update()

def state_changed(window, mask, state):
  if state & Wnck.WindowState.MAXIMIZED_HORIZONTALLY or state & Wnck.WindowState.MAXIMIZED_VERTICALLY:
    print("state-changed:maximized:{}".format(window.get_name()))
  Gtk.main_quit()

screen.get_active_window().connect("state-changed", state_changed)
Gtk.main()

・動作確認環境
Ubuntu 20.04/Raspberry Pi OS(Raspbian Buster)

Wnckのインストール方法

以下のコマンドを実行します。
sudo apt-get -y install python3-gi gir1.2-wnck-3.0

関連項目

WnckとPythonでのワークスペース・ウインドウの情報取得・操作まとめ

0 件のコメント:

コメントを投稿