次のタスクを実行するために、複数のアプリへのショートカットが必要です。
- まだ実行されていない場合は、アプリケーションを起動します。
- アプリがバックグラウンドにある場合は、フォアグラウンドにインポートされます。
- アプリケーションの次のインスタンスがある場合は、フォアグラウンドにインポートします。
私はDebianとKDEを使用しています。これを達成するための最良の方法は何ですか?
答え1
複数のステップに分けて、最初に名前でタスクを見つけて見つからない場合は実行できます。
APPID=`pgrep <taskname>`
if [ $APPID == "" ] ; then
<app-command-with-options>
exit 0
fi
これでアプリケーションを実行する必要がある場合はスクリプトが終了し、それ以外の場合は続行されます。窓を探しています。次のタスクに属します。
known_windows=$(xwininfo -root -children|sed -e 's/^ *//'|grep -E "^0x"|awk '{ print $1 }')
for id in ${known_windows}
do
xp=$(xprop -id $id _NET_WM_PID)
if test $? -eq 0; then
pid=$(xprop -id $id _NET_WM_PID|cut -d'=' -f2|tr -d ' ')
if test "x${pid}" = x${APPID}
then
echo "Windows Id: $id"
fi
fi
done
この時点で、スクリプトは一致するウィンドウのリストを繰り返しました。ループの後にコマンドを追加して「$ id」とマークされたウィンドウをアクティブにすると、リストの最後のウィンドウに切り替わり、一番上に上がります。
xdotool windowactivate $id
自分に合った順序でウィンドウを選択するさまざまな戦略を見つけることができます。また、コマンドxdotool
と検索オプションをより賢く使用してスクリプトを簡素化できます。