Links to dialog and dialog-like utilities for use mainly with scripting or possibly creating simple GUIs with C programs are covered below. Dialog utilities are typically used on POSIX systems. There are some notes on portability to Windows platforms.

URLs are accurate as of when this was posted. However, they can change over time. You can use a search engine or wayback tool to find pages that have been moved or backups of older versions of pages.

How To for building Dialog on OpenWatcom. It builds on MinGW with msys just as well. However, a few of the lines in the OpenWatcom patches for handling directory structures differently aren't needed. Dialog provides console GUI interaction for batch and shell scripts.

I have a newer set of patches for dialog that adds more feature support on Windows. If there's interest, I can upload the source code as part of my LM BLD project at some point:

LM BLD ui patches
Patches to cross-platform portable browsers so that they can be used as user interfaces. Offers the ability to create user interfaces with basic HTML and CSS. Can work with UTF-8 files to support internationalization. I personally prefer this method to scripting with dialog. HTML and CSS are standardized and there's more control over the look and feel of dialogs.

Gui It !
WxWidgets based front ends using simple XML configuration files.

Yet another dialog, this is a fork of zenity with many added features. Uses GTK+ 2 to offer Windows look and feel for user interface objects and offers cross-platform use. Support for MinGW has been added to the source code. GTK+ 3 port available.

This provides a simple GUI interface for batch and shell scripts. It's been ported from POSIX systems to work with MinGW, msys and GTK+ 2. Similar to Dialog, but possibly less functions. Latest version of zenity supports GTK+ 3.

Builds with MinGW and msys if GTK libraries (2 or 3) are installed. Similar to Dialog but slightly different functionality.

Builds with MinGW and msys if GTK libraries are installed. Dialog port using GTK instead of pdcurses. Used following configure options: ./configure --with-gtk2 --with-scanf-calls.

Has much more functionality than Dialog or Zenity. Compiles and builds fine with MinGW and msys. However, when run to produce a dialog through a script, it hangs, presumably due to threading issues on Windows. Tried adding -mwindows -mthreads to CFLAGS and -lpthread to the libraries, but worked the same.

Haven't tried porting this to Windows. It provides a dialog like interface for Linux kernel configuration.

FreeBSD dialog library for use with C programs.
GUI libraries

I've written articles on cross platform screen libraries including one for the C/C++ Users Journal. I've also done a lot of searching and evaluation of cross-platform GUI libraries. You can take a look at my comparison article on screen libraries at

The following list does not cover every GUI library out there, but it gives a good sample of what's available. Most are C++ libraries but there are a few C libraries for those wanting to work only with C.

My personal preferences at this point are SDL (1 and 2), pdcurses and FLTK because they're lightweight and work on a large variety of systems including mobile devices.

URLs are accurate as of when this was posted. However, they can change over time. You can use a search engine or wayback tool to find pages that have been moved or backups of older versions of pages.

FLTK - Fast Light ToolKit (C++)

Fox Toolkit (C++)

wxWidgets (C++)

SDL - SDL 1 and SDL 2
Simple DirectMedia Layer - C cross-platform multimedia library

C++ library

SMFL - simple and fast multimedia library

C library
Works with Windows console, X11, SDL 1 and 2

pdcurses win32a
C library
A PDCurses fork for Win32 (not console mode).

Expansive C++ GUI toolkit - source includes many libraries including a browser example using Webkit.

C console library. Works on POSIX systems and Windows.

I learned a great deal about Win32 C++ programming from the book that created this framework:

Borland's Object Windows C++ Library for the modern age

C++ cross-platform rapid application development framework

C++ library

C++11 GUI library

Toolkit for platform-independent graphical user interface programming in the C language.
Works with Windows and X Windows

Anti-Grain Geometry
C++ free graphics library for Windows and X11. Includes SVG viewer.

Crazy Eddie's GUI System C++ library providing windowing and widgets for graphics APIs/engines

Portable C++ gaming library for Allegro, SDL and/or OpenGL

C/C++ GUI library for OpenGL and DirectX applications.

C Cross-platform toolkit for graphical applications.
Difficult to build on some systems and some versions can be buggy.

LibUFO Universal Form Objects, C++ core library for forms.

C++ V GUI library and IDE (VIDE).

Multi-platform toolkit for building graphical user interfaces. with API in three languages: C, Lua and LED.

Milkymist GUI toolkit
C GUI library

Mini Interative Interface Toolkit Library

Funny tool kit, a C cross-platform embedded GUI
This is a list of useful soundfonts and sound samples.

URLs are accurate as of when this was posted. However, they can change over time. You can use a search engine or wayback tool to find pages that have been moved or backups of older versions of pages.

Ethan's Original Soundfonts
Royalty free soundfonts created by Ethan Winer.

FreePats project
Original web site with sound samples

Collaborative database of Creative Commons licensed sounds

MuseScore Soundfont links
SoundFonts recommended by the MuseScore project

OLPC Free sound samples
Links to free sound sample resources.

Philharmonia Orchestra Sound Samples
Creative Commons licensed sound samples

A collection of public domain soundfonts and instrument/sound effect recordings.

Titanic Soundfont
Public domain, high quality MIDI soundfont by Luke Sena.

