Catch up on stories from the past week (and beyond) at the Slashdot story archive


Forgot your password?

Slashdot videos: Now with more Slashdot!

  • View

  • Discuss

  • Share

We've improved Slashdot's video section; now you can view our video interviews, product close-ups and site visits with all the usual Slashdot options to comment, share, etc. No more walled garden! It's a work in progress -- we hope you'll check it out (Learn more about the recent updates).

GUI Software

Which Text-Based UI Do You Code With? 211

Posted by Cliff
from the ain't-nothin'-wrong-wit-curses dept.
JHWH asks: "I've been asked to design and implement a management software system with text based user interface as the replacement of an older one running on AS/400. Despite my attempts towards a web UI, the customer is actually willing to have a text based UI. The main reasons are the need for a very low bandwidth and the ability to run on serial terminals. All this in the 21st century! Host systems will be Linux, the language will be C or C++. I already thought about the use of text based browsers like lynx or links. So now I have to wipe the dust away from my ncurses manual, or can Slashdot suggest something more effective?"
This discussion has been archived. No new comments can be posted.

Which Text-Based UI Do You Code With?

Comments Filter:
  • by caseih (160668) on Thursday January 04, 2007 @11:11PM (#17469032)
    Seems like the bulk of the UI logic would be easier to develop and more error-free if done in python. python could then tie into the C/C++ backend code where necessary. From my casual search of google, python and (n)curses work very well together.
  • Try Charva (Score:2, Informative)

    by jpavel (129734) <jpavel@alum[ ] ['.mi' in gap]> on Thursday January 04, 2007 @11:22PM (#17469100)
    Charva [] is an curses-based, Java text UI toolkit that is modeled after Swing. If you know Java and Swing, using Charva is quite straightforward, and won't require you to muck around writing your own text widgets.
  • Slang (Score:3, Informative)

    by John Hasler (414242) on Friday January 05, 2007 @12:06AM (#17469404) Homepage
    S-lang, possibly with libnewt:

    slang1 - The S-Lang programming library - runtime version.
    Description: The S-Lang programming library - runtime version
      S-Lang is a C programmer's library that includes routines for the rapid
      development of sophisticated, user friendly, multi-platform applications.

    libslang1 - The S-Lang programming library - runtime version
    libslang1-dev - The S-Lang programming library, development version
    libslang1-pic - The S-Lang programming library, shared library subset kit
    libslang1-utf8 - The S-Lang programming library with utf8 support
    libslang1-utf8-dev - The S-Lang programming library, development version with utf8 support
    libslang1-utf8-pic - The S-Lang programming library, shared library subset with utf8 support
    libslang2 - The S-Lang programming library - runtime version
    libslang2-dev - The S-Lang programming library, development version
    libslang2-pic - The S-Lang programming library, shared library subset kit
    libterm-slang-perl - perl interface to the S-Lang terminal library
    slang-cfitsio - read and write FITS files from S-Lang
    slang-curl - transfer files using HTTP and FTP from S-Lang
    slang-gdbm - access to GDBM databases from S-Lang
    slang-gsl - GNU Scientific Library binding for S-Lang
    slang-gtk - binds the GIMP Toolkit (GTK) to the S-Lang scripting language
    slang-histogram - create and manipulate histograms from S-Lang
    slang-pvm - PVM (Parallel Virtual Machine) interface for S-Lang
    slang-slirp - C code generator for the S-Lang scripting language
    slang-tess - regression testing system for the S-Lang scripting language

    libnewt0 - Not Erik's Windowing Toolkit - text mode windowing with slang
    Description: Not Erik's Windowing Toolkit - text mode windowing with slang
      Newt is a windowing toolkit for text mode built from the slang library.
      It allows color text mode applications to easily use stackable windows,
      push buttons, check boxes, radio buttons, lists, entry fields, labels,
      and displayable text. Scrollbars are supported, and forms may be nested
      to provide extra functionality. This package contains the shared library
      for programs that have been built with newt.

    libnewt-dev - Developer's toolkit for newt windowing library
    libnewt-perl - Perl bindings for Erik Troan's newt text-mode windowing toolkit
    libnewt-pic - Not Erik's Windowing Toolkit, shared library subset kit
    libnewt0.52 - Not Erik's Windowing Toolkit - text mode windowing with slang
    newt-tcl - A newt module for Tcl
    pike7.6-pexts-newt - Pike Newt module
    python-newt - A NEWT module for Python
    whiptail - Displays user-friendly dialog boxes from shell scripts

  • by jonabbey (2498) * <> on Friday January 05, 2007 @12:09AM (#17469434) Homepage

    It 2007, and my browser uses Java 1.4.2 because a basic corporate app won't run on 1.5. You would recognize the company, We're a big Java supporter.

    That's one of the things that Java Web Start gives you. You can have several versions of Java installed concurrently, and the JNLP launch file can specify which versions of Java are known to be compatible. If you don't have a compatible version, Java Web Start can even offer to go out and download the appropriate version for you.

    We've been deploying our Java app using Java Web Start since the 1.3 days. If your app doesn't support Java Web Start, your developers are doing you a major disservice.

  • by scdeimos (632778) on Friday January 05, 2007 @02:41AM (#17470318)
    DesqView, PCtools for DOS.

    Except that it sounds like the client (probably a bank or a lotto agency) already has a considerable investment in serial terminals, so no DOS for you: The main reasons are the need for a very low bandwidth and the ability to run on serial terminals.

  • by dna_(c)(tm)(r) (618003) on Friday January 05, 2007 @08:16AM (#17471866)

    A web application that depends on Java in the browser probably uses applets. That is not the best way to solve any problem since there are dependencies out of the programmers control (versions of Java on the client, browser problems,...), it is similar to a (windows only) ActiveX dependency.

    Java Webstart is very different, it handles deploying Java Applications (typically Swing UI based impementations, nothing to do with Applets or JApplets), resolves Java version dependencies etc. Webstart uses any Java version since 1.3 and any browser to download the initial jnlp file (the launch file, an xml file containing download, security and configuration data) and start the javaws process. The application runs outside the browser context, stand alone.

    If you still use 1997 technology (applets) then you're probably encountering the 1997's problems. Knowledge has evolved since those days.

  • by ByTor-2112 (313205) on Friday January 05, 2007 @10:53AM (#17473224)
    "Try to find a terminal"? They already have terminals, which need to be used. The point of ncurses would be consistency without worrying about what terminal is being used.

    To not use a terminal library like ncurses is completely stupid. To make a decent app, you would have to write the same support functions for various ops that ncurses provides already -- and it will likely handle quirks that you aren't even aware of but the almost 15 years of ncurses development have long since accounted for.

    The only question to ask is which terminal library to use. Ncurses is widely available and extremely portable, but there are alternatives such as S-Lang.

    Most people seem to think that pretty GUIs with clicky buttons and dialog boxes are awesome, but I personally find full text interfaces to be much faster and efficient. Just think about what your brain has to do to switch from typing on a keyboard to moving your hand to a mouse, locating/tracking a mouse cursor with your eyes and coordinating clicking on a button... Even though you or I know that one can simply hit enter or tab to go to the next field, how often do you see people type their name into a login box then grab the mouse to click down in the password field. That is the epitomy of GUI inefficiency that you can avoid with a text UI.

    Long live the text interfaces!
  • Re:Emacs! (Score:2, Informative)

    by socalian45678 (940808) on Friday January 05, 2007 @12:08PM (#17474488)
    Steve Yegge moved it here: []
  • by kfg (145172) on Friday January 05, 2007 @05:10PM (#17480218)
    I find it interesting that instead of actually commenting on what I said, you go for the "I'm older and wiser don't argue with me" BS.

    I did no such fucking thing and I resent the assertion. I was clearly falling back on childish posturing.

    Basically, I used my experience, education and what info the guy/gal gave /. to form an opinion. Care to do the same? You know, instead of this childish posturing.

    Well, D'oh! See above.

    Of course I did so in part because, basically:

    . . ."I used my experience, education and what info the guy/gal gave /. to form an opinion. Care to do the same? You know, instead of this childish posturing."

    You did no such thing. You presented a subjective feeling on the matter. Since there is nothing factually wrong with your subjective feeling you are welcome to it. There is nothing for me to argue with on a rational basis. I like red; you like blue. I don't condsider you not liking red to be some sort of attack on me personally.

    The guy/gal/thing gave no actual information on the needed application at all. He/she/it was being too weirded out by the idea that someone wasn't all hep about his/her/its web based solution when everyone knows that Web 2.0 is where it's at; for everything, all the time. I yanked at his/her/its chain a bit by suggesting that text was a viable text based interface. And it is. Sometimes. But I don't know if it is in his/her/its case; because I haven't a fucking clue what that case is.

    And neither do you. But plain text at the console makes you feel like you're looking at a shell script and you don't feel that a shell script is a real application. Well, ok. If that's your thing/hangup/feeling. Coulda been worse; coulda been your My Little Pony collection or something, which still would have been no nevermind to me.

    So I acted silly; even to the point of posturing childishly. Quite on purpose. I do that sometimes. It's my subjective feeling and I'm welcome to it. It isn't an attack on your selfworth.

    I've got another subjective feeling; he/she/it is the wrong person/thing for the client; but he/she/it might, if he/she/it keeps its mind open and is willing to think about things and consider my suggestion: become the right person in the process of actually doing the job.

    And that would be good for he/she/it.

    I'll end by restating and expanding my suggestion somewhat:

    When presented with a task do not think in terms of a specific language, interface, solution as your first step. First; define the need.

    Then find the simplest solution to that need. Don't add complimications until you need to. Otherwise you're just playing with yourself at your employers expense. Not a bad job, but not necesarily ethical; and you might even get caught.

    If your employer wants to pay you to watch, or play with him/her/it; and you are a consenting programmer; well, that's no nevermind to me. That's a subjective thing. Work it out between yourselves. Within reasonable limits the subjective feelings of the employer are even one of the objective programming needs to be met. Maybe he can't work unless there are My Little Pony gifs all over his desktop or something.

    But I get the impression that does not describe the specific client in question. I'd hazard a guess, based on the meager information available; that the client would cream their/her/his/its jeans if their need could be met with a six line shell script.

    Maybe someone should ask 'em if that's the case and clarify the issue.


It is the quality rather than the quantity that matters. - Lucius Annaeus Seneca (4 B.C. - A.D. 65)