실행기 진행률 표시 줄을 내 응용 프로그램에서 작동하게하려면 어떻게합니까?


10

배경 조사

나는 간단한에 대한 유니티 실행 내에서 진행 표시 줄 업데이트를 시도하고 python/Gtk사용하여 만든 응용 프로그램 Quickly호출을 test; 그러나,의 지침에 따라 이 비디오 , 나는 성공적으로의 진행률 표시 줄 업데이트 할 수 없었던 Unity런처 . Unity 통합 비디오에서 Quickly사용되지 않았으므로 응용 프로그램의 구성 방식이 약간 다르고 기본 Quickly ubuntu-application템플릿 응용 프로그램 에서 수정하지 않고 비디오에 사용 된 코드가 제대로 작동하지 않는 것 같습니다 .


스크린 샷

다음은 현재 Unity Launcher에 표시된 응용 프로그램 아이콘의 스크린 샷입니다.

표시되는 진행률 표시 줄이없는 모호한 응용 프로그램 아이콘

다음은 내가 원하는 Unity 진행률 표시 줄 기능의 스크린 샷입니다 (메일 아이콘에 표시됨 : wiki.ubuntu.com ).

Unity Launcher 진행률 표시 줄 기능


프로젝트 코드

.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/applicationsget_for_desktop_id("test,desktop").desktop


관련 연구 링크

.desktop과 .desktop.in 파일의 차이점에 대해서는 아직 명확하지 않지만 .desktop 파일에 대한 조사를 수행했으며 몇 가지 링크를 발견했습니다.


편집하다

빌드 된 파일을 실행 python setup.py build한 다음 탐색 /build/share/applications하고 이동 한 후 마지막으로 실행 하면 진행률 표시 줄이 표시되지 않고 아이콘의 물음표 만 표시됩니다 .test.desktop~/.local/share/applicationsquickly run

응용 프로그램 아이콘에 대한 물음표가 표시됨


편집 2

빌드 된 .desktop파일을 추가로 조사한 후 파일 Icon=/usr/share/test/media/test.svg내의 line .desktoptest.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유니티 실행 표시 줄에 이제 제대로 표시 응용 프로그램 아이콘과 진행 표시 줄을. 런처 통합의 스크린 샷은 다음과 같습니다.

응용 프로그램 아이콘 및 진행률 표시 줄 표시

답변:


8

.desktop 파일은 bamf라이브러리가 알고 있는 위치에 설치 해야합니다.

빌드 된 .desktop 파일 (.desktop.in에서 작성해야 함)을 ~/.local/share/applications폴더에 복사하고 실행 하여 테스트 할 수 있어야합니다 update-desktop-database ~/.local/share/applications. 그러나 애플리케이션이 MIME 유형을 처리하지 않으면이 명령을 실행하지 않아도됩니다. .

.desktop과 .desktop.in의 차이점은 .desktop.in이 번역되도록 설정되고 빌드 중에 intltool에 의해 처리되어 번역이 삽입되어 .desktop.in에서 .desktop 파일을 작성한다는 것입니다. 파일.

또한 방금 코드에서 오타를 발견했습니다.

self.launcher = Unity.LauncherEntry.get_for_desktop_id("test.destkop")

"destkop"대 "desktop"이 있어야합니다. 재 입력 오류가 아닌 경우에 해당합니다. 코드가 실제로 실행되고 있다고 가정하면 문제가됩니다. 실행되지 않으면 문제입니다. print('Integrating with launcher')add_launcher_integration 함수에를 추가하여 볼 수 있습니다 . 실행시 터미널에 나타납니다.


빌드 된 .desktop 파일은 언제 작성됩니까? 빠른 실행이 실행될 때 만들어지며 어디에 있습니까?
케빈 거니

빨리 사용하지 않고 정확히 언제 빌드할지 알지 못하지만 일반적으로 DistUtilsExtra와 함께 setup.py를 사용하는 표준 파이썬 라이브러리 / 응용 프로그램에서는 "./setup.py build"또는 빌드를 실행하는 setup.py 명령
dobey

파이썬 setup.py 빌드를 연속적으로 실행했습니다. 이제 test.desktop 파일을 ~ / .local / share / applications로 옮기고 빠르게 실행하면 진행률 표시 줄이 표시되어야합니까?
케빈 거니

파이썬 프로젝트를 빌드 한 다음 빌드 된 .desktop 파일을 ~ / usr / share / applications로 옮긴 다음 update-desktop-database ~ / .local / share / applications를 제안한대로 실행했지만 이제 물음표 만 표시됩니다. 응용 프로그램 아이콘을 다음과 같이 : i.stack.imgur.com/RWYud.png을 .
케빈 거니

test.desktop 파일의 Icon = 줄은 무엇을 말합니까?
dobey
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.