해당 응용 프로그램은 일부 작업 (여기서는 오디오를 네트워크 스트림에 연결)을 수행하고 이러한 작업이 성공하면 최소화 된 상태로 실행됩니다. 따라서 연결 상태를 표시하려면 상태 아이콘이 필요합니다 (예 : CONNECTED / DISCONNECTED). 아이콘을 클릭 할 때만 응용 프로그램 창이 열리고 추가 옵션에 액세스 할 수 있습니다.
파이썬 2.6과 pyGtk를 사용하면 gtk_status_icon 을 사용하여 이것을 편리하게 깨달았습니다 . 나는 다양한 우분투 버전을 포함하여 가능한 한 많은 배포판에서 실행되도록 응용 프로그램을 작성했습니다. 사용자가 설치 한 후에 만 가능한 종속성을 사용하도록주의를 기울였습니다.
그러나 이제는 미래의 Ubuntu 릴리스에서 gtk_status_icon이 더 이상 지원되지 않을 것이라고 들었습니다. 개발자는 대신 응용 프로그램 표시기를 사용해야합니다. 그렇다면 다음을 확인하는 것이 가장 좋습니다.
- 응용 프로그램의 로컬 아이콘이 올바르게 표시됩니다
- 응용 프로그램은 계속 실행되어 향후 Ubuntu 릴리스에서 아이콘을 표시합니다.
- 이 응용 프로그램은 것 또한 실행하고 다른 환경에서의 아이콘이 표시 표시기 애플릿 , libappindicator 및 파이썬 – appindicator 제공되지 않습니다.
indicator-applet 이 실행되고 있지 않으면 gtk_status_icon에 대한 Application Indicator 폴백 메커니즘이 작동 하지 않습니다. 가져올 appindicator 모듈 이 없으면 Python 인터프리터가 실행되지 않습니다 . 다른 배포판을 위해 다른 버전을 개발해야합니까? 그렇지 않으면 더 나은 방법이 있습니다.
Ubuntu Wiki에 제공된 예제 이외의 ApplicationIndicator 사용 방법에 대한 설명서는 어디서 찾을 수 있습니까 ? 우분투와 비 우분투 배포판에 대해 서로 다른 소스 코드를 프로그래밍하지 않도록 표시기 애플릿이 실행 중인지 확인하기 위해 어떤 명령이 제공됩니까?
답변
나는 여기에 실제로 파이썬-파이 디 네이터 라이브러리에 대한 더 많은 결정이 필요하다고 생각합니다. 존재하는 경우 필요한 모든 대체 사례를 지원합니다. XFCE, KDE 및 이전 그놈을 적절하게 처리합니다. 이 답변에서 수행하는 방법에 대한 좋은 예입니다 .
appindicator 라이브러리는 DBus를 사용하여 응용 프로그램 표시기 렌더링 프로세스가 사용 가능한지 확인합니다. Unity의 경우 또는 indicator-applet이 실행중인 경우입니다. 사용 가능한 경우 해당 메뉴를 사용하고 그렇지 않은 경우 동일한 메뉴에서 GtkStatusIcon을 사용하는 것으로 대체됩니다.
불행히도 라이브러리를 사용할 수없는 경우를 처리하려면 두 코드 경로를 모두 유지해야한다고 생각합니다. 그러나 다른 배포판에서 라이브러리를 얻는 데 도움을 드리겠습니다. 🙂
답변
StackApplet 에서 잘 작동하는 훌륭한 솔루션을 가지고 있습니다. 실제 모듈이 존재하지 않을 때 내부적으로 사용하여 동일한 기능을 제공 하는 기능적으로 동등한 버전의 appindicator
모듈을 만들었습니다 gtk.StatusIcon
.
그것을 사용하는 것은 간단합니다 :
- 다음 파일을 다운로드하여 호출
appindicator_replacement.py
-
응용 프로그램에 다음을 추가하십시오.
try: import appindicator except ImportError: import appindicator_replacement as appindicator
그게 다야! 이제 응용 프로그램이 AppIndicators를 지원하거나 지원하지 않고 완벽하게 실행됩니다. 다른 플랫폼 특정 코드가 없다고 가정하면 Windows에서도 실행됩니다.
참고 : 파일은 MIT 라이센스에 따라 릴리스되므로 거의 모든 용도로 사용할 수 있습니다.
답변
두 가지 모두에 대한 코드를 작성해야합니다. 다음과 비슷한 것을 사용하여 Python 코드에 appindicator가 있는지 감지 할 수 있습니다.
have_appindicator = True
try:
import appindicator
except:
have_appindicator = False
거기에서 have_appindicator를 사용하여 appindicator 코드 또는 gtk_status_icon 코드를 사용해야하는지 여부를 결정하십시오.
불행히도 이것은 우분투와 테스트 할 다른 환경이 모두 필요하다는 것을 의미합니다.
답변
for line in os.popen("ps xa"):
fields = line.split()
pid = fields[0]
process = fields[4]
applet_is_running = ( process.find('indicator-applet') > 0 )
이 방법으로 표시기 애플릿이 실행 중인지 감지 할 수 있습니다. 우분투 11.04에 대해서는 걱정할 필요가 없습니다. indicator-applet은 기본적으로 실행되는 필수 구성 요소이므로 대체 시나리오가 없습니다.