배경 조사
나는 간단한에 대한 유니티 실행 내에서 진행 표시 줄 업데이트를 시도하고 python/Gtk
사용하여 만든 응용 프로그램 Quickly
호출을 test
; 그러나,의 지침에 따라 이 비디오 , 나는 성공적으로의 진행률 표시 줄 업데이트 할 수 없었던 Unity
런처 . Unity 통합 비디오에서 Quickly
사용되지 않았으므로 응용 프로그램의 구성 방식이 약간 다르고 기본 Quickly ubuntu-application
템플릿 응용 프로그램 에서 수정하지 않고 비디오에 사용 된 코드가 제대로 작동하지 않는 것 같습니다 .
스크린 샷
다음은 현재 Unity Launcher에 표시된 응용 프로그램 아이콘의 스크린 샷입니다.
다음은 내가 원하는 Unity 런 진행률 표시 줄 기능의 스크린 샷입니다 (메일 아이콘에 표시됨 : wiki.ubuntu.com ).
프로젝트 코드
.zip
프로젝트 파일이 포함 된 파일을 찾을 수 있습니다 여기에 .
예상되는 행동
위의 코드는 Unity Launcher의 테스트 응용 프로그램 아이콘에 75 % 전체 표시되는 진행률 표시 줄을 표시 하지만 명령 quickly run
이 실행될 때 응용 프로그램이 실행되고 진행 표시 줄이 표시되지 않습니다 .
문제 조사
문제는 응용 프로그램의 기본 창에 대한 참조를 올바르게 얻지 못하고 있다고 생각하지만이 문제를 올바르게 해결하는 방법을 모르겠습니다. 나는 또한 라인 : 일반 파일이 아닌 파일을 생성 self.launcher = Unity.LauncherEntry.get_for_desktop_id("test.destkop")
하기 때문에 또 다른 합병증의 원인이 될 수 있다고 생각합니다.Quickly
.desktop.in
.desktop
아마도 문제의 또 다른 원인은 파일 .desktop
과 .desktop.in
파일 의 차이점을 완전히 이해하지 못한다는 것입니다 . test.desktop.in
파일을 복사 하고 이름을 바꾸고 올바른 파일 을 참조 하기 위해 test.desktop
배치하는 것이 합리적 입니까?/usr/share/applications
get_for_desktop_id("test,desktop")
.desktop
관련 연구 링크
.desktop과 .desktop.in 파일의 차이점에 대해서는 아직 명확하지 않지만 .desktop 파일에 대한 조사를 수행했으며 몇 가지 링크를 발견했습니다.
- 데스크탑 엔트리 파일 (library.gnome.org)
- 데스크탑 파일 설치 디렉토리 (askubuntu.com)
- 유니티 런처 API (wiki.ubuntu.com)
- 데스크탑 파일 : 데스크탑 메뉴 (developer.gnome.org)에 응용 프로그램 배치
- 데스크탑 메뉴 사양 (standards.freedesktop.org)
편집하다
빌드 된 파일을 실행 python setup.py build
한 다음 탐색 /build/share/applications
하고 이동 한 후 마지막으로 실행 하면 진행률 표시 줄이 표시되지 않고 아이콘의 물음표 만 표시됩니다 .test.desktop
~/.local/share/applications
quickly run
편집 2
빌드 된 .desktop
파일을 추가로 조사한 후 파일 Icon=/usr/share/test/media/test.svg
내의 line
.desktop
은 test.svg
존재하지 않는 아이콘 파일을 가리키고있었습니다 .
이 문제를 해결하기 위해, 나는라는 새 폴더 생성 test
에 /usr/share/
명령을 사용하여 sudo mkdir test
다음라는 테스트 폴더의 다른 폴더 안에 생성 media
명령을 사용하여 sudo mkdir media
다음 나는 이동 test.svg
에 내 신속하게 프로젝트 디렉토리에있는 아이콘 파일 test/data/media/test.svg
에를 /usr/share/test/media/
. .svg
응용 프로그램에 대한 아이콘이 유니티 실행 표시 줄에서 제대로 표시하고 고도 탭보기에, 그러나 여전히 눈에 띄는 진행 표시 줄이 아래의 스크린 샷과 같이.
편집 3
@dobey가 지적했듯이 TestWindow.py 파일의 코드에는 오타가 있습니다.
self.launcher = Unity.LauncherEntry.get_for_desktop_id("test.destkop")
,
어디에 test.destkop
있어야합니다 test.desktop
.
이 오타를 변경했으며을 사용하여 응용 프로그램을 실행할 때 눈에 띄는 변경이 발생하지 않았습니다 quickly run
. 그러나 행 print('Integrating with launcher')
을 추가 한 후 add_launcher_integration()
응용 프로그램이 실행될 때 터미널에 해당 출력이 없었으므로 add_launcher_integration()
응용 프로그램을 시작할 때 올바르게 호출되지 않은 것 같습니다.
편집 4
추가 조사 후 add_launcher_integration()
실제로 응용 프로그램이 시작될 때 호출됩니다. 라인을 추가하면 :
os.system("clear")
선에 앞서
print("Integrating with launcher")
"런처와 통합"메시지가 이제에 표시됩니다 terminal
.
그러나 Unity 런처 바에는 여전히 진행률 표시 줄이 없습니다 .
편집 5
재건 후 Quickly
실행하여 프로젝트를 python setup.py build
하고 내장 이동 .desktop
내 파일 Quickly
에있는 프로젝트 /build/share/applications/
에 ~/.local/share/applications
유니티 실행 표시 줄에 이제 제대로 표시 응용 프로그램 아이콘과 진행 표시 줄을. 런처 통합의 스크린 샷은 다음과 같습니다.