그놈 3 "항상 위에" 키보드 단축키가 꺼지지 않음

그놈 3 "항상 위에" 키보드 단축키가 꺼지지 않음

이것은 큰 문제는 아니지만 약간 짜증나고 무엇보다 흥미 롭습니다. 나는 한동안 Xfce 4.12가 포함된 안정적인 Debian 9 시스템을 실행하고 이를 시험해 보기 위해 GNOME 데스크탑을 병렬로 설정하고 있습니다.

wmctrl -r :ACTIVE: -b toggle,aboveXfce에는 초점이 맞춰진 창을 상단 및 다른 창과 동일한 수준으로 전환하는 데 사용되는 사용자 정의 키보드 단축키가 있습니다 .

GNOME 3.22의 System settings / Keyboard 에서 동일한 것을 시도했지만 초점이 맞춰진 창을 다른 창 위에만 토글할 수 있으며 다른 창과 동일한 수준으로 다시 토글하지는 않습니다. 창 프레임을 마우스 오른쪽 버튼으로 클릭하고 "항상 위에 표시" 옵션을 선택 취소해야 합니다.

왜 이런 일이 일어날 수 있는지 아는 사람이 있습니까?

답변1

2016년 4월에도 이 사실을 알았습니다. 해결 방법은 2개의 키를 사용하여 전환하는 것입니다. 예:

wmctrl  -r :ACTIVE: -b add,above
wmctrl  -r :ACTIVE: -b remove,above

답변2

글쎄요, bash에서 적절한 코드를 작성하는 방법에 대한 많은 연구와 연구 끝에 저는 현재 GNOME 데스크탑에서 '항상 위에' 상태를 효과적으로 전환하기 위해 논리 계층 내에서 wmctrl 명령을 사용하는 단일 명령을 만들었습니다! 보다:

bash -c 'wmctrl -r :ACTIVE: -b $([[ $(xprop -id $(xprop -root -f _NET_ACTIVE_WINDOW 0x " \$0\\n" _NET_ACTIVE_WINDOW | awk "{print \$2}") _NET_WM_STATE) =~ "ABOVE" ]] && echo "remove" || echo "add"),above'

를 사용하여 활성 창 상태 속성 "_NET_WM_STATE"를 확인하고 xprops"ABOVE"라는 텍스트가 포함되어 있으면 '항상 위에' 옵션이 활성화되어 있음을 의미합니다. 그런 다음 wmctrl매개변수를 사용하여 add또는 remove적절하게 명령을 실행합니다 .


명령 분석(각 명령은 자리 표시자를 대체하여 다음 명령에 삽입됩니다 ):

  • 활성 창 ID 가져오기:

    xprop -root -f _NET_ACTIVE_WINDOW 0x " \$0\\n" _NET_ACTIVE_WINDOW | awk "{print \$2}"

  • 다음 ID를 사용하여 xprop에서 창 상태를 가져옵니다.

    xprop -id $(■) _NET_WM_STATE

  • 상태에 창이 '항상 위에'로 설정되어 있음을 나타내는 'ABOVE'가 포함되어 있는지 확인하세요.

    [[ $(■) =~ "ABOVE" ]]

  • true인 경우 "제거"를 반환하고, 그렇지 않으면 "추가"를 반환합니다.

    ■ && echo "remove" || echo "add"

  • 반환된 값을 매개변수로 사용하여 wmctrl 명령을 실행합니다.

    wmctrl -r :ACTIVE: -b $(■),above

  • 명령 대체 , bash 부울 평가 및 정규식 일치 연산자를 bash사용할 수 있도록 모든 것을 에 보냅니다.${ ... }[[ ... ]]=~

    bash -c '■'

    특히 이 마지막 단계를 알아내는 데는 매우 오랜 시간이 걸렸습니다. 키보드 단축키가 기본적으로 bash에서 실행되지 않는다는 사실을 깨닫기 전까지는 명령을 테스트할 때 콘솔에서 명령이 작동하지만 키보드 단축키로 직접 실행할 때 자동으로 실패하는 이유를 전혀 몰랐습니다. 그것은 나를 오랫동안 벽 위로 몰아 넣었습니다!

참고: bash로 보내는 명령 주위에 따옴표가 필요하기 때문에 명령을 작성할 때 한 단계 이상 깊이 들어가지 않도록 주의해야 했습니다(큰따옴표 사용). 따옴표 안에 문자열을 추가로 중첩하려면 따옴표를 이스케이프 처리하기 위해 혼란스러운 백슬래시가 많이 필요할 것입니다.

관련 정보