나는 Firefox를 "독립형"으로 사용하여 일부 웹 응용 프로그램을 실행합니다. Firefox를 사용하여 응용 프로그램에 맞는 새 프로필을 만들고, 홈페이지를 설정하고, 로그인을 수행하고, UI를 내 특정 요구에 맞게 사용자 정의합니다.
그런 다음 다음을 수행하여 웹 애플리케이션 인스턴스를 빠르게 가동할 수 있습니다.
firefox --no-remote -P My_app_profile the_app_url
더 좋게 만들기 위해 my_web_app.desktop
파일을 만들어서 즐겨찾기에 추가하여 ~/.local/share/application
그놈 셸 사이드바에서 빠르게 실행할 수 있도록 했습니다.
문제는 응용 프로그램을 실행한 후파이어폭스 브라우저내 응용 프로그램 대신 실행 중입니다. 예를 들어 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보다 훨씬 좋습니다.