Variable in der .desktop-Datei festlegen


75

Gibt es eine Möglichkeit, die Umgebungsvariable in der .desktop-Datei festzulegen? Ich versuche, eine Anwendung (Eclipse) im benutzerdefinierten GTK-Stil auszuführen. Daher möchte ich das folgende Ergebnis erzielen, indem ich eine .desktop-Datei ausführe:

GTK2_RC_FILES=gtkrc.custom /path/to/eclipse

Ich habe versucht, es in ein Bash-Skript einzufügen und über die .desktop-Datei auszuführen, aber dann lässt es sich nicht gut in den Unity-Launcher integrieren.

Antworten:


111

Sie können einer Anwendung eine Umgebungsvariable hinzufügen, indem Sie deren .desktopDatei bearbeiten . Um beispielsweise "digiKam" mit der Umgebungsvariablen auszuführen APPMENU_DISPLAY_BOTH=1, suchen Sie die entsprechende digikam.desktopDatei und fügen Sie die Einstellung der Variablen über den envBefehl zum Eintrag "Exec" hinzu:

Exec=env APPMENU_DISPLAY_BOTH=1 digikam -caption "%c" %i

In deinem Fall:

Exec=env GTK2_RC_FILES=gtkrc.custom /path/to/eclipse

1
Wie kann ich die env - Variable mit dem Benutzer einstellen $HOME? Weder wird Exec=env MYVAR="$HOME/foo"noch Exec=env MYVAR="~/foo"erweitert. Stattdessen werden sie wörtlich übergeben.
400 die Katze

Es scheint, dass Sie es tun können, wie in stackoverflow.com/a/8980518/1446479
Peedee

9

Eine Alternative zum Ändern der .desktopDatei besteht darin, ein Wrapper-Skript in z ~/bin.

$ cat ~/bin/eclipse
#!/bin/sh
export GTK2_RC_FILES=gtkrc.custom
exec /usr/bin/eclipse "$@"

Auf diese Weise wird die Anpassung beim nächsten Aktualisieren des Anwendungspakets nicht überschrieben.

Bearbeiten:

Ein Hinweis, warum dies funktioniert, können Sie sehen, indem Sie überprüfen, was die PATHVariable enthält. In meinem Fall:

$ echo $PATH
/home/gunnar/bin:/home/gunnar/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

~/binist der erste Ordner in der Liste und wird daher vorher angeschaut /usr/bin.


Wenn Sie Ihre .desktop-Datei nur in Ihre lokalen Einstellungen einfügen, wird sie sowieso nicht überschrieben.
Auspex

@Auspex: Stimmt. Wenn Sie jedoch eine lokale Kopie verwenden, profitieren Sie nicht von möglichen Aktualisierungen der paketeigenen .desktopDatei.
Gunnar Hjalmarsson

Ich sehe nicht, wie das Einlegen eines Wrappers ~/bindabei helfen wird. Die paketeigene .desktopDatei wird diesen Wrapper niemals sehen! Sie müssten auch verwendenupdate-alternatives
Auspex

@Auspex: Die .desktopDatei muss den Wrapper nicht "sehen". Es wird nur ausgeführt eclipse, und aufgrund PATHdes Wrappers wird statt ausgewählt /usr/bin/eclipse. Ich habe die Antwort bearbeitet, um sie zu klären.
Gunnar Hjalmarsson

Ja, die .desktop-Datei muss den Wrapper sehen. Ich dachte, dass die durchschnittliche .desktop-Datei einen vollständigen Pfad angibt, aber ich denke, dass die meisten der System-Dateien nur einen Befehlsnamen angeben - und so wird Ihr Wrapper angezeigt. Die einzigen Eclipse-Desktopdateien, über die ich verfüge, haben jedoch das in der Frage angegebene Format, dh einen vollständigen Pfad zur Eclipse-Binärdatei.
Auspex
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.