Ich habe im Laufe der Jahre einige Open-Source-Programme geschrieben, aber nicht in letzter Zeit, und ich hatte dieses Problem noch nie zuvor. Die Menüpunkte für mein neues Projekt werden einfach nicht in Menüs auf gnome oder kde angezeigt.
Ich habe die .desktop-Dateien ursprünglich nur in / usr / share / applications installiert, sie aber später so geändert, dass sie Desktop-Datei-Utils verwenden - alles ohne Erfolg. Ich habe meinem Postinst-Skript eine Update-Desktop-Datenbank hinzugefügt ... nichts
Ich habe die Einträge überprüft und im Dateimanager sind sie korrekt. Ich habe versucht, ihnen Ausführungsberechtigungen zu erteilen. Ich kann nichts Falsches finden, aber sie werden einfach nicht angezeigt. Gibt es etwas Neues zu tun, damit die Menüpunkte Ihrer App heutzutage angezeigt werden?
Die .desktop-Dateien sind:
silentcoder@ravenriley ~/SOURCE/ezdm $ cat ezdm.desktop
[Desktop Entry]
Type=Application
Name=EZDM
GenericName=Easy Dungeon Master
Comment=A tookit for AD&D Dungeon Master
TryExec=/usr/games/ezdm
Exec=/usr/games/ezdm
Categories=Game;RolePlaying;
Icon=/usr/share/icons/hicolor/128x128/ezdm.png
Terminal=false
cat ezdmconsole.desktop
[Desktop Entry]
Type=Application
Name=EZDM-Console
GenericName=Easy Dungeon Master (Console version)
Comment=A tookit for AD&D Dungeon Master
TryExec=/usr/games/ezdm --console
Exec=/usr/games/ezdm --console
Categories=Game;RolePlaying;
Icon=/usr/share/icons/hicolor/128x128/ezdm-console.png
Terminal=1
X-Desktop-File-Install-Version=0.20
Und wenn einer der anderen Codes nützlich sein könnte, kann er auf github durchsucht werden: https://github.com/ajventer/ezdm
UPDATE: Das Rätsel vertieft sich, wenn ich die Dateien nach / usr / share / applications / kde4 kopiere (was ich natürlich nicht in meinem Paket tun möchte - schließlich sollte es auch in gnome funktionieren), dann tut es plötzlich ezdm.desktop erscheinen im Menü, aber ezdm-console.desktop weigert sich immer noch.
UPDATE: da es relevant sein kann: Aus Makefile:
install:
$(PYTHON) setup.py install --prefix=/${PREFIX} --root $(DESTDIR) --install-scripts=/${PREFIX}/games/ --no-compile --force --record .install.record --install-layout=deb
mkdir -p ${DESTDIR}/${PREFIX}/share/applications
mkdir -p ${DESTDIR}/${PREFIX}/share/icons/hicolor/128x128/
desktop-file-install --dir=${DESTDIR}/${PREFIX}/share/applications/ ezdm.desktop
desktop-file-install --dir=${DESTDIR}/${PREFIX}/share/applications/ ezdm-console.desktop
install -g root -o root -m 0666 ezdm.png ${DESTDIR}/${PREFIX}/share/icons/hicolor/128x128/ezdm.png
install -g root -o root -m 0666 ezdm-console.png ${DESTDIR}/${PREFIX}/share/icons/hicolor/128x128/ezdm-console.png
update-desktop-database ${DESTDIR}/${PREFIX}/share/applications
Und debian / postinst:
cat debian/postinst
#!/bin/bash -x
ln -sf /usr/games/ezdm* /usr/bin
for I in /usr/lib/python2.7/dist-packages/ezdm_libs/*.py; do
python -m compileall $I
done
update-desktop-database
#DEBHELPER#
Antworten:
Es gab Formatierungsfehler in den Dateien. Aufgrund von Kommentatoren kann ich nur davon ausgehen, dass einige Versionen von Gnome verzeihender sind. So oder so habe ich einen raffinierten Weg gefunden, um sie zum Laufen zu bringen: Öffnen Sie das Verzeichnis in Delfin und bearbeiten Sie sie, bis sie von Delfin aus gestartet werden können - nur wenn dies funktioniert, fügen Sie das Kategorienfeld hinzu und sie werden dann in Menüs angezeigt. In KDE müssen Sie möglicherweise Folgendes ausführen: kbuildsycoca4 --noincremental zuerst, wenn Sie nicht erneut anmelden.
Die endgültigen Versionen der Dateien sind:
Für den Fall, dass das jemand anderem hilft. Ich habe gerade eine neue PPA-Build-Anfrage veröffentlicht, sodass aktualisierte Ubuntu-Pakete bald verfügbar sein werden.
quelle
Versuche dies:
aus
quelle
Es gibt sehr heimtückische Desktop-Dateischlüssel -
TryExec
. Laut Dokumentation :Daher kann es zu einem fehlenden Menüeintrag kommen, wenn dieser nicht richtig gefüllt ist. Und mit "richtig" meine ich, dass es immer auf die tatsächlich ausführbare Datei verweisen muss .
Wenn Sie versuchen, Ihr Programm in einer geänderten Umgebung mit zu starten
env
, funktioniert es überraschenderweise nicht mehr. Hier ist ein Beispiel für eine ungültige Desktop-Datei aus dem Paket meiner Distribution:Es funktioniert nicht, weil DE nach einer
env FONTCONFIG_FILE=/usr/share/fonts/fonts.conf telegram -noupdate
ausführbaren Datei sucht und die gesamte Zeichenfolge (einschließlich Leerzeichen) als Dateipfad behandelt, was natürlich fehlt.Die Lösung ist auch einfach: Geben Sie einfach den Pfad zur tatsächlichen ausführbaren Datei an (auch relativ):
quelle
Höchstwahrscheinlich, weil Ihre falsche
TryExec
Zeile anzeigt, dass sie nicht mehr gültig ist.Ich denke, diese Datei existiert nicht und ist insbesondere nicht ausführbar?
quelle
ezdm.desktop
irgendwo einen anderen , zum Beispiel in$HOME/.local/share/applications/ezdm.desktop
?Zumindest unter Ubuntu 19.10 ist eine mögliche Ursache, dass die von
Exec
, auf die verwiesen wird , auf dem nicht vorhanden ist$PATH
. Dies gilt unabhängig von IhrerTryExec
Linie. Sie benötigen beide Zeilen, um auf ausführbare Dateien zu verweisen, die in vorhanden sind$PATH
, oder Ihre Anwendung wird nicht im Anwendungsmenü angezeigt.Also: Stellen Sie sicher, dass Sie die ausführbare Datei am Anfang Ihrer
Exec=
Zeile nicht getippt haben und dass sie wirklich vorhanden ist.quelle
Abgesehen von den Syntaxfehlern in
.desktop
Dateien muss nicht jede.desktop
Datei die/usr/share/applications
ganze Zeit im Launcher-Menü angezeigt werden.Es gibt eine Reihe komplizierter Regeln, um
.desktop files
festzulegen , welche im Startmenü aufgeführt werden sollen, die in xdg-Dokumenten veröffentlicht werden:https://www.freedesktop.org/wiki/Specifications/menu-spec/
quelle
Klicken Sie hier, um zu erfahren, was eine
application.desktop
Datei ist.Lösung:
Die Datei sollte bereits auf Ihrem Computer vorhanden sein, wenn das Programm installiert ist, sodass keine weitere Datei geschrieben werden muss. Das Problem ist, dass es sich nicht in dem Verzeichnis befindet, das Sie benötigen, um auf Ihrer Gnome-Shell angezeigt zu werden. Führen Sie Folgendes aus, wenn nicht alle fast alle application.desktop-Dateien in der Gnome-Shell angezeigt werden sollen. Wenn Sie nicht installiert haben,find
installieren Sie es gemäß den Best Practices Ihrer Distribution. In meinem Fall :sudo apt-get install find
.find * "${LOOKHERE}" | grep -E *\\.desktop$
Der letzte sollte etwas löschte wie wenn
LOOKHERE
ist/share
:Warnung:
LOOKHERE
Wenn die Variable auf "/
Allein" gesetzt ist, wird sie auch in alle Wechselmedien angezeigt, und diese Dateien können auf nicht vorhandene Programme auf Ihrem lokalen Computer verweisen. Stellen Sie sicher , dass alle exec Aussagen sind Querprüfung mit ,which application-name
dass Ihre gültige exec - Anweisung wie zurückgeben solltewhich bash
Renditen/bin/bash
. Wennwhich
dies nicht funktioniert, überprüfen Siewhereis
den Start. Für weitere Änderungen verwenden Siedconf
odergsettings
.quelle