Mail Archives: cygwin/2004/04/30/05:26:09
Thanks all for your responses.
Barry, you have given me a workaround and enabled me to find a second
workaround!
If people still want to try to find a better solution, I have
'attached' instructions on how to (try to) reproduce the problem.
Barry Buchbinder wrote:
[deleted]
> It is a fact of color: the only difference between grey and white is
> intensity; any white can be made to look grey when compared to a more
> intense white. What you see as light grey is what was long ago in IBM
> PC land defined as white so that what you want to call white could be
> used for bold. (Indeed, black can also be relative, being varying
> shades of dark grey, until on gets down to true black (zero photons).)
>
> The "1" makes the foreground color more intense. "5" should cause
> blinking but may end up making the background color more intense. Try
>
> \cygwin\bin\echo -en 'Normal. \033[30;47;5mBlack on
while.\033[0;37;40m Normal again.'
>
> to get black on white.
That did not work ("Normal." is normal (i.e. black on white), "Black
on while." is also normal (black on white) and "Normal again." is
lightgrey-on-black and the display stays that way instead of going back
to normal black on white). But not to worry, read on.
> The script in
http://sources.redhat.com/ml/cygwin/2004-04/msg01161.html
> should show you how everything looks on your system.
(When, as is my 'need', starting with black text on a white
background,) The only combination which shows the desired white-on-black
is "1;37;40" (more about that later). The " 7 = reverse video = 30;47 "
part is displayed as black-on-lightgrey.
> > The best I get so far is:
> >
> > \cygwin\bin\echo -en '\033[37;40mThis is a text.\033[30;0m'
> >
> > Which gives me light-grey (instead of the desired white) text on a
> > black (as desired) background.
>
> Try
> \cygwin\bin\echo -en '\033[1;37;40mThis is a text.\033[30;0m'
> The added "1" bolds the "37", which should turn foreground light-grey
> to real white.
Thanks! That indeed displays as the desired white-on-black. The
disavantage of this is that it is hardcoded, i.e. for my normal
black-on-white it effectively is 'inverse-video', however for other
normal (non-inverse) colors, it would not be inverse-video, but just
white-on-black. Read on.
Now that I knew the effect of "1" (bold), I continued with the escape
sequences which I got from Cygwin B20's /etc/termcap entry for "cygwin"
(= "linux"): mr=\E[7m:so=\E[7m:se=\E[m
I came up with:
\cygwin\bin\echo -en '\033[1;7mThis is a text.\033[0m'
which gives white (desired) text on a dark-grey (undesired) background.
This is my second workaround. It has better contrast than the default
(lightgrey-on-darkgrey), but less contrast than the above hardcoded
white-on-black. The advantage of this workaround is that the colors are
not hardcoded, i.e. I just say "bold" and "inverse video".
While not ideal, these workarounds will do for now. Now I will have to
get them into a new terminfo entry (Yes, I know how to do that, but have
to install untic and friends, etc..).
What next?
==========
In case anyone wants to try reproduce my problem and then try to find
a better solution:
[FWIW, I have Windows XP (Professional).]
[While I have the problem in a 'DOS', i.e. non-(bash-)shell window, I
will give the procedure for a default bash window, because that is
probably easier.]
- Start with the default bash window [1] that came with Cygwin (in my
case 1.3.x, since updated to 1.5.9): Start -> All Programs -> Cygwin
-> Cygwin Bash Shell.
- Temporarily change the forground/background colors: Click on the
upper-left icon -> Properties -> Colors -> "Screen Text" to black
(0/0/0) and "Screen Background" to white (255/255/255).
In case it matters, my Font is the default, "Raster Fonts" with "Size"
"8 x 12".
- echo -en '\033[7mThis is a text.\033[0m'
This will probably be lightgrey-on-darkgrey. If so, you have
reproduced my problem (because I want white-on-black).
- /bin/echo -en '\033[1;37;40mThis is a text.\033[30;0m'
This will probably be white-on-black, i.e. the hardcoded workaround
which Barry gave.
- /bin/echo -en '\033[1;7mThis is a text.\033[0m'
This will probably be white-on-darkgrey, i.e. the second workaround
which I gave.
A better solution would be one which 1) does *not* hardcode the
colors, 2) *does* use inverse video ("7") and 3) displays
white-on-black.
[1] I.e. the ('DOS') "Command Prompt"-like window which is started by
the shorcut which executes ("Target:) C:\cygwin\cygwin.bat, which
contains:
[Start cygwin.bat:]
@echo off
C:
chdir C:\cygwin\bin
bash --login -i
[End cygwin.bat]
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ: http://cygwin.com/faq/
- Raw text -