他のすべてのウィンドウを最小化するためのスクリプト/キーボードショートカット

他のすべてのウィンドウを最小化するためのスクリプト/キーボードショートカット

アクティブなウィンドウを除くすべてのウィンドウを最小化して、バックグラウンドでデスクトップのみのウィンドウを表示できるようにグローバルキーボードショートカットsuper+を使用したいと思います。down素晴らしい追加機能は、ウィンドウを画面の中央に同時に配置することです。

私はKubuntu 19.10とPlasma 5.18.3を使用しています。

「Shake」KWinスクリプトについて知っていますが、これにはキーボードショートカットが必要です。

私の考えは、すべてのウィンドウを最小化するスクリプトを作成し、最後のアクティブウィンドウに焦点を合わせ、キーストロークで中央に配置してから、スクリプトを実行xdotoolするためのカスタムショートカットを設定することです。

私のスクリプトは次のとおりです。

#!/bin/bash

active=$(xdotool getactivewindow)  # remember active window
xdotool key super+shift+d          # minimize all windows
xdotool windowactivate $active     # bring back last active window
xdotool key super+c                # center active window

super+ shift+は、d以前に有効にした「すべて最小化」KWinスクリプト用に設定したグローバルショートカットであり、super+cは、インストールして有効にした「ウィンドウの中央に移動」KWinスクリプトへのショートカットでもあります。個別に、これらのキーの組み合わせは手動で押すか、xdotoolを使用してシミュレートするかどうかを操作します。

私のカスタムショートカットは実際にスクリプトを起動しますが、最後のウィンドウに焦点を合わせずにウィンドウのみを最小化します。

ターミナルでスクリプトを実行して行間echoに文を挿入すると、効果がないように見えますが、エラーメッセージを表示しない最後の2行を除いて、スクリプトが最後まで実行されることがわかります。コマンドをecho $(xdotool getactivewindow)個別に実行するとxdotool windowactivate 150994951予想されるアクションが実行されるため、コマンドactiveに変数を渡すときに何かが間違っていると推測できますが、windowactivate何かはわかりません。

私は何が間違っていましたか?

上記のプロセスのカスタムショートカットを定義するためのよりエレガントな方法はありますか?

ベストアンサー1

スクリプトが機能しない理由はわかりません。windowactivate前のコマンドがすべてのウィンドウを最小化する前にスクリプトが実行された可能性がありますか?

以下はあなたに適したbashスクリプトです。

#!/bin/bash

active_window_id=$(xdotool getactivewindow)
for window_id in $(xdotool search --onlyvisible ".*")
do
    if [ $window_id != $active_window_id ]
    then
        xdotool windowminimize $window_id
    fi
done

また、アクティブウィンドウをすばやく最小化して最大化しないので、より良く見えるかもしれません。

編集する:センタリング部分を逃したが問題にはならない。

おすすめ記事