ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/rxvt-unicode/README.FAQ
Revision: 1.23
Committed: Tue Jan 10 04:26:54 2006 UTC (18 years, 4 months ago) by root
Branch: MAIN
Changes since 1.22: +1 -1 lines
Log Message:
*** empty log message ***

File Contents

# User Rev Content
1 root 1.1 FREQUENTLY ASKED QUESTIONS
2 root 1.20 Isn't rxvt supposed to be small? Don't all those features bloat?
3     I often get asked about this, and I think, no, they didn't cause
4     extra bloat. If you compare a minimal rxvt and a minimal urxvt, you
5     can see that the urxvt binary is larger (due to some encoding tables
6     always being compiled in), but it actually uses less memory (RSS)
7     after startup. Even with "--disable-everything", this comparison is
8     a bit unfair, as many features unique to urxvt (locale, encoding
9     conversion, iso14755 etc.) are already in use in this mode.
10    
11     text data bss drs rss filename
12     98398 1664 24 15695 1824 rxvt --disable-everything
13     188985 9048 66616 18222 1788 urxvt --disable-everything
14    
15     When you "--enable-everything" (which _is_ unfair, as this involves
16     xft and full locale/XIM support which are quite bloaty inside libX11
17     and my libc), the two diverge, but not unreasnobaly so.
18    
19     text data bss drs rss filename
20     163431 2152 24 20123 2060 rxvt --enable-everything
21     1035683 49680 66648 29096 3680 urxvt --enable-everything
22    
23     The very large size of the text section is explained by the
24     east-asian encoding tables, which, if unused, take up disk space but
25     nothing else and can be compiled out unless you rely on X11 core
26     fonts that use those encodings. The BSS size comes from the 64k
27     emergency buffer that my c++ compiler allocates (but of course
28     doesn't use unless you are out of memory). Also, using an xft font
29     instead of a core font immediately adds a few megabytes of RSS. Xft
30     indeed is responsible for a lot of RSS even when not used.
31    
32     Of course, due to every character using two or four bytes instead of
33     one, a large scrollback buffer will ultimately make rxvt-unicode use
34     more memory.
35    
36     Compared to e.g. Eterm (5112k), aterm (3132k) and xterm (4680k),
37     this still fares rather well. And compared to some monsters like
38     gnome-terminal (21152k + extra 4204k in separate processes) or
39     konsole (22200k + extra 43180k in daemons that stay around after
40 root 1.23 exit, plus half a minute of startup time, including the hundreds of
41 root 1.20 warnings it spits out), it fares extremely well *g*.
42    
43     Why C++, isn't that unportable/bloated/uncool?
44     Is this a question? :) It comes up very often. The simple answer is:
45     I had to write it, and C++ allowed me to write and maintain it in a
46     fraction of the time and effort (which is a scarce resource for me).
47     Put even shorter: It simply wouldn't exist without C++.
48    
49     My personal stance on this is that C++ is less portable than C, but
50     in the case of rxvt-unicode this hardly matters, as its portability
51     limits are defined by things like X11, pseudo terminals, locale
52     support and unix domain sockets, which are all less portable than
53     C++ itself.
54    
55     Regarding the bloat, see the above question: It's easy to write
56     programs in C that use gobs of memory, an certainly possible to
57     write programs in C++ that don't. C++ also often comes with large
58     libraries, but this is not necessarily the case with GCC. Here is
59     what rxvt links against on my system with a minimal config:
60    
61     libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0x00002aaaaabc3000)
62     libc.so.6 => /lib/libc.so.6 (0x00002aaaaadde000)
63     libdl.so.2 => /lib/libdl.so.2 (0x00002aaaab01d000)
64     /lib64/ld-linux-x86-64.so.2 (0x00002aaaaaaab000)
65    
66     And here is rxvt-unicode:
67    
68     libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0x00002aaaaabc3000)
69     libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00002aaaaada2000)
70     libc.so.6 => /lib/libc.so.6 (0x00002aaaaaeb0000)
71     libdl.so.2 => /lib/libdl.so.2 (0x00002aaaab0ee000)
72     /lib64/ld-linux-x86-64.so.2 (0x00002aaaaaaab000)
73    
74     No large bloated libraries (of course, none were linked in
75     statically), except maybe libX11 :)
76    
77     Does it support tabs, can I have a tabbed rxvt-unicode?
78     rxvt-unicode does not directly support tabs. It will work fine with
79     tabbing functionality of many window managers or similar tabbing
80     programs, and its embedding-features allow it to be embedded into
81     other programs, as witnessed by doc/rxvt-tabbed or the upcoming
82     "Gtk2::URxvt" perl module, which features a tabbed urxvt (murxvt)
83     terminal as an example embedding application.
84    
85 root 1.1 How do I know which rxvt-unicode version I'm using?
86     The version number is displayed with the usage (-h). Also the escape
87 root 1.9 sequence "ESC [ 8 n" sets the window title to the version number.
88 root 1.21 When using the rxvtc client, the version displayed is that of the
89 root 1.20 daemon.
90 root 1.9
91     I am using Debian GNU/Linux and have a problem...
92 root 1.15 The Debian GNU/Linux package of rxvt-unicode in sarge contains large
93     patches that considerably change the behaviour of rxvt-unicode.
94     Before reporting a bug to the original rxvt-unicode author please
95     download and install the genuine version
96 root 1.9 (<http://software.schmorp.de#rxvt-unicode>) and try to reproduce the
97     problem. If you cannot, chances are that the problems are specific
98     to Debian GNU/Linux, in which case it should be reported via the
99     Debian Bug Tracking System (use "reportbug" to report the bug).
100    
101     For other problems that also affect the Debian package, you can and
102     probably should use the Debian BTS, too, because, after all, it's
103     also a bug in the Debian version and it serves as a reminder for
104     other users that might encounter the same issue.
105 root 1.1
106 root 1.22 I am maintaining rxvt-unicode for distribution/OS XXX, any
107     recommendation?
108     You should build one binary with the default options. configure now
109     enables most useful options, and the trend goes to making them
110     runtime-switchable, too, so there is usually no drawback to enbaling
111     them, except higher disk and possibly memory usage. The perl
112     interpreter should be enabled, as important functionality (menus,
113     selection, likely more in the future) depends on it.
114    
115     You should not overwrite the "perl-ext-common" snd "perl-ext"
116     resources system-wide (except maybe with "defaults"). This will
117     result in useful behaviour. If your distribution aims at low memory,
118     add an empty "perl-ext-common" resource to the app-defaults file.
119     This will keep the perl interpreter disabled until the user enables
120     it.
121    
122     If you can/want build more binaries, I recommend building a minimal
123     one with "--disable-everything" (very useful) and a maximal one with
124     "--enable-everything" (less useful, it will be very big due to a lot
125     of encodings built-in that increase download times and are rarely
126     used).
127    
128     I need to make it setuid/setgid to support utmp/ptys on my OS, is this
129     safe?
130     Likely not. While I honestly try to make it secure, and am probably
131     not bad at it, I think it is simply unreasonable to expect all of
132     freetype + fontconfig + xft + xlib + ... + rxvt-unicode itself to
133     all be secure. Also, rxvt-unicode disables some options when it
134     detects that it runs setuid or setgid, which is not nice.
135    
136     Elevated privileges are only required for utmp and pty operations on
137     some systems (for example, GNU/Linux doesn't need any extra
138     privileges for ptys, but some need it for utmp support). If
139     rxvt-unicode doesn't support the library/setuid helper that your OS
140     needs I'll be happy to assist you in implementing support for it.
141    
142     So, while setuid/setgid operation is supported and not a problem on
143     your typical single-user-no-other-logins unix desktop, always
144     remember that its an awful lot of code, most of which isn't checked
145     for security issues regularly.
146    
147 root 1.1 When I log-in to another system it tells me about missing terminfo data?
148     The terminal description used by rxvt-unicode is not as widely
149     available as that for xterm, or even rxvt (for which the same
150     problem often arises).
151    
152     The correct solution for this problem is to install the terminfo,
153     this can be done like this (with ncurses' infocmp):
154    
155     REMOTE=remotesystem.domain
156     infocmp rxvt-unicode | ssh $REMOTE "cat >/tmp/ti && tic /tmp/ti"
157    
158     ... or by installing rxvt-unicode normally on the remote system,
159    
160     If you cannot or do not want to do this, then you can simply set
161     "TERM=rxvt" or even "TERM=xterm", and live with the small number of
162     problems arising, which includes wrong keymapping, less and
163     different colours and some refresh errors in fullscreen
164     applications. It's a nice quick-and-dirty workaround for rare cases,
165     though.
166    
167 root 1.9 If you always want to do this (and are fine with the consequences)
168     you can either recompile rxvt-unicode with the desired TERM value or
169     use a resource to set it:
170 root 1.1
171     URxvt.termName: rxvt
172    
173     If you don't plan to use rxvt (quite common...) you could also
174     replace the rxvt terminfo file with the rxvt-unicode one.
175    
176 root 1.15 "tic" outputs some error when compiling the terminfo entry.
177     Most likely it's the empty definition for "enacs=". Just replace it
178     by "enacs=\E[0@" and try again.
179    
180 root 1.21 "bash"'s readline does not work correctly under rxvt.
181 root 1.1 I need a termcap file entry.
182 root 1.9 One reason you might want this is that some distributions or
183     operating systems still compile some programs using the
184 root 1.11 long-obsoleted termcap library (Fedora Core's bash is one example)
185     and rely on a termcap entry for "rxvt-unicode".
186 root 1.9
187 root 1.1 You could use rxvt's termcap entry with resonable results in many
188     cases. You can also create a termcap entry by using terminfo's
189     infocmp program like this:
190    
191     infocmp -C rxvt-unicode
192    
193 root 1.9 Or you could use this termcap entry, generated by the command above:
194 root 1.1
195     rxvt-unicode|rxvt-unicode terminal (X Window System):\
196     :am:bw:eo:km:mi:ms:xn:xo:\
197 root 1.11 :co#80:it#8:li#24:lm#0:\
198 root 1.1 :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:\
199     :K1=\EOw:K2=\EOu:K3=\EOy:K4=\EOq:K5=\EOs:LE=\E[%dD:\
200 root 1.12 :RI=\E[%dC:SF=\E[%dS:SR=\E[%dT:UP=\E[%dA:ae=\E(B:al=\E[L:\
201     :as=\E(0:bl=^G:cd=\E[J:ce=\E[K:cl=\E[H\E[2J:\
202     :cm=\E[%i%d;%dH:cr=^M:cs=\E[%i%d;%dr:ct=\E[3g:dc=\E[P:\
203     :dl=\E[M:do=^J:ec=\E[%dX:ei=\E[4l:ho=\E[H:\
204     :i1=\E[?47l\E=\E[?1l:ic=\E[@:im=\E[4h:\
205     :is=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l:\
206 root 1.11 :k1=\E[11~:k2=\E[12~:k3=\E[13~:k4=\E[14~:k5=\E[15~:\
207     :k6=\E[17~:k7=\E[18~:k8=\E[19~:k9=\E[20~:kD=\E[3~:\
208     :kI=\E[2~:kN=\E[6~:kP=\E[5~:kb=\177:kd=\EOB:ke=\E[?1l\E>:\
209     :kh=\E[7~:kl=\EOD:kr=\EOC:ks=\E[?1h\E=:ku=\EOA:le=^H:\
210     :mb=\E[5m:md=\E[1m:me=\E[m\017:mr=\E[7m:nd=\E[C:rc=\E8:\
211     :sc=\E7:se=\E[27m:sf=^J:so=\E[7m:sr=\EM:st=\EH:ta=^I:\
212     :te=\E[r\E[?1049l:ti=\E[?1049h:ue=\E[24m:up=\E[A:\
213     :us=\E[4m:vb=\E[?5h\E[?5l:ve=\E[?25h:vi=\E[?25l:\
214 root 1.1 :vs=\E[?25h:
215    
216     Why does "ls" no longer have coloured output?
217     The "ls" in the GNU coreutils unfortunately doesn't use terminfo to
218     decide wether a terminal has colour, but uses it's own configuration
219     file. Needless to say, "rxvt-unicode" is not in it's default file
220     (among with most other terminals supporting colour). Either add:
221    
222     TERM rxvt-unicode
223    
224     to "/etc/DIR_COLORS" or simply add:
225    
226     alias ls='ls --color=auto'
227    
228     to your ".profile" or ".bashrc".
229    
230     Why doesn't vim/emacs etc. use the 88 colour mode?
231     Why doesn't vim/emacs etc. make use of italic?
232     Why are the secondary screen-related options not working properly?
233     Make sure you are using "TERM=rxvt-unicode". Some pre-packaged
234     distributions (most notably Debian GNU/Linux) break rxvt-unicode by
235     setting "TERM" to "rxvt", which doesn't have these extra features.
236     Unfortunately, some of these (most notably, again, Debian GNU/Linux)
237     furthermore fail to even install the "rxvt-unicode" terminfo file,
238     so you will need to install it on your own (See the question When I
239     log-in to another system it tells me about missing terminfo data? on
240     how to do this).
241    
242 root 1.9 My numerical keypad acts weird and generates differing output?
243     Some Debian GNUL/Linux users seem to have this problem, although no
244     specific details were reported so far. It is possible that this is
245     caused by the wrong "TERM" setting, although the details of wether
246     and how this can happen are unknown, as "TERM=rxvt" should offer a
247     compatible keymap. See the answer to the previous question, and
248     please report if that helped.
249    
250 root 1.1 Rxvt-unicode does not seem to understand the selected encoding?
251     Unicode does not seem to work?
252     If you encounter strange problems like typing an accented character
253     but getting two unrelated other characters or similar, or if program
254     output is subtly garbled, then you should check your locale
255     settings.
256    
257     Rxvt-unicode must be started with the same "LC_CTYPE" setting as the
258     programs. Often rxvt-unicode is started in the "C" locale, while the
259     login script running within the rxvt-unicode window changes the
260 root 1.9 locale to something else, e.g. "en_GB.UTF-8". Needless to say, this
261     is not going to work.
262 root 1.1
263     The best thing is to fix your startup environment, as you will
264     likely run into other problems. If nothing works you can try this in
265     your .profile.
266    
267     printf '\e]701;%s\007' "$LC_CTYPE"
268    
269     If this doesn't work, then maybe you use a "LC_CTYPE" specification
270     not supported on your systems. Some systems have a "locale" command
271 root 1.9 which displays this (also, "perl -e0" can be used to check locale
272     settings, as it will complain loudly if it cannot set the locale).
273     If it displays something like:
274 root 1.1
275     locale: Cannot set LC_CTYPE to default locale: ...
276    
277     Then the locale you specified is not supported on your system.
278    
279     If nothing works and you are sure that everything is set correctly
280     then you will need to remember a little known fact: Some programs
281     just don't support locales :(
282    
283     Why do some characters look so much different than others?
284     How does rxvt-unicode choose fonts?
285     Most fonts do not contain the full range of Unicode, which is fine.
286     Chances are that the font you (or the admin/package maintainer of
287     your system/os) have specified does not cover all the characters you
288     want to display.
289    
290     rxvt-unicode makes a best-effort try at finding a replacement font.
291 root 1.9 Often the result is fine, but sometimes the chosen font looks
292     bad/ugly/wrong. Some fonts have totally strange characters that
293     don't resemble the correct glyph at all, and rxvt-unicode lacks the
294     artificial intelligence to detect that a specific glyph is wrong: it
295     has to believe the font that the characters it claims to contain
296     indeed look correct.
297 root 1.1
298     In that case, select a font of your taste and add it to the font
299     list, e.g.:
300    
301 root 1.21 rxvt -fn basefont,font2,font3...
302 root 1.1
303     When rxvt-unicode sees a character, it will first look at the base
304     font. If the base font does not contain the character, it will go to
305     the next font, and so on. Specifying your own fonts will also speed
306     up this search and use less resources within rxvt-unicode and the
307     X-server.
308    
309 root 1.9 The only limitation is that none of the fonts may be larger than the
310     base font, as the base font defines the terminal character cell
311     size, which must be the same due to the way terminals work.
312 root 1.1
313     Why do some chinese characters look so different than others?
314     This is because there is a difference between script and language --
315     rxvt-unicode does not know which language the text that is output
316     is, as it only knows the unicode character codes. If rxvt-unicode
317 root 1.9 first sees a japanese/chinese character, it might choose a japanese
318     font for display. Subsequent japanese characters will use that font.
319     Now, many chinese characters aren't represented in japanese fonts,
320     so when the first non-japanese character comes up, rxvt-unicode will
321     look for a chinese font -- unfortunately at this point, it will
322     still use the japanese font for chinese characters that are also in
323     the japanese font.
324 root 1.1
325     The workaround is easy: just tag a chinese font at the end of your
326     font list (see the previous question). The key is to view the font
327     list as a preference list: If you expect more japanese, list a
328     japanese font first. If you expect more chinese, put a chinese font
329     first.
330    
331 root 1.9 In the future it might be possible to switch language preferences at
332     runtime (the internal data structure has no problem with using
333     different fonts for the same character at the same time, but no
334     interface for this has been designed yet).
335    
336     Until then, you might get away with switching fonts at runtime (see
337     "Can I switch the fonts at runtime?" later in this document).
338 root 1.1
339     Why does rxvt-unicode sometimes leave pixel droppings?
340     Most fonts were not designed for terminal use, which means that
341     character size varies a lot. A font that is otherwise fine for
342     terminal use might contain some characters that are simply too wide.
343     Rxvt-unicode will avoid these characters. For characters that are
344     just "a bit" too wide a special "careful" rendering mode is used
345     that redraws adjacent characters.
346    
347     All of this requires that fonts do not lie about character sizes,
348     however: Xft fonts often draw glyphs larger than their acclaimed
349     bounding box, and rxvt-unicode has no way of detecting this (the
350     correct way is to ask for the character bounding box, which
351     unfortunately is wrong in these cases).
352    
353     It's not clear (to me at least), wether this is a bug in Xft,
354     freetype, or the respective font. If you encounter this problem you
355     might try using the "-lsp" option to give the font more height. If
356     that doesn't work, you might be forced to use a different font.
357    
358     All of this is not a problem when using X11 core fonts, as their
359     bounding box data is correct.
360    
361 root 1.14 On Solaris 9, many line-drawing characters are too wide.
362     Seems to be a known bug, read
363     <http://nixdoc.net/files/forum/about34198.html>. Some people use the
364     following ugly workaround to get non-double-wide-characters working:
365    
366     #define wcwidth(x) wcwidth(x) > 1 ? 1 : wcwidth(x)
367    
368 root 1.1 My Compose (Multi_key) key is no longer working.
369     The most common causes for this are that either your locale is not
370     set correctly, or you specified a preeditStyle that is not supported
371     by your input method. For example, if you specified OverTheSpot and
372     your input method (e.g. the default input method handling Compose
373     keys) does not support this (for instance because it is not visual),
374     then rxvt-unicode will continue without an input method.
375    
376     In this case either do not specify a preeditStyle or specify more
377     than one pre-edit style, such as OverTheSpot,Root,None.
378    
379     I cannot type "Ctrl-Shift-2" to get an ASCII NUL character due to ISO
380     14755
381     Either try "Ctrl-2" alone (it often is mapped to ASCII NUL even on
382     international keyboards) or simply use ISO 14755 support to your
383     advantage, typing <Ctrl-Shift-0> to get a ASCII NUL. This works for
384     other codes, too, such as "Ctrl-Shift-1-d" to type the default
385     telnet escape character and so on.
386    
387     How can I keep rxvt-unicode from using reverse video so much?
388 root 1.9 First of all, make sure you are running with the right terminal
389     settings ("TERM=rxvt-unicode"), which will get rid of most of these
390     effects. Then make sure you have specified colours for italic and
391     bold, as otherwise rxvt-unicode might use reverse video to simulate
392     the effect:
393 root 1.1
394 root 1.9 URxvt.colorBD: white
395     URxvt.colorIT: green
396 root 1.1
397     Some programs assume totally weird colours (red instead of blue), how
398     can I fix that?
399 root 1.9 For some unexplainable reason, some rare programs assume a very
400     weird colour palette when confronted with a terminal with more than
401     the standard 8 colours (rxvt-unicode supports 88). The right fix is,
402     of course, to fix these programs not to assume non-ISO colours
403     without very good reasons.
404 root 1.1
405 root 1.9 In the meantime, you can either edit your "rxvt-unicode" terminfo
406 root 1.1 definition to only claim 8 colour support or use "TERM=rxvt", which
407     will fix colours but keep you from using other rxvt-unicode
408     features.
409    
410     I am on FreeBSD and rxvt-unicode does not seem to work at all.
411     Rxvt-unicode requires the symbol "__STDC_ISO_10646__" to be defined
412     in your compile environment, or an implementation that implements
413     it, wether it defines the symbol or not. "__STDC_ISO_10646__"
414     requires that wchar_t is represented as unicode.
415    
416     As you might have guessed, FreeBSD does neither define this symobl
417     nor does it support it. Instead, it uses it's own internal
418 root 1.9 representation of wchar_t. This is, of course, completely fine with
419     respect to standards.
420 root 1.1
421 root 1.13 However, that means rxvt-unicode only works in "POSIX", "ISO-8859-1"
422     and "UTF-8" locales under FreeBSD (which all use Unicode as wchar_t.
423    
424     "__STDC_ISO_10646__" is the only sane way to support multi-language
425     apps in an OS, as using a locale-dependent (and non-standardized)
426     representation of wchar_t makes it impossible to convert between
427     wchar_t (as used by X11 and your applications) and any other
428     encoding without implementing OS-specific-wrappers for each and
429     every locale. There simply are no APIs to convert wchar_t into
430     anything except the current locale encoding.
431 root 1.1
432     Some applications (such as the formidable mlterm) work around this
433     by carrying their own replacement functions for character set
434     handling with them, and either implementing OS-dependent hacks or
435     doing multiple conversions (which is slow and unreliable in case the
436     OS implements encodings slightly different than the terminal
437     emulator).
438    
439     The rxvt-unicode author insists that the right way to fix this is in
440     the system libraries once and for all, instead of forcing every app
441 root 1.9 to carry complete replacements for them :)
442 root 1.1
443 root 1.14 I use Solaris 9 and it doesn't compile/work/etc.
444     Try the diff in doc/solaris9.patch as a base. It fixes the worst
445     problems with "wcwidth" and a compile problem.
446    
447 root 1.15 How can I use rxvt-unicode under cygwin?
448     rxvt-unicode should compile and run out of the box on cygwin, using
449     the X11 libraries that come with cygwin. libW11 emulation is no
450     longer supported (and makes no sense, either, as it only supported a
451     single font). I recommend starting the X-server in "-multiwindow" or
452     "-rootless" mode instead, which will result in similar look&feel as
453     the old libW11 emulation.
454    
455     At the time of this writing, cygwin didn't seem to support any
456     multi-byte encodings (you might try "LC_CTYPE=C-UTF-8"), so you are
457     likely limited to 8-bit encodings.
458    
459 root 1.1 How does rxvt-unicode determine the encoding to use?
460     Is there an option to switch encodings?
461     Unlike some other terminals, rxvt-unicode has no encoding switch,
462     and no specific "utf-8" mode, such as xterm. In fact, it doesn't
463     even know about UTF-8 or any other encodings with respect to
464     terminal I/O.
465    
466     The reasons is that there exists a perfectly fine mechanism for
467     selecting the encoding, doing I/O and (most important) communicating
468     this to all applications so everybody agrees on character properties
469     such as width and code number. This mechanism is the *locale*.
470 root 1.9 Applications not using that info will have problems (for example,
471     "xterm" gets the width of characters wrong as it uses it's own,
472     locale-independent table under all locales).
473 root 1.1
474     Rxvt-unicode uses the "LC_CTYPE" locale category to select encoding.
475     All programs doing the same (that is, most) will automatically agree
476     in the interpretation of characters.
477    
478     Unfortunately, there is no system-independent way to select locales,
479     nor is there a standard on how locale specifiers will look like.
480    
481     On most systems, the content of the "LC_CTYPE" environment variable
482     contains an arbitrary string which corresponds to an
483     already-installed locale. Common names for locales are
484     "en_US.UTF-8", "de_DE.ISO-8859-15", "ja_JP.EUC-JP", i.e.
485     "language_country.encoding", but other forms (i.e. "de" or "german")
486     are also common.
487    
488     Rxvt-unicode ignores all other locale categories, and except for the
489     encoding, ignores country or language-specific settings, i.e.
490 root 1.9 "de_DE.UTF-8" and "ja_JP.UTF-8" are the normally same to
491     rxvt-unicode.
492 root 1.1
493     If you want to use a specific encoding you have to make sure you
494     start rxvt-unicode with the correct "LC_CTYPE" category.
495    
496     Can I switch locales at runtime?
497 root 1.9 Yes, using an escape sequence. Try something like this, which sets
498 root 1.1 rxvt-unicode's idea of "LC_CTYPE".
499    
500     printf '\e]701;%s\007' ja_JP.SJIS
501    
502 root 1.9 See also the previous answer.
503 root 1.1
504     Sometimes this capability is rather handy when you want to work in
505 root 1.9 one locale (e.g. "de_DE.UTF-8") but some programs don't support it
506     (e.g. UTF-8). For example, I use this script to start "xjdic", which
507     first switches to a locale supported by xjdic and back later:
508 root 1.1
509     printf '\e]701;%s\007' ja_JP.SJIS
510     xjdic -js
511     printf '\e]701;%s\007' de_DE.UTF-8
512    
513 root 1.9 You can also use xterm's "luit" program, which usually works fine,
514     except for some locales where character width differs between
515     program- and rxvt-unicode-locales.
516    
517 root 1.1 Can I switch the fonts at runtime?
518 root 1.9 Yes, using an escape sequence. Try something like this, which has
519     the same effect as using the "-fn" switch, and takes effect
520     immediately:
521 root 1.1
522     printf '\e]50;%s\007' "9x15bold,xft:Kochi Gothic"
523    
524     This is useful if you e.g. work primarily with japanese (and prefer
525     a japanese font), but you have to switch to chinese temporarily,
526     where japanese fonts would only be in your way.
527    
528     You can think of this as a kind of manual ISO-2022 switching.
529    
530     Why do italic characters look as if clipped?
531     Many fonts have difficulties with italic characters and hinting. For
532     example, the otherwise very nicely hinted font "xft:Bitstream Vera
533 root 1.9 Sans Mono" completely fails in it's italic face. A workaround might
534     be to enable freetype autohinting, i.e. like this:
535 root 1.1
536 root 1.9 URxvt.italicFont: xft:Bitstream Vera Sans Mono:italic:autohint=true
537     URxvt.boldItalicFont: xft:Bitstream Vera Sans Mono:bold:italic:autohint=true
538 root 1.1
539     My input method wants <some encoding> but I want UTF-8, what can I do?
540     You can specify separate locales for the input method and the rest
541     of the terminal, using the resource "imlocale":
542    
543     URxvt*imlocale: ja_JP.EUC-JP
544    
545     Now you can start your terminal with "LC_CTYPE=ja_JP.UTF-8" and
546     still use your input method. Please note, however, that you will not
547     be able to input characters outside "EUC-JP" in a normal way then,
548     as your input method limits you.
549    
550 root 1.10 Rxvt-unicode crashes when the X Input Method changes or exits.
551     Unfortunately, this is unavoidable, as the XIM protocol is racy by
552     design. Applications can avoid some crashes at the expense of memory
553     leaks, and Input Methods can avoid some crashes by careful ordering
554     at exit time. kinput2 (and derived input methods) generally
555     succeeds, while SCIM (or similar input methods) fails. In the end,
556     however, crashes cannot be completely avoided even if both sides
557     cooperate.
558    
559     So the only workaround is not to kill your Input Method Servers.
560    
561 root 1.1 Rxvt-unicode uses gobs of memory, how can I reduce that?
562 root 1.9 Rxvt-unicode tries to obey the rule of not charging you for
563     something you don't use. One thing you should try is to configure
564     out all settings that you don't need, for example, Xft support is a
565     resource hog by design, when used. Compiling it out ensures that no
566     Xft font will be loaded accidentally when rxvt-unicode tries to find
567     a font for your characters.
568 root 1.1
569     Also, many people (me included) like large windows and even larger
570     scrollback buffers: Without "--enable-unicode3", rxvt-unicode will
571     use 6 bytes per screen cell. For a 160x?? window this amounts to
572     almost a kilobyte per line. A scrollback buffer of 10000 lines will
573     then (if full) use 10 Megabytes of memory. With "--enable-unicode3"
574     it gets worse, as rxvt-unicode then uses 8 bytes per screen cell.
575    
576     Can I speed up Xft rendering somehow?
577     Yes, the most obvious way to speed it up is to avoid Xft entirely,
578     as it is simply slow. If you still want Xft fonts you might try to
579 root 1.17 disable antialiasing (by appending ":antialias=false"), which saves
580     lots of memory and also speeds up rendering considerably.
581 root 1.1
582     Rxvt-unicode doesn't seem to anti-alias its fonts, what is wrong?
583     Rxvt-unicode will use whatever you specify as a font. If it needs to
584     fall back to it's default font search list it will prefer X11 core
585     fonts, because they are small and fast, and then use Xft fonts. It
586     has antialiasing disabled for most of them, because the author
587     thinks they look best that way.
588    
589     If you want antialiasing, you have to specify the fonts manually.
590    
591     Mouse cut/paste suddenly no longer works.
592     Make sure that mouse reporting is actually turned off since killing
593     some editors prematurely may leave the mouse in mouse report mode.
594     I've heard that tcsh may use mouse reporting unless it otherwise
595     specified. A quick check is to see if cut/paste works when the Alt
596 root 1.21 or Shift keys are depressed. See rxvt(7)
597 root 1.1
598     What's with this bold/blink stuff?
599     If no bold colour is set via "colorBD:", bold will invert text using
600     the standard foreground colour.
601    
602     For the standard background colour, blinking will actually make the
603     text blink when compiled with "--enable-blinking". with standard
604     colours. Without "--enable-blinking", the blink attribute will be
605     ignored.
606    
607     On ANSI colours, bold/blink attributes are used to set
608     high-intensity foreground/background colors.
609    
610     color0-7 are the low-intensity colors.
611    
612     color8-15 are the corresponding high-intensity colors.
613    
614     I don't like the screen colors. How do I change them?
615     You can change the screen colors at run-time using ~/.Xdefaults
616     resources (or as long-options).
617    
618     Here are values that are supposed to resemble a VGA screen,
619     including the murky brown that passes for low-intensity yellow:
620    
621 root 1.9 URxvt.color0: #000000
622     URxvt.color1: #A80000
623     URxvt.color2: #00A800
624     URxvt.color3: #A8A800
625     URxvt.color4: #0000A8
626     URxvt.color5: #A800A8
627     URxvt.color6: #00A8A8
628     URxvt.color7: #A8A8A8
629    
630     URxvt.color8: #000054
631     URxvt.color9: #FF0054
632     URxvt.color10: #00FF54
633     URxvt.color11: #FFFF54
634     URxvt.color12: #0000FF
635     URxvt.color13: #FF00FF
636     URxvt.color14: #00FFFF
637     URxvt.color15: #FFFFFF
638 root 1.1
639 root 1.9 And here is a more complete set of non-standard colors described
640     (not by me) as "pretty girly".
641 root 1.1
642     URxvt.cursorColor: #dc74d1
643     URxvt.pointerColor: #dc74d1
644     URxvt.background: #0e0e0e
645     URxvt.foreground: #4ad5e1
646     URxvt.color0: #000000
647     URxvt.color8: #8b8f93
648     URxvt.color1: #dc74d1
649     URxvt.color9: #dc74d1
650     URxvt.color2: #0eb8c7
651     URxvt.color10: #0eb8c7
652     URxvt.color3: #dfe37e
653     URxvt.color11: #dfe37e
654     URxvt.color5: #9e88f0
655     URxvt.color13: #9e88f0
656     URxvt.color6: #73f7ff
657     URxvt.color14: #73f7ff
658     URxvt.color7: #e1dddd
659     URxvt.color15: #e1dddd
660    
661 root 1.21 How can I start rxvtd in a race-free way?
662     Try "rxvtd -f -o", which tells rxvtd to open the display, create the
663     listening socket and then fork.
664 root 1.9
665 root 1.1 What's with the strange Backspace/Delete key behaviour?
666     Assuming that the physical Backspace key corresponds to the
667     BackSpace keysym (not likely for Linux ... see the following
668     question) there are two standard values that can be used for
669     Backspace: "^H" and "^?".
670    
671     Historically, either value is correct, but rxvt-unicode adopts the
672     debian policy of using "^?" when unsure, because it's the one only
673     only correct choice :).
674    
675     Rxvt-unicode tries to inherit the current stty settings and uses the
676     value of `erase' to guess the value for backspace. If rxvt-unicode
677     wasn't started from a terminal (say, from a menu or by remote
678     shell), then the system value of `erase', which corresponds to
679     CERASE in <termios.h>, will be used (which may not be the same as
680     your stty setting).
681    
682     For starting a new rxvt-unicode:
683    
684     # use Backspace = ^H
685     $ stty erase ^H
686 root 1.21 $ rxvt
687 root 1.1
688     # use Backspace = ^?
689     $ stty erase ^?
690 root 1.21 $ rxvt
691 root 1.1
692 root 1.21 Toggle with "ESC [ 36 h" / "ESC [ 36 l" as documented in rxvt(7).
693 root 1.1
694     For an existing rxvt-unicode:
695    
696     # use Backspace = ^H
697     $ stty erase ^H
698     $ echo -n "^[[36h"
699    
700     # use Backspace = ^?
701     $ stty erase ^?
702     $ echo -n "^[[36l"
703    
704     This helps satisfy some of the Backspace discrepancies that occur,
705     but if you use Backspace = "^H", make sure that the termcap/terminfo
706     value properly reflects that.
707    
708     The Delete key is a another casualty of the ill-defined Backspace
709     problem. To avoid confusion between the Backspace and Delete keys,
710     the Delete key has been assigned an escape sequence to match the
711 root 1.9 vt100 for Execute ("ESC [ 3 ~") and is in the supplied
712     termcap/terminfo.
713 root 1.1
714     Some other Backspace problems:
715    
716     some editors use termcap/terminfo, some editors (vim I'm told)
717     expect Backspace = ^H, GNU Emacs (and Emacs-like editors) use ^H for
718     help.
719    
720     Perhaps someday this will all be resolved in a consistent manner.
721    
722     I don't like the key-bindings. How do I change them?
723     There are some compile-time selections available via configure.
724     Unless you have run "configure" with the "--disable-resources"
725     option you can use the `keysym' resource to alter the keystrings
726 root 1.2 associated with keysyms.
727 root 1.1
728 root 1.21 Here's an example for a URxvt session started using "rxvt -name
729 root 1.9 URxvt"
730 root 1.1
731 root 1.9 URxvt.keysym.Home: \033[1~
732     URxvt.keysym.End: \033[4~
733     URxvt.keysym.C-apostrophe: \033<C-'>
734     URxvt.keysym.C-slash: \033<C-/>
735     URxvt.keysym.C-semicolon: \033<C-;>
736     URxvt.keysym.C-grave: \033<C-`>
737     URxvt.keysym.C-comma: \033<C-,>
738     URxvt.keysym.C-period: \033<C-.>
739     URxvt.keysym.C-0x60: \033<C-`>
740     URxvt.keysym.C-Tab: \033<C-Tab>
741     URxvt.keysym.C-Return: \033<C-Return>
742     URxvt.keysym.S-Return: \033<S-Return>
743     URxvt.keysym.S-space: \033<S-Space>
744     URxvt.keysym.M-Up: \033<M-Up>
745     URxvt.keysym.M-Down: \033<M-Down>
746     URxvt.keysym.M-Left: \033<M-Left>
747     URxvt.keysym.M-Right: \033<M-Right>
748     URxvt.keysym.M-C-0: list \033<M-C- 0123456789 >
749 root 1.3 URxvt.keysym.M-C-a: list \033<M-C- abcdefghijklmnopqrstuvwxyz >
750 root 1.9 URxvt.keysym.F12: command:\033]701;zh_CN.GBK\007
751 root 1.3
752     See some more examples in the documentation for the keysym resource.
753 root 1.1
754     I'm using keyboard model XXX that has extra Prior/Next/Insert keys. How
755     do I make use of them? For example, the Sun Keyboard type 4 has the
756     following mappings that rxvt-unicode doesn't recognize.
757     KP_Insert == Insert
758     F22 == Print
759     F27 == Home
760     F29 == Prior
761     F33 == End
762     F35 == Next
763    
764     Rather than have rxvt-unicode try to accommodate all the various
765     possible keyboard mappings, it is better to use `xmodmap' to remap
766     the keys as required for your particular machine.
767    
768 root 1.9 How do I distinguish wether I'm running rxvt-unicode or a regular xterm?
769     I need this to decide about setting colors etc.
770 root 1.1 rxvt and rxvt-unicode always export the variable "COLORTERM", so you
771     can check and see if that is set. Note that several programs, JED,
772     slrn, Midnight Commander automatically check this variable to decide
773     whether or not to use color.
774    
775     How do I set the correct, full IP address for the DISPLAY variable?
776     If you've compiled rxvt-unicode with DISPLAY_IS_IP and have enabled
777     insecure mode then it is possible to use the following shell script
778     snippets to correctly set the display. If your version of
779     rxvt-unicode wasn't also compiled with ESCZ_ANSWER (as assumed in
780     these snippets) then the COLORTERM variable can be used to
781     distinguish rxvt-unicode from a regular xterm.
782    
783     Courtesy of Chuck Blake <cblake@BBN.COM> with the following shell
784     script snippets:
785    
786     # Bourne/Korn/POSIX family of shells:
787     [ ${TERM:-foo} = foo ] && TERM=xterm # assume an xterm if we don't know
788     if [ ${TERM:-foo} = xterm ]; then
789     stty -icanon -echo min 0 time 15 # see if enhanced rxvt or not
790     echo -n '^[Z'
791     read term_id
792     stty icanon echo
793     if [ ""${term_id} = '^[[?1;2C' -a ${DISPLAY:-foo} = foo ]; then
794     echo -n '^[[7n' # query the rxvt we are in for the DISPLAY string
795     read DISPLAY # set it in our local shell
796     fi
797     fi
798    
799     How do I compile the manual pages for myself?
800     You need to have a recent version of perl installed as
801     /usr/bin/perl, one that comes with pod2man, pod2text and pod2html.
802     Then go to the doc subdirectory and enter "make alldoc".
803    
804     My question isn't answered here, can I ask a human?
805     Before sending me mail, you could go to IRC: "irc.freenode.net",
806     channel "#rxvt-unicode" has some rxvt-unicode enthusiasts that might
807     be interested in learning about new and exciting problems (but not
808     FAQs :).
809