Brian, Thank you very much for your detailed explaination. I'm using default cygwin terminal.
I tried adding "codepage:oem" to CYGWIN env var but it didn't solve the problem. I tried downloading poderosa (and running cygwin with or without utf8) but again same type of problems. Unfortunatly "TERM=linux-lat aptitude" command gave me the "error opening terminal:linux-lat" error In fact, I've noticed that there is no problem with horizontal and vertical lines, but with other characteres. I thing these are padding chars.. I don't have a proper linux terminal in front of me right now so can't tell exactly what are these. Anyway, it doesn't kill me to have these buggy characters with aptitude. I thought these might be a common problem but apparently there is no silver bullet for it. Thanks again... On Mon, Dec 8, 2008 at 8:00 PM, Brian Dessent <[EMAIL PROTECTED]> wrote: > SO wrote: > >> I have problems opening remote programs using ncurses library. >> Aptitude for example. Menus and other interface components are just >> garbage on my term on windows vista. Is there a solution for that? > > The answer will depend on what terminal you're using. But first a > summary of the problem: The application wants to draw nice looking boxes > or lines. So it checks the value of the TERM environment variable and > then asks its local terminfo database what the appropriate characters > are for that terminal, and prints them. Simple, so far. > > The problem is that Cygwin terminals are all codepage-based, not > Unicode. (There is a rxvt-unicode package, but does not actually > support Unicode yet.) A codepage-based program is restricted to only > being able to output characters in that codepage, which is pretty much > the whole reason in a nutshell why Unicode was invented and is so > superior. > > But anyway the default Windows codepage for most systems does *not* > include the line drawing characters. For example, most western locales > use Windows-1252: > <http://www.microsoft.com/globaldev/reference/sbcs/1252.mspx>. Compare > this to codepage 437, which is sometimes called the "OEM" codepage > because it corresponds to the one originally used on the original IBM > PC: <http://www.microsoft.com/globaldev/reference/oem/437.mspx>. Hey > look, line drawing characters! If you look in slot C4 for example > you'll a horizontal line, and then look in the same slot in CP-1252 and > you'll see LATIN CAPITAL LETTER A WITH DIAERESIS, which explains why you > see Ä where you should see a horizontal line, because the terminfo entry > was written with CP437 in mind. > > So one solution is to switch to that codepage. If and only if you are > using the Cygwin terminal, then you can do this by adding "codepage:oem" > to your CYGWIN environment variable, and everything should work. Except > of course if you need to actually view any text with those Latin > accented characters. > > If you are using something other than the built-in Cygwin terminal, then > you need a different solution. If you are using rxvt in non-X11 mode, > you can try using the built-in Windows font 'Terminal': > > rxvt -fn Terminal -tn rxvt-cygwin-native -e /bin/bash -li > > Another alternative (again, for non-X rxvt) is to use a font that is > hacked up to pretend to be CP1252 except it's got the line drawing > glyphs subsituted in those slots. Google the list archives for > "luconP.zip" which is a verion of Lucida Console appropriately > modified. After installing this font you should invoke rxvt with > something like: > > rxvt -fn "Lucida ConsoleP-14" -tn rxvt-cygwin-native -e /bin/bash -li > > You can modify the -14 to select the desired font size. And again this > assumes you are using non-X rxvt -- if you're using it in X11 mode you > could do something similar (find and specify a font with line drawing > characters) except you would want the terminal name set to rxvt-cygwin > without "-native". > > Another solution would be to use a unicode terminal, with the > appropriate setting of TERM. This means using a non-Cygwin application > which unfortunately usually means pain because they don't play well with > Cygwin's pty emulation, but I'm fairly sure there are some out there > that work (poderosa?) or have been specially modified to work > (cygputty). > > Another solution is to instead of changing terminals, just select a > different value of TERM, i.e. *tell* the remote end you're using a > different terminal. The goal here is to select something that is close > enough to your terminal that it shares a common set of control codes, > but doesn't try to use the line drawing chars. This can be hit and > miss, as you're really lying by saying you're using a different terminal > than the one you really are, but it can be a quick solution. For > example you might try: > > $ TERM=linux-lat aptitude > > (This linux-lat terminfo entry is described as "linux with latin1 or > latin2 alternate character set" and it conveniently has all the line > drawing stuff disabled so you'll just see blanks instead.) > > And one more possible workaround: take the terminfo entry for your > terminal and modify it to use boring Latin ASCII characters (e.g. + | - > etc) for line drawing. This is better than the last alternative as you > can rest assured that all the other capabilities should work correctly > as you're just copying the existing one and modifying it. Here is an > example that does this with the rxvt-cygwin-native terminfo entry: > > $ infocmp -1 rxvt-cygwin-native | \ > perl -pe 's@(rxvt-cygwin-native)@$1-latin@;' \ > -e '[EMAIL PROTECTED]@acsc=!g#w*q+x\\,<-s.v<m>{\\\\`_0a\\:f\\\\h#}f~p|,@;' \ > >/tmp/term.tmp && \ > tic -o ~/.terminfo /tmp/term.tmp && \ > rm /tmp/term.tmp > > This creates a new terminal called rxvt-cygwin-native-latin, compiles > it, and installs it under your home directory in $HOME/.terminfo. This > is useful because terminfo applications look there first before the > system location /usr/share/terminfo. You can now use this by changing > your rxvt startup shortcut to specify "-tn rxvt-cygwin-native-latin" or > as above just for one command as: > > $ TERM=rxvt-cygwin-native-latin aptitude > > Note, the terminfo database has to be local to the machine that runs the > command, not the machine that runs the terminal. Since you are running > aptitude on a remote system you'll need to transfer your new terminfo > entry there for this to work, but that's pretty simple: > > $ (cd ~ && tar c .terminfo) | ssh hostname tar xv > > Brian > > -- > 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/ > > -- 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/