편집 1

편집 1

나는 Firefox를 사용하여 일부 웹 응용 프로그램을 "독립형"으로 실행하고 있습니다. 해당 응용 프로그램에 맞는 Firefox를 사용하여 새 프로필을 만들고, 첫 번째 페이지를 설정하고, 로그인을 수행하고, 특정 요구 사항에 따라 UI를 사용자 정의합니다.

그런 다음 다음을 수행하여 해당 웹 앱의 인스턴스를 빠르게 시작할 수 있습니다.

firefox --no-remote -P My_app_profile the_app_url

좀 더 멋지게 만들기 위해 my_web_app.desktop파일을 만들어서 에 넣고 ~/.local/share/application즐겨찾기로 해두었기 때문에 그놈쉘 사이드바에서 빠르게 실행할 수 있었습니다.

문제는 응용 프로그램을 실행한 후파이어폭스내 앱이 아닌 실행 중입니다. 예를 들어 Trello에 대한 바로가기를 만들었으나 실행한 후에는 다음과 같은 내용이 표시됩니다.

Firefox는 강조 표시되지만 trello는 강조 표시되지 않습니다.

이제 의미가 있습니다. 왜냐하면그것은Firefox가 실행 중인데 대신 내 응용 프로그램이 강조 표시되어 다른 인스턴스가 실행되지 않는 것처럼 Firefox 아이콘을 무료로 사용할 수 있게 하고 싶습니다.

나는 gnome이 실행 파일 이름에 따라 아이콘을 강조 표시할 수 있다고 생각했지만 Firefox에 대한 간단한 심볼릭 링크는 이름 변경을 트리거하지 않습니다(즉, link /usr/bin/firefox /usr/bin/my_app_firefox여전히 Firefox로 계산됩니다).

이 문제를 해결하는 방법에 대한 아이디어가 있습니까? 나는 그놈 쉘 3.18.2를 사용하고 있습니다.

편집 1

다음은 trello.desktop 파일의 예입니다. 저는 옵션에 대한 전문가가 아니기 때문에 뭔가 크게 잘못된 부분이 있을 것 같습니다... 하지만 그랬더라도 바람직하지 않은 동작을 유발할 것으로 보이지는 않습니다.

[Desktop Entry]
Version=1.0
Name=Trello (FF)
GenericName=Trello Dashboards
Comment=Trello in FireFox
Exec=firefox --no-remote -P App_Trello http://trello.com
Icon=trello
Terminal=false
Type=Application
MimeType=text/html;text/xml;application/xhtml+xml;application/vnd.mozilla.xul+xml;text/mml;x-scheme-handler/http;x-scheme-handler/https;
StartupNotify=true
Categories=Network;WebBrowser;
Keywords=web;browser;internet;
X-Desktop-File-Install-Version=0.22

편집 2

그래서 내용을 확인하고 싶었어요그놈 쉘 소스 코드어떻게 이런 일이 일어날 수 있는지 알아보기 위해. 나는 그것을 에서 발견했습니다.대시각 항목은 일부 항목과 연관되어 있습니다.쉘 앱, 분명히 내 애플리케이션의 ID가 고유한지 확인하고 싶습니다.

거울(Alt+F2 lg)을 사용하여 현재 실행 중인 애플리케이션의 이름이 "firefox.desktop"인 것을 확인할 수 있습니다.

appSys = Shell.AppSystem.get_default()
ll = appSys.get_running()
ll[0].get_id() // firefox.desktop (0 is the ID of the firefox app in my case)

trello.desktop 애플리케이션을 실행하면 get_running()메서드가 동일한 수의 항목을 반환하므로 내 애플리케이션은 새 항목을 생성하지 않으며 고유 ID가 있다는 가설이 확인된 것 같습니다.

그래서 나는GAppInfo 소스 코드ID가 무엇인지 확인하라는 메시지가 표시됩니다.xdg 메뉴 사양. 그리고 거기에서 나는찾다이것:

데스크탑 파일의 ID를 확인하려면 데스크탑 파일이 설치된 $XDG_DATA_DIRS 구성 요소에 대한 상대 경로를 만들고 "applications/" 접두사를 제거한 다음 '/'를 '-'로 바꿉니다.

내 .desktop 파일은 에 있었는데 $HOME/.local/share/applications, 내 .desktop 파일은 없었습니다 $XDG_DATA_DIRS.

trello.deskop 파일을 해당 경로의 디렉터리로 이동하고 셸을 다시 시작했지만 응용 프로그램은 여전히 ​​로 표시되므로 firefox.desktopID는 여전히 동일하며 실제로 응용 프로그램은 여전히 ​​다른 Firefox 창과 그룹화되어 있습니다.

어떠한 제안?

답변1

따라서 두 번째 편집 내용은 올바르지 않은 것 같습니다. GNOME Shell이 ​​응용 프로그램 그룹화를 결정하는 방식은 제가 설명한 것과 다릅니다.

IRC gnome-shell 채널에 문의한 후 사용자 halfline이 애플리케이션을 대시 아이콘으로 그룹화하는 정책을 제공했습니다.

데스크톱 파일 ID와 일치하는 창의 _GTK_APPLICATION_ID 속성 또는 데스크톱 파일 ID와 일치하는 WM_CLASS 또는 시작된 데스크톱 파일과 일치하는 _NET_WM_PID 또는 창의 WM_CLASS와 일치하는 데스크톱 파일의 StartupWMClass

--class그는 또한 firefox WM_CLASS를 변경하는 것이 가능할 수도 있다고 제안했으며, 이를 변경할 수 있는 Firefox용 플래그가 있으므로 그의 말이 맞습니다 .

예는 다음과 같습니다.

$ firefox &
$ xprop WM_CLASS
WM_CLASS(STRING) = "Navigator", "Firefox"

그 플래그를 사용하면

$ firefox --class "Trello" &
$ xprop WM_CLASS
WM_CLASS(STRING) = "Navigator", "Trello"

데스크톱 파일 ID와 일치하면 됩니다. 이제 아이콘이 올바르게 그룹화되었습니다.

또한 Epiphany는 데스크톱 앱을 생성하고 기본 브라우저로 링크를 올바르게 처리하는 기능을 지원하므로 원래 목적으로는 Firefox보다 훨씬 좋습니다.

관련 정보