University of Iowa Music Instrument Samples
Freely available for use without restriction.
Here are some links related to music documentation.

URLs are accurate as of when this was posted. However, they can change over time. You can use a search engine or wayback tool to find pages that have been moved or backups of older versions of pages.

Music Theory for Musicians and Normal People
Creative Commons licensed music theory PDF.

Programming and Using Linux Sound - in depth
Nice introduction to music software on Linux.
Has some good coding examples using midi code such as TiMidity++ and other midi libraries.

Recipes for Music on Your PC
Tutorial on creating music using ABC notation and TiMidity++ sound and music file formats
File format information backed up at from the no longer available site
Here's a list of music/audio software I like or have found of interest. I've built all of them from source without too many complications at one point or another. I'm also working on patching apcstudio which is a lightweight FLTK based audio/wave file editor. I have it building with the latest version of FLTK and am hoping to add some new capabilities.

URLs are accurate as of when this was posted. However, they can change over time. You can use a search engine or wayback tool to find pages that have been moved or backups of older versions of pages.

Multi-track audio editor and recorder. It can be used to record real instruments and create sound samples.

Create and listen to mod and xm files. Sound quality for playing mod files is better than many other mod file players.

Midi player. Can convert midi to wave files. Some versions show piano keyboard(s) with notes as they play. Can show lyrics of Karaoke midi files.

Convert ABC notation (which can be created in any text editor) to midi and back again.

Convert ABC notation to Postscript sheet music for printing. One can even add guitar tablature using special fonts.

sox - SOund eXchange
Swiss army knife of sound processing programs. Audio conversion utilities.

Records/plays audio and has audio filtering to remove noise.

FLTK Midi Keyboard
On screen Midi Keyboard using FLTK GUI library and rtmidi MIDI library.

SDL Widgets examples
Various audio programs including BigBand for music composition, SDL Widgets examples to make and edit waveforms and a synthesizer for Android devices.

Paul's Extreme Sound Stretch. Stretches audio files. FLTK GUI.

GUS patch tools
Gus patch utilities based on timidity-tools.

Midi utilities with GUS support
I'm working on several projects. One of my goals is to be able to port any of the SDL 1.2.x programs I use so they'll work with SDL 1.2.15 or with SDL 2.x. So far, I've added SDL 2 support to PDCurses. I believe some or all of those patches made it back into the official version. Other programs I've added SDL2 support for include bard, picaxo, sfontview, unifontview, perigee, SDL_Draw, pong, drac, yahtzee. More are in the works including Tuxmath. Bard is a lightweight epub reader with text to speech support. Picaxo is a lightweight graphics viewer. Sfontview is a lightweight TrueType font viewer. Unifontview is a font viewer that shows a font's entire character set including Unicode characters supported. Perigee is a graphics slideshow program. SDL_Draw is a graphics library for simple line drawing with SDL. I'm currently using it with wavetools to do the line drawing for a lightweight wave file viewer. The wave file viewer also builds with SDL 1.2.x or SDL 2.x.

Code/patches for many of the modifications I've made are available from a link at:
I'll be adding more modifications to various projects over time. Feel free to write if you're interesting in discussing a particular SDL 2 conversion further.


May. 5th, 2016 12:29 pm
There are now several forks of MinGW and each has its pros and cons. However, there are now enough negatives to using them, that I've found it necessary to build MinGW from scratch myself. The MinGW64 project uses a later version of gcc, has better compatibility for building Open Source projects and has its own thread library instead of using Red Hat's pthreads-w32. Some custom builds of MinGW64 even have POSIX threading set as the default instead of Win32 threading. That means better compatibility for C++ thread related code (since the GNU C++ library relies on POSIX threading for parts of its implementation). The MinGW project has always been more careful about licensing and making sure that the code it was using was properly licensed and legal for usage. The MinGW project did follow the example of the MinGW64 project in one key area. They switched from public domain to a MIT license for their runtime library and Win32 API. When they did so without clearly indicating that an exception could be made similar to the GNU gcc runtime license exception, I felt it was time to stop using that version of the MinGW compiler.

I'm currently working with gcc 4.9.2 compiled from source. I'm still using the older public domain APIs, but I've made several modifications for compatibility with the Win32 API (including some modifications that aren't available in the MinGW64 libraries). I have a minimal thread library that was custom written for portability. It's based on C11 thread support and includes POSIX functionality. The gnu compiler is built with POSIX threads as the default so C++ threading works as expected.

So far, I've had no reason to want to work with any other MinGW forks. The version I have does everything I need and supports all the programs I want to compile on Windows. My particular fork is continually evolving. I continue to add support for new Win32 API changes, Win32 API omissions, new C/C++ features as I need them. At some point, I hope to completely replace the runtime library with code that better supports internationalization (better UTF-8 support), C standard compatibility and other useful features.

If anyone else is finding limitations with the compilers maintained by the various MinGW and MinGW64 projects or other related forks based on these projects, I highly recommending building the GNU compiler from source on your own with the options you need most. If you're interested in discussing the GNU compiler further or want to know more about my modifications, you're welcome to use the CppDesign mailing list ( ) as a forum for further discussion.

July 2017

234 5678


RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 20th, 2017 12:56 pm
Powered by Dreamwidth Studios