Re: git: 6368dcb29228 - main - bsdinstall hostname: Replace dialog with bsddialog

From: Jessica Clarke <jrtc27_at_freebsd.org>
Date: Wed, 13 Jul 2022 23:53:17 UTC
On 24 May 2022, at 13:20, Alfonso S. Siciliano <asiciliano@FreeBSD.org> wrote:
> 
> The branch main has been updated by asiciliano:
> 
> URL: https://cgit.FreeBSD.org/src/commit/?id=6368dcb29228dd8e18d50c54c3ca1596262d4676
> 
> commit 6368dcb29228dd8e18d50c54c3ca1596262d4676
> Author:     Alfonso S. Siciliano <asiciliano@FreeBSD.org>
> AuthorDate: 2022-05-24 12:04:24 +0000
> Commit:     Alfonso S. Siciliano <asiciliano@FreeBSD.org>
> CommitDate: 2022-05-24 12:20:22 +0000
> 
>    bsdinstall hostname: Replace dialog with bsddialog
> 
>    Replace (LGPL) dialog utility with (BSD-2-Clause) bsddialog utility.
>    Add --hline info because bsddialog requires TAB to switch the focus on
>    buttons for an inputbox, dialog differs.

This is quite infuriating and bad UI/UX, everyone knows you can just
type and press enter at these kinds of dialogues, yet bsddialog doesn’t
support this. Are there any plans to address this shortcoming so
bsddialog can work like every other dialogue box out there and how most
users would expect? This is an unfortunate regression over (LGPL)
dialog and I personally believe bsddialog should have been fixed rather
than introducing this clunky experience to document the flaw.

Jess

>    Delete f_dialog_inputbox_size() using libbsddialog autosizing.
> 
>    Reviewed by:            bapt
>    Differential Revision:  https://reviews.freebsd.org/D35285
> ---
> usr.sbin/bsdinstall/scripts/hostname | 14 ++++++--------
> 1 file changed, 6 insertions(+), 8 deletions(-)
> 
> diff --git a/usr.sbin/bsdinstall/scripts/hostname b/usr.sbin/bsdinstall/scripts/hostname
> index b151ef15c690..23adbe68ead0 100755
> --- a/usr.sbin/bsdinstall/scripts/hostname
> +++ b/usr.sbin/bsdinstall/scripts/hostname
> @@ -48,6 +48,8 @@ f_include $BSDCFG_SHARE/dialog.subr
> 
> ############################################################ GLOBALS
> 
> +: ${BSDDIALOG_CANCEL=1}
> +
> #
> # Strings that should be moved to an i18n file and loaded with f_include_lang()
> #
> @@ -71,21 +73,17 @@ SET_HOSTNAME='hostname -s "%s"'
> dialog_hostname()
> {
> 	local prompt="$msg_please_choose_a_hostname"
> -	local hline=
> +	local hline="Use TAB and Enter to select $msg_ok"
> 	local value="$*"
> 
> -	local height width
> -	f_dialog_inputbox_size height width \
> -		"$DIALOG_TITLE" "$DIALOG_BACKTITLE" "$prompt" "$value" "$hline"
> -
> -	$DIALOG \
> +	bsddialog \
> 		--title "$DIALOG_TITLE"         \
> 		--backtitle "$DIALOG_BACKTITLE" \
> 		--hline "$hline"                \
> 		--ok-label "$msg_ok"            \
> 		--no-cancel                     \
> 		--inputbox "$prompt"            \
> -		$height $width "$value"         \
> +		0 56 "$value"                   \
> 		2>&1 >&$DIALOG_TERMINAL_PASSTHRU_FD
> }
> 
> @@ -101,7 +99,7 @@ f_dialog_backtitle "$msg_freebsd_installer"
> # Get user input
> #
> HOSTNAME=$( dialog_hostname "$HOSTNAME" )
> -[ $? -eq $DIALOG_CANCEL ] && exit 1
> +[ $? -eq $BSDDIALOG_CANCEL ] && exit 1
> 
> #
> # Store the user's choice