Can't change menu font size in JabRef 4.3.1 on linux

In 4.2 it was possible to go to: Options–>Preferences–>Appearance and change the “menu and label font size”. This doesn’t work any longer in 4.3.1. It changes some of the fonts, but the menu fonts don’t change at all any longer. On a hidpi display the menu fonts are tiny. I’m on linux fedora 28.

The latest development version provides full support for hidpi displays (and so the option to customize the font size was even completely removed). Could you please check the build from http://builds.jabref.org/master/. Thanks! Please remember to make a backup of your library before trying-out this version.

OK. So where does java look for a default font size for things? I suppose I will have to change it there.

Did you try out the version I linked above? Normally, you just need to install it and then JabRef scales to font appropriately.

I tried it, but master wouldn’t start for me. Is 4.3.1 supposed to scale the fonts properly?

Here is the output of starting the master via command line:

[ehm JabRef]$ java -jar JabRef–master–latest.jar
20:17:33.421 [JavaFX Application Thread] INFO org.jabref.logic.importer.OpenDatabase - Opening: /home/ehm/tex/bib_databases/theory.bib
Exception in Application start method
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:389)
at com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:328)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:767)
Caused by: java.lang.RuntimeException: Exception in Application start method
at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:917)
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$1(LauncherImpl.java:182)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.UnsatisfiedLinkError: Can’t load library: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.171-4.b10.fc28.x86_64/jre/lib/amd64/libjfxwebkit.so
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1827)
at java.lang.Runtime.load0(Runtime.java:809)
at java.lang.System.load(System.java:1086)
at com.sun.glass.utils.NativeLibLoader.loadLibraryFullPath(NativeLibLoader.java:201)
at com.sun.glass.utils.NativeLibLoader.loadLibraryInternal(NativeLibLoader.java:94)
at com.sun.glass.utils.NativeLibLoader.loadLibrary(NativeLibLoader.java:39)
at com.sun.webkit.WebPage.lambda$static$0(WebPage.java:131)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.webkit.WebPage.(WebPage.java:130)
at javafx.scene.web.WebEngine.(WebEngine.java:881)
at javafx.scene.web.WebEngine.(WebEngine.java:868)
at javafx.scene.web.WebView.(WebView.java:273)
at org.jabref.gui.PreviewPanel.(PreviewPanel.java:83)
at org.jabref.gui.BasePanel.(BasePanel.java:231)
at org.jabref.gui.JabRefFrame.addTab(JabRefFrame.java:1190)
at org.jabref.gui.JabRefFrame.addParserResult(JabRefFrame.java:991)
at org.jabref.JabRefGUI.openWindow(JabRefGUI.java:132)
at org.jabref.JabRefGUI.(JabRefGUI.java:66)
at org.jabref.JabRefMain.start(JabRefMain.java:77)
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$8(LauncherImpl.java:863)
at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$7(PlatformImpl.java:326)
at com.sun.javafx.application.PlatformImpl.lambda$null$5(PlatformImpl.java:295)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.application.PlatformImpl.lambda$runLater$6(PlatformImpl.java:294)
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
at com.sun.glass.ui.gtk.GtkApplication._runLoop(Native Method)
at com.sun.glass.ui.gtk.GtkApplication.lambda$null$5(GtkApplication.java:139)
… 1 more
Exception running application org.jabref.JabRefMain

Looks like there is a problem with your installation of JavaFX (libjfxwebkit.so is missing). I would suggest you retry to install it (and in the process also update to 172 if possible).

And no, the font in JabRef 4.x does not scale properly. This is only fixed in the most recent development version (which will be JabRef 5).

Thank you, I’ll give that a try.

It seems that on Fedora 28 libjfxwebkit.so is not provided by the java-1.8.0-openjdk-openjfx or openjfx packages. There seem to be complaints on other forums about this. Do you recommend the latest packages direct from Oracle?

I installed jre1.8-1.8.0_172-fcs from Oracle. Now when I open the master version, the fonts are still small, and under preferences there is a blank page under the appearance tab. Nothing shows up there at all.

It’s good news that you manged to get the new master version to run. Sadly, there is a bug in Java 8 that prevents it to automatically scale the font according to the DPI settings. This is fixed in Java 9, but JabRef does not yet support Java 9…

I’ve to think a bit more about a proper solution; I’m sorry for the inconvenience caused. Can you please post a screenshot of the master version. Thanks!

No worries, thanks for looking into it. I have attached a screenshot.

Is it possible to retain the configurability of the menu font size with a button in the preferences that allows a default (auto configure for hidpi displays) or manual and just uses the old code? It was perfectly configurable and very nice to be able to customize the look of the ui.

I am also trying to get JabRef to be usable on a HiDPI display.

The stable 4.3.1 build does not scale, and adjusting the fonts only increases the size of some things. Other aspects of the GUI are still too small to be readable.

I tried the development build from today and it also did not scale automatically.
Here is the output from running it on the command line:

