.desktopファイルで変数を設定


75

.desktopファイルに環境変数を設定する方法はありますか?カスタムgtkスタイルでアプリケーション(Eclipse)を実行しようとしているので、基本的には.desktopファイルを実行して次の結果を得たいと思います。

GTK2_RC_FILES=gtkrc.custom /path/to/eclipse

それをbashスクリプトに入れて.desktopファイルから実行しようとしましたが、Unityランチャーとうまく統合できません。

回答:


111

.desktopファイルを編集して、環境変数をアプリケーションに追加できます。たとえば、環境変数を使用して "digiKam"を実行するAPPMENU_DISPLAY_BOTH=1には、対応するdigikam.desktopファイルを見つけ、envコマンドを介してエントリの "Exec"に変数の設定を追加します。

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

あなたの場合:

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

1
ユーザーの$HOME?を含む環境変数を設定するにはどうすればよいですか?どちらExec=env MYVAR="$HOME/foo"Exec=env MYVAR="~/foo"拡張されません。代わりに、文字通り渡されます。
400猫

で説明したように、あなたがそれを行うことができそうですstackoverflow.com/a/8980518/1446479
peedee

9

.desktopファイルを変更する別の方法は、ラッパースクリプトをに配置することです~/bin

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

これにより、次回アプリケーションパッケージが更新されたときにカスタマイズが上書きされなくなります。

編集:

これが機能する理由についてのヒントは、PATH変数に含まれるものを確認することで確認できます。私の場合:

$ 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

~/binはリストの最初のフォルダーであるため、前に表示され/usr/binます。


ローカル設定に.desktopファイルを置いただけでは、とにかく上書きされません。
Auspex

@Auspex:True。しかし、同時に、ローカルコピーを使用する場合、パッケージ所有.desktopファイルの更新の恩恵を受けることはできません。
グンナルハルマルソン

ラッパーを入れることでそれがどのよう~/binに役立つかはわかりません。パッケージ所有の.desktopファイルには、そのラッパーは表示されません。次も使用する必要がありますupdate-alternatives
Auspex

@Auspex:.desktopファイルはラッパーを「見る」必要はありません。それは単に実行eclipseされPATH、ラッパーのためにの代わりに選択され/usr/bin/eclipseます。答えを編集して明確にしました。
Gunnar Hjalmarsson

はい、.desktopファイルラッパーを見る必要あります。平均的な.desktopファイルはフルパスを指定していると考えていましたが、さらに詳しく調べると、ほとんどのシステムはコマンド名を指定しているだけで、ラッパー表示されると思います。ただし、私が持っている唯一のEclipseデスクトップファイルは、質問で指定された形式であり、Eclipseバイナリへの完全なパスを提供します。
オースペックス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.