고정 애플리케이션이 이미 실행 중인 경우 새 인스턴스를 시작하지 못하게 하려면 어떻게 해야 합니까?

고정 애플리케이션이 이미 실행 중인 경우 새 인스턴스를 시작하지 못하게 하려면 어떻게 해야 합니까?

Python으로 작성된 프로그램이 있고 데스크톱 파일을 통해 Gnome에 추가되었습니다. Gnome에서 고정 아이콘을 클릭하여 실행하면 작업 표시줄의 아이콘이 복사되고 새 인스턴스가 열립니다. 다른 고정 앱은 그 아래에 선을 그립니다. 다른 애플리케이션(예: Chrome 또는 Sublime Text)을 클릭했는데 해당 애플리케이션이 이미 실행 중이면 gnome은 새 인스턴스를 시작하는 대신 해당 창으로 이동합니다.

이 동작은 내 애플리케이션에서 처리해야 하는 것입니까, 아니면 Gnome이 대신 처리할 수 있는 것입니까? 차이가 있다면 bash 실행 프로그램이 있는 PyQt4 애플리케이션입니다.

편집 - Ubuntu - Gnome 16.10 및 Gnome 3.20.4를 실행하고 있다는 사실을 잊어버렸습니다.

답변1

나는 이것을 작동시켰다.

데스크탑 항목에 "StartupWMClass" 키를 추가해야 합니다.

StartupWMClass: 지정된 경우 응용 프로그램은 해당 문자열을 WM ​​클래스 또는 WM 이름 힌트로 사용하여 하나 이상의 창을 매핑하는 것으로 알려져 있습니다.

프로토콜 정보여기자세한 내용이 있습니다여기.

xprop를 설치하고 실행한 후 제목 표시줄을 클릭하면 응용 프로그램의 클래스를 확인할 수 있습니다.

답변2

나는 Python API를 모르지만 이것은 다음과 관련이 있습니다.Gtk 애플리케이션.

읽다Gtk 애플리케이션을 수행하는 방법위키피디아는 다음과 같이 말합니다.

GtkApplication 기본 애플리케이션은 단일 인스턴스입니다.

당신은 또한 볼 수 있습니다이 문제.

관련 정보