wmctrl과 같은 도구 또는 kde wayland의 대안

wmctrl과 같은 도구 또는 kde wayland의 대안

내 작업 흐름의 큰 부분은 바로 가기 사용을 기반으로 합니다. 현재 저는 xbindkeys와 wmctrl을 사용하여 애플리케이션을 실행하거나 시작합니다. 예: Super+ FFirefox를 실행하고 아직 실행 중이 아닌 경우 실행합니다.

Autokey는 KDE에서 훌륭하게 작동합니다. KDE 기본 사용자 정의 바로 가기 관리자를 사용하여 이를 대체할 수도 있지만 xbindkeys창/응용 프로그램이 실행인지 확인하는 방법을 찾을 수 없습니다. 그것.

또는 비슷한 명령을 사용하여 ps응용 프로그램이 실행 중인지 확인하고 그렇지 않으면 실행할 수 있지만 이는 마지막 질문인 기존 실행 중인 창/응용 프로그램을 프로그래밍 방식으로 올리거나 집중하는 방법에 관한 것입니다.

GNOME을 위한 어떤 종류의 해결책이 있는 것 같지만 gdbus, 물론 이것은 KDE에서는 작동하지 않습니다.

내가 무엇을 할 수 있는지 아는 사람 있나요?

답변1

많은 연구 끝에 KDE에서만 작동하고 KDE에서만 작동하는 솔루션인 kwin 스크립트를 사용하는 방법을 찾았습니다.

스크립트는 다음과 같습니다

  1. pgrep프로그램이 실행 중인지 확인 하는 데 사용됩니다 (유용한 명령 grep)
  2. 실행 중인 경우:
    1. 전달된 클래스 이름이나 제목을 사용하여 창을 명시적으로 "활성화"하는 인스턴트 kwin 스크립트를 설치합니다.
    2. 스크립트 실행
    3. 중지 스크립트
    4. 제거 스크립트
  3. 실행 중이 아닌 경우: 명령을 실행하여 시작합니다.

예를 들어, Firefox에 집중하거나 실행하고 싶다고 가정하면 다음 스크립트를 사용합니다.

ww -f firefox -c firefox

-f:창 클래스 이름
-c: 실행되지 않을 때 실행할 명령
-fa: 클래스 대신 창 제목을 사용하는 대체 필터

이게 스크립트야나는 지금 그것을 사용하고 있으며 훌륭하게 작동합니다.

답변2

이것자동 키스크립트는 다음에 중점을 둘 것입니다.파이어폭스 브라우저실행 중이거나 시작되면 초점을 맞추세요.

output = system.exec_command("wmctrl -l", getOutput=True)
if "Firefox" in output:
    window.activate("Firefox",switchDesktop=True)
else:
    subprocess.Popen(["firefox"])

제가 사용한 점 참고하세요하위 프로세스.Popen함수를 사용하면 다른 코드를 실행하거나 프로세스와 상호 작용할 수 있기 때문입니다.하위 프로세스.통신프로세스가 실행되는 동안 작동합니다.

관련 정보