$ java -jar ~/opt/jabref/JabRef-5.0-Dev-6.29.18.jar 
08:05:23.135 [SwingWorker-pool-4-thread-1] WARN  org.jabref.gui.worker.VersionWorker - Could not connect to the updateserver.
javax.net.ssl.SSLException: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
	at sun.security.ssl.Alerts.getSSLException(Alerts.java:208) ~[?:1.8.0_171]
	at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1964) ~[?:1.8.0_171]
	at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1921) ~[?:1.8.0_171]
	at sun.security.ssl.SSLSocketImpl.handleException(SSLSocketImpl.java:1904) ~[?:1.8.0_171]
	at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1420) ~[?:1.8.0_171]
	at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1397) ~[?:1.8.0_171]
	at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:559) ~[?:1.8.0_171]
	at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185) ~[?:1.8.0_171]
	at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1564) ~[?:1.8.0_171]
	at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1492) ~[?:1.8.0_171]
	at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:263) ~[?:1.8.0_171]
	at org.jabref.logic.util.Version.getAllAvailableVersions(Version.java:96) ~[JabRef-5.0-Dev-6.29.18.jar:?]
	at org.jabref.gui.worker.VersionWorker.doInBackground(VersionWorker.java:56) [JabRef-5.0-Dev-6.29.18.jar:?]
	at org.jabref.gui.worker.VersionWorker.doInBackground(VersionWorker.java:30) [JabRef-5.0-Dev-6.29.18.jar:?]
	at javax.swing.SwingWorker$1.call(SwingWorker.java:295) [?:1.8.0_171]
	at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_171]
	at javax.swing.SwingWorker.run(SwingWorker.java:334) [?:1.8.0_171]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_171]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_171]
	at java.lang.Thread.run(Thread.java:748) [?:1.8.0_171]
Caused by: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
	at sun.security.validator.PKIXValidator.<init>(PKIXValidator.java:91) ~[?:1.8.0_171]
	at sun.security.validator.Validator.getInstance(Validator.java:179) ~[?:1.8.0_171]
	at sun.security.ssl.X509TrustManagerImpl.getValidator(X509TrustManagerImpl.java:312) ~[?:1.8.0_171]
	at sun.security.ssl.X509TrustManagerImpl.checkTrustedInit(X509TrustManagerImpl.java:171) ~[?:1.8.0_171]
	at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:184) ~[?:1.8.0_171]
	at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:124) ~[?:1.8.0_171]
	at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1596) ~[?:1.8.0_171]
	at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:216) ~[?:1.8.0_171]
	at sun.security.ssl.Handshaker.processLoop(Handshaker.java:1052) ~[?:1.8.0_171]
	at sun.security.ssl.Handshaker.process_record(Handshaker.java:987) ~[?:1.8.0_171]
	at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1072) ~[?:1.8.0_171]
	at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1385) ~[?:1.8.0_171]
	at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1413) ~[?:1.8.0_171]
	... 15 more
Caused by: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
	at java.security.cert.PKIXParameters.setTrustAnchors(PKIXParameters.java:200) ~[?:1.8.0_171]
	at java.security.cert.PKIXParameters.<init>(PKIXParameters.java:120) ~[?:1.8.0_171]
	at java.security.cert.PKIXBuilderParameters.<init>(PKIXBuilderParameters.java:104) ~[?:1.8.0_171]
	at sun.security.validator.PKIXValidator.<init>(PKIXValidator.java:89) ~[?:1.8.0_171]
	at sun.security.validator.Validator.getInstance(Validator.java:179) ~[?:1.8.0_171]
	at sun.security.ssl.X509TrustManagerImpl.getValidator(X509TrustManagerImpl.java:312) ~[?:1.8.0_171]
	at sun.security.ssl.X509TrustManagerImpl.checkTrustedInit(X509TrustManagerImpl.java:171) ~[?:1.8.0_171]
	at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:184) ~[?:1.8.0_171]
	at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:124) ~[?:1.8.0_171]
	at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1596) ~[?:1.8.0_171]
	at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:216) ~[?:1.8.0_171]
	at sun.security.ssl.Handshaker.processLoop(Handshaker.java:1052) ~[?:1.8.0_171]
	at sun.security.ssl.Handshaker.process_record(Handshaker.java:987) ~[?:1.8.0_171]
	at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1072) ~[?:1.8.0_171]
	at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1385) ~[?:1.8.0_171]
	at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1413) ~[?:1.8.0_171]
	... 15 more

Does that look ok? Java version is:

$ java -version
openjdk version "1.8.0_171"
OpenJDK Runtime Environment (build 1.8.0_171-8u171-b11-0ubuntu0.18.04.1-b11)
OpenJDK 64-Bit Server VM (build 25.171-b11, mixed mode)

This really makes JabRef unusable for me at the moment.
Any suggestions on a workaround?

Font size customization is now implemented in the latest development version (Preferences -> Appearence Tab; there is still a display bug: you need to click in the empty space before “Override default” to choose your font size). Could you please check the build from http://builds.jabref.org/master/. Thanks! Please remember to make a backup of your library before trying-out this version.

Thank you for your effort on this, it is sincerely appreciated!

Using Oracle java jre1.8.0_172.

When I go to the Appearance tab of the preferences, I can click on the “Override default font settings” (note there is no discernible box for check), and the greyed out "font: " and box become active. But I can’t edit inside the box, clicking on it does nothing.

Let me know if I can provide any more information.

Same here – can’t edit the font size.

Thanks for trying out the new version. You probably hit a known issue. I’ll let you know as soon as it is fixed.

First up, really appreciate all the work being done on Jabref.

I was wondering what the status is on the hidpi support? I noticed the pop up when searching for references when using the web search still has tiny text?
Thanks in advance!


JabRef 5.0-dev–snapshot–2019-03-05–master–fb9f3ecf7
Linux 5.0.0-050000-generic amd64
Java 1.8.0_201

We are almost finished with converting all old dialogs to the new UI technology. Should take only a week or two until everything is done. For the import dialog, you can observe the progress in https://github.com/JabRef/jabref/pull/4692.