GUI/TUI linux library
Asked Answered
D

8

9

Is there any UI library that can be to build both a text user interface (ncurses) and graphical user interface (GTK? QT?) from the same source? I know that debconf can be used with various frontends, I would like to build something similar but programmable.

Dacoit answered 2/9, 2008 at 18:43 Comment(0)
J
4

The library that powers YaST independence to do ncurses, gtk and qt with one codebase provides what you are looking for, and it is not tied to YaST itself.

Actually libyui only requires the standard C++ library and phtreads (IIRC). The UI plugins require of course the respective libraries (Qt, ncurses). YaST uses libyui via a set of YCP bindings that export a YCP like API on top of libyui.

The library is a bit lowlevel (one layer below an event loop), my colleage Klaus Kämpf wrote about using it some time ago in his blog, including binding to scripting languages it using swig.

The only part that is SUSE specific is the packaging, so you would need to package it yourself. Stackoverflow did not allow me to link more than once. The code of the library is linked from Klaus blog. Replace libyui for "qt" and "ncurses" for the plugin's code.

Also google for "YaST Independence From YCP" to find a blog entry from Andreas Jäger on the subject.

Jerrold answered 28/4, 2010 at 14:31 Comment(1)
Note that there is an ongoing Google SoC project to make libyui even more independent: nbprashanth.wordpress.com/category/gsocJerrold
S
2

you could write your program to uses ncurses, and then use PDCurses to convert it to an X11 application - as the readme advertise.

I know it because I've used it as portable curses, though I've never tested its X11 capabilities

Stirring answered 30/9, 2008 at 23:15 Comment(0)
G
2

Not exactly a library but you could consider writing a web app that degrades well to Lynx

Galateah answered 5/10, 2008 at 17:31 Comment(1)
Good thinking out of the boxTrotline
A
2

The GoboLinux guys have created their own toolkit for python called AbsTK, they use it for their installer, which actually works really good. I have never used the toolkit myself, but the apps built with it seems solid.

Agave answered 5/10, 2008 at 17:37 Comment(0)
K
1

There's Cursed GTK, but it seems a bit dated. I found some references to a port of Qt to ncurses called Qt Console, but it seems to have disappeared.

Kneehigh answered 2/9, 2008 at 20:31 Comment(0)
S
1

By using a library that targets both the text-mode and GUI environments, you have a big risk of getting stuck with the worst of both worlds.

You will be better off structuring your code using the MVC pattern, and providing separate views and controllers for each platform you target. Pushing all the logic down to the model classes has several other benefits:

  • The code will be easier to test because you are forced to keep the user interface out of the actual domain logic.
  • Your program can have user interfaces that have very little in common, e.g. a web UI, or an UI driven by speech.
  • You can run the program easily with no UI at all (i.e. script it) by accessing the model classes directly in the same way that the controller classes do.
Sparkman answered 6/10, 2008 at 11:7 Comment(0)
C
0

Maybe tcl/tk would provide what you want http://www.tcl.tk/

Here's the page on interfacing with curses. There is a claim there of integration with ncurses.

http://www2.tcl.tk/2372

Campstool answered 2/9, 2008 at 19:43 Comment(1)
I know about it running on Graphical environments. Could you link to information about running it on ncurses ?Quiescent
J
0

I think what's used for configuring the linux kernel when compiling is dialog/cdialog/xdialog. But it's been a while since I've compiled a kernel, so my memory may be off. The most promising link I can find is this one for Xdialog.

Joejoeann answered 5/10, 2008 at 17:50 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.