편집 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/" 접두어를 제거한 다음 "/"를 "-"로 변경합니다.

$HOME/.local/share/applications내 .desktop 파일 대신 내 .desktop 파일이 있습니다 $XDG_DATA_DIRS.

trello.deskop 파일을 해당 경로 내의 디렉터리로 이동하고 셸을 다시 시작했지만 애플리케이션이 계속 표시되므로 firefox.desktop분명히 ID는 여전히 동일하며 실제로 애플리케이션은 여전히 ​​다른 Firefox 창과 그룹화되어 있습니다.

어떤 제안이 있으십니까?

답변1

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

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

창의 _GTK_APPLICATION_ID 속성이 데스크톱 파일 ID와 일치하거나 WM_CLASS가 데스크톱 파일 ID와 일치하거나 _NET_WM_PID가 시작된 데스크톱 파일과 일치하거나 데스크톱 파일의 StartupWMClass가 창의 WM_CLASS와 일치합니다.

--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보다 훨씬 좋습니다.

관련 정보