활성 창을 제외한 모든 창을 최소화하여 백그라운드에서 바탕 화면만 있는 창을 볼 수 있도록 전역 키보드 단축키 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
.