다른 모든 창을 최소화하기 위한 스크립트/키보드 단축키

다른 모든 창을 최소화하기 위한 스크립트/키보드 단축키

활성 창을 제외한 모든 창을 최소화하여 백그라운드에서 바탕 화면만 있는 창을 볼 수 있도록 전역 키보드 단축키 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줄 사이에 명령문을 삽입하면 아무런 효과가 없는 것처럼 보이지만 오류 메시지를 표시하지 않는 마지막 두 줄을 제외하고 스크립트가 끝까지 실행되는 것을 볼 수 있습니다. 명령을 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

또한 활성 창을 신속하게 최소화하고 최대화하지 않기 때문에 더 좋아 보일 수도 있습니다.

편집하다:센터링 부분을 놓쳤지만 문제가 되지는 않습니다.

답변2

wmctrl -k on당신은 아마도 하나의 요청으로 모든 것을 동시에 최소화하는 것을 찾고 있을 것입니다 _NET_SHOWING_DESKTOP.

관련 정보