User Interface options¶
Most of Penguin Carpentry is about integrating a desktop application you’ve already written. But if you’re just getting started, one of the first things you’ll need to figure out is what to use for the user interface.
As with many things in the open source world, there are many different options. This is an overview of a few of the main ones.
Desktop style: GTK or Qt¶
If you want a traditional desktop style application - buttons, menus, toolbars, and so on, the main options are GTK and Qt. They’re written in C and C++ respectively, so you can make very efficient apps, but they also have bindings to higher-level languages like Python.
If your app will also run on Windows/Mac, go with Qt; its cross platform support is stronger than GTK. If you’re writing just for Linux, it’s mostly a matter of taste. GTK apps look more native in the GNOME desktop, whereas Qt apps fit better in KDE, but both toolkits work with either desktop.
Web tech: Electron or browser¶
A lightweight alternative for some applications is to run a small web server on localhost and use a browser to display an HTML interface. It’s hard to integrate this nicely with the desktop, though, and you need to pay attention to security so that other websites open in the browser can’t touch it.
Game interfaces tend to be drawn with a different set of tools. High-performance graphics will use OpenGL or its replacement, Vulkan, but there are many frameworks and engines built around these to provide more convenient APIs, such as SDL and pygame.
I don’t know this area well! If you can expand and improve this section, please contribute.