20 April 2025

An online Qt GUI version of bibref

This is a short blog entry on the online availability of the Qt GUI version of bibref.
With quite a little of work I managed to make a web version of the bibref Bible study tool. My deepest respect to the Qt team for making this option as smooth as possible. Definitely, with just a couple of minor changes in the codebase (mostly, in the cmake configuration file), this was more like a great adventure than a nightmare (which is quite usual in computer science). Actually, I had to make some tiny modifications on the way I create a new window in Qt, namely, to use QWidget::showNormal() instead of QWidget::show(), otherwise the newly created window overlaps the previously defined window without any option to access the old window again. But this was easy to figure out and resolve.

The build steps are documented in the bibref wiki.

The result also proves that with an affordable amount of work it is possible to turn a desktop Bible application into an offline web application as well. Actually, the program runs quite nicely also on a mobile phone, unless the fonts are too big and the main menu cannot be displayed fully. But this can be fine-tuned in the program in the Edit > Preferences menu.

Technically, the program consists of 5 files: an HTML skeleton (3 kB), the application logo (about 90 kB), the Qt WASM loader (12 kB), the Qt application as a WebAssembly program (35 MB) and the available Bibles (as SWORD modules, here KJV, LXX, StatResGNT and SBLGNT) with their pre-cached index databases, plus the 240+ statements (24 MB), in total, about 60 MB. According to a recent study, U.S. Internet users had an average download speed of 200+ Mbps in 2024, so startup of such software can be expected in less than 3 seconds on a usual machine. Although this (and the general speed of the application) is far behind the speed of a native application, for everyday use, this can be more than acceptable for many users since the web browser is nowadays “always at hand”.

The web application includes almost all features of the native desktop application. It has the same menu structure, the different windows of the program are shown similarly, and their intercommunication is supported in the same way. The two extra fonts being used (a variant of Greek Koine, designed by Alan Bunning, for greekcntr.org, and a typewriter font called Inconsolata, designed by Raph Levien) in the desktop application are available in the web version as well, by exploiting Qt's resource bundling mechanism via .qrc files. This also allowed to include the application logo in the web version, however, the rest of the icons and some built-in translations of the Qt system were left out (since they are not included automatically – this should be fixed someday).

On the other hand, built-in visualization of the BRST diagrams had to be skipped for this first version, since an out-of-the-box compilation of GraphViz for the web was not successful. This remains for future work. Instead, the users can still export the diagram as a GraphViz file and display it directly in another web application on a different tab in the web browser.


Entries on topic technical developments

  1. Embedding realgeom in GeoGebra (9 July 2021)
  2. Web version of Tarski (1 October 2021)
  3. Developing Giac with Qt Creator on Windows (24 January 2022)
  4. Compiling Giac via MSYS2/CLANG32 (2 April 2022)
  5. Terminals on the web (28 June 2022)
  6. Torus puzzle (15 April 2023)
  7. Tube amoeba (16 April 2023)
  8. XaoS in WebAssembly (30 August 2023)
  9. Debut of GNU Aris in WebAssembly (11 November 2023)
  10. JGEX 0.81 (in Hungarian) (10 December 2023)
  11. xaos.app (2 January 2024)
  12. Compiling and running bibref-qt on Wine (22 August 2024)
  13. Treasure of Count Goldenwald (6 January 2025)
  14. Developing C++ code for desktop and web with cmake (7 March 2025)
  15. Statement analysis in bibref (8 March 2025)
  16. An online Qt GUI version of bibref (20 April 2025)

Zoltán Kovács
Linz School of Education
Johannes Kepler University
Altenberger Strasse 69
A-4040 Linz