Mailinglist Archive: opensuse (963 mails)

< Previous Next >
Re: [opensuse] BASH - 'dialog' and oldie but a goodie
  • From: David Haller <dnh@xxxxxxxxxxxx>
  • Date: Sat, 20 Nov 2010 03:00:11 +0100
  • Message-id: <20101120020011.GA27913@xxxxxxxxxxxxxxxxx>
Hello,

On Fri, 19 Nov 2010, David C. Rankin wrote:
Stumbling around some more turned up the following list of scriptable
text & X
GUIs. All basically do the same thing, but the flexibility of some is better
than the other. They are all worth a look depending on the project you have in
front of you:

dialog
cdialog
Xdialog
gdialog
kdialog
zenity

And some are also "calling compatible", have a look at
texconfig-dialog. IIRC: dialog, kdialog and gdialog have a common
basic interface (e.g. the same "yesno" option). So you can often do a
test for X ($DISPLAY or more reliably a specific test[1]), set a
variable $DIALOG accordingly to "dialog" or e.g. "kdialog" and the
just use

$DIALOG --yesno "You want fries with that?" 5 30

(just tested the above with $DIALOG being dialog, kdialog and gdialog :)

-dnh

[1] I've a self-written "Xruns" that tests if X is actually running
and not whether just "DISPLAY" is set.

==== Xruns.c ====
/* Copyleft (l) 2003-2010 David Haller <dnh@xxxxxxxxxxxx>
compile with e.g.:
gcc -O2 -lX11 -o Xruns Xruns.c
gcc $CFLAGS -lX11 -o Xruns Xruns.c
gcc $(rpm --eval '%{optflags}') -lX11 -o Xruns Xruns.c
*/
#include <unistd.h>
#include <X11/Xlib.h>

int main(int argc, char* argv[]) {
Display* disp = NULL;
if(argc > 2) {
write(2, "Usage: Xruns [display]\n", 24);
} else if(argc == 2) {
disp = XOpenDisplay(argv[1]);
} else {
disp = XOpenDisplay(NULL);
}
if( disp != NULL ) {
XCloseDisplay(disp);
return 0;
}
return 1;
}
====

I use it for several stuff, in above context, I'd use:

if Xruns; then
DIALOG="gdialog"
else
DIALOG="dialog"
fi
...
$DIALOG --yesno ...

--
"Now, what was I doing before I so rudely interrupted myself?"
--
To unsubscribe, e-mail: opensuse+unsubscribe@xxxxxxxxxxxx
For additional commands, e-mail: opensuse+help@xxxxxxxxxxxx

< Previous Next >
Follow Ups