Bereitstellung eines Linux-Anwendungssymbols ohne Installationsprogramm/Paketmanager

Bereitstellung eines Linux-Anwendungssymbols ohne Installationsprogramm/Paketmanager

Hintergrundgeschichte:

Ich möchte:

  1. Stellen Sie eine Anwendung als einfache TAR-Datei bereit, die Benutzer extrahieren und ausführen können
  2. Damit diese App ein richtiges App-Symbol hat.

Kein Paketmanager, kein Sudo, kein Installationsskript.

Ich sehe aus derStandardUndverschiedene Artikeldass App-Icons eine Datei erfordern .desktop, die die absoluten Pfade zur ausführbaren Datei (ugh) und zum App-Icon benötigt. Ich sehe auch, dass Ubuntu Unity (vielleicht auch andere) .desktopDateien in~/.local/share/applications

Windows unterstützt dies, indem es Symbole in ausführbare Dateien einbettet. Mac OS X verfügt über eine relative Verzeichnisstruktur für Anwendungen, die das Symbol enthält.

„Hackish“-Lösung:

Meine „hackige“ Lösung besteht darin, beim Start der App zu erkennen, ob myApp.desktopeine Datei vorhanden ist ~/.local/share/applications/, und diese, falls nicht, zu schreiben (einschließlich des vollständigen absoluten Pfads zur ausführbaren Datei und des Symbols), einen neuen myApp-Prozess zu starten und zu beenden.

Die Hoffnung ist, dass der neue myApp-Prozess das App-Symbol aufnimmt. undManchmales tut.

Das Problem:

Das Problem besteht darin, dass ich vor dem Starten des neuen Prozesses zwei Sekunden warten muss sleep 2. Wenn ich das tue, wird das Symbol ausgewählt. Wenn ich das nicht tue, gibt es kein Symbol für meine App.

Ich habe versucht, den GTK-Symbolcache neu zu laden, anstatt ihn in den Ruhezustand zu versetzen (mit gtk-update-icon-cache /usr/share/icons/hicolor), aber das funktioniert nicht.

Weiß jemand, wie ich diese Verzögerung vermeiden und sicherstellen kann, dass die neu geschriebene .desktopDatei abgerufen wird? (Ich lösche und schließe die Datei.) Oder hat jemand eine bessere Idee als meine Hack-Lösung?

Aktualisieren:Interessant ist, ein einfaches Skript zu testen, das die .desktopDatei schreibt (entweder manuell oder mitxdg-Desktop-Menü) und startet die Anwendung. Es ist ebenfalls eine Verzögerung von 2 Sekunden erforderlich, sonst wird das Symbol nicht angezeigt. Faszinierend.

Antwort1

Verwendengtk_window_set_iconoder ähnlich (es gibt eine _from_file-Variante und Glade-Integration).

Ohne Root haben Sie vermutlich keinen Zugriff auf den Symbolcache, und das rechtzeitige Laden der Desktopdatei scheint, wie Sie festgestellt haben, keine zuverlässige Methode zu sein.

verwandte Informationen