TeX Live Cockpit

I have been working quite some time on a new front end for the TeX Live Manager tlmgr. Early versions have leaked into TeX Live, but the last month or two has seen many changes in tlmgr itself, in particular support for JSON output. These changes were mostly driven by the need (or ease) of the new frontend: TLCockpit.

With the update of the main TeX Live infrastructure packages that we made available the other day, and the following update of TLCockpit in TeX Live, it is now time to announce TLCockpit a bit more formally. So here it is. We took lots of inspiration from the excellent TeX Live Utility which has and is serving the Mac users since long time. TLCockpit tries to provide similar functionality and ease of use for users of all architectures and not only the Mac.

Cross-platform development is a pain, and the current TeX Live Manager contains a GUI, written in Perl/Tk. While the GUI is functional, in fact nearly functionally complete wrt to the command line version, its appearance is less of pleasure. Complaints about it not being styled according to the underlying OS, UX not being optimal, feature-overload etc are common. And I agree, that back then when I wrote that GUI it was less for actual consumption but to at least have some GUI for those poor Windows users.

Fast-forward about 10 years, and the implementation of the tlmgr shell (something I haven’t reported in detail by now!) opened up new routes for GUI development. And since in my current job Scala is very common, I decided to implement a frontend with Scala, first based on the Swing toolkit but soon I switched over to ScalaFX. That is also the reason there are so many posts on ScalaFX on my blog recently.


Let us go through the features of TLCockpit at the current time. Starting up the program one sees the loading screen on the right. The indicator in the menu bar shows that the underlying tlmgr is busy loading the local and remote databases. When this is done, the list of packages appears. In the list, the binary sub-packages are ordered below the main packages and can be expanded. For each package the package name, the short description, and the installation status is shown:

Below the list of packages there is also a search entry field: Entering a text here and pressing Go (or Enter) will restrict the display of packages to those where the package name or short description contains the search term.

Using the Packages menu entry one can change the list view to sort by collections, as shown on the left.

On switching to the Updates tab one is (after a hopefully short loading time) with the list of updates available. For each update the package name, the status (update, new on server, removed on server etc), short description, local and remote revisions (with TeX Catalogue versions given if available), and the download size is shown:

While visiting the Updates tab, the menu entry Updates allows updating either all, or if there are infra-structure updates available, only the TeX Live manager.

The last of the three tabs is Backup and lists the currently available backups and allows restoring packages. For each package the revision and date of creation is shown.

Clicking on a package anywhere in the three tabs with the right mouse button gives a context menu with options to install, remove, update, and show detailed information of the package. Selecting the Info entry gives a details window, in which all kind of information is listed. For documentation files that are installed clicking on the file name will open the file with the default application for the file type:

Configuration of the TeX Live installation is possible via menu entry Options where there are General options allowing to customize the TeX Live installation and Paper allowing to customize the default paper size for the supported programs:

This completes the list of current functionality.

Well, more or less. The attentive reader might have spotted two additional features at the lower part of the application window: Experts only and Debug panes. The former gives access to a text field that allows entering arbitrary tlmgr shell commands. But be careful what you are entering. The later one gives access to three tabs containing the output, debug, and error output of tlmgr as well as the application itself. It will open automatically in case something unforeseeable has happened.


Although written in Scala, all necessary Scala related libraries are packed into the distributed jar file, that means only a recent Java installation which includes JavaFX is necessary. In case you see errors like java.lang.NoClassDefFoundError: javafx/event/EventTarget this means your Java is too old.

I have tested the release jar files on Linux (Debian) with Java 8u152 from the OpenJDK project and on Windows (10) with the 8u154 from Sun. Both worked without any problems. Mac OS is untested due to lack of devices – but there most users anyway use TLU.


Development is done one GitHub tlcockpit project, please use the issues functionality there to report bugs, request features, and suggest improvements. As mentioned above, the program is written in Scala with ScalaFX as toolkit, so if you are an expert in any of those, please join in and help!

I myself use IntelliJ for development, the checkout can be opened with IntelliJ without any problems. Deployment is done via sbt assembly which packs all the necessary libraries into one jar file.


While far from perfect, I believe it is an improvement over the tlmgr gui, and I hope that some users of TeX Live Manager might find TLCockpit useful.


9 Responses

  1. Thank for this cockpit. How can I install it on Ubuntu with a Vanilla TeXLive? Is there a PPA?

  2. karl says:

    why does adhocfilelist status say “mixed”? Just curious.

    P.S. Java on current CentOS (7.x) is too old. Oh well.

    • Hi Karl,
      Mixed means not all arch packages are installed. It happens for all packages with .arch deps.
      Concerning Java, yeah I know, the one on my Mac mini is the same 🙁

  3. BE says:

    Will this TexLive cockpit be part of the next distribution of TexLive?
    So will it be part of TexLive 2018?

  1. 2017/11/27

    […] For details and screenshots, visit Norbert Preining’s announcement. […]

  2. 2018/04/28

    […] tlmgr, die auf die Namen tlshell und tlcockpit hören – ersteres funktioniert mit Tcl/Tk, das Cockpit dagegen mit einem möglichst rezenten Java. Auf dem Mac wurde es nicht getestet (und läuft bei mir […]

Leave a Reply

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>