그놈 3 "항상 위에" 키보드 단축키가 꺼지지 않았습니다.

그놈 3 "항상 위에" 키보드 단축키가 꺼지지 않았습니다.

큰 문제는 아니지만 조금 짜증나고, 무엇보다 재미있습니다. 나는 한동안 Xfce 4.12가 포함된 안정적인 Debian 9 시스템을 실행해 왔으며 한번 시도해 보기 위해 GNOME 데스크탑을 병렬로 설정하고 있습니다.

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

GNOME 3.22에서 동일한 시스템 설정/키보드를 시도했는데 포커스 창을 다른 창 위로만 전환할 수 있으며 다른 창과 동일한 수준으로 다시 전환하지는 않습니다. 창 프레임을 마우스 오른쪽 버튼으로 클릭하고 "항상 위에 표시" 옵션을 선택 취소해야 했습니다.

왜 이런 일이 일어나는지 아는 사람이 있나요?

답변1

2016년 4월에도 이 사실을 발견했습니다. 해결 방법은 다음과 같이 2개의 키를 사용하여 전환하는 것이었습니다.

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

답변2

글쎄, 많은 연구와 bash에서 올바른 코드를 작성하는 방법을 알아낸 후에 논리 계층에서 wmctrl 명령을 사용하여 현재 GNOME 데스크탑에서 "항상 위에" 상태를 효과적으로 전환하는 명령을 만들었습니다! 보다:

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명령을 사용하여 명령을 실행합니다 .addremove


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

  • 활성 창 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에 보내는 명령 주위에 따옴표가 필요하기 때문에 명령을 작성할 때 주의해야 합니다. 한 수준 깊이로 들어가지 않습니다(큰따옴표 사용). 문자열을 따옴표 안에 추가로 중첩하면 따옴표를 이스케이프 처리하기 위해 혼란스러운 양의 백슬래시가 필요합니다.

관련 정보