Où puis-je définir des options Java globales?

10

J'ai des polices horribles et mal rendues dans les programmes Java tels que jabrefet rubymine. Cela peut être résolu en exécutant

_JAVA_OPTIONS='-Dawt.useSystemAAFontSettings=on' jabref

Je comprends que je pourrais exporter ces options Java en tant que variables d'environnement et lancer les programmes à partir de la ligne de commande. Cependant, existe-t-il un moyen de définir ces options à l'échelle mondiale, afin que tous les programmes Java les reconnaissent, quelle que soit la façon dont ils sont lancés?

Je sais également que je pourrais modifier tous les *.desktopfichiers de mes programmes Java, mais je recherche une solution globale.

J'utilise java-7-openjdksur Arch Linux. (FWIW, cela allait bien avec le jre7-openjdk-headless-infinality maintenant cassé installé.)

Sparhawk
la source
Pour moi, cela ne fonctionne que si je lance l'application à partir du terminal, si j'utilise le lanceur d'application à partir du panneau xfce ou si j'utilise un script à partir du bureau, il n'obtient aucun paramètre. Pourquoi??
@MARCOFranciosi Je ne sais pas. Ça fonctionne bien pour moi. Vous devrez commenter la réponse pour que le répondeur puisse répondre, même si je ne suis pas sûr que vous ayez suffisamment de représentants.
Sparhawk

Réponses:

7

Vous savez comment définir la variable dans un shell, mais pour l'enregistrement, vous pouvez écrire :

export _JAVA_OPTIONS='-Dawt.useSystemAAFontSettings=on'

et tous les programmes que vous démarrez à partir de cette session shell après cela auront la variable définie.

Si vous souhaitez qu'il soit défini pour chaque shell que vous démarrez ensuite, ajoutez également cette ligne ~/.profile. Dans ce cas, il s'appliquera à tous les futurs shells que vous démarrez, mais pas à tous ceux en cours d'exécution.

.profilefonctionnera généralement pour l'interface graphique également, mais cela peut être rompu par la configuration du système et la façon dont vous démarrez les choses. Il s'agit uniquement d'une configuration par utilisateur.


Si vous souhaitez qu'il soit défini pour chaque utilisateur à tout moment, vous pouvez ajouter une affectation à /etc/environment. Le format est un peu différent là-bas: juste KEY=VALsur des lignes séparées, sans aucune citation requise et rien d'autre.

_JAVA_OPTIONS=-Dawt.useSystemAAFontSettings=on

Ceci est analysé par le pam_envmodule. Il existe également un ~/.pam_environmentfichier par utilisateur , qui a le même effet pour un seul utilisateur. Ces deux éléments nécessitent une déconnexion et une reconnexion pour que la modification prenne effet. Les variables seront définies pour chaque future session de connexion, à la fois sur la console et dans X.

De même, vous pouvez créer un fichier /etc/profile.dcontenant une exportinstruction et il sera chargé dans chaque session future par n'importe quel utilisateur. Il y aura probablement des fichiers préexistants pour le modéliser, mais juste la exportligne ci-dessus conviendra.


Vous pouvez également ajouter l' exportinstruction dans ~/.xinitrc(si vous utilisez startx) ~/.xsession,, ou ~/.xprofile. KDE prend également en charge un répertoire ~/.kde/envqui peut contenir autant de fichiers shell que vous le souhaitez, qui contiennent des exportinstructions comme ci-dessus. Je préférerais probablement l'une des autres approches.

Michael Homer
la source
1
Très bonne réponse. Clair et complet. FWIW J'ai utilisé l' /etc/environmentoption qui me semblait la plus logique.
Sparhawk