EDITAR 1

EDITAR 1

Estou usando o firefox para rodar algumas aplicações web como "autônomas": crio um novo perfil com o firefox, específico para aquela aplicação, defino a primeira página, faço o login e customizo a UI dependendo das necessidades específicas.

Então, posso iniciar rapidamente uma instância desse aplicativo da web fazendo:

firefox --no-remote -P My_app_profile the_app_url

para torná-lo ainda mais agradável, criei um my_web_app.desktoparquivo e coloquei-o no ~/.local/share/application, e o tornei favorito, para que possa executá-lo rapidamente na barra lateral do shell do gnome.

O problema é que, depois de executar o aplicativo, vejo queRaposa de fogoestá em execução e não meu aplicativo. Por exemplo, fiz um atalho para o Trello, mas depois de iniciá-lo, vejo isto:

O Firefox está em destaque, o Trello não

Agora, faz sentido porqueisso éfirefox que está em execução, mas gostaria de ver meu aplicativo destacado e ter o ícone do firefox livre para ser usado como se nenhuma outra instância estivesse em execução.

Eu pensei que o gnome poderia destacar os ícones dependendo do nome do executável, mas um simples link simbólico para o firefox não desencadearia uma mudança de nome (ou seja, link /usr/bin/firefox /usr/bin/my_app_firefoxainda conta como firefox).

Você tem alguma ideia de como consertar isso? Estou usando o gnome shell 3.18.2.

EDITAR 1

Aqui está o arquivo trello.desktop como exemplo. Não sou um especialista nas opções, então provavelmente entendi algo terrivelmente errado... Mas se o fizesse, não pareceria algo que causaria o comportamento indesejado.

[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

EDITAR 2

Então, eu queria verificar ocódigo fonte do gnome-shellpara ver como isso poderia acontecer. Eu descobri isso noTraçocada entrada está associada a algumaplicativo shelle, aparentemente, quero garantir que o ID dos meus aplicativos seja único.

Usando o espelho (Alt + F2 lg), pude ver que meus aplicativos em execução atuais são chamados de "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)

Se eu iniciar meu aplicativo trello.desktop, o get_running()método retornará o mesmo número de entradas, portanto meu aplicativo não produz uma nova entrada e minha hipótese de ter um ID único parece confirmada.

Então, eu chego aoGAppInfo Código fontepara verificar qual é o ID, e isso me manda de volta para oespecificação do menu xdg. E, a partir daí, consigoencontraresse:

Para determinar o ID de um arquivo desktop, faça seu caminho completo relativo ao componente $XDG_DATA_DIRS no qual o arquivo desktop está instalado, remova o prefixo "applications/" e transforme '/' em '-'.

Meu arquivo .desktop estava em $HOME/.local/share/applications, o que NÃO estava em meu $XDG_DATA_DIRS.

Mudei o arquivo trello.deskop para um diretório nesse caminho e reiniciei o shell, mas o aplicativo ainda figura como firefox.desktop, então aparentemente o ID ainda é o mesmo, na verdade o aplicativo ainda está agrupado com outras janelas do Firefox.

Alguma sugestão?

Responder1

Então, aparentemente minha segunda edição não estava correta: a forma como o GNOME Shell determina o agrupamento de aplicativos não é a que descrevi.

Depois de perguntar no canal IRC gnome-shell, o usuário halfline me forneceu a política para agrupar aplicativos em ícones do Dash:

Propriedade _GTK_APPLICATION_ID da janela correspondente ao ID do arquivo da área de trabalho ou WM_CLASS correspondente ao ID do arquivo da área de trabalho ou _NET_WM_PID correspondente ao arquivo da área de trabalho iniciado ou StartupWMClass no arquivo da área de trabalho correspondente ao WM_CLASS na janela

Ele também sugeriu que pode ser possível alterar o WM_CLASS do firefox, e ele está certo, pois existe um --classsinalizador para o firefox que permite alterá-lo.

Aqui está um exemplo:

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

Usando essa bandeira eu recebo

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

que só precisa corresponder ao ID do arquivo da área de trabalho. Agora os ícones estão agrupados corretamente.

Além disso, observe que o epiphany tem suporte para criar aplicativos de desktop, manipulando corretamente os links com o navegador padrão, portanto para o meu propósito original é ainda melhor que o firefox.

informação relacionada