ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/rxvt-unicode/README.FAQ
Revision: 1.73
Committed: Fri May 14 13:47:43 2021 UTC (3 years ago) by root
Branch: MAIN
CVS Tags: rxvt-unicode-rel-9_26, rxvt-unicode-rel-9_25
Changes since 1.72: +23 -1 lines
Log Message:
*** empty log message ***

File Contents

# User Rev Content
1 root 1.42 RXVT-UNICODE/URXVT FREQUENTLY ASKED QUESTIONS
2     Meta, Features & Commandline Issues
3     My question isn't answered here, can I ask a human?
4     Before sending me mail, you could go to IRC: "irc.freenode.net", channel
5     "#rxvt-unicode" has some rxvt-unicode enthusiasts that might be
6     interested in learning about new and exciting problems (but not FAQs :).
7    
8 root 1.56 I use Gentoo, and I have a problem...
9 root 1.70 There are two big problems with Gentoo Linux: first, most if not all
10     Gentoo systems are completely broken (missing or mismatched header
11     files, broken compiler etc. are just the tip of the iceberg); secondly,
12     it should be called Gentoo GNU/Linux.
13 root 1.56
14     For these reasons, it is impossible to support rxvt-unicode on Gentoo.
15     Problems appearing on Gentoo systems will usually simply be ignored
16     unless they can be reproduced on non-Gentoo systems.
17    
18 root 1.42 Does it support tabs, can I have a tabbed rxvt-unicode?
19     Beginning with version 7.3, there is a perl extension that implements a
20     simple tabbed terminal. It is installed by default, so any of these
21     should give you tabs:
22    
23     urxvt -pe tabbed
24    
25     URxvt.perl-ext-common: default,tabbed
26    
27     It will also work fine with tabbing functionality of many window
28     managers or similar tabbing programs, and its embedding-features allow
29     it to be embedded into other programs, as witnessed by doc/rxvt-tabbed
30     or the upcoming "Gtk2::URxvt" perl module, which features a tabbed urxvt
31     (murxvt) terminal as an example embedding application.
32    
33     How do I know which rxvt-unicode version I'm using?
34     The version number is displayed with the usage (-h). Also the escape
35     sequence "ESC [ 8 n" sets the window title to the version number. When
36     using the urxvtc client, the version displayed is that of the daemon.
37    
38     Rxvt-unicode uses gobs of memory, how can I reduce that?
39     Rxvt-unicode tries to obey the rule of not charging you for something
40     you don't use. One thing you should try is to configure out all settings
41     that you don't need, for example, Xft support is a resource hog by
42     design, when used. Compiling it out ensures that no Xft font will be
43     loaded accidentally when rxvt-unicode tries to find a font for your
44     characters.
45    
46     Also, many people (me included) like large windows and even larger
47     scrollback buffers: Without "--enable-unicode3", rxvt-unicode will use 6
48     bytes per screen cell. For a 160x?? window this amounts to almost a
49     kilobyte per line. A scrollback buffer of 10000 lines will then (if
50     full) use 10 Megabytes of memory. With "--enable-unicode3" it gets
51     worse, as rxvt-unicode then uses 8 bytes per screen cell.
52    
53     How can I start urxvtd in a race-free way?
54     Try "urxvtd -f -o", which tells urxvtd to open the display, create the
55     listening socket and then fork.
56    
57 root 1.45 How can I start urxvtd automatically when I run urxvtc?
58 root 1.42 If you want to start urxvtd automatically whenever you run urxvtc and
59     the daemon isn't running yet, use this script:
60    
61     #!/bin/sh
62     urxvtc "$@"
63     if [ $? -eq 2 ]; then
64     urxvtd -q -o -f
65     urxvtc "$@"
66     fi
67    
68     This tries to create a new terminal, and if fails with exit status 2,
69     meaning it couldn't connect to the daemon, it will start the daemon and
70     re-run the command. Subsequent invocations of the script will re-use the
71     existing daemon.
72    
73 root 1.73 Another option is to use systemd socket-based activation (see
74     systemd.socket(5)). Here is an example of a service unit file and of a
75     socket unit file for the default socket path:
76    
77     urxvtd.service
78     [Unit]
79     Description=urxvt terminal daemon
80     Requires=urxvtd.socket
81    
82     [Service]
83     ExecStart=/usr/bin/urxvtd -o
84    
85     urxvtd.socket
86     [Unit]
87     Description=urxvt terminal daemon socket
88    
89     [Socket]
90     ListenStream=%h/.urxvt/urxvtd-%H
91    
92     [Install]
93     WantedBy=sockets.target
94    
95 sf-exg 1.59 How do I distinguish whether I'm running rxvt-unicode or a regular
96     xterm? I need this to decide about setting colours etc.
97 root 1.42 The original rxvt and rxvt-unicode always export the variable
98     "COLORTERM", so you can check and see if that is set. Note that several
99     programs, JED, slrn, Midnight Commander automatically check this
100 sf-exg 1.59 variable to decide whether or not to use colour.
101 root 1.42
102     How do I set the correct, full IP address for the DISPLAY variable?
103     If you've compiled rxvt-unicode with DISPLAY_IS_IP and have enabled
104     insecure mode then it is possible to use the following shell script
105     snippets to correctly set the display. If your version of rxvt-unicode
106     wasn't also compiled with ESCZ_ANSWER (as assumed in these snippets)
107     then the COLORTERM variable can be used to distinguish rxvt-unicode from
108     a regular xterm.
109    
110     Courtesy of Chuck Blake <cblake@BBN.COM> with the following shell script
111     snippets:
112    
113     # Bourne/Korn/POSIX family of shells:
114     [ ${TERM:-foo} = foo ] && TERM=xterm # assume an xterm if we don't know
115     if [ ${TERM:-foo} = xterm ]; then
116     stty -icanon -echo min 0 time 15 # see if enhanced rxvt or not
117 root 1.67 printf "\eZ"
118 root 1.42 read term_id
119     stty icanon echo
120     if [ ""${term_id} = '^[[?1;2C' -a ${DISPLAY:-foo} = foo ]; then
121 root 1.67 printf '\e[7n' # query the rxvt we are in for the DISPLAY string
122     read DISPLAY # set it in our local shell
123 root 1.42 fi
124     fi
125    
126     How do I compile the manual pages on my own?
127     You need to have a recent version of perl installed as /usr/bin/perl,
128 root 1.49 one that comes with pod2man, pod2text and pod2xhtml (from Pod::Xhtml).
129 root 1.48 Then go to the doc subdirectory and enter "make alldoc".
130 root 1.42
131     Isn't rxvt-unicode supposed to be small? Don't all those features bloat?
132     I often get asked about this, and I think, no, they didn't cause extra
133     bloat. If you compare a minimal rxvt and a minimal urxvt, you can see
134     that the urxvt binary is larger (due to some encoding tables always
135     being compiled in), but it actually uses less memory (RSS) after
136     startup. Even with "--disable-everything", this comparison is a bit
137     unfair, as many features unique to urxvt (locale, encoding conversion,
138     iso14755 etc.) are already in use in this mode.
139    
140     text data bss drs rss filename
141     98398 1664 24 15695 1824 rxvt --disable-everything
142     188985 9048 66616 18222 1788 urxvt --disable-everything
143    
144     When you "--enable-everything" (which *is* unfair, as this involves xft
145     and full locale/XIM support which are quite bloaty inside libX11 and my
146 root 1.43 libc), the two diverge, but not unreasonably so.
147 root 1.42
148     text data bss drs rss filename
149     163431 2152 24 20123 2060 rxvt --enable-everything
150     1035683 49680 66648 29096 3680 urxvt --enable-everything
151    
152     The very large size of the text section is explained by the east-asian
153     encoding tables, which, if unused, take up disk space but nothing else
154     and can be compiled out unless you rely on X11 core fonts that use those
155     encodings. The BSS size comes from the 64k emergency buffer that my c++
156     compiler allocates (but of course doesn't use unless you are out of
157     memory). Also, using an xft font instead of a core font immediately adds
158     a few megabytes of RSS. Xft indeed is responsible for a lot of RSS even
159     when not used.
160    
161     Of course, due to every character using two or four bytes instead of
162     one, a large scrollback buffer will ultimately make rxvt-unicode use
163     more memory.
164    
165     Compared to e.g. Eterm (5112k), aterm (3132k) and xterm (4680k), this
166     still fares rather well. And compared to some monsters like
167     gnome-terminal (21152k + extra 4204k in separate processes) or konsole
168     (22200k + extra 43180k in daemons that stay around after exit, plus half
169     a minute of startup time, including the hundreds of warnings it spits
170     out), it fares extremely well *g*.
171    
172     Why C++, isn't that unportable/bloated/uncool?
173     Is this a question? :) It comes up very often. The simple answer is: I
174     had to write it, and C++ allowed me to write and maintain it in a
175     fraction of the time and effort (which is a scarce resource for me). Put
176     even shorter: It simply wouldn't exist without C++.
177    
178     My personal stance on this is that C++ is less portable than C, but in
179     the case of rxvt-unicode this hardly matters, as its portability limits
180     are defined by things like X11, pseudo terminals, locale support and
181     unix domain sockets, which are all less portable than C++ itself.
182    
183     Regarding the bloat, see the above question: It's easy to write programs
184 root 1.62 in C that use gobs of memory, and certainly possible to write programs
185     in C++ that don't. C++ also often comes with large libraries, but this
186     is not necessarily the case with GCC. Here is what rxvt links against on
187     my system with a minimal config:
188 root 1.42
189     libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0x00002aaaaabc3000)
190     libc.so.6 => /lib/libc.so.6 (0x00002aaaaadde000)
191     libdl.so.2 => /lib/libdl.so.2 (0x00002aaaab01d000)
192     /lib64/ld-linux-x86-64.so.2 (0x00002aaaaaaab000)
193    
194     And here is rxvt-unicode:
195    
196     libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0x00002aaaaabc3000)
197     libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00002aaaaada2000)
198 root 1.51 libc.so.6 => /lib/libc.so.6 (0x00002aaaaaeb0000)
199     libdl.so.2 => /lib/libdl.so.2 (0x00002aaaab0ee000)
200     /lib64/ld-linux-x86-64.so.2 (0x00002aaaaaaab000)
201 root 1.42
202     No large bloated libraries (of course, none were linked in statically),
203     except maybe libX11 :)
204    
205     Rendering, Font & Look and Feel Issues
206     I can't get transparency working, what am I doing wrong?
207 root 1.61 First of all, transparency isn't officially supported in rxvt-unicode,
208     so you are mostly on your own. Do not bug the author about it (but you
209     may bug everybody else). Also, if you can't get it working consider it a
210     rite of passage: ... and you failed.
211 root 1.42
212     Here are four ways to get transparency. Do read the manpage and option
213     descriptions for the programs mentioned and rxvt-unicode. Really, do it!
214    
215 root 1.51 1. Use transparent mode:
216 root 1.42
217     Esetroot wallpaper.jpg
218 root 1.51 urxvt -tr -tint red -sh 40
219 root 1.42
220     That works. If you think it doesn't, you lack transparency and tinting
221 root 1.62 support, or you are unable to read. This method requires that the
222     background-setting program sets the _XROOTPMAP_ID or ESETROOT_PMAP_ID
223     property. Compatible programs are Esetroot, hsetroot and feh.
224 root 1.42
225     2. Use a simple pixmap and emulate pseudo-transparency. This enables you
226     to use effects other than tinting and shading: Just shade/tint/whatever
227     your picture with gimp or any other tool:
228    
229 root 1.50 convert wallpaper.jpg -blur 20x20 -modulate 30 background.jpg
230 root 1.51 urxvt -pixmap "background.jpg;:root"
231 root 1.42
232 root 1.66 That works. If you think it doesn't, you lack GDK-PixBuf support, or you
233     are unable to read.
234 root 1.42
235     3. Use an ARGB visual:
236    
237     urxvt -depth 32 -fg grey90 -bg rgba:0000/0000/4444/cccc
238    
239     This requires XFT support, and the support of your X-server. If that
240     doesn't work for you, blame Xorg and Keith Packard. ARGB visuals aren't
241     there yet, no matter what they claim. Rxvt-Unicode contains the
242 root 1.43 necessary bugfixes and workarounds for Xft and Xlib to make it work, but
243     that doesn't mean that your WM has the required kludges in place.
244 root 1.42
245     4. Use xcompmgr and let it do the job:
246    
247     xprop -frame -f _NET_WM_WINDOW_OPACITY 32c \
248     -set _NET_WM_WINDOW_OPACITY 0xc0000000
249    
250     Then click on a window you want to make transparent. Replace 0xc0000000
251     by other values to change the degree of opacity. If it doesn't work and
252     your server crashes, you got to keep the pieces.
253    
254     Why does rxvt-unicode sometimes leave pixel droppings?
255     Most fonts were not designed for terminal use, which means that
256     character size varies a lot. A font that is otherwise fine for terminal
257     use might contain some characters that are simply too wide. Rxvt-unicode
258     will avoid these characters. For characters that are just "a bit" too
259     wide a special "careful" rendering mode is used that redraws adjacent
260     characters.
261    
262     All of this requires that fonts do not lie about character sizes,
263     however: Xft fonts often draw glyphs larger than their acclaimed
264     bounding box, and rxvt-unicode has no way of detecting this (the correct
265     way is to ask for the character bounding box, which unfortunately is
266     wrong in these cases).
267    
268 root 1.43 It's not clear (to me at least), whether this is a bug in Xft, freetype,
269 root 1.42 or the respective font. If you encounter this problem you might try
270     using the "-lsp" option to give the font more height. If that doesn't
271     work, you might be forced to use a different font.
272    
273     All of this is not a problem when using X11 core fonts, as their
274     bounding box data is correct.
275    
276     How can I keep rxvt-unicode from using reverse video so much?
277     First of all, make sure you are running with the right terminal settings
278     ("TERM=rxvt-unicode"), which will get rid of most of these effects. Then
279     make sure you have specified colours for italic and bold, as otherwise
280     rxvt-unicode might use reverse video to simulate the effect:
281    
282     URxvt.colorBD: white
283     URxvt.colorIT: green
284    
285     Some programs assume totally weird colours (red instead of blue), how can I fix that?
286     For some unexplainable reason, some rare programs assume a very weird
287     colour palette when confronted with a terminal with more than the
288     standard 8 colours (rxvt-unicode supports 88). The right fix is, of
289     course, to fix these programs not to assume non-ISO colours without very
290     good reasons.
291    
292     In the meantime, you can either edit your "rxvt-unicode" terminfo
293     definition to only claim 8 colour support or use "TERM=rxvt", which will
294     fix colours but keep you from using other rxvt-unicode features.
295    
296     Can I switch the fonts at runtime?
297     Yes, using an escape sequence. Try something like this, which has the
298     same effect as using the "-fn" switch, and takes effect immediately:
299    
300     printf '\33]50;%s\007' "9x15bold,xft:Kochi Gothic"
301    
302     This is useful if you e.g. work primarily with japanese (and prefer a
303     japanese font), but you have to switch to chinese temporarily, where
304     japanese fonts would only be in your way.
305    
306     You can think of this as a kind of manual ISO-2022 switching.
307    
308     Why do italic characters look as if clipped?
309     Many fonts have difficulties with italic characters and hinting. For
310     example, the otherwise very nicely hinted font "xft:Bitstream Vera Sans
311     Mono" completely fails in its italic face. A workaround might be to
312     enable freetype autohinting, i.e. like this:
313    
314     URxvt.italicFont: xft:Bitstream Vera Sans Mono:italic:autohint=true
315     URxvt.boldItalicFont: xft:Bitstream Vera Sans Mono:bold:italic:autohint=true
316    
317     Can I speed up Xft rendering somehow?
318     Yes, the most obvious way to speed it up is to avoid Xft entirely, as it
319     is simply slow. If you still want Xft fonts you might try to disable
320     antialiasing (by appending ":antialias=false"), which saves lots of
321     memory and also speeds up rendering considerably.
322    
323     Rxvt-unicode doesn't seem to anti-alias its fonts, what is wrong?
324     Rxvt-unicode will use whatever you specify as a font. If it needs to
325     fall back to its default font search list it will prefer X11 core fonts,
326     because they are small and fast, and then use Xft fonts. It has
327     antialiasing disabled for most of them, because the author thinks they
328     look best that way.
329    
330     If you want antialiasing, you have to specify the fonts manually.
331    
332     What's with this bold/blink stuff?
333     If no bold colour is set via "colorBD:", bold will invert text using the
334     standard foreground colour.
335    
336     For the standard background colour, blinking will actually make the text
337 root 1.52 blink when compiled with "--enable-text-blink". Without
338     "--enable-text-blink", the blink attribute will be ignored.
339 root 1.42
340     On ANSI colours, bold/blink attributes are used to set high-intensity
341 sf-exg 1.59 foreground/background colours.
342 root 1.42
343 sf-exg 1.59 color0-7 are the low-intensity colours.
344 root 1.42
345 sf-exg 1.59 color8-15 are the corresponding high-intensity colours.
346 root 1.42
347 sf-exg 1.59 I don't like the screen colours. How do I change them?
348     You can change the screen colours at run-time using ~/.Xdefaults
349 root 1.42 resources (or as long-options).
350    
351     Here are values that are supposed to resemble a VGA screen, including
352     the murky brown that passes for low-intensity yellow:
353    
354     URxvt.color0: #000000
355     URxvt.color1: #A80000
356     URxvt.color2: #00A800
357     URxvt.color3: #A8A800
358     URxvt.color4: #0000A8
359     URxvt.color5: #A800A8
360     URxvt.color6: #00A8A8
361     URxvt.color7: #A8A8A8
362    
363     URxvt.color8: #000054
364     URxvt.color9: #FF0054
365     URxvt.color10: #00FF54
366     URxvt.color11: #FFFF54
367     URxvt.color12: #0000FF
368     URxvt.color13: #FF00FF
369     URxvt.color14: #00FFFF
370     URxvt.color15: #FFFFFF
371    
372 sf-exg 1.59 And here is a more complete set of non-standard colours.
373 root 1.42
374     URxvt.cursorColor: #dc74d1
375     URxvt.pointerColor: #dc74d1
376     URxvt.background: #0e0e0e
377     URxvt.foreground: #4ad5e1
378     URxvt.color0: #000000
379     URxvt.color8: #8b8f93
380     URxvt.color1: #dc74d1
381     URxvt.color9: #dc74d1
382     URxvt.color2: #0eb8c7
383     URxvt.color10: #0eb8c7
384     URxvt.color3: #dfe37e
385     URxvt.color11: #dfe37e
386     URxvt.color5: #9e88f0
387     URxvt.color13: #9e88f0
388     URxvt.color6: #73f7ff
389     URxvt.color14: #73f7ff
390     URxvt.color7: #e1dddd
391     URxvt.color15: #e1dddd
392    
393     They have been described (not by me) as "pretty girly".
394    
395     Why do some characters look so much different than others?
396     See next entry.
397    
398     How does rxvt-unicode choose fonts?
399     Most fonts do not contain the full range of Unicode, which is fine.
400     Chances are that the font you (or the admin/package maintainer of your
401     system/os) have specified does not cover all the characters you want to
402     display.
403    
404     rxvt-unicode makes a best-effort try at finding a replacement font.
405     Often the result is fine, but sometimes the chosen font looks
406     bad/ugly/wrong. Some fonts have totally strange characters that don't
407     resemble the correct glyph at all, and rxvt-unicode lacks the artificial
408     intelligence to detect that a specific glyph is wrong: it has to believe
409     the font that the characters it claims to contain indeed look correct.
410    
411     In that case, select a font of your taste and add it to the font list,
412     e.g.:
413    
414     urxvt -fn basefont,font2,font3...
415    
416     When rxvt-unicode sees a character, it will first look at the base font.
417     If the base font does not contain the character, it will go to the next
418     font, and so on. Specifying your own fonts will also speed up this
419     search and use less resources within rxvt-unicode and the X-server.
420    
421     The only limitation is that none of the fonts may be larger than the
422     base font, as the base font defines the terminal character cell size,
423     which must be the same due to the way terminals work.
424    
425     Why do some chinese characters look so different than others?
426     This is because there is a difference between script and language --
427     rxvt-unicode does not know which language the text that is output is, as
428     it only knows the unicode character codes. If rxvt-unicode first sees a
429     japanese/chinese character, it might choose a japanese font for display.
430     Subsequent japanese characters will use that font. Now, many chinese
431     characters aren't represented in japanese fonts, so when the first
432     non-japanese character comes up, rxvt-unicode will look for a chinese
433     font -- unfortunately at this point, it will still use the japanese font
434     for chinese characters that are also in the japanese font.
435    
436     The workaround is easy: just tag a chinese font at the end of your font
437     list (see the previous question). The key is to view the font list as a
438     preference list: If you expect more japanese, list a japanese font
439     first. If you expect more chinese, put a chinese font first.
440    
441     In the future it might be possible to switch language preferences at
442     runtime (the internal data structure has no problem with using different
443     fonts for the same character at the same time, but no interface for this
444     has been designed yet).
445    
446     Until then, you might get away with switching fonts at runtime (see "Can
447     I switch the fonts at runtime?" later in this document).
448    
449 root 1.50 How can I make mplayer display video correctly?
450     We are working on it, in the meantime, as a workaround, use something
451     like:
452    
453     urxvt -b 600 -geometry 20x1 -e sh -c 'mplayer -wid $WINDOWID file...'
454    
455 root 1.71 Why is the cursor now blinking in emacs/vi/...?
456     This is likely caused by your editor/program's use of the "cvvis"
457     terminfo capability. Emacs uses it by default, as well as some versions
458     of vi and possibly other programs.
459    
460     In emacs, you can switch that off by adding this to your ".emacs" file:
461    
462     (setq visible-cursor nil)
463    
464     For other programs, if they do not have an option, your have to remove
465     the "cvvis" capability from the terminfo description.
466    
467     When urxvt first added the blinking cursor option, it didn't add a
468     "cvvis" capability, which served no purpose before. Version 9.21
469     introduced "cvvis" (and the ability to control blinking independent of
470     cursor shape) for compatibility with other terminals, which
471     traditionally use a blinking cursor for "cvvis". This also reflects the
472     intent of programs such as emacs, who expect "cvvis" to enable a
473     blinking cursor.
474    
475 root 1.42 Keyboard, Mouse & User Interaction
476     The new selection selects pieces that are too big, how can I select single words?
477     If you want to select e.g. alphanumeric words, you can use the following
478     setting:
479    
480     URxvt.selection.pattern-0: ([[:word:]]+)
481    
482     If you click more than twice, the selection will be extended more and
483     more.
484    
485     To get a selection that is very similar to the old code, try this
486     pattern:
487    
488     URxvt.selection.pattern-0: ([^"&'()*,;<=>?@[\\\\]^`{|})]+)
489    
490 root 1.53 Please also note that the *LeftClick Shift-LeftClick* combination also
491 root 1.42 selects words like the old code.
492    
493     I don't like the new selection/popups/hotkeys/perl, how do I change/disable it?
494     You can disable the perl extension completely by setting the
495     perl-ext-common resource to the empty string, which also keeps
496     rxvt-unicode from initialising perl, saving memory.
497    
498     If you only want to disable specific features, you first have to
499     identify which perl extension is responsible. For this, read the section
500     PREPACKAGED EXTENSIONS in the urxvtperl(3) manpage. For example, to
501     disable the selection-popup and option-popup, specify this
502     perl-ext-common resource:
503    
504     URxvt.perl-ext-common: default,-selection-popup,-option-popup
505    
506     This will keep the default extensions, but disable the two popup
507     extensions. Some extensions can also be configured, for example,
508     scrollback search mode is triggered by M-s. You can move it to any other
509 root 1.72 combination by adding a keysym resource that binds the desired
510     combination to the "start" action of "searchable-scrollback" and another
511     one that binds M-s to the "builtin:" action:
512 root 1.42
513 root 1.72 URxvt.keysym.CM-s: searchable-scrollback:start
514     URxvt.keysym.M-s: builtin:
515 root 1.42
516     The cursor moves when selecting text in the current input line, how do I switch this off?
517     See next entry.
518    
519     During rlogin/ssh/telnet/etc. sessions, clicking near the cursor outputs strange escape sequences, how do I fix this?
520     These are caused by the "readline" perl extension. Under normal
521     circumstances, it will move your cursor around when you click into the
522     line that contains it. It tries hard not to do this at the wrong moment,
523     but when running a program that doesn't parse cursor movements or in
524     some cases during rlogin sessions, it fails to detect this properly.
525    
526 root 1.43 You can permanently switch this feature off by disabling the "readline"
527 root 1.42 extension:
528    
529     URxvt.perl-ext-common: default,-readline
530    
531 root 1.70 My numeric keypad acts weird and generates differing output?
532     Some Debian GNU/Linux users seem to have this problem, although no
533 root 1.42 specific details were reported so far. It is possible that this is
534 root 1.43 caused by the wrong "TERM" setting, although the details of whether and
535 root 1.42 how this can happen are unknown, as "TERM=rxvt" should offer a
536     compatible keymap. See the answer to the previous question, and please
537     report if that helped.
538    
539     My Compose (Multi_key) key is no longer working.
540     The most common causes for this are that either your locale is not set
541 root 1.69 correctly, or you specified a preeditType that is not supported by your
542 root 1.42 input method. For example, if you specified OverTheSpot and your input
543     method (e.g. the default input method handling Compose keys) does not
544     support this (for instance because it is not visual), then rxvt-unicode
545     will continue without an input method.
546    
547 root 1.69 In this case either do not specify a preeditType or specify more than
548 root 1.42 one pre-edit style, such as OverTheSpot,Root,None.
549    
550 root 1.57 If it still doesn't work, then maybe your input method doesn't support
551     compose sequences - to fall back to the built-in one, make sure you
552     don't specify an input method via "-im" or "XMODIFIERS".
553    
554 root 1.42 I cannot type "Ctrl-Shift-2" to get an ASCII NUL character due to ISO 14755
555     Either try "Ctrl-2" alone (it often is mapped to ASCII NUL even on
556     international keyboards) or simply use ISO 14755 support to your
557     advantage, typing <Ctrl-Shift-0> to get a ASCII NUL. This works for
558     other codes, too, such as "Ctrl-Shift-1-d" to type the default telnet
559     escape character and so on.
560    
561     Mouse cut/paste suddenly no longer works.
562     Make sure that mouse reporting is actually turned off since killing some
563 sf-exg 1.64 editors prematurely may leave it active. I've heard that tcsh may use
564     mouse reporting unless it is otherwise specified. A quick check is to
565     see if cut/paste works when the Alt or Shift keys are pressed.
566 root 1.42
567     What's with the strange Backspace/Delete key behaviour?
568 root 1.43 Assuming that the physical Backspace key corresponds to the Backspace
569 root 1.42 keysym (not likely for Linux ... see the following question) there are
570     two standard values that can be used for Backspace: "^H" and "^?".
571    
572     Historically, either value is correct, but rxvt-unicode adopts the
573 root 1.47 debian policy of using "^?" when unsure, because it's the one and only
574 root 1.42 correct choice :).
575    
576 root 1.60 It is possible to toggle between "^H" and "^?" with the DECBKM private
577     mode:
578 root 1.42
579     # use Backspace = ^H
580     $ stty erase ^H
581 root 1.67 $ printf "\e[?67h"
582 root 1.42
583     # use Backspace = ^?
584     $ stty erase ^?
585 root 1.67 $ printf "\e[?67l"
586 root 1.42
587     This helps satisfy some of the Backspace discrepancies that occur, but
588     if you use Backspace = "^H", make sure that the termcap/terminfo value
589     properly reflects that.
590    
591     The Delete key is a another casualty of the ill-defined Backspace
592     problem. To avoid confusion between the Backspace and Delete keys, the
593     Delete key has been assigned an escape sequence to match the vt100 for
594     Execute ("ESC [ 3 ~") and is in the supplied termcap/terminfo.
595    
596     Some other Backspace problems:
597    
598     some editors use termcap/terminfo, some editors (vim I'm told) expect
599     Backspace = ^H, GNU Emacs (and Emacs-like editors) use ^H for help.
600    
601     Perhaps someday this will all be resolved in a consistent manner.
602    
603     I don't like the key-bindings. How do I change them?
604     There are some compile-time selections available via configure. Unless
605     you have run "configure" with the "--disable-resources" option you can
606     use the `keysym' resource to alter the keystrings associated with
607     keysyms.
608    
609     Here's an example for a URxvt session started using "urxvt -name URxvt"
610    
611 sf-exg 1.64 URxvt.keysym.Prior: \033[5~
612     URxvt.keysym.Next: \033[6~
613     URxvt.keysym.Home: \033[7~
614     URxvt.keysym.End: \033[8~
615     URxvt.keysym.Up: \033[A
616     URxvt.keysym.Down: \033[B
617     URxvt.keysym.Right: \033[C
618     URxvt.keysym.Left: \033[D
619 root 1.42
620     See some more examples in the documentation for the keysym resource.
621    
622     I'm using keyboard model XXX that has extra Prior/Next/Insert keys. How do I make use of them? For example, the Sun Keyboard type 4 has the following map
623     KP_Insert == Insert
624     F22 == Print
625     F27 == Home
626     F29 == Prior
627     F33 == End
628     F35 == Next
629    
630     Rather than have rxvt-unicode try to accommodate all the various
631     possible keyboard mappings, it is better to use `xmodmap' to remap the
632     keys as required for your particular machine.
633    
634     Terminal Configuration
635     Can I see a typical configuration?
636     The default configuration tries to be xterm-like, which I don't like
637     that much, but it's least surprise to regular users.
638    
639     As a rxvt or rxvt-unicode user, you are practically supposed to invest
640     time into customising your terminal. To get you started, here is the
641     author's .Xdefaults entries, with comments on what they do. It's
642     certainly not *typical*, but what's typical...
643    
644     URxvt.cutchars: "()*,<>[]{}|'
645 root 1.73 URxvt.print-pipe: cat >/some/path
646 root 1.42
647     These are just for testing stuff.
648    
649     URxvt.imLocale: ja_JP.UTF-8
650     URxvt.preeditType: OnTheSpot,None
651    
652     This tells rxvt-unicode to use a special locale when communicating with
653     the X Input Method, and also tells it to only use the OnTheSpot pre-edit
654     type, which requires the "xim-onthespot" perl extension but rewards me
655     with correct-looking fonts.
656    
657     URxvt.perl-lib: /root/lib/urxvt
658     URxvt.perl-ext-common: default,selection-autotransform,selection-pastebin,xim-onthespot,remote-clipboard
659     URxvt.selection.pattern-0: ( at .*? line \\d+)
660     URxvt.selection.pattern-1: ^(/[^:]+):\
661     URxvt.selection-autotransform.0: s/^([^:[:space:]]+):(\\d+):?$/:e \\Q$1\\E\\x0d:$2\\x0d/
662     URxvt.selection-autotransform.1: s/^ at (.*?) line (\\d+)$/:e \\Q$1\\E\\x0d:$2\\x0d/
663    
664     This is my perl configuration. The first two set the perl library
665     directory and also tells urxvt to use a large number of extensions. I
666     develop for myself mostly, so I actually use most of the extensions I
667     write.
668    
669     The selection stuff mainly makes the selection perl-error-message aware
670 root 1.43 and tells it to convert perl error messages into vi-commands to load the
671 root 1.58 relevant file and go to the error line number.
672 root 1.42
673     URxvt.scrollstyle: plain
674     URxvt.secondaryScroll: true
675    
676     As the documentation says: plain is the preferred scrollbar for the
677 root 1.43 author. The "secondaryScroll" configures urxvt to scroll in full-screen
678     apps, like screen, so lines scrolled out of screen end up in urxvt's
679 root 1.42 scrollback buffer.
680    
681     URxvt.background: #000000
682     URxvt.foreground: gray90
683     URxvt.color7: gray90
684     URxvt.colorBD: #ffffff
685     URxvt.cursorColor: #e0e080
686     URxvt.throughColor: #8080f0
687     URxvt.highlightColor: #f0f0f0
688    
689     Some colours. Not sure which ones are being used or even non-defaults,
690     but these are in my .Xdefaults. Most notably, they set
691     foreground/background to light gray/black, and also make sure that the
692     colour 7 matches the default foreground colour.
693    
694     URxvt.underlineColor: yellow
695    
696     Another colour, makes underline lines look different. Sometimes hurts,
697     but is mostly a nice effect.
698    
699     URxvt.geometry: 154x36
700     URxvt.loginShell: false
701     URxvt.meta: ignore
702     URxvt.utmpInhibit: true
703    
704     Uh, well, should be mostly self-explanatory. By specifying some defaults
705     manually, I can quickly switch them for testing.
706    
707     URxvt.saveLines: 8192
708    
709     A large scrollback buffer is essential. Really.
710    
711     URxvt.mapAlert: true
712    
713     The only case I use it is for my IRC window, which I like to keep
714     iconified till people msg me (which beeps).
715    
716     URxvt.visualBell: true
717    
718     The audible bell is often annoying, especially when in a crowd.
719    
720     URxvt.insecure: true
721    
722     Please don't hack my mutt! Ooops...
723    
724     URxvt.pastableTabs: false
725    
726     I once thought this is a great idea.
727    
728     urxvt.font: 9x15bold,\
729     -misc-fixed-bold-r-normal--15-140-75-75-c-90-iso10646-1,\
730     -misc-fixed-medium-r-normal--15-140-75-75-c-90-iso10646-1, \
731     [codeset=JISX0208]xft:Kochi Gothic, \
732     xft:Bitstream Vera Sans Mono:autohint=true, \
733     xft:Code2000:antialias=false
734     urxvt.boldFont: -xos4-terminus-bold-r-normal--14-140-72-72-c-80-iso8859-15
735     urxvt.italicFont: xft:Bitstream Vera Sans Mono:italic:autohint=true
736     urxvt.boldItalicFont: xft:Bitstream Vera Sans Mono:bold:italic:autohint=true
737    
738     I wrote rxvt-unicode to be able to specify fonts exactly. So don't be
739 root 1.43 overwhelmed. A special note: the "9x15bold" mentioned above is actually
740 root 1.42 the version from XFree-3.3, as XFree-4 replaced it by a totally
741     different font (different glyphs for ";" and many other harmless
742     characters), while the second font is actually the "9x15bold" from
743     XFree4/XOrg. The bold version has less chars than the medium version, so
744 root 1.43 I use it for rare characters, too. When editing sources with vim, I use
745 root 1.42 italic for comments and other stuff, which looks quite good with
746     Bitstream Vera anti-aliased.
747    
748     Terminus is a quite bad font (many very wrong glyphs), but for most of
749     my purposes, it works, and gives a different look, as my normal
750     (Non-bold) font is already bold, and I want to see a difference between
751     bold and normal fonts.
752    
753     Please note that I used the "urxvt" instance name and not the "URxvt"
754 root 1.58 class name. That is because I use different configs for different
755 root 1.42 purposes, for example, my IRC window is started with "-name IRC", and
756     uses these defaults:
757    
758     IRC*title: IRC
759     IRC*geometry: 87x12+535+542
760     IRC*saveLines: 0
761     IRC*mapAlert: true
762     IRC*font: suxuseuro
763     IRC*boldFont: suxuseuro
764     IRC*colorBD: white
765     IRC*keysym.M-C-1: command:\033]710;suxuseuro\007\033]711;suxuseuro\007
766     IRC*keysym.M-C-2: command:\033]710;9x15bold\007\033]711;9x15bold\007
767    
768 root 1.57 "Alt-Ctrl-1" and "Alt-Ctrl-2" switch between two different font sizes.
769 root 1.42 "suxuseuro" allows me to keep an eye (and actually read) stuff while
770     keeping a very small window. If somebody pastes something complicated
771     (e.g. japanese), I temporarily switch to a larger font.
772    
773     The above is all in my ".Xdefaults" (I don't use ".Xresources" nor
774     "xrdb"). I also have some resources in a separate ".Xdefaults-hostname"
775 root 1.60 file for different hosts, for example, on my main desktop, I use:
776 root 1.42
777     URxvt.keysym.C-M-q: command:\033[3;5;5t
778     URxvt.keysym.C-M-y: command:\033[3;5;606t
779     URxvt.keysym.C-M-e: command:\033[3;1605;5t
780     URxvt.keysym.C-M-c: command:\033[3;1605;606t
781     URxvt.keysym.C-M-p: perl:test
782    
783     The first for keysym definitions allow me to quickly bring some windows
784     in the layout I like most. Ion users might start laughing but will stop
785     immediately when I tell them that I use my own Fvwm2 module for much the
786     same effect as Ion provides, and I only very rarely use the above key
787     combinations :->
788    
789     Why doesn't rxvt-unicode read my resources?
790     Well, why, indeed? It does, in a way very similar to other X
791     applications. Most importantly, this means that if you or your OS loads
792     resources into the X display (the right way to do it), rxvt-unicode will
793     ignore any resource files in your home directory. It will only read
794     $HOME/.Xdefaults when no resources are attached to the display.
795    
796     If you have or use an $HOME/.Xresources file, chances are that resources
797     are loaded into your X-server. In this case, you have to re-login after
798     every change (or run xrdb -merge $HOME/.Xresources).
799    
800     Also consider the form resources have to use:
801    
802     URxvt.resource: value
803    
804     If you want to use another form (there are lots of different ways of
805 root 1.43 specifying resources), make sure you understand whether and why it
806     works. If unsure, use the form above.
807 root 1.42
808     When I log-in to another system it tells me about missing terminfo data?
809     The terminal description used by rxvt-unicode is not as widely available
810     as that for xterm, or even rxvt (for which the same problem often
811     arises).
812    
813     The correct solution for this problem is to install the terminfo, this
814 root 1.57 can be done by simply installing rxvt-unicode on the remote system as
815     well (in case you have a nice package manager ready), or you can install
816     the terminfo database manually like this (with ncurses infocmp. works as
817     user and root):
818 root 1.42
819     REMOTE=remotesystem.domain
820 root 1.44 infocmp rxvt-unicode | ssh $REMOTE "mkdir -p .terminfo && cat >/tmp/ti && tic /tmp/ti"
821 root 1.42
822 root 1.44 One some systems you might need to set $TERMINFO to the full path of
823 root 1.70 $HOME/.terminfo for this to work.
824 root 1.44
825 root 1.42 If you cannot or do not want to do this, then you can simply set
826     "TERM=rxvt" or even "TERM=xterm", and live with the small number of
827     problems arising, which includes wrong keymapping, less and different
828     colours and some refresh errors in fullscreen applications. It's a nice
829     quick-and-dirty workaround for rare cases, though.
830    
831     If you always want to do this (and are fine with the consequences) you
832     can either recompile rxvt-unicode with the desired TERM value or use a
833     resource to set it:
834    
835     URxvt.termName: rxvt
836    
837     If you don't plan to use rxvt (quite common...) you could also replace
838     the rxvt terminfo file with the rxvt-unicode one and use "TERM=rxvt".
839    
840 root 1.57 nano fails with "Error opening terminal: rxvt-unicode"
841     This exceptionally confusing and useless error message is printed by
842     nano when it can't find the terminfo database. Nothing is wrong with
843     your terminal, read the previous answer for a solution.
844    
845 root 1.42 "tic" outputs some error when compiling the terminfo entry.
846     Most likely it's the empty definition for "enacs=". Just replace it by
847     "enacs=\E[0@" and try again.
848    
849     "bash"'s readline does not work correctly under urxvt.
850     See next entry.
851    
852     I need a termcap file entry.
853     One reason you might want this is that some distributions or operating
854     systems still compile some programs using the long-obsoleted termcap
855 root 1.72 library (Fedora's bash is one example) and rely on a termcap entry for
856     "rxvt-unicode".
857 root 1.42
858 root 1.43 You could use rxvt's termcap entry with reasonable results in many
859     cases. You can also create a termcap entry by using terminfo's infocmp
860     program like this:
861 root 1.42
862     infocmp -C rxvt-unicode
863    
864 root 1.55 Or you could use the termcap entry in doc/etc/rxvt-unicode.termcap,
865     generated by the command above.
866 root 1.42
867     Why does "ls" no longer have coloured output?
868     The "ls" in the GNU coreutils unfortunately doesn't use terminfo to
869 root 1.43 decide whether a terminal has colour, but uses its own configuration
870 root 1.42 file. Needless to say, "rxvt-unicode" is not in its default file (among
871     with most other terminals supporting colour). Either add:
872    
873     TERM rxvt-unicode
874    
875     to "/etc/DIR_COLORS" or simply add:
876    
877     alias ls='ls --color=auto'
878    
879     to your ".profile" or ".bashrc".
880    
881     Why doesn't vim/emacs etc. use the 88 colour mode?
882     See next entry.
883    
884     Why doesn't vim/emacs etc. make use of italic?
885     See next entry.
886    
887     Why are the secondary screen-related options not working properly?
888     Make sure you are using "TERM=rxvt-unicode". Some pre-packaged
889 root 1.70 distributions break rxvt-unicode by setting "TERM" to "rxvt", which
890     doesn't have these extra features. Unfortunately, some of these
891 root 1.42 furthermore fail to even install the "rxvt-unicode" terminfo file, so
892     you will need to install it on your own (See the question When I log-in
893     to another system it tells me about missing terminfo data? on how to do
894     this).
895    
896     Encoding / Locale / Input Method Issues
897     Rxvt-unicode does not seem to understand the selected encoding?
898     See next entry.
899    
900     Unicode does not seem to work?
901     If you encounter strange problems like typing an accented character but
902     getting two unrelated other characters or similar, or if program output
903     is subtly garbled, then you should check your locale settings.
904    
905     Rxvt-unicode must be started with the same "LC_CTYPE" setting as the
906 root 1.46 programs running in it. Often rxvt-unicode is started in the "C" locale,
907     while the login script running within the rxvt-unicode window changes
908     the locale to something else, e.g. "en_GB.UTF-8". Needless to say, this
909     is not going to work, and is the most common cause for problems.
910 root 1.42
911     The best thing is to fix your startup environment, as you will likely
912     run into other problems. If nothing works you can try this in your
913     .profile.
914    
915 root 1.46 printf '\33]701;%s\007' "$LC_CTYPE" # $LANG or $LC_ALL are worth a try, too
916 root 1.42
917     If this doesn't work, then maybe you use a "LC_CTYPE" specification not
918     supported on your systems. Some systems have a "locale" command which
919     displays this (also, "perl -e0" can be used to check locale settings, as
920     it will complain loudly if it cannot set the locale). If it displays
921     something like:
922    
923     locale: Cannot set LC_CTYPE to default locale: ...
924    
925     Then the locale you specified is not supported on your system.
926    
927     If nothing works and you are sure that everything is set correctly then
928     you will need to remember a little known fact: Some programs just don't
929     support locales :(
930    
931     How does rxvt-unicode determine the encoding to use?
932     See next entry.
933    
934     Is there an option to switch encodings?
935     Unlike some other terminals, rxvt-unicode has no encoding switch, and no
936     specific "utf-8" mode, such as xterm. In fact, it doesn't even know
937     about UTF-8 or any other encodings with respect to terminal I/O.
938    
939     The reasons is that there exists a perfectly fine mechanism for
940     selecting the encoding, doing I/O and (most important) communicating
941     this to all applications so everybody agrees on character properties
942     such as width and code number. This mechanism is the *locale*.
943     Applications not using that info will have problems (for example,
944     "xterm" gets the width of characters wrong as it uses its own,
945     locale-independent table under all locales).
946    
947     Rxvt-unicode uses the "LC_CTYPE" locale category to select encoding. All
948     programs doing the same (that is, most) will automatically agree in the
949     interpretation of characters.
950    
951     Unfortunately, there is no system-independent way to select locales, nor
952     is there a standard on how locale specifiers will look like.
953    
954     On most systems, the content of the "LC_CTYPE" environment variable
955     contains an arbitrary string which corresponds to an already-installed
956     locale. Common names for locales are "en_US.UTF-8", "de_DE.ISO-8859-15",
957     "ja_JP.EUC-JP", i.e. "language_country.encoding", but other forms (i.e.
958     "de" or "german") are also common.
959    
960     Rxvt-unicode ignores all other locale categories, and except for the
961     encoding, ignores country or language-specific settings, i.e.
962     "de_DE.UTF-8" and "ja_JP.UTF-8" are the normally same to rxvt-unicode.
963    
964     If you want to use a specific encoding you have to make sure you start
965     rxvt-unicode with the correct "LC_CTYPE" category.
966    
967     Can I switch locales at runtime?
968     Yes, using an escape sequence. Try something like this, which sets
969     rxvt-unicode's idea of "LC_CTYPE".
970    
971     printf '\33]701;%s\007' ja_JP.SJIS
972    
973     See also the previous answer.
974    
975     Sometimes this capability is rather handy when you want to work in one
976     locale (e.g. "de_DE.UTF-8") but some programs don't support it (e.g.
977     UTF-8). For example, I use this script to start "xjdic", which first
978     switches to a locale supported by xjdic and back later:
979    
980     printf '\33]701;%s\007' ja_JP.SJIS
981     xjdic -js
982     printf '\33]701;%s\007' de_DE.UTF-8
983    
984     You can also use xterm's "luit" program, which usually works fine,
985     except for some locales where character width differs between program-
986     and rxvt-unicode-locales.
987    
988     I have problems getting my input method working.
989     Try a search engine, as this is slightly different for every input
990     method server.
991    
992     Here is a checklist:
993    
994     - Make sure your locale *and* the imLocale are supported on your OS.
995     Try "locale -a" or check the documentation for your OS.
996    
997     - Make sure your locale or imLocale matches a locale supported by your
998     XIM.
999     For example, kinput2 does not support UTF-8 locales, you should use
1000     "ja_JP.EUC-JP" or equivalent.
1001    
1002     - Make sure your XIM server is actually running.
1003     - Make sure the "XMODIFIERS" environment variable is set correctly when
1004     *starting* rxvt-unicode.
1005     When you want to use e.g. kinput2, it must be set to "@im=kinput2".
1006 root 1.43 For scim, use "@im=SCIM". You can see what input method servers are
1007 root 1.42 running with this command:
1008    
1009     xprop -root XIM_SERVERS
1010    
1011     My input method wants <some encoding> but I want UTF-8, what can I do?
1012     You can specify separate locales for the input method and the rest of
1013     the terminal, using the resource "imlocale":
1014    
1015     URxvt.imlocale: ja_JP.EUC-JP
1016    
1017     Now you can start your terminal with "LC_CTYPE=ja_JP.UTF-8" and still
1018     use your input method. Please note, however, that, depending on your
1019     Xlib version, you may not be able to input characters outside "EUC-JP"
1020     in a normal way then, as your input method limits you.
1021    
1022     Rxvt-unicode crashes when the X Input Method changes or exits.
1023     Unfortunately, this is unavoidable, as the XIM protocol is racy by
1024     design. Applications can avoid some crashes at the expense of memory
1025     leaks, and Input Methods can avoid some crashes by careful ordering at
1026     exit time. kinput2 (and derived input methods) generally succeeds, while
1027     SCIM (or similar input methods) fails. In the end, however, crashes
1028     cannot be completely avoided even if both sides cooperate.
1029    
1030     So the only workaround is not to kill your Input Method Servers.
1031    
1032     Operating Systems / Package Maintaining
1033     I am maintaining rxvt-unicode for distribution/OS XXX, any recommendation?
1034     You should build one binary with the default options. configure now
1035     enables most useful options, and the trend goes to making them
1036 root 1.43 runtime-switchable, too, so there is usually no drawback to enabling
1037 root 1.42 them, except higher disk and possibly memory usage. The perl interpreter
1038     should be enabled, as important functionality (menus, selection, likely
1039     more in the future) depends on it.
1040    
1041 root 1.58 You should not overwrite the "perl-ext-common" and "perl-ext" resources
1042 root 1.42 system-wide (except maybe with "defaults"). This will result in useful
1043     behaviour. If your distribution aims at low memory, add an empty
1044     "perl-ext-common" resource to the app-defaults file. This will keep the
1045     perl interpreter disabled until the user enables it.
1046    
1047     If you can/want build more binaries, I recommend building a minimal one
1048     with "--disable-everything" (very useful) and a maximal one with
1049     "--enable-everything" (less useful, it will be very big due to a lot of
1050     encodings built-in that increase download times and are rarely used).
1051    
1052     I need to make it setuid/setgid to support utmp/ptys on my OS, is this safe?
1053     It should be, starting with release 7.1. You are encouraged to properly
1054     install urxvt with privileges necessary for your OS now.
1055    
1056     When rxvt-unicode detects that it runs setuid or setgid, it will fork
1057     into a helper process for privileged operations (pty handling on some
1058     systems, utmp/wtmp/lastlog handling on others) and drop privileges
1059     immediately. This is much safer than most other terminals that keep
1060     privileges while running (but is more relevant to urxvt, as it contains
1061     things as perl interpreters, which might be "helpful" to attackers).
1062    
1063     This forking is done as the very first within main(), which is very
1064     early and reduces possible bugs to initialisation code run before
1065     main(), or things like the dynamic loader of your system, which should
1066     result in very little risk.
1067    
1068     I am on FreeBSD and rxvt-unicode does not seem to work at all.
1069     Rxvt-unicode requires the symbol "__STDC_ISO_10646__" to be defined in
1070     your compile environment, or an implementation that implements it,
1071 root 1.43 whether it defines the symbol or not. "__STDC_ISO_10646__" requires that
1072 root 1.42 wchar_t is represented as unicode.
1073    
1074 root 1.43 As you might have guessed, FreeBSD does neither define this symbol nor
1075 root 1.42 does it support it. Instead, it uses its own internal representation of
1076     wchar_t. This is, of course, completely fine with respect to standards.
1077    
1078     However, that means rxvt-unicode only works in "POSIX", "ISO-8859-1" and
1079 root 1.55 "UTF-8" locales under FreeBSD (which all use Unicode as wchar_t).
1080 root 1.42
1081     "__STDC_ISO_10646__" is the only sane way to support multi-language apps
1082     in an OS, as using a locale-dependent (and non-standardized)
1083     representation of wchar_t makes it impossible to convert between wchar_t
1084     (as used by X11 and your applications) and any other encoding without
1085     implementing OS-specific-wrappers for each and every locale. There
1086     simply are no APIs to convert wchar_t into anything except the current
1087     locale encoding.
1088    
1089     Some applications (such as the formidable mlterm) work around this by
1090     carrying their own replacement functions for character set handling with
1091     them, and either implementing OS-dependent hacks or doing multiple
1092     conversions (which is slow and unreliable in case the OS implements
1093     encodings slightly different than the terminal emulator).
1094    
1095     The rxvt-unicode author insists that the right way to fix this is in the
1096     system libraries once and for all, instead of forcing every app to carry
1097     complete replacements for them :)
1098    
1099     How can I use rxvt-unicode under cygwin?
1100     rxvt-unicode should compile and run out of the box on cygwin, using the
1101     X11 libraries that come with cygwin. libW11 emulation is no longer
1102     supported (and makes no sense, either, as it only supported a single
1103     font). I recommend starting the X-server in "-multiwindow" or
1104     "-rootless" mode instead, which will result in similar look&feel as the
1105     old libW11 emulation.
1106    
1107     At the time of this writing, cygwin didn't seem to support any
1108     multi-byte encodings (you might try "LC_CTYPE=C-UTF-8"), so you are
1109     likely limited to 8-bit encodings.
1110    
1111 root 1.49 Character widths are not correct.
1112     urxvt uses the system wcwidth function to know the information about the
1113     width of characters, so on systems with incorrect locale data you will
1114     likely get bad results. Two notorious examples are Solaris 9, where
1115     single-width characters like U+2514 are reported as double-width, and
1116     Darwin 8, where combining chars are reported having width 1.
1117    
1118     The solution is to upgrade your system or switch to a better one. A
1119     possibly working workaround is to use a wcwidth implementation like
1120    
1121     http://www.cl.cam.ac.uk/~mgk25/ucs/wcwidth.c
1122