내 작업 흐름의 큰 부분은 바로 가기 사용을 기반으로 합니다. 현재 저는 xbindkeys와 wmctrl을 사용하여 애플리케이션을 실행하거나 시작합니다. 예: Super+ FFirefox를 실행하고 아직 실행 중이 아닌 경우 실행합니다.
Autokey는 KDE에서 훌륭하게 작동합니다. KDE 기본 사용자 정의 바로 가기 관리자를 사용하여 이를 대체할 수도 있지만 xbindkeys
창/응용 프로그램이 실행인지 확인하는 방법을 찾을 수 없습니다. 그것.
또는 비슷한 명령을 사용하여 ps
응용 프로그램이 실행 중인지 확인하고 그렇지 않으면 실행할 수 있지만 이는 마지막 질문인 기존 실행 중인 창/응용 프로그램을 프로그래밍 방식으로 올리거나 집중하는 방법에 관한 것입니다.
GNOME을 위한 어떤 종류의 해결책이 있는 것 같지만 gdbus
, 물론 이것은 KDE에서는 작동하지 않습니다.
내가 무엇을 할 수 있는지 아는 사람 있나요?
답변1
많은 연구 끝에 KDE에서만 작동하고 KDE에서만 작동하는 솔루션인 kwin 스크립트를 사용하는 방법을 찾았습니다.
스크립트는 다음과 같습니다
pgrep
프로그램이 실행 중인지 확인 하는 데 사용됩니다 (유용한 명령grep
)- 실행 중인 경우:
- 전달된 클래스 이름이나 제목을 사용하여 창을 명시적으로 "활성화"하는 인스턴트 kwin 스크립트를 설치합니다.
- 스크립트 실행
- 중지 스크립트
- 제거 스크립트
- 실행 중이 아닌 경우: 명령을 실행하여 시작합니다.
예를 들어, 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함수를 사용하면 다른 코드를 실행하거나 프로세스와 상호 작용할 수 있기 때문입니다.하위 프로세스.통신프로세스가 실행되는 동안 작동합니다.