Wie erhalte ich eine Liste aller Anwendungen, die von Ubuntu Dash Home ausgeführt werden können? Gibt es eine XML-Datei, in der diese Informationen gespeichert sind?

7

Ich erstelle eine Anwendung und es ist mir sehr wichtig zu wissen, wie ich diese Informationen erhalte. In LXDE gibt es /usr/share/lubuntu/openbox/menu.xml, in dem alle Programme aufgelistet sind, die über das LXDE-Menü ausgeführt werden können.

Aus diesem Grund möchte ich wissen, ob es eine XML-Datei gibt, die für die Organisation des Ubuntu Dash Home verantwortlich ist, wie die in LXDE?

Zignd
quelle
2
Umfasst das nicht alle .desktopDateien? Also sollten diese in /usr/share/applicationsoder in sein ~/.local/share/applications? Würden Sie wirklich eine .xmlDatei für Ihren Zweck benötigen ?
Ich denke schon, weil ich es innerhalb der Anwendung abfragen kann. Und von der /usr/share/applicationskann ich nicht die "Schlüsselwörter" bekommen, die zum Ausführen der Anwendungen verwendet werden.
Zignd
Ich kenne mich mit Programmierung nicht aus, aber bitte sehen Sie, ob dieser Thread hilft! ubuntuforums.org/showthread.php?p=12282576#post12282576
Danke für den Link @ vasa1, es war sehr nützlich. Die von Ihrem Befehl zurückgegebene Datei weist einige Probleme auf. Können sie mit komplexeren Befehlen behoben werden?
Zignd
Klarstellung ... es ist nicht mein Code. MG & TL hat die eigentliche Arbeit geleistet. Für meine Zwecke haben einige .desktopDateien mehr als ein Paar Name + Exec und wenn dies nicht in der richtigen Reihenfolge ist, gibt es Verwirrung. Ich habe .desktopin diesem Zusammenhang die LibreOffice- Dateien erwähnt . Vielleicht kann dir jemand helfen, der gut in diesem Zeug ist!

Antworten:

4

Ich verstehe aus den Kommentaren, dass das OP die Ausgabe des verknüpften Codes mag, aber die Informationen in eine XML-Datei einfügen möchte, die abgefragt werden kann.

Hier erfahren Sie, wie Sie das Skript unter Inhalt von .desktop-Dateien abrufen ändern , um die Ausgabe in eine XML-Datei zu verarbeiten.

filename="MyDesktopFiles.xml"
rm $filename
touch $filename

echo '<?xml version="1.0"?>' >> $filename
echo '<items>' >> $filename

for files in /usr/share/applications/*.desktop; 
do 
  echo '<item>' >> $filename
  echo '   <name>'$(grep -e "^Name=" $files | sed 's/Name=//g')'</name>' >> $filename   
  echo '   <command>'$(grep -e "^Exec=" $files | sed 's/Exec=//g')'</command>' >> $filename
  echo '</item>' >> $filename
done

echo '</items>' >> $filename
echo '</xml>' >> $filename
chaskes
quelle