Ich verwende Firefox, um einige Webanwendungen als „Standalones“ auszuführen: Ich erstelle mit Firefox ein neues Profil speziell für diese Anwendung, lege die erste Seite fest, führe die Anmeldung durch und passe die Benutzeroberfläche je nach den spezifischen Anforderungen an.
Anschließend kann ich schnell eine Instanz dieser Webanwendung starten, indem ich Folgendes mache:
firefox --no-remote -P My_app_profile the_app_url
Um es noch schöner zu machen, habe ich eine my_web_app.desktop
Datei erstellt, sie in abgelegt ~/.local/share/application
und zu den Favoriten gemacht, sodass ich sie schnell von der Seitenleiste der Gnome-Shell aus ausführen kann.
Das Problem ist, dass ich nach dem Ausführen der Anwendung sehe, dassFeuerfuchsläuft, und nicht meine App. Ich habe beispielsweise eine Verknüpfung für Trello erstellt, aber nach dem Starten sehe ich Folgendes:
Das macht Sinn, dennes istFirefox läuft, aber ich möchte stattdessen meine Anwendung hervorgehoben sehen und das Firefox-Symbol frei zur Verwendung haben, als ob keine andere Instanz laufen würde.
Ich dachte, dass Gnome die Symbole je nach ausführbarem Namen hervorheben könnte, aber ein einfacher symbolischer Link zu Firefox würde keine Namensänderung auslösen (d. h. es link /usr/bin/firefox /usr/bin/my_app_firefox
zählt immer noch als Firefox).
Haben Sie eine Idee, wie man das beheben kann? Ich verwende Gnome Shell 3.18.2.
BEARBEITEN 1
Hier ist die Datei trello.desktop als Beispiel. Ich bin kein Experte für die Optionen, also habe ich wahrscheinlich etwas schrecklich falsch gemacht ... Aber wenn das so ist, sieht es nicht so aus, als ob es das unerwünschte Verhalten verursachen würde.
[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
BEARBEITEN 2
Also wollte ich überprüfen,Gnome-Shell-Quellcodeum zu sehen, wie das passieren konnte. Ich fand, dass in derBindestrichJeder Eintrag ist mit einemShell-App, und anscheinend möchte ich sicherstellen, dass die ID meiner Anwendungen eindeutig ist.
Mithilfe des Looking Glass (Alt+F2 lg) konnte ich sehen, dass meine aktuell laufenden Anwendungen „firefox.desktop“ heißen:
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)
Wenn ich meine trello.desktop-Anwendung starte, gibt die get_running()
Methode die gleiche Anzahl von Einträgen zurück, daher erstellt meine Anwendung keinen neuen Eintrag und meine Hypothese, dass sie über eine eindeutige ID verfügt, scheint bestätigt zu sein.
Damit erreiche ich dieGAppInfo
Quellcodeum die ID zu überprüfen, und ich werde zurück zumxdg-Menüspezifikation. Und von da an gelingt es mir,findenDas:
Um die ID einer Desktopdatei zu ermitteln, machen Sie ihren vollständigen Pfad relativ zur Komponente $XDG_DATA_DIRS, in der die Desktopdatei installiert ist, entfernen Sie das Präfix „applications/“ und ändern Sie „/“ in „-“.
Meine .desktop-Datei war in $HOME/.local/share/applications
, das NICHT in meinem war $XDG_DATA_DIRS
.
Ich habe die Datei trello.deskop in ein Verzeichnis in diesem Pfad verschoben und die Shell neu gestartet, aber die Anwendung wird immer noch als angezeigt firefox.desktop
, also ist die ID anscheinend immer noch dieselbe, tatsächlich ist die Anwendung immer noch mit anderen Firefox-Fenstern gruppiert.
Irgendein Vorschlag?
Antwort1
Meine zweite Bearbeitung war also offensichtlich nicht korrekt: Die Art und Weise, wie GNOME Shell die Anwendungsgruppierung bestimmt, ist nicht die, die ich beschrieben habe.
Nachdem ich im IRC-Kanal „gnome-shell“ nachgefragt hatte, lieferte mir der Benutzer halfline die Richtlinie zum Gruppieren von Anwendungen in Dash-Symbolen:
_GTK_APPLICATION_ID-Eigenschaft des Fensters, die mit der Desktop-Datei-ID übereinstimmt, oder WM_CLASS, die mit der Desktop-Datei-ID übereinstimmt, oder _NET_WM_PID, die mit der gestarteten Desktop-Datei übereinstimmt, oder StartupWMClass in der Desktop-Datei, die mit WM_CLASS im Fenster übereinstimmt
Er hat außerdem vorgeschlagen, dass es möglich sein könnte, Firefox WM_CLASS zu ändern, und er hat Recht, da es ein --class
Flag für Firefox gibt, das eine Änderung ermöglicht.
Hier ist ein Beispiel:
$ firefox &
$ xprop WM_CLASS
WM_CLASS(STRING) = "Navigator", "Firefox"
Mit dieser Flagge bekomme ich
$ firefox --class "Trello" &
$ xprop WM_CLASS
WM_CLASS(STRING) = "Navigator", "Trello"
Dabei muss es nur mit der Datei-ID auf dem Desktop übereinstimmen. Jetzt werden die Symbole richtig gruppiert.
Beachten Sie auch, dass Epiphany die Erstellung von Desktop-Apps unterstützt und die Links mit dem Standardbrowser korrekt verarbeitet. Daher ist es für meinen ursprünglichen Zweck sogar besser als Firefox.