Looking For Text-Mode Widget Library

I’m looking for a text-mode widget library. Something that has dialog-boxes, etc. for text-mode (curses/console/xterm) programs.

I’ve looked at these so far:

  • tvision/tv/turbovision: Questionable license situation, unsuitable for Debian
  • CDK: Fine on *nix, but unusable on Windows
  • CTK: Not maintained for several years, looks dead, not as good as CDK anyway

I want something with a C library, that supports *nix and Windows, and has support for things like menus, dialog boxes, etc. Any suggestions?

4 thoughts on “Looking For Text-Mode Widget Library

  1. I don’t know of one, but if you do decide to roll your own, please consider writing the API in such a way that it would not be infeasible to plug an X toolkit into it. I’ve been playing with this idea for a while but I’ve never written any code!

    Reply

    jgoerzen Reply:

    Someone else pointed out CK to me, which was based on the Tk API. It seems that it shouldn’t be too hard to make programs compatible with either Tk or CK, though of course you have Tcl along for the ride…

    There was once an anygui project that aimed at grand unification in Python. I thought I also remembered a console Gtk or Qt binding, but I can’t find either of those now.

    Reply

  2. Hi,

    I think there is a mode for curses that does most of this ?

    Aptitude would seem to do what you are looking for if I read your email right ? Have a look at what it uses perhaps.

    Cheers
    DC

    Reply

    jgoerzen Reply:

    curses is rather more low-level than what I’m looking for. curses is what I’d use if I were to write the type of library I’m seeking :-) I have done a fair bit of curses programming in my time, and I’m tired of it.

    ncurses seems to have picked up a little bit of widget stuff lately, I guess I should check into that. My impression the last time I looked at its forms library wasn’t very positive.

    Good suggestion about aptitude; I’ll look into it.

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *