Provided by: xcolorsel_1.1a-23build2_amd64 bug

NAME

       xcolorsel - display contents of rgb.txt files together with color probes.

SYNOPSIS

       xcolorsel [options] [RgbTxtFile]

DESCRIPTION

       This  utility displays the contents of the rgb.txt file (usually found as /usr/lib/X11/rgb.txt) or a file
       with this format specified as the optional [RgbTxtFile] parameter. Each line of this file consists  of  3
       integers  (usually  0-255) representing the RGB values and a nickname for this color separated by spaces.
       The RGB values can be displayed in every color representation X11R5/6 supports. Also it  is  possible  to
       show the values in either resource definition or C-style.  An additional option to display the RGB values
       the  current  server would be able to actually display is also implemented. The main feature of Xcolorsel
       is that a small example tile of each color is also shown.  I will  describe  each  button/X11-control  in
       Xcolorsel's window in the next section.

       This  version has now also support for servers with read only colormaps (That is StaticColor, StaticGray,
       TrueColor). Actually I did not realize that this would be needed before I got a TrueColor server  myself.
       However  since  colors  have to be allocated one by one in these modes, the startup time of xcolorsel has
       reduced dramatically.

USAGE

       Xcolorsel's window is divided into four main parts:

       (Usually) two rows of command buttons.

       The RgbText Widget displaying the input file and (if needed) vertical and/or horizontal scrollbars.

       A message line displaying help messages, comments, or results of commands or actions.

       (Usually) one row of action buttons.  The main (or  better  intended)  difference  between  commands  and
              actions is that action operate on colors selected in the display area and commands perform general
              tasks.

       The  title  bar  of  Xcolorsel's  window should (if supported by the window manager) show the name of the
       current displayed file.

       Depending from the window size the actual layout may differ. Also the names of the buttons may differ (if
       for example a german application default file is used).  However the position and order  of  the  buttons
       and other elements should be the same, s.t. you may rely on the order in which the controls are described
       in this file.

   Command Buttons (first row)
       About me opens a new window displaying an ASCII-Version of this manual page. When this window is open the
       About  me  is  inactive.  In  the lower left edge of this window a Dismiss button can be seen. Press this
       button to dismiss the help window. If the window is to small to display the whole  file  vertical  and/or
       horizontal  scrollbars  are  provided.   The  text  is displayed in a standard Xaw AsciiText Widget. Text
       selection and <Ctrl>-S (search) work as usual. For a full description of the capabilities of this  Widget
       see  the  Athena  Widget  Reference  Manual.  If  the  help  window  is  dismissed the About me button is
       reactivated.

       Fileinfo displays the number of entries in the input file. Also the number of different  RGB  triples  is
       displayed.  Furthermore  the  Xserver is queried to see how many different colors the current server will
       show if given all these values.

       The last value will differ depending on the color depth of the colormaps on the server.  Xfree86  Servers
       usually  use  6  bit for each RGB value yielding to a lower number of different colors on the server than
       different colors are given in the input file where RGB values are usually 8 bit each.

       Grab color.  When you press this button, the cursor changes into a magnification glass with a transparent
       hole at its hot spot. Move this hole over any colored pixel in any window you are interested in and press
       the left button. While the cursor is a magnifying glass Xcolorsel takes over the whole  mouse.  Xcolorsel
       itself ensures that each window the cursor is in is displayed with its correct colormap.

       After you pressed the left button the color selected is searched in the input file.  The color definition
       in  the  current display format is given in the message line. Also the number of acceptable colors, exact
       matches and percentage of equality of the best match are given (if any). (Exception: If display format is
       values from input file each of the 16 bit RGB values is  given  like  with  16  bit  scaled  rgb  but  in
       decimal.)

       Also  the  line  containing  the  best  match  found  is  selected in the RgbText Widget, and the text is
       scrolled, s.t. the line can be seen. The  Best  match,  Previous,  and  Next  actions  are  appropriately
       activated.

       The  algorithm  to  compare  colors  is  (too!)  simple. Two colors R1 G1 B1 and R2 G2 B2 are compared by
       calculating (R1-R2)*(R1-R2) + (G1-G2)*(G1-G2) + (B1-B2)*(B1-B2).  The result is scaled to  0-100%,  where
       100%  means  equivalence  and  0%  is  the  difference  between  black and white (aka between (0,0,0) and
       (255,255,255)). It is ensured that even almost equal colors compare only  up  to  99.99%.  100%  is  only
       possible  for  exact  equivalence.  The  value above which colors are acceptable equal can be changed and
       defaults to 95%.

       Grabbed colors are compared against the color values as they can be realized on the  current  server  not
       the theoretic values from the input file.

       Reverse exchanges the text fore- and background color in the RgbText Widget.

       Default  colors  returns  the  text fore- and background color in the RgbText Widget to the values at the
       start of Xcolorsel. This is (together with Reverse) useful to return to readable text after  you  changed
       to  colors  with  the  Set  foreground  and Set background actions to values making it impossible to read
       anything in the RgbText Widget.

       Quit quits Xcolorsel and closes all its windows.

   Command Buttons (second row)
       Display format displays a submenu that allows you to define the format in  which  color  RGB  values  are
       displayed  (Press  and  hold  left button down over Display format button and release the button over the
       desired format.

       The possible color values are the color formats that X11R5/6 supports.  Values from input  file  displays
       the RGB values like given in the input file (see also comment in Grab color.

       Note that conversion to TekHVC is slow for not trivially short input files.

       While  the  color  conversion  calculation  takes  place  the  cursor  in  the  xcolorsel windows (except
       scrollbars) is changed to a busy cursor and all controls are inactive.

       Note the difference between scaled and truncated rgb formats: Scaled  scales  the  internal  16  bit  RGB
       integer  values  to  4/8/12 bits whereas truncated means the most significant 4/8/12 bits.  Truncated RGB
       values are only supported for compatibility. Their use in new programs is discouraged.

       C-Style is a toggle control switching C support on/off. With C support RGB values are  separated  with  ,
       instead of the / used in X-Windows resource definitions. Also Hex-Numbers are given in the format that is
       needed  in  C  source  codes.  Together with the selection capabilities of the RgbText widget this allows
       inclusion of color definitions in programs or Application Default Files. See next sub section.

       This option is meaningless with the Values from input file display format.

       Show real server values is again a toggle control. If enabled the server is queried which RGB values  for
       each  color  it  is  actually  able  to display. Then these values are displayed instead of the theoretic
       values calculated by Xcolorsel and Xlib itself.

       Note the when searching/grabbing colors Xcolorsel always compares with the color values like  they  would
       be used by the server, because the searched color is also only known by its actually realized values.

       This option is meaningless with the Values from input file display format.

   The RgbText Widget Display area
       In  this  box  (part  of) the input file is displayed. Depending of the length and width of the displayed
       information scrollbars are provided. Each line consists of an example tile of  the  color,  the  defining
       color values in the selected output format, and the nickname of the color.

       The  RgbText  Widget  inherits  all  capabilities  of  the  AsciiText  Widget, s.t.  scrollbars, <Ctrl>-S
       (searching) and selection work as usual. There is only one exception:

       Double clicking with the left button does not select words separated by white  space  but  here  senseful
       subparts.  That  is  double  clicking  in  the nickname selects the whole nickname regardless of included
       whitespace.  Double clicking on the color definitions selects the whole color definition.  If C-Style  is
       selected  the color format prefix is not selected, because it would not be useful to paste this into a C-
       source file.

       This is done to make cutting and pasting color definitions into source codes or Application Default Files
       as convenient as possible.

   The message line
       This line contains one line messages informing you about the state and results of Xcolorsel's actions.

   Action buttons
       Best match selects and scrolls the display to the best match found during the last Grab color, if one was
       found and is not currently selected.

       Previous selects and scrolls the display to the previous (next better) match, if there is one.

       Next selects and scrolls the display to the next (next worse) match, if there is one.

       Set foreground sets the text foreground color in the display window to the color currently selected in it
       (actually the color defined in the line where the first selected character resides).

       Set background sets the text background color in the display window to the color currently selected in it
       (actually the color defined in the line where the first selected character resides).

OPTIONS

       As a standard Xaw application Xcolorsel accepts all standard toolkit options (see X(1)).

       Additional options for Xcolorsel that can also be set via Xresources (mentioned in  parentheses)  in  the
       application default file (or with general resource manager facilities) are:

       -breakpercentage  n  (*.breakPercentage:  n) sets the break percentage to n/100 (n integer).  Colors with
              equivalence equal to or above this value are found and displayed when grabbing colors.  (see  Grab
              color above). This option defaults to 9500.

       -busycursor  cursor (*.busyCursor: cursor) allows you to specify the cursor shown while calculating color
              conversions.

       -color (*.customization: -color) sets the customization resource to  force  use  of  the  Xcolorsel-color
              application  default  file.  If  no application resource file can be found at all, the compiled in
              Xcolorsel-color defaults are used.

       -columns n (*.columns: n) sets the number of character columns initially displayed. This  option  usually
              defaults to 30.

       -cstyle (*.comma: True) lets Xcolorsel startup with C-Style selected.

       -file  filename  (*.file:  filename)  sets  the  file  to  be  read  in and displayed. Default is usually
              /usr/lib/X11/rgb.txt.  You can specify the filename as command  parameter  without  the  prefixing
              -file.

       -grabcursor cursor (*.grabCursor: cursor) allows you to specify the cursor shown while grabbing colors.

       -helpfile  filename  (*.helpfile:  filename ) sets the path to the helpfile. (can also be done at compile
              time in config.h).  If set to the empty string ("", the default). Xcolorsel tries  to  locate  the
              file  with standard X techniques. This usually leads to filenames like /usr/lib/X11/Xcolorsel.help
              or /usr/lib/X11/app-defaults/Xcolorsel.help.  Just trust the make install  created  by  imake.  It
              should  know  where  to  put  the  file.  However  people (read: vendor specific X11 releases) had
              problems with this so /usr/lib/X11/xcolorsel/Xcolorsel.help is now hardcoded in the Imakefile.

       -input, -rgb4, -rgb8, -rgb12, -rgb16, -rgbi, -ciexyz, -cieuvy, -ciexyy, -cielab, -cieluv,  -tekhvc,  -#4,
              -#8,  -#12,  and  -#16 (*.displayFormat: format, where format is one of input, rgb4, rgb8 , rgb12,
              rgb16, rgbi , ciexyz, cieuvy, ciexyy , cielab, cieluv, tekhvc , #rgb,  #rrggbb,  #rrrgggbbb  ,  or
              #rrrrggggbbbb)  lets  Xcolorsel startup displaying in the specified color format.  The default and
              value chosen if set to an undefined string value is input.

       -internal (*.realized: False) lets Xcolorsel startup showing the internal theoretic color values. This is
              the default.

       -maxred n (*.maxRed: n)

       -maxgreen n (*.maxGreen: n)

       -maxblue n (*.maxBlue: n) When reading in the input file Xcolorsel calculates the maximum of each of  the
              input  RGB  values  and  uses this as the maximum (white) value for this component.  Each of these
              option values is incorporated in this calculation for the appropriate color component as if such a
              color would have been read from the input file.  This is implemented to allow input file with more
              (or less) than 8 bit for each RGB value. This options default to 0 but note the next option:

       -maxintensity n (*.maxIntensity: n) is comparable to the last three options but is incorporated into each
              of the color components. This value usually defaults to 255.

       -maxrows n (*.maxRows: n) sets the maximum number of  rows  to  be  displayed  at  the  same  time.  This
              restriction  is  needed  because this many color cells have to be allocated at the Xserver and the
              number of colorcells is usually limited (usually to 256). If Xcolorsel can't  allocate  this  much
              colorcells  a  lower  number  is  chosen and the user is informed via stderr. Only if not a single
              color can be allocated Xcolorsel gives up.  Xcolorsel instructs the window manager  not  to  allow
              resizes  yielding  to  more  lines  getting  displayed. If more lines are displayed in the display
              RgbText Widget area the displayed color examples will be wrong. This option  usually  defaults  to
              30.

       -nocolor  (*.customization:  '')  sets the customization resource to force use of the non-color Xcolorsel
              application default file. If no application resource file can be found at  all,  the  compiled  in
              non-color  Xcolorsel  defaults  are  used.   BTW,  actually  you  have to use " to specify this in
              resource files.

       -realized (*.realized: True) lets Xcolorsel startup showing color values how they are  displayed  on  the
              server.

       -resourcestyle (*.comma: False) lets Xcolorsel startup with C-Style deselected. This is the default.

       -rows  n  (*.rows: n) sets the number of character rows initially displayed. This option usually defaults
              to 10.

       -tilewidth n (*.tilewidth: n) sets the width of the example color tiles measured in spaces.  This  option
              usually defaults to 3.

HISTORY

       Xcolorsel  was  named  xpalette when I wrote it. However there were so many xpalettes that I was asked to
       change its name. Since xpalette is somehow comparable to xfontsel, that is it  shows  you  the  available
       colors and lets you select one, I call it xcolorsel now and hope that there will be no more confusion. So
       when  you  see  a xpalette.tgz, or xpalette-1.0.tar.gz, or xpalette-1.0a.tar.gz it is probably a previous
       version of xcolorsel.

INTERNALS

       Most of the functionality of Xcolorsel is defined in an RgbText Widget.  This is a child of a  TextWidget
       linking  an  RgbSrc and RgbSink Widget together, which are children of AsciiSrc and AsciiSink, resp. Feel
       free to use these Widgets in your own programs. Most of Xcolorsel's  resources  are  resources  of  these
       Widgets.  Interested  programmers  should  be  able  to find all needed information about the programming
       interface of these Widgets in the corresponding .h files (RgbSink.h, RgbSinkP.h , RgbSrc.h,  RgbSrcP.h  ,
       RgbText.h, RgbTextP.h).

       Anyway, I would love to hear if anyone finds a general purpose of any of those widgets. (I can't think of
       any ;-) ).

       If  you  want  to know about the internal structure and names of the Widget tree use editres(1), which is
       part of X11R5/6 and shows this information in a more convenient way than I could ever put in  the  manual
       page.

RESTRICTIONS/MISFEATURES


       Installing  the colormaps of windows the cursor is in during grab of colors is slow.  This is because the
              Athena Widgets intercept ENTER/LEAVE notifications send to Xcolorsel during a pointer grab.  As  a
              work  around  Xcolorsel  asks  for  notification  of  all cursor motions during a pointer grab and
              explicitly queries the X-Window the  pointer  is  in,  thus  causing  ex(t/p)ensive  server/client
              communication.

       Color  conversion calculations are even performed when there is no need to, that is when just the C-Style
              is toggled. This is really annoying when using the TekHVC display format.

       When Display format, C-Style, or Show real server values are changed the current selection is  unselected
              and the display scrolls up to the first line.

       The Best match, Previous, and Next action buttons are not appropriately (de-)activated when the selection
              is  either changed manually in the display with the mouse or automatically (see above misfeature).

       The icons and cursors (especially the bigger magnifying glass) are extremely ugly.  Suggestions for  nice
              bitmaps are welcome.

       The  color  application  default  is  even  more ugly. It is an example of what not to do with Xcolorsel.
              Actually the intention was to classify operations with colors.  (Negative commands  like  Quit  in
              red, positive commands like Default colors in bright or not that bright (About me) green. Commands
              requiring  user  intervention  bright yellow. Other commands in standard yellow. And the remaining
              toggles and actions in orange.)  However the result just  makes  me  puke.  Suggestions  for  nice
              colors are also welcome.

       If  the  help  window  is  displayed  About  me should not be inactive but instead allow one to raise the
              window.

       The color compare formula (see Grab color above) is (at least) not very sophisticated.

       When showing the busy cursor during color conversions the  standard  cursor  is  still  shown  when  over
              scrollbars. This is because I didn't find a way to change the cursor over Athena scrollbars. Later
              I  saw  that  one can of course hide all windows under an invisible input only window that changes
              the cursor when it enters it. (I got this from Mumail, where unfortunately only part of the window
              is hidden under the invisible window).

       You will notice that my programming style changed while coding Xcolorsel, thus the look  a  like  of  the
              sources is not as consistent as it should be.

BUGS

       Under  AIX  (IBM  RS/6000)  at least when using 16 color monochrom monitors and the Motif window manager,
       searching the window tree sometimes finds windows with invalid colormaps and that are not drawable. There
       is a flag to not to try to install colormaps during color grabbing. However if  you  click  on  a  window
       border  Xcolorsel  will crash. I assume that this is caused by mwm placing an invisible input only window
       over the borders it draws. I did not find a way to make Xcolorsel smart enough to not fall in this  trap.
       Even  if  Xcolorsel  would  see  that  this  is  an input only window, there is no way to get the data it
       actually needs (colormap and pixelvalue at the location you are clicking on).  Just do not click  on  Mwm
       borders.  Or  better  do  not  use Mwm at all. Motif is no free software. Boycott it! Fvwm is much better
       anyway.

AUTHOR

       Michael Weller
       Heiderhoefen 116b
       D 46049 Oberhausen
       Germany

       reachable by means of Email as one of:

       eowmob@exp-math.uni-essen.de
       eowmob@pollux.exp-math.uni-essen.de
       mat42b@aixrs1.hrz.uni-essen.de

       Please note that I did this as an exercise to improve my understanding of the Athena  Widgets  and  X.  I
       consider this project as (almost) finished. The priority of this project is as low as possible for me. No
       further  extensions  are  planned  so far. However I will put in patches to support other systems (please
       make them controllable with #define's either out of config.h or provided by your imake) and bug fixes and
       redistribute them to ensure that only one consistent version floats through the net.

ACKNOWLEDGEMENTS

       This work and much more would not have been  possible  without  the  Linux  project  initiated  by  Linus
       Torvalds  (and of course all other people contributing their work to this project). This project together
       with the GNU project made it possible for capable computer users of  my  generation  to  choose  a  free,
       reliable and state of the art operating system and to get rid of the arbitrariness of commercial software
       vendors  and  business  people  squeezing  just  money out of people that have to rely on them instead of
       supplying working and useful software.

       I have much experience with different home computer OS's and workstation UNIX  implementations.  You  can
       trust  me.  Just  use  linux and get rid of all your problems (What a pity it runs only on PCs and not on
       higher performance workstations)

       Thanx go also to Nils Rennebarth who convinced me I should implement the colormap install feature  during
       color grabbing and made me develop a way to accomplish this in a fruitful discussion.

       Even  more  thanx  to R.K.Lloyd@csc.liv.ac.uk (no RL name known) for his patches that are needed to allow
       compilation under HP-UX (but changed two of his patches that disabled grabbing of colors by accident  ;-)
       and  Chris Olson (chris@Sterling.COM) for pointing me at the compilation problems on SUN's (but who would
       use a Sun? >;-> ).

       Thanks and greetings go to Chris Rouch (chris@wg.estec.esa.nl).  He  was  the  first  person  that  could
       provide a patch to make xcolorsel run on a Sun. Actually the patch had a bug as well, however it did show
       where  to  look  at,  so  the problem could be solved in seconds. Many other people (far too many to list
       here) sent me detailed debug sessions from their machines that approved the detected bug. Thanks  to  all
       these as well.

       Maybe  I  should  have  announced  xcolorsel  louder when it still was called xpalette. This way the long
       existing segmentation fault problem would have been found earlier. Many people searching  for  a  bug  on
       several machines are obviously more successful than a single one.

       Thus once again the power of the Internet community was shown.

COPYRIGHTS

       As  I  strongly believe in the usefulness of free software this program is released under the GNU general
       public license:

       This program is free software; you can redistribute it and/or modify  it  under  the  terms  of  the  GNU
       General  Public  License  as published be the Free Software Foundation;  either version 2 of the License,
       or (at your opinion) any later version.

       This program is  distributed in the hope  that it will be useful, but WITHOUT ANY WARRANTY; without  even
       the   implied  warranty  of  MERCHANBILITY or FITNESS FOR  A  PARTICULAR  PURPOSE.   See the  GNU General
       Public License  for more details.

       You should have received a copy  of the GNU General Public License  along  with  this  program;  if  not,
       write to the  Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

       Part  of  the  files  are  derived   from  the Template Widget of the Athena Widgets as published  by the
       Massachusetts Institute of  Technology.  Actually these files do not contain any code  by the M.I.T   but
       only   variable  declarations.   Nevertheless  these parts of these files are still distributed under the
       terms of the M.I.T copyright which are here repeated:

       Copyright    Massachusetts Institute of Technology   1987, 1988

       Permission to use, copy,  modify, distribute,  and sell this software  and  its  documentation  for   any
       purpose  is  hereby   granted  without fee,  provided that the  above  copyright  notice  appear  in  all
       copies  and   that   both   that  copyright    notice    and    this   permission    notice   appear   in
       supporting  documentation,   and  that  the   name  of  M.I.T.  not  be used  in advertising or publicity
       pertaining  to distribution  of  the  software  without  specific, written  prior  permission.     M.I.T.
       makes   no   representations   about   the  suitability   of   this  software  for  any  purpose.   It is
       provided  "as is" without express or implied warranty.

       M.I.T. DISCLAIMS ALL  WARRANTIES WITH REGARD  TO THIS SOFTWARE,  INCLUDING  ALL  IMPLIED  WARRANTIES   OF
       MERCHANTABILITY  AND  FITNESS,   IN  NO  EVENT  SHALL  M.I.T.   BE  LIABLE  FOR ANY SPECIAL,  INDIRECT OR
       CONSEQUENTIAL  DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,  DATA OR PROFITS, WHETHER IN
       AN ACTION OF CONTRACT,  NEGLIGENCE  OR  OTHER  TORTIOUS  ACTION,  ARISING OUT OF  OR IN  CONNECTION  WITH
       THE USE OR PERFORMANCE OF THIS SOFTWARE.

FILES

       /usr/lib/X11/rgb.txt
       /usr/lib/X11/xcolorsel/Xcolorsel.help
       /usr/lib/X11/app-defaults/Xcolorsel
       /usr/lib/X11/app-defaults/Xcolorsel-color

SEE ALSO

       X(1), xcolormap(1), xfontsel(1), editres(1)

                                               27th December 1993                                   Xcolorsel(1)