Ich möchte eine Liste aller installierten Anwendungen, die eine GUI haben. Um es klar auszudrücken, mindestens alle Anwendungen, die in Anwendungen anzeigen aufgelistet sind.
Ich habe verschiedene Befehle wie apt list --installed
, dpkg -l
, find '*.desktop'
ausprobiert, um eine Liste aller installierten Anwendungen zu erhalten, bei denen einige Anwendungen fehlten (wie Android Studio , b1freearchiver, pyCharm, etc .)
Wäre es nicht möglich, den Ordner oder die Datei zu finden, der bzw. die vom Menü Show Applications verwendet wird, um alle darin aufgeführten Anwendungen abzurufen.
Ich verwende Ubuntu 18.04 Desktop.
Versuchen Sie, nach allen .desktop-Dateien zu suchen. Gnomes Entwickler-Website nennt sie den "registrierten Satz von Anwendungen, die Benutzer ausführen können" und sie sind fast immer GUI-Programme.
Diese Antwort ( Wie finde ich * .desktop-Dateien? ) besagt, dass Sie mit überall nach .desktop-Dateien suchen können
find / -name '*.desktop'
Oder sie sind wahrscheinlich nur in /usr/share/applications/
und ~/.local/share/applications
enthalten, daher sollte es ausreichen, nur in diesen zu suchen :
find /usr/share/applications ~/.local/share/applications -name '*.desktop'
Wenn Sie speziell Terminalprogramme ausschließen möchten (auch wenn sie eine Terminal-GUI wie htop haben), können Sie diese Befehle an eine Suche oben anhängen:
... -print0 |xargs -0 grep -i -l "Terminal=False"
Als Ergänzung zu @ Xen2050-Antwort können Sie die genauen Paketnamen der Deb-Pakete (damit sie APT bekannt sind) mit *.desktop
-Dateien mit diesem Einzeiler bestimmen:
dpkg --search '*.desktop' | awk '{print $1}' | sed "s/://" | sort --unique
Im obigen Befehl:
dpkg --search '*.desktop'
sucht nach Paketen mit *.desktop
Dateien;|
leitet von der Ausgabe des vorherigen Befehls zur Eingabe des nächsten Befehls um;awk '{print $1}'
gibt die erste Spalte des Suchergebnisses aus (normalerweise in der Form plank: /usr/share/applications/plank.desktop
- so erhalten Sie plank:
);sed "s/://"
entfernt unnötigen :
aus dem Paketnamen (Sie erhalten plank
hier);sort --unique
sortiert die Ergebnisse und entfernt Duplikate daraus.Auf meinem Ubuntu 16.04.5 LTS werden ungefähr 347 eindeutige Paketnamen zurückgegeben.
Wenn Sie eine Software im Basisordner installiert haben, können Sie den folgenden Befehl verwenden
find ~ -name '*.desktop'
oder genauer
find ~/.local/share/applications/ '*.desktop'
um ihre *.desktop
Dateien zu finden.
Im Allgemeinen ist das schwer zu bestimmen. Die anderen Antworten beziehen sich nicht darauf, dass Befehlszeilen-Apps möglicherweise auch .desktop-Dateien enthalten oder GUI-Apps möglicherweise keine .desktop-Dateien enthalten. Desktop-Datei. Außerdem gibt es keine Garantie, dass eine App, auf die in der .desktop-Datei verwiesen wird, noch auf dem System vorhanden ist (Sie müssen sie ausführen, um den vorhandenen Pfad zu kennen oder Exec = line zu überprüfen). Daher ist es ein schlechtes Kriterium.
Was jedoch getan werden kann, ist eine bessere Frage zu stellen. Welche Apps hängen von der GUI ab? Das kann mit apt-cache rdepends 'package or lib'
gefunden werden. Beispielsweise zeigt apt-cache rdepends libappindicator
Pakete an, die diese Bibliothek als Abhängigkeit haben und wahrscheinlich ein solches Applet bereitstellen.
Um fair zu sein, kann eine Terminal-App auch mit der GUI verbunden sein, ohne tatsächlich eine GUI-Schnittstelle zu haben. Wenn Sie Apps mit GUI-Front-End finden möchten, suchen Sie nach Apps, die von Gtk- oder Qt-Bibliotheken abhängen
Natürlich hängt es auch davon ab, ob der Paketbetreuer die Abhängigkeitsbeschreibung für sein Paket korrekt angegeben hat. Für Standard-Ubuntu-Repositorys ist das in Ordnung. Für externe PPA hängt das von den Entwicklern und Betreuern ab.