NOTE WELL: The default mode of this binary release is now mode B (forced bash). However, the github source code branches will be updated for both forced Bash (github branch bash_default) and forced legacy gtkdialog mode (github branch sh_default). For ease of implementation/use, DebianDog distributions currently prefer forced Bash mode (github branch bash_default).
Since this is first public (with source code) release, I am providing public downloads here for cutting-edge use on DebianDogs or Puppy Linux. I also want to avoid cluttering up main gtkwialog development programming topic threads (one started later may be merged back in to original dev thread), which contains some early documentation details:
http://www.murga-linux.com/puppy/viewtopic.php?t=113497
http://www.murga-linux.com/puppy/viewtopic.php?t=113598
--------------------------------
This is a first release of this version. Some of its functionality hasn't yet been tested at all (in particular: in-line -a, -b, -S modes). However, there has now been quite a bit of testing for running legacy gtkdialog apps on systems that use dash or ash or bash as there systems shells - so far most programs have worked without modification (apart from a few that needed their script shebang fixed to indicate they used bash functionality in their scripting (i.e. bashisms).
Since, by default, gtkwialog provides 100% drop-in replacement for legacy gtkdialog, previous gtkdialog-based apps can be tested by making gtkdialog a symlink to gtkwialog (USUAL DISCLAIMERS APPLY i.e. at your own risk, so back up your old gtkdialog before testing; however there have been no reports of any bugs).
Code: Select all
gtkwialog -v
gtkwialog version 0.8.7 release (C) 2003-2007 Laszlo Pere, 2011-2012 Thunor, 2018 William McEwan
Built with support for: GTK+ 2, Glade, VTE.
From gtkwialog's source code provided README:
Gtkwialog is a fork of Gtkdialog, which provides alternative
<action> and <input> commandlinestring exec modes.
Should you ever want to force legacy gtkdialog mode, where /bin/sh is always used (rather than the default B mode = forced bash)
start your program with:
env GTKWMODE=S program_name
or alternatively, export GTKWMODE=S earlier into the environment.
However, in general, programs will simply work by default, no matter the system shell when gtkwialog is being used rather than legacy gtkdialog.
Naturally, if the main script ever employs bash functionality (bashisms),
such as export -f functionname, than the script shebang used must be
#!/bin/bash.
With no additional options specified via the environment, commandline
arguments or inline <action> or <input> commands, the default mode
of gtkwialog is 100% drop-in replacement for legacy gtkdialog. The default B (forced bash) mode can be changed, in increasing order of precedence, by:
1. setting optional environment variable GTKWMODE=?, where ? can be
a for glib async non-blocking (internally uses no shell process);
b for glib sync blocking (internally uses no shell process);
S to force /bin/sh (legacy gtkdialog mode);
unset, B, or anything else, means uses "default bash mode", which will
in any case will still work as a drop-in 100% legacy gtkdialog compatible
replacement (just make gtkdialog a symlink to gtkwialog).
2. The environment exec mode can be overwritten by cmdline args:
-a for glib async non-blocking; -b for glib sync blocking mode.
No commandline option is provides for S mode (so set GTKWMODE=S if
you happen to want the old (/bin/sh) legacy mode for whole dialog).
Forced bash B mode is otherwise the default mode.
3. Any action/input exec mode can be overwritten by inline <action> or
<input> args:
-a; -b; -B to uses /bin/bash with modded system calls; -S to use
legacy /bin/sh mode.
Current binary release is for 64bit systems (was developed and compiled on XenialDog64 (which conveniently allowed me to try with /bin/sh -> dash shell). I will compile and upload a 32bit version of the binary in a day or two probably.
Source code for this public test release is provided (at DebianDog repository):
https://github.com/DebianDog/Gtkwialog
Note that the organisation of this repository has been changed. The branch bash_default is now the default master branch (there is no branch named master) since that is what the current preferred binary is compiled from.
wiak