whiptail or dialog
up vote
12
down vote
favorite
I am going to create script which will use user input, so I decided to use whiptail, but little bit confuse that which one is portable and will work in ubuntu 10.x and higher and CentOs5.x and higher.
I know read
, but I want dialog like tool, so if anybody know any alternative just let me know.
bash shell-script whiptail dialog
add a comment |
up vote
12
down vote
favorite
I am going to create script which will use user input, so I decided to use whiptail, but little bit confuse that which one is portable and will work in ubuntu 10.x and higher and CentOs5.x and higher.
I know read
, but I want dialog like tool, so if anybody know any alternative just let me know.
bash shell-script whiptail dialog
add a comment |
up vote
12
down vote
favorite
up vote
12
down vote
favorite
I am going to create script which will use user input, so I decided to use whiptail, but little bit confuse that which one is portable and will work in ubuntu 10.x and higher and CentOs5.x and higher.
I know read
, but I want dialog like tool, so if anybody know any alternative just let me know.
bash shell-script whiptail dialog
I am going to create script which will use user input, so I decided to use whiptail, but little bit confuse that which one is portable and will work in ubuntu 10.x and higher and CentOs5.x and higher.
I know read
, but I want dialog like tool, so if anybody know any alternative just let me know.
bash shell-script whiptail dialog
bash shell-script whiptail dialog
asked Feb 13 '13 at 9:25
Rahul Patil
14.7k186082
14.7k186082
add a comment |
add a comment |
4 Answers
4
active
oldest
votes
up vote
12
down vote
accepted
whiptail
is installed by default on most deb-based systems, while dialog
is not.
Afair, on rpm-based whiptail
is also default dialog app.
I guess it matters for you.
So whiptail
is the right choice from point of portability.
Also whiptail
is based on newt
, while dialog
is based on ncurses
. From my point of view, the first one is more beautiful (:
good to know extra info :)
– Rahul Patil
Feb 13 '13 at 14:20
2
The script might be more or less portable, but the dialog program itself is no less portable than whiptail.
– Thomas Dickey
Oct 29 '15 at 22:45
add a comment |
up vote
8
down vote
Why not use both:
(Requires bash 4)
#!/usr/bin/env bash
t(){ type "$1"&>/dev/null;}
function Menu.Show {
local DIA DIA_ESC; while :; do
t whiptail && DIA=whiptail && break
t dialog && DIA=dialog && DIA_ESC=-- && break
exec date +s"No dialog program found"
done; declare -A o="$1"; shift
$DIA --backtitle "${o[backtitle]}" --title "${o[title]}"
--menu "${o[question]}" 0 0 0 $DIA_ESC "$@"; }
Menu.Show '([backtitle]="Backtitle"
[title]="Title"
[question]="Please choose:")'
"Option A" "Stuff...."
"Option B" "Stuff...."
"Option C" "Stuff...."
So complicated. Why not something like this:which whiptail && window=whiptail; which dialog && window=dialog; [ -z window ] && echo "no whiptail or dialog"
. Then the op can just do ` $window --title foo --msgbox bar 87 5 `.
– James M. Lay
Jul 29 '17 at 17:42
add a comment |
up vote
6
down vote
(This is not necessarily an answer, but I posted as such due to the amount of code. I have no practical experience with whiptail
. Will delete this later if a whiptail
user posts a tested solution on this.)
As Bash Shell Scripting/Whiptail writes:
From its README: whiptail is designed to be drop-in compatible with
dialog(1), but has less features: some dialog boxes are not
implemented, such as tailbox, timebox, calendarbox, etc.
That means you not necessarily have to decide for one or the other. Just detect which one is available then let the script use it:
# check whether whiptail or dialog is installed
# (choosing the first command found)
read dialog <<< "$(which whiptail dialog 2> /dev/null)"
# exit if none found
[[ "$dialog" ]] || {
echo 'neither whiptail nor dialog found' >&2
exit 1
}
# just use whichever was found
"$dialog" --msgbox "Message displayed with $dialog" 0 0
(Yes, the above detection will fail on tools installed inside directories with name containing newline characters. I just kept it simple.)
add a comment |
up vote
1
down vote
According to the COMPATIBILITY section of the dialog(1) manual page:
Then there is whiptail. For practical purposes, it is maintained by Debian (very little work is done by its upstream developers). Its documentation (README.whiptail) claims
whiptail(1) is a lightweight replacement for dialog(1),
to provide dialog boxes for shell scripts.
It is built on the newt windowing library rather than the ncurses library, allowing it to be smaller in embedded environments such as installers,
rescue disks, etc.
whiptail is designed to be drop-in compatible with dialog, but has less features: some dialog boxes are not implemented, such as tailbox, timebox, calendarbox, etc.
Comparing actual sizes (Debian testing, 2007/1/10): The total of sizes for whiptail, the newt, popt and slang libraries is 757 KB. The comparable number for dialog (counting ncurses) is 520 KB. Disregard the first paragraph.
The second paragraph is misleading, since *whiptail** also does not work for common options of dialog, such as the gauge box. whiptail is less compatible with dialog than the original mid-1990s dialog 0.4 program.
whiptail's manpage borrows features from dialog, e.g., but oddly cites only dialog versions up to 0.4 (1994) as a source. That is, its manpage refers to features which were borrowed from more recent versions of dialog, e.g.,
--gauge (from 0.5)
--passwordbox (from Debian changes in 1999),
--default-item (from dialog 2000/02/22),
--output-fd (from dialog 2002/08/14).
Somewhat humorously, one may note that the popt feature (undocumented in its manpage) of using a "--" as an escape was documented in dialog's manpage about a year before it was mentioned in whiptail's manpage. whiptail's manpage incorrectly attributes that to getopt (and is inaccurate anyway).
add a comment |
4 Answers
4
active
oldest
votes
4 Answers
4
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
12
down vote
accepted
whiptail
is installed by default on most deb-based systems, while dialog
is not.
Afair, on rpm-based whiptail
is also default dialog app.
I guess it matters for you.
So whiptail
is the right choice from point of portability.
Also whiptail
is based on newt
, while dialog
is based on ncurses
. From my point of view, the first one is more beautiful (:
good to know extra info :)
– Rahul Patil
Feb 13 '13 at 14:20
2
The script might be more or less portable, but the dialog program itself is no less portable than whiptail.
– Thomas Dickey
Oct 29 '15 at 22:45
add a comment |
up vote
12
down vote
accepted
whiptail
is installed by default on most deb-based systems, while dialog
is not.
Afair, on rpm-based whiptail
is also default dialog app.
I guess it matters for you.
So whiptail
is the right choice from point of portability.
Also whiptail
is based on newt
, while dialog
is based on ncurses
. From my point of view, the first one is more beautiful (:
good to know extra info :)
– Rahul Patil
Feb 13 '13 at 14:20
2
The script might be more or less portable, but the dialog program itself is no less portable than whiptail.
– Thomas Dickey
Oct 29 '15 at 22:45
add a comment |
up vote
12
down vote
accepted
up vote
12
down vote
accepted
whiptail
is installed by default on most deb-based systems, while dialog
is not.
Afair, on rpm-based whiptail
is also default dialog app.
I guess it matters for you.
So whiptail
is the right choice from point of portability.
Also whiptail
is based on newt
, while dialog
is based on ncurses
. From my point of view, the first one is more beautiful (:
whiptail
is installed by default on most deb-based systems, while dialog
is not.
Afair, on rpm-based whiptail
is also default dialog app.
I guess it matters for you.
So whiptail
is the right choice from point of portability.
Also whiptail
is based on newt
, while dialog
is based on ncurses
. From my point of view, the first one is more beautiful (:
answered Feb 13 '13 at 10:08
rush
19k46194
19k46194
good to know extra info :)
– Rahul Patil
Feb 13 '13 at 14:20
2
The script might be more or less portable, but the dialog program itself is no less portable than whiptail.
– Thomas Dickey
Oct 29 '15 at 22:45
add a comment |
good to know extra info :)
– Rahul Patil
Feb 13 '13 at 14:20
2
The script might be more or less portable, but the dialog program itself is no less portable than whiptail.
– Thomas Dickey
Oct 29 '15 at 22:45
good to know extra info :)
– Rahul Patil
Feb 13 '13 at 14:20
good to know extra info :)
– Rahul Patil
Feb 13 '13 at 14:20
2
2
The script might be more or less portable, but the dialog program itself is no less portable than whiptail.
– Thomas Dickey
Oct 29 '15 at 22:45
The script might be more or less portable, but the dialog program itself is no less portable than whiptail.
– Thomas Dickey
Oct 29 '15 at 22:45
add a comment |
up vote
8
down vote
Why not use both:
(Requires bash 4)
#!/usr/bin/env bash
t(){ type "$1"&>/dev/null;}
function Menu.Show {
local DIA DIA_ESC; while :; do
t whiptail && DIA=whiptail && break
t dialog && DIA=dialog && DIA_ESC=-- && break
exec date +s"No dialog program found"
done; declare -A o="$1"; shift
$DIA --backtitle "${o[backtitle]}" --title "${o[title]}"
--menu "${o[question]}" 0 0 0 $DIA_ESC "$@"; }
Menu.Show '([backtitle]="Backtitle"
[title]="Title"
[question]="Please choose:")'
"Option A" "Stuff...."
"Option B" "Stuff...."
"Option C" "Stuff...."
So complicated. Why not something like this:which whiptail && window=whiptail; which dialog && window=dialog; [ -z window ] && echo "no whiptail or dialog"
. Then the op can just do ` $window --title foo --msgbox bar 87 5 `.
– James M. Lay
Jul 29 '17 at 17:42
add a comment |
up vote
8
down vote
Why not use both:
(Requires bash 4)
#!/usr/bin/env bash
t(){ type "$1"&>/dev/null;}
function Menu.Show {
local DIA DIA_ESC; while :; do
t whiptail && DIA=whiptail && break
t dialog && DIA=dialog && DIA_ESC=-- && break
exec date +s"No dialog program found"
done; declare -A o="$1"; shift
$DIA --backtitle "${o[backtitle]}" --title "${o[title]}"
--menu "${o[question]}" 0 0 0 $DIA_ESC "$@"; }
Menu.Show '([backtitle]="Backtitle"
[title]="Title"
[question]="Please choose:")'
"Option A" "Stuff...."
"Option B" "Stuff...."
"Option C" "Stuff...."
So complicated. Why not something like this:which whiptail && window=whiptail; which dialog && window=dialog; [ -z window ] && echo "no whiptail or dialog"
. Then the op can just do ` $window --title foo --msgbox bar 87 5 `.
– James M. Lay
Jul 29 '17 at 17:42
add a comment |
up vote
8
down vote
up vote
8
down vote
Why not use both:
(Requires bash 4)
#!/usr/bin/env bash
t(){ type "$1"&>/dev/null;}
function Menu.Show {
local DIA DIA_ESC; while :; do
t whiptail && DIA=whiptail && break
t dialog && DIA=dialog && DIA_ESC=-- && break
exec date +s"No dialog program found"
done; declare -A o="$1"; shift
$DIA --backtitle "${o[backtitle]}" --title "${o[title]}"
--menu "${o[question]}" 0 0 0 $DIA_ESC "$@"; }
Menu.Show '([backtitle]="Backtitle"
[title]="Title"
[question]="Please choose:")'
"Option A" "Stuff...."
"Option B" "Stuff...."
"Option C" "Stuff...."
Why not use both:
(Requires bash 4)
#!/usr/bin/env bash
t(){ type "$1"&>/dev/null;}
function Menu.Show {
local DIA DIA_ESC; while :; do
t whiptail && DIA=whiptail && break
t dialog && DIA=dialog && DIA_ESC=-- && break
exec date +s"No dialog program found"
done; declare -A o="$1"; shift
$DIA --backtitle "${o[backtitle]}" --title "${o[title]}"
--menu "${o[question]}" 0 0 0 $DIA_ESC "$@"; }
Menu.Show '([backtitle]="Backtitle"
[title]="Title"
[question]="Please choose:")'
"Option A" "Stuff...."
"Option B" "Stuff...."
"Option C" "Stuff...."
edited Jul 3 '17 at 12:56
B Layer
3,9741525
3,9741525
answered May 26 '13 at 8:26
Orwellophile
27933
27933
So complicated. Why not something like this:which whiptail && window=whiptail; which dialog && window=dialog; [ -z window ] && echo "no whiptail or dialog"
. Then the op can just do ` $window --title foo --msgbox bar 87 5 `.
– James M. Lay
Jul 29 '17 at 17:42
add a comment |
So complicated. Why not something like this:which whiptail && window=whiptail; which dialog && window=dialog; [ -z window ] && echo "no whiptail or dialog"
. Then the op can just do ` $window --title foo --msgbox bar 87 5 `.
– James M. Lay
Jul 29 '17 at 17:42
So complicated. Why not something like this:
which whiptail && window=whiptail; which dialog && window=dialog; [ -z window ] && echo "no whiptail or dialog"
. Then the op can just do ` $window --title foo --msgbox bar 87 5 `.– James M. Lay
Jul 29 '17 at 17:42
So complicated. Why not something like this:
which whiptail && window=whiptail; which dialog && window=dialog; [ -z window ] && echo "no whiptail or dialog"
. Then the op can just do ` $window --title foo --msgbox bar 87 5 `.– James M. Lay
Jul 29 '17 at 17:42
add a comment |
up vote
6
down vote
(This is not necessarily an answer, but I posted as such due to the amount of code. I have no practical experience with whiptail
. Will delete this later if a whiptail
user posts a tested solution on this.)
As Bash Shell Scripting/Whiptail writes:
From its README: whiptail is designed to be drop-in compatible with
dialog(1), but has less features: some dialog boxes are not
implemented, such as tailbox, timebox, calendarbox, etc.
That means you not necessarily have to decide for one or the other. Just detect which one is available then let the script use it:
# check whether whiptail or dialog is installed
# (choosing the first command found)
read dialog <<< "$(which whiptail dialog 2> /dev/null)"
# exit if none found
[[ "$dialog" ]] || {
echo 'neither whiptail nor dialog found' >&2
exit 1
}
# just use whichever was found
"$dialog" --msgbox "Message displayed with $dialog" 0 0
(Yes, the above detection will fail on tools installed inside directories with name containing newline characters. I just kept it simple.)
add a comment |
up vote
6
down vote
(This is not necessarily an answer, but I posted as such due to the amount of code. I have no practical experience with whiptail
. Will delete this later if a whiptail
user posts a tested solution on this.)
As Bash Shell Scripting/Whiptail writes:
From its README: whiptail is designed to be drop-in compatible with
dialog(1), but has less features: some dialog boxes are not
implemented, such as tailbox, timebox, calendarbox, etc.
That means you not necessarily have to decide for one or the other. Just detect which one is available then let the script use it:
# check whether whiptail or dialog is installed
# (choosing the first command found)
read dialog <<< "$(which whiptail dialog 2> /dev/null)"
# exit if none found
[[ "$dialog" ]] || {
echo 'neither whiptail nor dialog found' >&2
exit 1
}
# just use whichever was found
"$dialog" --msgbox "Message displayed with $dialog" 0 0
(Yes, the above detection will fail on tools installed inside directories with name containing newline characters. I just kept it simple.)
add a comment |
up vote
6
down vote
up vote
6
down vote
(This is not necessarily an answer, but I posted as such due to the amount of code. I have no practical experience with whiptail
. Will delete this later if a whiptail
user posts a tested solution on this.)
As Bash Shell Scripting/Whiptail writes:
From its README: whiptail is designed to be drop-in compatible with
dialog(1), but has less features: some dialog boxes are not
implemented, such as tailbox, timebox, calendarbox, etc.
That means you not necessarily have to decide for one or the other. Just detect which one is available then let the script use it:
# check whether whiptail or dialog is installed
# (choosing the first command found)
read dialog <<< "$(which whiptail dialog 2> /dev/null)"
# exit if none found
[[ "$dialog" ]] || {
echo 'neither whiptail nor dialog found' >&2
exit 1
}
# just use whichever was found
"$dialog" --msgbox "Message displayed with $dialog" 0 0
(Yes, the above detection will fail on tools installed inside directories with name containing newline characters. I just kept it simple.)
(This is not necessarily an answer, but I posted as such due to the amount of code. I have no practical experience with whiptail
. Will delete this later if a whiptail
user posts a tested solution on this.)
As Bash Shell Scripting/Whiptail writes:
From its README: whiptail is designed to be drop-in compatible with
dialog(1), but has less features: some dialog boxes are not
implemented, such as tailbox, timebox, calendarbox, etc.
That means you not necessarily have to decide for one or the other. Just detect which one is available then let the script use it:
# check whether whiptail or dialog is installed
# (choosing the first command found)
read dialog <<< "$(which whiptail dialog 2> /dev/null)"
# exit if none found
[[ "$dialog" ]] || {
echo 'neither whiptail nor dialog found' >&2
exit 1
}
# just use whichever was found
"$dialog" --msgbox "Message displayed with $dialog" 0 0
(Yes, the above detection will fail on tools installed inside directories with name containing newline characters. I just kept it simple.)
edited May 4 '16 at 9:04
Florian
158
158
answered Feb 13 '13 at 10:58
manatwork
21.5k38284
21.5k38284
add a comment |
add a comment |
up vote
1
down vote
According to the COMPATIBILITY section of the dialog(1) manual page:
Then there is whiptail. For practical purposes, it is maintained by Debian (very little work is done by its upstream developers). Its documentation (README.whiptail) claims
whiptail(1) is a lightweight replacement for dialog(1),
to provide dialog boxes for shell scripts.
It is built on the newt windowing library rather than the ncurses library, allowing it to be smaller in embedded environments such as installers,
rescue disks, etc.
whiptail is designed to be drop-in compatible with dialog, but has less features: some dialog boxes are not implemented, such as tailbox, timebox, calendarbox, etc.
Comparing actual sizes (Debian testing, 2007/1/10): The total of sizes for whiptail, the newt, popt and slang libraries is 757 KB. The comparable number for dialog (counting ncurses) is 520 KB. Disregard the first paragraph.
The second paragraph is misleading, since *whiptail** also does not work for common options of dialog, such as the gauge box. whiptail is less compatible with dialog than the original mid-1990s dialog 0.4 program.
whiptail's manpage borrows features from dialog, e.g., but oddly cites only dialog versions up to 0.4 (1994) as a source. That is, its manpage refers to features which were borrowed from more recent versions of dialog, e.g.,
--gauge (from 0.5)
--passwordbox (from Debian changes in 1999),
--default-item (from dialog 2000/02/22),
--output-fd (from dialog 2002/08/14).
Somewhat humorously, one may note that the popt feature (undocumented in its manpage) of using a "--" as an escape was documented in dialog's manpage about a year before it was mentioned in whiptail's manpage. whiptail's manpage incorrectly attributes that to getopt (and is inaccurate anyway).
add a comment |
up vote
1
down vote
According to the COMPATIBILITY section of the dialog(1) manual page:
Then there is whiptail. For practical purposes, it is maintained by Debian (very little work is done by its upstream developers). Its documentation (README.whiptail) claims
whiptail(1) is a lightweight replacement for dialog(1),
to provide dialog boxes for shell scripts.
It is built on the newt windowing library rather than the ncurses library, allowing it to be smaller in embedded environments such as installers,
rescue disks, etc.
whiptail is designed to be drop-in compatible with dialog, but has less features: some dialog boxes are not implemented, such as tailbox, timebox, calendarbox, etc.
Comparing actual sizes (Debian testing, 2007/1/10): The total of sizes for whiptail, the newt, popt and slang libraries is 757 KB. The comparable number for dialog (counting ncurses) is 520 KB. Disregard the first paragraph.
The second paragraph is misleading, since *whiptail** also does not work for common options of dialog, such as the gauge box. whiptail is less compatible with dialog than the original mid-1990s dialog 0.4 program.
whiptail's manpage borrows features from dialog, e.g., but oddly cites only dialog versions up to 0.4 (1994) as a source. That is, its manpage refers to features which were borrowed from more recent versions of dialog, e.g.,
--gauge (from 0.5)
--passwordbox (from Debian changes in 1999),
--default-item (from dialog 2000/02/22),
--output-fd (from dialog 2002/08/14).
Somewhat humorously, one may note that the popt feature (undocumented in its manpage) of using a "--" as an escape was documented in dialog's manpage about a year before it was mentioned in whiptail's manpage. whiptail's manpage incorrectly attributes that to getopt (and is inaccurate anyway).
add a comment |
up vote
1
down vote
up vote
1
down vote
According to the COMPATIBILITY section of the dialog(1) manual page:
Then there is whiptail. For practical purposes, it is maintained by Debian (very little work is done by its upstream developers). Its documentation (README.whiptail) claims
whiptail(1) is a lightweight replacement for dialog(1),
to provide dialog boxes for shell scripts.
It is built on the newt windowing library rather than the ncurses library, allowing it to be smaller in embedded environments such as installers,
rescue disks, etc.
whiptail is designed to be drop-in compatible with dialog, but has less features: some dialog boxes are not implemented, such as tailbox, timebox, calendarbox, etc.
Comparing actual sizes (Debian testing, 2007/1/10): The total of sizes for whiptail, the newt, popt and slang libraries is 757 KB. The comparable number for dialog (counting ncurses) is 520 KB. Disregard the first paragraph.
The second paragraph is misleading, since *whiptail** also does not work for common options of dialog, such as the gauge box. whiptail is less compatible with dialog than the original mid-1990s dialog 0.4 program.
whiptail's manpage borrows features from dialog, e.g., but oddly cites only dialog versions up to 0.4 (1994) as a source. That is, its manpage refers to features which were borrowed from more recent versions of dialog, e.g.,
--gauge (from 0.5)
--passwordbox (from Debian changes in 1999),
--default-item (from dialog 2000/02/22),
--output-fd (from dialog 2002/08/14).
Somewhat humorously, one may note that the popt feature (undocumented in its manpage) of using a "--" as an escape was documented in dialog's manpage about a year before it was mentioned in whiptail's manpage. whiptail's manpage incorrectly attributes that to getopt (and is inaccurate anyway).
According to the COMPATIBILITY section of the dialog(1) manual page:
Then there is whiptail. For practical purposes, it is maintained by Debian (very little work is done by its upstream developers). Its documentation (README.whiptail) claims
whiptail(1) is a lightweight replacement for dialog(1),
to provide dialog boxes for shell scripts.
It is built on the newt windowing library rather than the ncurses library, allowing it to be smaller in embedded environments such as installers,
rescue disks, etc.
whiptail is designed to be drop-in compatible with dialog, but has less features: some dialog boxes are not implemented, such as tailbox, timebox, calendarbox, etc.
Comparing actual sizes (Debian testing, 2007/1/10): The total of sizes for whiptail, the newt, popt and slang libraries is 757 KB. The comparable number for dialog (counting ncurses) is 520 KB. Disregard the first paragraph.
The second paragraph is misleading, since *whiptail** also does not work for common options of dialog, such as the gauge box. whiptail is less compatible with dialog than the original mid-1990s dialog 0.4 program.
whiptail's manpage borrows features from dialog, e.g., but oddly cites only dialog versions up to 0.4 (1994) as a source. That is, its manpage refers to features which were borrowed from more recent versions of dialog, e.g.,
--gauge (from 0.5)
--passwordbox (from Debian changes in 1999),
--default-item (from dialog 2000/02/22),
--output-fd (from dialog 2002/08/14).
Somewhat humorously, one may note that the popt feature (undocumented in its manpage) of using a "--" as an escape was documented in dialog's manpage about a year before it was mentioned in whiptail's manpage. whiptail's manpage incorrectly attributes that to getopt (and is inaccurate anyway).
answered 2 days ago
Buo-Ren Lin
413
413
add a comment |
add a comment |
Thanks for contributing an answer to Unix & Linux Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f64627%2fwhiptail-or-dialog%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown