dselect novice mode user interface design
Right, here is the completed version of the message I sent an in-progress
copy of earlier. It's my proposal for the user-friendly interface to
dselect. The whole thing is intended to look fairly dialog-ish, as people
seem to be fairly familiar with dialog and its ilk.
Ian.
Startup screen:
+------------------------------------------------------------------------+
| Debian GNU/Linux `dselect' package handling frontend. |
| +------------------------------------------------------------------+ |
| | install Install and/or upgrade package(s) or system | |
| | remove Remove package(s) currently installed | |
| | fix Attempt to fix broken packages | |
| | | |
| | expert Experts' user interface | |
| | | |
| | quit Quit dselect | |
| +------------------------------------------------------------------+ |
| +----------+ |
| | OK | |
| +----------+ |
+------------------------------------------------------------------------+
| 130Mb free disk space (170Mb used out of 300Mb) on /usr |
| 15Mb of packages are still to be installed; 115Mb will be left. |
+------------------------------------------------------------------------+
| 200 packages available, 200 selected, 178 installed. |
| 20 packages are yet to be installed. |
| 2 packages are on the system, but broken; |
+------------------------------------------------------------------------+
`expert' passes the user on to what is curretnly the dselect main
menu.
`install', `add', `remove' and `fix' vary in their details. Each of
them goes through the access method selection and configuration,
updates the list of available packages, asks the user about some
subset of the packages available and/or installed, and then carries
out the actions they requested.
Each of these options will ask the user about packages whose installed
state doesn't match their desired state, or which have an error flag
set.
Additionally, `install' asks the user about all the packages available
or currently installed; `add' asks the user about packages which are
available but not installed; `remove' asks the user about packages
which are installed. `fix' asks the user only about packages which
aren't in their desired state, as recorded.
This asking happens as follows:
First, for each `status' of package (eg broken ones, new ones, old
ones they might want to remove, etc), there is an introductory screen
which gives them the opportunity to make the same decision for many
packages.
+------------------------------------------------------------------------+
| Attempt to fix broken packages |
| Currently-broken packages - which to retry ? |
| +------------------------------------------------------------------+ |
| | There are currently 2 packages which have not been correctly | |
| | installed or configured. You may try installing them again, | |
| | or (using the `individual' and `list' options) choose to remove | |
| | some of them instead of trying again. | |
| +------------------------------------------------------------------+ |
| +------------------------------------------------------------------+ |
| | all Retry the installation of all broken packages | |
| | individual Decide for each broken package separately | |
| | list Go straight to listing of all broken packages | |
| | none Don't attempt to fix any of them | |
| +------------------------------------------------------------------+ |
| +----------+ +----------+ |
| | OK | | Abort | |
| +----------+ +----------+ |
+------------------------------------------------------------------------+
`individual' presents a screen for each package, and `list' shows a
one-per-line scrollable listing of the packages involved. These
screens are the same for all packages which are being asked about,
regardless of status, and are described below.
+------------------------------------------------------------------------+
| Install and/or upgrade package(s) or system |
| Which new packages do you wish to install ? |
| +------------------------------------------------------------------+ |
| | important Only the most important packages 30Mb | |
| | standard Standard text-mode installation 50Mb | |
| | optional Full-featured installation, with X11 150Mb | |
| | | |
| | priority Select in more detail, grouped by priority | |
| | section Select in more detail, grouped by section | |
| | list Go straight to listing of all those available | |
| | none Install none of the new packages | |
| +------------------------------------------------------------------+ |
| +----------+ +----------+ |
| | OK | | Abort | |
| +----------+ +----------+ |
+------------------------------------------------------------------------+
For upgrades, the user sees:
+------------------------------------------------------------------------+
| Install and/or upgrade package(s) or system |
| Which already-installed packages do you wish to upgrade ? |
| +------------------------------------------------------------------+ |
| | all Upgrade everything to the latest version | |
| | priority Select in more detail, grouped by priority | |
| | section Select in more detail, grouped by section | |
| | list Go straight to listing of all those available | |
| | none Don't upgrade anything | |
| +------------------------------------------------------------------+ |
| +----------+ +----------+ |
| | OK | | Abort | |
| +----------+ +----------+ |
+------------------------------------------------------------------------+
If the user says `important', `standard' or `optional' then new
packages with at least that priority are selected for installation and
others are recorded as deselected (so that they won't, for example,
count as new next time).
If the user selects `priority' or `section' from the new packages or
upgrade screens then they get a screen for each priority or section,
respectively, which looks like this:
+------------------------------------------------------------------------+
| Install and/or upgrade package(s) or system |
| Packages with priority classification `optional' |
| Which new packages with priority `optional' do you wish to install ? |
| +------------------------------------------------------------------+ |
| | all All of them 10Mb | |
| | individual Decide for each package separately | |
| | list Select from a list of the relevant packages | |
| | none None of them 50Mb | |
| +------------------------------------------------------------------+ |
| +----------+ +----------+ |
| | OK | | Abort | |
| +----------+ +----------+ |
+------------------------------------------------------------------------+
When removing, you get the following screen:
+------------------------------------------------------------------------+
| Remove packages from system |
| Which already-installed packages do you wish to remove ? |
| +------------------------------------------------------------------+ |
| | list Select from list of all packages installed | |
| | priority View packages organised by priority | |
| | section View packages organised by section | |
| | none None of them | |
| +------------------------------------------------------------------+ |
| +----------+ +----------+ |
| | OK | | Abort | |
| +----------+ +----------+ |
+------------------------------------------------------------------------+
`priority' and `section' simply present a scrollable list of
priorities and sections, respectively, where selecting a priority or
section produces a list of the appropriate packages.
The individual package selection screen looks like this:
+------------------------------------------------------------------------+
| smail - Electronic mail transport system |
| +--------------------------------------------------------------------+ |
| | Smail is the recommended mail transport agent (MTA) for Debian. | |
| | | |
| | An MTA is the innards of the mail system - it takes messages from | |
| | user-friendly mailer programs and arranges for them to be | |
| | delivered locally or passed on to other systems as required. | |
| | | |
| | In order to make use of it you must have one or more user level | |
| | mailreader programs such as elm, pine, mailx or Emacs (which has | |
| +-----=== press space for more, backspace to go back === 80% ===-----+ |
| |
| Installed, version 3.1.29.1-12 Available: 3.1.29.1-14 |
| +--------------------------------------------------------------------+ |
| | upgrade Upgrade the package to the version available | |
| | stay Stay with this version (do not upgrade) | |
| | remove Remove the package | |
| | purge Remove the package and all its configuration | |
| +--------------------------------------------------------------------+ |
| +------------+ +------------+ +------------+ +------------+ |
| | OK | | Go back | |Concise list| | Abort | |
| +------------+ +------------+ +------------+ +------------+ |
+------------------------------------------------------------------------+
The menu items available vary. There is space for three items, though
sometimes not all of them are present.
The first item will set the desired state to `install'. Its
appearance depends on the current state of the package - one of:
| | install Install the package
| | reinstall Re-install the package to try to fix it
| | upgrade Upgrade the package to the version available
for a deinstalled package, a badly installed package (with the error
flag set, or half-installed, unpacked or half-configured), and a
package which is installed but of which a new version is available,
respectively.
The second item sets the desired state to `purge' or to `stay' (this
will do the same as the `hold' flag does at the moment), depending on
whether it is already installed:
| | not Do not install this package
| | stay Stay with this version (do not upgrade)
The third and fourth items are either
| | remove Remove the package
| | purge Remove the package and all its configuration
(for a package currently installed) or
| | purge Remove the package's configuration
(for a package currently removed but with configs) or absent.
The default will be set to the setting required by any previous
choices (conflicts/dependencies), or to the previously-chosen setting
if there is one, or failing that so as to install new packages with
priority Standard or better and not to install others.
If you select concise list (by tabbing, as in dialog) you go from a
package-by-package display to the listing which shows one package per
line:
+------------------------------------------------------------------------+
| New versions of packages available, priority `important' |
+------------------------------------------------------------------------+
| [install] smail Electronic mail transport system |
| [upgrade] dpkg Package maintenance system for Debian GNU/L |
| [stay ] xserver-s3 XFree86 3.1.2 S3 server |
. ... ... ... lots more of these ... .
| [not ] joe Joe's Own Editor - A Free ASCII-Text Screen |
+-----=== press space for more, backspace to go back === 90% ===---------+
| +------------+ +------------+ +------------+ |
| | OK | | Details | | Abort | |
| +------------+ +------------+ +------------+ |
+------------------------------------------------------------------------+
| Use the spacebar to change the setting for a package. |
+------------------------------------------------------------------------+
When the user has been through all the packages, before dselect
actually does anything, it checks the conflicts and dependencies. For
each problem it finds it displays a screen looking like this:
+------------------------------------------------------------------------+
| Install/upgrade - Conflict/dependency check |
| +------------------------------------------------------------------+ |
| | You have selected to install: | |
| | smail - Electronic mail transport system. | |
| | | |
| | This package recommends that you install one of: | |
| | pine - An e-mail user agent with MIME and IMAP support | |
| | mailx - A simple user interface to sending and receiving | |
| | elm - A full screen ELectronic Mail interactive user | |
| +--=== press space for more, backspace to go back === 85% ===------+ |
| |
| How about installing pine ? |
| +------------------------------------------------------------------+ |
| | ok Select pine for installation | |
| | remove Choose not to install smail | |
| | list Select which of these packages you want from a list | |
| | details Show technical details of the dependency | |
| | override Override recommendation - may cause problems later | |
| +------------------------------------------------------------------+ |
| +----------+ +----------+ |
| | OK | | Abort | |
| +----------+ +----------+ |
+------------------------------------------------------------------------+
Overridden recommendations don't stay overridden from one dselect run
to the next.
Reply to: