Favoritos do Gnome Shell: como o software em execução é determinado

4

Estou usando o firefox para executar alguns aplicativos da web como "stand alones": Eu crio um novo perfil com o firefox, específico para esse aplicativo, defino a primeira página, faço o login e personalizo a interface dependendo das necessidades específicas. / p>

Em seguida, posso iniciar rapidamente uma instância desse aplicativo da Web fazendo isso:

firefox --no-remote -P My_app_profile the_app_url

para torná-lo ainda melhor, eu criei um arquivo my_web_app.desktop e o coloquei em ~/.local/share/application e o tornei favorito, para que eu possa executá-lo rapidamente a partir da barra lateral do shell do gnome.

O problema é que, depois de executar o aplicativo, vejo que o firefox está em execução e não meu aplicativo. Por exemplo, eu fiz um atalho para o Trello, mas depois de lançá-lo, vejo isso:

Agora,fazsentido,porqueéofirefoxqueestásendoexecutado,masgostariadevermeuaplicativodestacadoeteroíconedofirefoxlivreparaserusadocomosenenhumaoutrainstânciaestivesseemexecução.

Euacheiqueognomepodedestacarosíconesdependendodonomedoexecutável,masumsimpleslinksymparaofirefoxnãoacionariaumamudançadenome(porexemplo,link/usr/bin/firefox/usr/bin/my_app_firefoxaindacontacomofirefox).

Vocêtemalgumaideiadecomoconsertarisso?Euestouusandooshelldognome3.18.2.

EDIT1

Aquiestáoarquivotrello.desktopcomoumexemplo.Eunãosouespecialistanasopções,entãoprovavelmenteeutenhoalgoterrivelmenteerrado...Masseeufizesse,nãopareceriaalgoquecausariaocomportamentoindesejado.

[DesktopEntry]Version=1.0Name=Trello(FF)GenericName=TrelloDashboardsComment=TrelloinFireFoxExec=firefox--no-remote-PApp_Trellohttp://trello.comIcon=trelloTerminal=falseType=ApplicationMimeType=text/html;text/xml;application/xhtml+xml;application/vnd.mozilla.xul+xml;text/mml;x-scheme-handler/http;x-scheme-handler/https;StartupNotify=trueCategories=Network;WebBrowser;Keywords=web;browser;internet;X-Desktop-File-Install-Version=0.22

EDIT2

Então,euqueriaverificaro código fonte do gnome-shell para ver como isso poderia acontecer. Descobri que no Traço cada entrada é associada a alguns shell-app , e aparentemente eu quero garantir que o ID dos meus aplicativos é único.

Usando o vidro de observação (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 método get_running() retornará o mesmo número de entradas, portanto, meu aplicativo não produzirá uma nova entrada e minha hipótese de ter um ID exclusivo parece parece confirmada.

Por isso, alcanço o GAppInfo código-fonte verificar o que é o ID, e ele me envia de volta para o especificação do menu xdg . E, de lá, eu consigo encontrar isto:

To determine the ID of a desktop file, make its full path relative to the $XDG_DATA_DIRS component in which the desktop file is installed, remove the "applications/" prefix, and turn '/' into '-'.

Meu arquivo .desktop estava em $HOME/.local/share/applications , que NÃO estava no 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 outro firefox janelas.

Alguma sugestão?

    
por AkiRoss 29.09.2016 / 12:02

1 resposta

2

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 gnome-shell do IRC, a meia-linha do usuário me forneceu a política de agrupar aplicativos nos ícones do Dash:

_GTK_APPLICATION_ID property of the window matched to the desktop file id or WM_CLASS matched to the desktop file id or _NET_WM_PID matched to the desktop file started or StartupWMClass in the desktop file matched to WM_CLASS on the window

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

Veja um exemplo:

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

Usando esse sinalizador, obtenho

$ 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 o suporte para criar aplicativos de desktop, manipulando corretamente os links com o navegador padrão, portanto, para minha finalidade original, ele é ainda melhor do que o firefox.

    
por 06.10.2016 / 22:32