アクティブなウィンドウ以外のすべてのウィンドウを最小化するためのキーボードショートカットはありますか?


21

GIMPのようなプログラムを開くと、GIMPには3つの独立したウィンドウが関連付けられているため、バックグラウンドウィンドウを開くと気が散ります。

他のすべての非Gimpウィンドウに手動で移動して最小化するのは負担です。必要なのは、WindowsのSuper+ Homeショートカットに一致するUbuntuのキーボードショートカットです。アクティブなウィンドウを除くすべてのウィンドウを最小化するもの。

Ubuntuでこの動作を実現することは可能ですか?


面白いアイデア!ポインタについては、ここで最初の回答をご覧ください:askubuntu.com/questions/13709/…その投稿は、すべてを最小化する機能を追加することについてです。行を追加し、それを見てから「最大化前の現在アクティブ」か、それはトリックを行うだろう後にそれが現在アクティブなものを除い最小化」に変更する(?)
Rinzwind

開発者が将来のUbuntuバージョンでキーボードショートカットメニューに「アクティブウィンドウ以外のすべてを最小化」オプションを追加する可能性はありますか?このように、このバインドは、ユーザーがUbuntuをインストールするときに「準備ができて待機中」に設定されますか?
チャド

回答:


20

Pythonスクリプトを使用してこれを実現することが可能です。スクリプトは動作するためにインストールする必要がpython-wnckありpython-gtkますが、とにかくデフォルトでインストールされると思います。

これをコピーしてテキストエディターに貼り付け、適切な場所に保存します(たとえば、ホームフォルダーにminimise.pyとして):

#!/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()

その後、キーボードショートカットを開いてキーボードショートカットを設定できます。

Dashのキーボードショートカット

[ 追加]をクリックして、新しいショートカットを作成します。

キーボードショートカットウィンドウ

コマンドを使用します(ホームフォルダーにminimise.pybash -c 'python ~/minimise.py'として保存したことを前提としています)。

ショートカットを作成する

その後、好みのキーボードの組み合わせをこのアクションに割り当てることができます。

スクリプトは、アクティブでないウィンドウをすべて最小化します。すべてのGimpウィンドウを開いておく必要があるので、これはユースケースにはあまり役に立たないと思います。少し異なるスクリプトを使用して、代わりに現在のアプリケーションからではないすべてのウィンドウを最小化できます。

#!/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_app = screen.get_active_window().get_application()

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

4
+1!これが私がLinuxが大好きな理由です!優れた。@chad:gimpの複数のウィンドウに問題がある場合、gimpを1つのウィンドウとして機能させる方法があるようです。おっと:これは2.6からのデフォルトのようです(図を見てください;長い間gimpを使用していません)。
リンツウィンド

これが私がPythonが好きな理由です-Pythonにはすべてのモジュールがあります!
dv3500ea

1
python-wnckは、システム14.04にインストールする必要がありました。質問ですが、pythonシェル内ではgtk.main_loop部分がなくても問題なく動作しますが、スクリプト内では動作しません。そのため、基本的に.pyファイルからスクリプトを実行可能にするには、gtk.main_loop部分が必須です。誰かが理由を説明できますか?
セルギーKolodyazhnyy 16

なぜbash -c 'python... だけではなくpython ...
マイケルキャンベル

1

python-wnckはaptリポジトリ(Kubuntu 18.04 Bionic)に含まれていないため、変更されたpythonコードは(上記の@Adityaおよび@ dv3500eaによる回答から)です。

python3以降、wnckはGObject Introspection APIの一部です(ソース)。そのため、wnck(およびGtkオブジェクト)をインポートするための構文が変更されました。

#!/usr/bin/env python

# import necessary objects
import gi
gi.require_version('Wnck', '3.0') # specify Wnck version
from gi.repository import Wnck

from gi.repository import Gtk


# the script itself
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()

次に、pythonスクリプトにショートカットを割り当てます:(Kubuntuで)kmenueditor->新しいアイテムを作成->スクリプトbash -c 'python path_to_the_python_script.py'->目的のショートカットを割り当てます

更新(5月19日):

Kubuntu 19.04でgir1.2-wnck-3.0モジュールをインストールして、上記のスクリプトを機能させる必要がありました。

$ python -V
Python 2.7.16
$ sudo apt-get install python3-gi gir1.2-wnck-3.0

1

xdotoolを使用したbashスクリプト:

currentwindowid=$(xdotool getactivewindow)
currentdesktopid=$(xdotool get_desktop)

for w in $(xdotool search --all --maxdepth 3 --desktop $currentdesktopid --name ".*"); do
  if [ $w -ne $currentwindowid ] ; then
    xdotool windowminimize "$w"
  fi
done

現在のデスクトップ上のウィンドウのみを最小化します。

すべてのデスクトップでウィンドウを最小化するには:

currentwindowid=$(xdotool getactivewindow)

for w in $(xdotool search --all --maxdepth 3 --name ".*"); do
  if [ $w -ne $currentwindowid ] ; then
    xdotool windowminimize "$w"
  fi
done

異なるPythonバージョンの問題を考えると、私はこのbashソリューションを好みます。
WinEunuuchs2Unix
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.