GUI for tlmgr written in Scala
Clone or download
Latest commit 1cbac0f Oct 19, 2018

TLCockpit - GUI frontend to tlmgr

TLCockpit aims at being a GUI for tlmgr, the TeX Live Manager, with a modern look and feel. We take inspiration from the TeX Live Utility.


Since TLCockpit is included in TeX Live, it will be probably already installed on your system. In case it isn't, a simple call to tlmgr install tlcockpit should suffice.

We are providing new jar files on the github page, but update the copy in TeX Live only at certain intervals. If you want to try out the latest and greatest, get tlcockpit.jar and put it into TEXLIVEROOT/texmf-dist/scripts/tlcockpit replacing the current tlcockpit.jar.

After this you can run it by simply typing tlcockpit, or via a direct java call as in java -jar PATH/TO/tlcockpit.jar.

Debugging can be enabled by passing the option -d or, for more detailed debugging -dd.


You need at least tlmgr from after 2017-11-23, in TeX Live language at least version 45888 or texlive.infra.

A recent Java (at least Java 8) installation that includes JavaFX is required. If you see errors like

Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.NoClassDefFoundError: javafx/event/EventTarget
	at java.lang.ClassLoader.defineClass1(Native Method)
	at java.lang.ClassLoader.defineClass(

that means that the Java installation does not provides JavaFX.

On Windows the latest JRE from Oracle include JavaFX. On Linux one might need to install some extra packages (Debian/Ubuntu: openjfx).

With recent release of Java 11 problems are getting worse, since JavaFX is now separately packaged, and ScalaFX only supports (by now) JavaFX8. That means, for now it is necessary to have a Java 8 installation. As soon as ScalaFX supports JavaFX11 we will move to use it.


Development is done in Scala with the ScalaFX widget set. The project is mainly a challenge for myself to learn Scala. Building is done with sbt, opening the project in IntelliJ works fine.

Deployment is done via sbt assembly which packs all the necessary libraries into one jar file.

Contributions are welcome, improvements are easily done as I just started writing Scala and my style is horrible ;-)


Starting up TLCockpit

Loading screen

Package listing

Package listing view

View packages by collections

Packages by collections

Updates listing, with one package being updated

Updates listing view

After updating all packages during the run of postactions like mktexlsr

Postaction view

Backup/Restore listing

Backup listing view

Package details

Package details

Configuration dialog

Config screen

Repository seup dialog with dropdown for mirror selection

Repository screen

Paper setting dialog

Config screen

The Tools menu, as well as the expert and debug panes open

Menu, Expert, Debug




Norbert Preining