1つのキルパネルを除くすべてのウィンドウを最小化するPythonスクリプト

1つのキルパネルを除くすべてのウィンドウを最小化するPythonスクリプト

ツアーガイドと一緒に行きましたここ 次のPythonスクリプトを使用して、現在のウィンドウ以外のすべてのウィンドウを最小化するキーボードショートカットを作成します。

#!/usr/bin/env python
import wnck
import gtk

screen = wnck.screen_get_default()

while gtk.events_pending():
    gtk.main_iteration()

windows = screen.get_windows()
active = screen.get_active_window()

for w in windows:
    if not w == active:
            w.minimize()

うまくいきますが、パネルを殺してデスクトップをほとんど使用できなくします。

パネルを終了せずに動作するようにスクリプトを変更するにはどうすればよいですか?

私はUbuntu 16.04.3、Xfceバージョン4.12を使用しています。

ベストアンサー1

Gtkエントリを使用しません。破片を取り除きましょう。

#!/usr/bin/env python
import wnck
screen = wnck.screen_get_default()
windows = screen.get_windows()
active = screen.get_active_window()

for w in windows:
    if not w == active:
            w.minimize()

w == active除外期間外で条件を使用できます。ドキュメントを確認するpydoc wnckか(残念ながら自動生成されたメソッドのリストにすぎません)、インタラクティブなナビゲーションを実行してWindowsで利用可能なメソッドを確認します。

$ python
Python 2.7.9 (default, Jun 29 2016, 13:08:31) 
[GCC 4.9.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import wnck
>>> screen = wnck.screen_get_default()
>>> active = screen.get_active_window()
>>> dir(active)
['__class__', '__copy__', '__deepcopy__', '__delattr__', '__dict__', '__doc__', '__eq__', '__format__', '__gdoc__', '__ge__', '__getattribute__', '__gobject_init__', '__grefcount__', '__gt__', '__gtype__', '__hash__', '__init__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'activate', 'activate_transient', 'chain', 'close', 'connect', 'connect_after', 'connect_object', 'connect_object_after', 'disconnect', 'disconnect_by_func', 'emit', 'emit_stop_by_name', 'freeze_notify', 'get_actions', 'get_application', 'get_class_group', 'get_client_window_geometry', 'get_data', 'get_geometry', 'get_group_leader', 'get_icon', 'get_icon_is_fallback', 'get_icon_name', 'get_mini_icon', 'get_name', 'get_pid', 'get_properties', 'get_property', 'get_screen', 'get_session_id', 'get_session_id_utf8', 'get_sort_order', 'get_state', 'get_transient', 'get_window_type', 'get_workspace', 'get_xid', 'handler_block', 'handler_block_by_func', 'handler_disconnect', 'handler_is_connected', 'handler_unblock', 'handler_unblock_by_func', 'has_icon_name', 'has_name', 'is_above', 'is_active', 'is_below', 'is_fullscreen', 'is_in_viewport', 'is_maximized', 'is_maximized_horizontally', 'is_maximized_vertically', 'is_minimized', 'is_most_recently_activated', 'is_on_workspace', 'is_pinned', 'is_shaded', 'is_skip_pager', 'is_skip_tasklist', 'is_sticky', 'is_visible_on_workspace', 'keyboard_move', 'keyboard_size', 'make_above', 'make_below', 'maximize', 'maximize_horizontally', 'maximize_vertically', 'minimize', 'move_to_workspace', 'needs_attention', 'notify', 'or_transient_needs_attention', 'pin', 'props', 'set_data', 'set_fullscreen', 'set_geometry', 'set_icon_geometry', 'set_properties', 'set_property', 'set_skip_pager', 'set_skip_tasklist', 'set_sort_order', 'set_window_type', 'shade', 'stick', 'stop_emission', 'thaw_notify', 'transient_is_most_recently_activated', 'unmake_above', 'unmake_below', 'unmaximize', 'unmaximize_horizontally', 'unmaximize_vertically', 'unminimize', 'unpin', 'unshade', 'unstick', 'weak_ref']
>>> active.get_name()
'pts/16:  ~   python'
>>> active.is_sticky()
False

すべてのデスクトップには固定ウィンドウがあります。これは通常、常に画面に表示する必要があるデスクトップ環境ウィジェットであるため、最小化しないでください。十分でない場合は、名前または他の属性で一致を試すことができます。

#!/usr/bin/env python
import wnck
screen = wnck.screen_get_default()
windows = screen.get_windows()
active = screen.get_active_window()

for w in windows:
    if not (w == active or w.is_sticky()):
            w.minimize()

おすすめ記事