This is the mail archive of the
mailing list for the Cygwin project.
Re: Mapping "underline" to "colour" - how is the colour determined?
On Oct 15, 2011, at 4:19 AM, Andy Koppe wrote:
On 14 October 2011 14:18, Ronald Fischer wrote:
When I (to give an example) execute a "man" command within a mintty
window, and do the same within a "normal" Windows console window, I
that those words represented as underlined words in the mintty
window, are represented by a different colour in the Windows console
I guess this different has nothing to do with the "man" command,
the way the terminal definition says how render "emphasized" words.
Since the Windows console (likely) can't underline, colouring is
It's kind of a "terminal property". Do I understand this correctly?
I would like to understand, where this mapping to a certain colour is
done. Reason is that the colour used for my Windows console window,
bit hard to read and I would like to change it.
It's hardcoded in the Cygwin DLL (in
winsup/cygwin/fhandler_console.cc), so you'd have to build that
yourself to change it.
Getting man/groff to use something other than the underline attribute
might be the better approach, but I don't know how to do that.
The "Graphic Rendition" of the text is controlled by a facility called
Terminfo. Here's how you can change it.
This should display "cygwin" as the terminal type. If not, replace
"cygwin" in the following instructions with whatever terminal type you
The terminfo files are stored under /usr/share/terminfo. If you look
there you will see several subdirectories with one and two-character
names. Each terminfo entry is stored in a subdirectory which
corresponds to the ASCII value of its first character in hex, so the
"cygwin" file is in the "63" directory. You will also find a copy
under the "c" directory, but that's not the one the system uses. I
presume that the one-character directories are for backwards
compatibility. Make a backup copy of the "cygwin" file so you can
restore the original functionality in case you mess things up.
Now go create a new working directory somewhere, perhaps under your
home directory. In there, type:
infocmp cygwin >cygwin.txt
This will convert the binary terminfo file from /usr/share/terminfo/63
into a text file you can examine and edit. Edit the file with the
text editor of your choice and locate the capabilities "smul" and
"rmul". "smul" specifies the escape sequence that will be used to
introduce "underlined" characters, and "rmul" is the sequence that
turns this mode off. Set these values to whatever produces the effect
you desire. (More on this below.)
After editing the source file, type:
This "compiles" the source file back into the binary format and
overwrites the original binary file in /usr/share/terminfo/63. There
are ways to redirect it to another directory, but I'll leave you to
figure that out for yourself. (man tic)
Now run the man command and see if it produces the effect you want.
As for how to figure out what escape sequence to use, unpack the
attached file "sgr_options,txt" and cat it in the desired terminal
window. Use "cat" rather than "less" or any other program that will
filter the file contents. This will show you the effects of the
different options to the SGR (Set Graphic Rendition) escape sequence.
For "rmul" just use "\E[0m" which turns off all modes.
Description: Text document
Problem reports: http://cygwin.com/problems.html
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple