ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/rxvt-unicode/doc/rxvt.7.pod
Revision: 1.249
Committed: Sun May 9 05:53:10 2021 UTC (3 years, 2 months ago) by sf-exg
Branch: MAIN
CVS Tags: rxvt-unicode-rel-9_26, rxvt-unicode-rel-9_25
Changes since 1.248: +29 -0 lines
Log Message:
Add support for systemd socket activation

File Contents

# User Rev Content
1 root 1.23 =head1 NAME
2    
3 root 1.25 RXVT REFERENCE - FAQ, command sequences and other background information
4    
5 root 1.44 =head1 SYNOPSIS
6    
7     # set a new font set
8     printf '\33]50;%s\007' 9x15,xft:Kochi" Mincho"
9    
10     # change the locale and tell rxvt-unicode about it
11     export LC_CTYPE=ja_JP.EUC-JP; printf "\33]701;$LC_CTYPE\007"
12    
13     # set window title
14     printf '\33]2;%s\007' "new window title"
15    
16     =head1 DESCRIPTION
17    
18     This document contains the FAQ, the RXVT TECHNICAL REFERENCE documenting
19     all escape sequences, and other background information.
20    
21 root 1.96 The newest version of this document is also available on the World Wide Web at
22 root 1.158 L<http://pod.tst.eu/http://cvs.schmorp.de/rxvt-unicode/doc/rxvt.7.pod>.
23    
24     The main manual page for @@RXVT_NAME@@ itself is available at
25     L<http://pod.tst.eu/http://cvs.schmorp.de/rxvt-unicode/doc/rxvt.1.pod>.
26 root 1.44
27 root 1.104 =head1 RXVT-UNICODE/URXVT FREQUENTLY ASKED QUESTIONS
28 root 1.25
29 root 1.79
30 root 1.102 =head2 Meta, Features & Commandline Issues
31 root 1.79
32 root 1.102 =head3 My question isn't answered here, can I ask a human?
33 root 1.79
34 root 1.102 Before sending me mail, you could go to IRC: C<irc.freenode.net>,
35     channel C<#rxvt-unicode> has some rxvt-unicode enthusiasts that might be
36     interested in learning about new and exciting problems (but not FAQs :).
37 root 1.79
38 root 1.172 =head3 I use Gentoo, and I have a problem...
39    
40 sf-exg 1.236 There are two big problems with Gentoo Linux: first, most if not all
41     Gentoo systems are completely broken (missing or mismatched header
42     files, broken compiler etc. are just the tip of the iceberg);
43     secondly, it should be called Gentoo GNU/Linux.
44 root 1.172
45     For these reasons, it is impossible to support rxvt-unicode on
46     Gentoo. Problems appearing on Gentoo systems will usually simply be
47     ignored unless they can be reproduced on non-Gentoo systems.
48    
49 root 1.102 =head3 Does it support tabs, can I have a tabbed rxvt-unicode?
50 root 1.79
51 root 1.102 Beginning with version 7.3, there is a perl extension that implements a
52     simple tabbed terminal. It is installed by default, so any of these should
53     give you tabs:
54 root 1.79
55 root 1.103 @@URXVT_NAME@@ -pe tabbed
56 root 1.80
57 root 1.102 URxvt.perl-ext-common: default,tabbed
58 root 1.78
59 root 1.102 It will also work fine with tabbing functionality of many window managers
60     or similar tabbing programs, and its embedding-features allow it to be
61     embedded into other programs, as witnessed by F<doc/rxvt-tabbed> or
62     the upcoming C<Gtk2::URxvt> perl module, which features a tabbed urxvt
63     (murxvt) terminal as an example embedding application.
64 root 1.78
65 root 1.102 =head3 How do I know which rxvt-unicode version I'm using?
66 root 1.78
67 root 1.102 The version number is displayed with the usage (-h). Also the escape
68     sequence C<ESC [ 8 n> sets the window title to the version number. When
69 root 1.103 using the @@URXVT_NAME@@c client, the version displayed is that of the
70 root 1.102 daemon.
71 root 1.78
72 root 1.102 =head3 Rxvt-unicode uses gobs of memory, how can I reduce that?
73 root 1.78
74 root 1.102 Rxvt-unicode tries to obey the rule of not charging you for something you
75     don't use. One thing you should try is to configure out all settings that
76     you don't need, for example, Xft support is a resource hog by design,
77     when used. Compiling it out ensures that no Xft font will be loaded
78     accidentally when rxvt-unicode tries to find a font for your characters.
79 root 1.78
80 root 1.102 Also, many people (me included) like large windows and even larger
81     scrollback buffers: Without C<--enable-unicode3>, rxvt-unicode will use
82     6 bytes per screen cell. For a 160x?? window this amounts to almost a
83     kilobyte per line. A scrollback buffer of 10000 lines will then (if full)
84     use 10 Megabytes of memory. With C<--enable-unicode3> it gets worse, as
85     rxvt-unicode then uses 8 bytes per screen cell.
86 root 1.97
87 root 1.103 =head3 How can I start @@URXVT_NAME@@d in a race-free way?
88 root 1.100
89 root 1.103 Try C<@@URXVT_NAME@@d -f -o>, which tells @@URXVT_NAME@@d to open the
90 root 1.102 display, create the listening socket and then fork.
91 root 1.97
92 root 1.123 =head3 How can I start @@URXVT_NAME@@d automatically when I run @@URXVT_NAME@@c?
93 root 1.111
94     If you want to start @@URXVT_NAME@@d automatically whenever you run
95     @@URXVT_NAME@@c and the daemon isn't running yet, use this script:
96    
97     #!/bin/sh
98     @@URXVT_NAME@@c "$@"
99     if [ $? -eq 2 ]; then
100     @@URXVT_NAME@@d -q -o -f
101     @@URXVT_NAME@@c "$@"
102     fi
103    
104     This tries to create a new terminal, and if fails with exit status 2,
105     meaning it couldn't connect to the daemon, it will start the daemon and
106     re-run the command. Subsequent invocations of the script will re-use the
107     existing daemon.
108    
109 sf-exg 1.249 Another option is to use systemd socket-based activation (see
110     systemd.socket(5)). Here is an example of a service unit file and of a
111     socket unit file for the default socket path:
112    
113     =over 4
114    
115     =item urxvtd.service
116    
117     [Unit]
118     Description=urxvt terminal daemon
119     Requires=urxvtd.socket
120    
121     [Service]
122     ExecStart=/usr/bin/urxvtd -o
123    
124     =item urxvtd.socket
125    
126     [Unit]
127     Description=urxvt terminal daemon socket
128    
129     [Socket]
130     ListenStream=%h/.urxvt/urxvtd-%H
131    
132     [Install]
133     WantedBy=sockets.target
134    
135     =back
136    
137 root 1.189 =head3 How do I distinguish whether I'm running rxvt-unicode or a regular
138     xterm? I need this to decide about setting colours etc.
139 root 1.97
140 root 1.105 The original rxvt and rxvt-unicode always export the variable "COLORTERM",
141     so you can check and see if that is set. Note that several programs, JED,
142     slrn, Midnight Commander automatically check this variable to decide
143 root 1.189 whether or not to use colour.
144 root 1.97
145 root 1.102 =head3 How do I set the correct, full IP address for the DISPLAY variable?
146 root 1.97
147 root 1.102 If you've compiled rxvt-unicode with DISPLAY_IS_IP and have enabled
148     insecure mode then it is possible to use the following shell script
149     snippets to correctly set the display. If your version of rxvt-unicode
150     wasn't also compiled with ESCZ_ANSWER (as assumed in these snippets) then
151     the COLORTERM variable can be used to distinguish rxvt-unicode from a
152     regular xterm.
153 root 1.95
154 root 1.102 Courtesy of Chuck Blake <cblake@BBN.COM> with the following shell script
155     snippets:
156 root 1.95
157 root 1.102 # Bourne/Korn/POSIX family of shells:
158     [ ${TERM:-foo} = foo ] && TERM=xterm # assume an xterm if we don't know
159     if [ ${TERM:-foo} = xterm ]; then
160     stty -icanon -echo min 0 time 15 # see if enhanced rxvt or not
161 root 1.223 printf "\eZ"
162 root 1.102 read term_id
163     stty icanon echo
164     if [ ""${term_id} = '^[[?1;2C' -a ${DISPLAY:-foo} = foo ]; then
165 root 1.223 printf '\e[7n' # query the rxvt we are in for the DISPLAY string
166     read DISPLAY # set it in our local shell
167 root 1.102 fi
168     fi
169 root 1.95
170 root 1.102 =head3 How do I compile the manual pages on my own?
171 root 1.95
172 root 1.102 You need to have a recent version of perl installed as F</usr/bin/perl>,
173 root 1.132 one that comes with F<pod2man>, F<pod2text> and F<pod2xhtml> (from
174 root 1.133 F<Pod::Xhtml>). Then go to the doc subdirectory and enter C<make alldoc>.
175 root 1.95
176 root 1.102 =head3 Isn't rxvt-unicode supposed to be small? Don't all those features bloat?
177 root 1.64
178     I often get asked about this, and I think, no, they didn't cause extra
179     bloat. If you compare a minimal rxvt and a minimal urxvt, you can see
180     that the urxvt binary is larger (due to some encoding tables always being
181     compiled in), but it actually uses less memory (RSS) after startup. Even
182     with C<--disable-everything>, this comparison is a bit unfair, as many
183     features unique to urxvt (locale, encoding conversion, iso14755 etc.) are
184     already in use in this mode.
185    
186     text data bss drs rss filename
187     98398 1664 24 15695 1824 rxvt --disable-everything
188     188985 9048 66616 18222 1788 urxvt --disable-everything
189    
190 root 1.106 When you C<--enable-everything> (which I<is> unfair, as this involves xft
191 root 1.64 and full locale/XIM support which are quite bloaty inside libX11 and my
192 root 1.120 libc), the two diverge, but not unreasonably so.
193 root 1.64
194     text data bss drs rss filename
195     163431 2152 24 20123 2060 rxvt --enable-everything
196     1035683 49680 66648 29096 3680 urxvt --enable-everything
197    
198     The very large size of the text section is explained by the east-asian
199     encoding tables, which, if unused, take up disk space but nothing else
200     and can be compiled out unless you rely on X11 core fonts that use those
201     encodings. The BSS size comes from the 64k emergency buffer that my c++
202     compiler allocates (but of course doesn't use unless you are out of
203     memory). Also, using an xft font instead of a core font immediately adds a
204     few megabytes of RSS. Xft indeed is responsible for a lot of RSS even when
205     not used.
206    
207     Of course, due to every character using two or four bytes instead of one,
208     a large scrollback buffer will ultimately make rxvt-unicode use more
209     memory.
210    
211     Compared to e.g. Eterm (5112k), aterm (3132k) and xterm (4680k), this
212     still fares rather well. And compared to some monsters like gnome-terminal
213     (21152k + extra 4204k in separate processes) or konsole (22200k + extra
214 root 1.74 43180k in daemons that stay around after exit, plus half a minute of
215 root 1.64 startup time, including the hundreds of warnings it spits out), it fares
216     extremely well *g*.
217    
218 root 1.102 =head3 Why C++, isn't that unportable/bloated/uncool?
219 root 1.64
220     Is this a question? :) It comes up very often. The simple answer is: I had
221     to write it, and C++ allowed me to write and maintain it in a fraction
222     of the time and effort (which is a scarce resource for me). Put even
223     shorter: It simply wouldn't exist without C++.
224    
225     My personal stance on this is that C++ is less portable than C, but in
226     the case of rxvt-unicode this hardly matters, as its portability limits
227     are defined by things like X11, pseudo terminals, locale support and unix
228     domain sockets, which are all less portable than C++ itself.
229    
230     Regarding the bloat, see the above question: It's easy to write programs
231 root 1.204 in C that use gobs of memory, and certainly possible to write programs in
232 root 1.64 C++ that don't. C++ also often comes with large libraries, but this is
233     not necessarily the case with GCC. Here is what rxvt links against on my
234     system with a minimal config:
235    
236     libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0x00002aaaaabc3000)
237     libc.so.6 => /lib/libc.so.6 (0x00002aaaaadde000)
238     libdl.so.2 => /lib/libdl.so.2 (0x00002aaaab01d000)
239     /lib64/ld-linux-x86-64.so.2 (0x00002aaaaaaab000)
240    
241     And here is rxvt-unicode:
242    
243     libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0x00002aaaaabc3000)
244     libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00002aaaaada2000)
245 ayin 1.150 libc.so.6 => /lib/libc.so.6 (0x00002aaaaaeb0000)
246     libdl.so.2 => /lib/libdl.so.2 (0x00002aaaab0ee000)
247     /lib64/ld-linux-x86-64.so.2 (0x00002aaaaaaab000)
248 root 1.64
249     No large bloated libraries (of course, none were linked in statically),
250     except maybe libX11 :)
251    
252    
253 root 1.102 =head2 Rendering, Font & Look and Feel Issues
254 root 1.92
255 root 1.102 =head3 I can't get transparency working, what am I doing wrong?
256 root 1.92
257 sf-exg 1.198 First of all, transparency isn't officially supported in rxvt-unicode, so
258     you are mostly on your own. Do not bug the author about it (but you may
259     bug everybody else). Also, if you can't get it working consider it a rite
260     of passage: ... and you failed.
261 root 1.92
262 root 1.102 Here are four ways to get transparency. B<Do> read the manpage and option
263     descriptions for the programs mentioned and rxvt-unicode. Really, do it!
264 root 1.64
265 sasha 1.149 1. Use transparent mode:
266 root 1.25
267 root 1.102 Esetroot wallpaper.jpg
268 sasha 1.149 @@URXVT_NAME@@ -tr -tint red -sh 40
269 root 1.44
270 root 1.102 That works. If you think it doesn't, you lack transparency and tinting
271     support, or you are unable to read.
272 sf-exg 1.201 This method requires that the background-setting program sets the
273     _XROOTPMAP_ID or ESETROOT_PMAP_ID property. Compatible programs
274     are Esetroot, hsetroot and feh.
275 root 1.44
276 root 1.102 2. Use a simple pixmap and emulate pseudo-transparency. This enables you
277     to use effects other than tinting and shading: Just shade/tint/whatever
278     your picture with gimp or any other tool:
279 root 1.44
280 sasha 1.147 convert wallpaper.jpg -blur 20x20 -modulate 30 background.jpg
281 sasha 1.151 @@URXVT_NAME@@ -pixmap "background.jpg;:root"
282 root 1.25
283 sf-exg 1.219 That works. If you think it doesn't, you lack GDK-PixBuf support, or you
284 root 1.102 are unable to read.
285 root 1.73
286 root 1.102 3. Use an ARGB visual:
287 root 1.73
288 root 1.103 @@URXVT_NAME@@ -depth 32 -fg grey90 -bg rgba:0000/0000/4444/cccc
289 root 1.73
290 root 1.102 This requires XFT support, and the support of your X-server. If that
291     doesn't work for you, blame Xorg and Keith Packard. ARGB visuals aren't
292 root 1.120 there yet, no matter what they claim. Rxvt-Unicode contains the necessary
293 root 1.102 bugfixes and workarounds for Xft and Xlib to make it work, but that
294     doesn't mean that your WM has the required kludges in place.
295 root 1.73
296 root 1.102 4. Use xcompmgr and let it do the job:
297 root 1.73
298 root 1.102 xprop -frame -f _NET_WM_WINDOW_OPACITY 32c \
299     -set _NET_WM_WINDOW_OPACITY 0xc0000000
300 root 1.87
301 root 1.102 Then click on a window you want to make transparent. Replace C<0xc0000000>
302     by other values to change the degree of opacity. If it doesn't work and
303     your server crashes, you got to keep the pieces.
304 root 1.87
305 root 1.102 =head3 Why does rxvt-unicode sometimes leave pixel droppings?
306 root 1.25
307 root 1.102 Most fonts were not designed for terminal use, which means that character
308     size varies a lot. A font that is otherwise fine for terminal use might
309     contain some characters that are simply too wide. Rxvt-unicode will avoid
310     these characters. For characters that are just "a bit" too wide a special
311     "careful" rendering mode is used that redraws adjacent characters.
312 root 1.25
313 root 1.102 All of this requires that fonts do not lie about character sizes,
314     however: Xft fonts often draw glyphs larger than their acclaimed bounding
315     box, and rxvt-unicode has no way of detecting this (the correct way is to
316     ask for the character bounding box, which unfortunately is wrong in these
317     cases).
318 root 1.25
319 root 1.120 It's not clear (to me at least), whether this is a bug in Xft, freetype,
320 root 1.102 or the respective font. If you encounter this problem you might try using
321     the C<-lsp> option to give the font more height. If that doesn't work, you
322     might be forced to use a different font.
323 root 1.25
324 root 1.102 All of this is not a problem when using X11 core fonts, as their bounding
325     box data is correct.
326 root 1.25
327 root 1.102 =head3 How can I keep rxvt-unicode from using reverse video so much?
328 root 1.58
329 root 1.102 First of all, make sure you are running with the right terminal settings
330     (C<TERM=rxvt-unicode>), which will get rid of most of these effects. Then
331     make sure you have specified colours for italic and bold, as otherwise
332     rxvt-unicode might use reverse video to simulate the effect:
333 root 1.58
334 root 1.102 URxvt.colorBD: white
335     URxvt.colorIT: green
336 root 1.44
337 root 1.102 =head3 Some programs assume totally weird colours (red instead of blue), how can I fix that?
338 root 1.100
339 root 1.102 For some unexplainable reason, some rare programs assume a very weird
340     colour palette when confronted with a terminal with more than the standard
341     8 colours (rxvt-unicode supports 88). The right fix is, of course, to fix
342     these programs not to assume non-ISO colours without very good reasons.
343 root 1.25
344 root 1.102 In the meantime, you can either edit your C<rxvt-unicode> terminfo
345     definition to only claim 8 colour support or use C<TERM=rxvt>, which will
346     fix colours but keep you from using other rxvt-unicode features.
347 root 1.44
348 root 1.102 =head3 Can I switch the fonts at runtime?
349 root 1.25
350 root 1.102 Yes, using an escape sequence. Try something like this, which has the same
351     effect as using the C<-fn> switch, and takes effect immediately:
352 root 1.25
353 root 1.116 printf '\33]50;%s\007' "9x15bold,xft:Kochi Gothic"
354 root 1.25
355 root 1.102 This is useful if you e.g. work primarily with japanese (and prefer a
356     japanese font), but you have to switch to chinese temporarily, where
357     japanese fonts would only be in your way.
358 root 1.25
359 root 1.102 You can think of this as a kind of manual ISO-2022 switching.
360 root 1.25
361 root 1.102 =head3 Why do italic characters look as if clipped?
362 root 1.25
363 root 1.102 Many fonts have difficulties with italic characters and hinting. For
364     example, the otherwise very nicely hinted font C<xft:Bitstream Vera Sans
365 root 1.119 Mono> completely fails in its italic face. A workaround might be to
366 root 1.102 enable freetype autohinting, i.e. like this:
367 root 1.33
368 root 1.102 URxvt.italicFont: xft:Bitstream Vera Sans Mono:italic:autohint=true
369     URxvt.boldItalicFont: xft:Bitstream Vera Sans Mono:bold:italic:autohint=true
370 root 1.33
371 root 1.102 =head3 Can I speed up Xft rendering somehow?
372 root 1.33
373 root 1.102 Yes, the most obvious way to speed it up is to avoid Xft entirely, as
374     it is simply slow. If you still want Xft fonts you might try to disable
375     antialiasing (by appending C<:antialias=false>), which saves lots of
376     memory and also speeds up rendering considerably.
377 root 1.33
378 root 1.102 =head3 Rxvt-unicode doesn't seem to anti-alias its fonts, what is wrong?
379 root 1.33
380 root 1.102 Rxvt-unicode will use whatever you specify as a font. If it needs to
381 root 1.119 fall back to its default font search list it will prefer X11 core
382 root 1.102 fonts, because they are small and fast, and then use Xft fonts. It has
383     antialiasing disabled for most of them, because the author thinks they
384     look best that way.
385 root 1.100
386 root 1.102 If you want antialiasing, you have to specify the fonts manually.
387 root 1.33
388 root 1.102 =head3 What's with this bold/blink stuff?
389 root 1.100
390 root 1.102 If no bold colour is set via C<colorBD:>, bold will invert text using the
391     standard foreground colour.
392 root 1.33
393 root 1.153 For the standard background colour, blinking will actually make
394     the text blink when compiled with C<--enable-text-blink>. Without
395     C<--enable-text-blink>, the blink attribute will be ignored.
396 root 1.25
397 root 1.102 On ANSI colours, bold/blink attributes are used to set high-intensity
398 root 1.189 foreground/background colours.
399 root 1.44
400 root 1.189 color0-7 are the low-intensity colours.
401 root 1.44
402 root 1.189 color8-15 are the corresponding high-intensity colours.
403 root 1.25
404 root 1.189 =head3 I don't like the screen colours. How do I change them?
405 root 1.100
406 root 1.189 You can change the screen colours at run-time using F<~/.Xdefaults>
407 root 1.102 resources (or as long-options).
408 root 1.25
409 root 1.102 Here are values that are supposed to resemble a VGA screen,
410     including the murky brown that passes for low-intensity yellow:
411 root 1.25
412 root 1.102 URxvt.color0: #000000
413     URxvt.color1: #A80000
414     URxvt.color2: #00A800
415     URxvt.color3: #A8A800
416     URxvt.color4: #0000A8
417     URxvt.color5: #A800A8
418     URxvt.color6: #00A8A8
419     URxvt.color7: #A8A8A8
420 root 1.25
421 root 1.102 URxvt.color8: #000054
422     URxvt.color9: #FF0054
423     URxvt.color10: #00FF54
424     URxvt.color11: #FFFF54
425     URxvt.color12: #0000FF
426     URxvt.color13: #FF00FF
427     URxvt.color14: #00FFFF
428     URxvt.color15: #FFFFFF
429 root 1.25
430 root 1.189 And here is a more complete set of non-standard colours.
431 root 1.25
432 root 1.102 URxvt.cursorColor: #dc74d1
433     URxvt.pointerColor: #dc74d1
434     URxvt.background: #0e0e0e
435     URxvt.foreground: #4ad5e1
436     URxvt.color0: #000000
437     URxvt.color8: #8b8f93
438     URxvt.color1: #dc74d1
439     URxvt.color9: #dc74d1
440     URxvt.color2: #0eb8c7
441     URxvt.color10: #0eb8c7
442     URxvt.color3: #dfe37e
443     URxvt.color11: #dfe37e
444     URxvt.color5: #9e88f0
445     URxvt.color13: #9e88f0
446     URxvt.color6: #73f7ff
447     URxvt.color14: #73f7ff
448     URxvt.color7: #e1dddd
449     URxvt.color15: #e1dddd
450 root 1.25
451 root 1.109 They have been described (not by me) as "pretty girly".
452 root 1.107
453 root 1.109 =head3 Why do some characters look so much different than others?
454 root 1.110
455 root 1.109 See next entry.
456 root 1.110
457 root 1.102 =head3 How does rxvt-unicode choose fonts?
458 root 1.110
459 root 1.25 Most fonts do not contain the full range of Unicode, which is
460     fine. Chances are that the font you (or the admin/package maintainer of
461     your system/os) have specified does not cover all the characters you want
462     to display.
463 root 1.110
464 root 1.25 B<rxvt-unicode> makes a best-effort try at finding a replacement
465     font. Often the result is fine, but sometimes the chosen font looks
466 root 1.44 bad/ugly/wrong. Some fonts have totally strange characters that don't
467     resemble the correct glyph at all, and rxvt-unicode lacks the artificial
468     intelligence to detect that a specific glyph is wrong: it has to believe
469     the font that the characters it claims to contain indeed look correct.
470 root 1.110
471 root 1.25 In that case, select a font of your taste and add it to the font list,
472     e.g.:
473 root 1.110
474 root 1.103 @@URXVT_NAME@@ -fn basefont,font2,font3...
475 root 1.110
476 root 1.25 When rxvt-unicode sees a character, it will first look at the base
477     font. If the base font does not contain the character, it will go to the
478     next font, and so on. Specifying your own fonts will also speed up this
479     search and use less resources within rxvt-unicode and the X-server.
480 root 1.110
481 root 1.44 The only limitation is that none of the fonts may be larger than the base
482     font, as the base font defines the terminal character cell size, which
483     must be the same due to the way terminals work.
484 root 1.25
485 root 1.110 =head3 Why do some chinese characters look so different than others?
486    
487     This is because there is a difference between script and language --
488     rxvt-unicode does not know which language the text that is output is,
489     as it only knows the unicode character codes. If rxvt-unicode first
490     sees a japanese/chinese character, it might choose a japanese font for
491     display. Subsequent japanese characters will use that font. Now, many
492     chinese characters aren't represented in japanese fonts, so when the first
493     non-japanese character comes up, rxvt-unicode will look for a chinese font
494     -- unfortunately at this point, it will still use the japanese font for
495     chinese characters that are also in the japanese font.
496    
497     The workaround is easy: just tag a chinese font at the end of your font
498     list (see the previous question). The key is to view the font list as
499     a preference list: If you expect more japanese, list a japanese font
500     first. If you expect more chinese, put a chinese font first.
501    
502     In the future it might be possible to switch language preferences at
503     runtime (the internal data structure has no problem with using different
504     fonts for the same character at the same time, but no interface for this
505     has been designed yet).
506    
507     Until then, you might get away with switching fonts at runtime (see L<Can
508     I switch the fonts at runtime?> later in this document).
509    
510 root 1.145 =head3 How can I make mplayer display video correctly?
511    
512     We are working on it, in the meantime, as a workaround, use something like:
513    
514     @@URXVT_NAME@@ -b 600 -geometry 20x1 -e sh -c 'mplayer -wid $WINDOWID file...'
515    
516 root 1.239 =head3 Why is the cursor now blinking in emacs/vi/...?
517    
518     This is likely caused by your editor/program's use of the C<cvvis>
519     terminfo capability. Emacs uses it by default, as well as some versions of
520     vi and possibly other programs.
521    
522     In emacs, you can switch that off by adding this to your C<.emacs> file:
523    
524     (setq visible-cursor nil)
525    
526     For other programs, if they do not have an option, your have to remove the
527     C<cvvis> capability from the terminfo description.
528    
529     When @@URXVT_NAME@@ first added the blinking cursor option, it didn't
530     add a C<cvvis> capability, which served no purpose before. Version 9.21
531     introduced C<cvvis> (and the ability to control blinking independent of
532     cursor shape) for compatibility with other terminals, which traditionally
533     use a blinking cursor for C<cvvis>. This also reflects the intent of
534     programs such as emacs, who expect C<cvvis> to enable a blinking cursor.
535 root 1.145
536 root 1.102 =head2 Keyboard, Mouse & User Interaction
537 root 1.25
538 root 1.102 =head3 The new selection selects pieces that are too big, how can I select single words?
539 root 1.25
540 root 1.102 If you want to select e.g. alphanumeric words, you can use the following
541     setting:
542 root 1.44
543 root 1.102 URxvt.selection.pattern-0: ([[:word:]]+)
544 root 1.25
545 root 1.102 If you click more than twice, the selection will be extended
546     more and more.
547 root 1.25
548 root 1.102 To get a selection that is very similar to the old code, try this pattern:
549 root 1.25
550 root 1.102 URxvt.selection.pattern-0: ([^"&'()*,;<=>?@[\\\\]^`{|})]+)
551 root 1.25
552 root 1.159 Please also note that the I<LeftClick Shift-LeftClick> combination also
553 root 1.102 selects words like the old code.
554 root 1.25
555 root 1.102 =head3 I don't like the new selection/popups/hotkeys/perl, how do I change/disable it?
556 root 1.25
557 root 1.102 You can disable the perl extension completely by setting the
558     B<perl-ext-common> resource to the empty string, which also keeps
559     rxvt-unicode from initialising perl, saving memory.
560 root 1.54
561 root 1.102 If you only want to disable specific features, you first have to
562     identify which perl extension is responsible. For this, read the section
563 root 1.103 B<PREPACKAGED EXTENSIONS> in the @@URXVT_NAME@@perl(3) manpage. For
564 root 1.102 example, to disable the B<selection-popup> and B<option-popup>, specify
565     this B<perl-ext-common> resource:
566 root 1.54
567 root 1.102 URxvt.perl-ext-common: default,-selection-popup,-option-popup
568    
569     This will keep the default extensions, but disable the two popup
570     extensions. Some extensions can also be configured, for example,
571     scrollback search mode is triggered by B<M-s>. You can move it to any
572 sf-exg 1.240 other combination by adding a B<keysym> resource that binds the desired
573     combination to the C<start> action of C<searchable-scrollback> and another
574     one that binds B<M-s> to the C<builtin:> action:
575 root 1.102
576 sf-exg 1.240 URxvt.keysym.CM-s: searchable-scrollback:start
577     URxvt.keysym.M-s: builtin:
578 root 1.102
579     =head3 The cursor moves when selecting text in the current input line, how do I switch this off?
580    
581     See next entry.
582    
583     =head3 During rlogin/ssh/telnet/etc. sessions, clicking near the cursor outputs strange escape sequences, how do I fix this?
584    
585     These are caused by the C<readline> perl extension. Under normal
586     circumstances, it will move your cursor around when you click into the
587     line that contains it. It tries hard not to do this at the wrong moment,
588     but when running a program that doesn't parse cursor movements or in some
589     cases during rlogin sessions, it fails to detect this properly.
590    
591 root 1.120 You can permanently switch this feature off by disabling the C<readline>
592 root 1.102 extension:
593    
594     URxvt.perl-ext-common: default,-readline
595    
596 sf-exg 1.232 =head3 My numeric keypad acts weird and generates differing output?
597 root 1.102
598 sf-exg 1.232 Some Debian GNU/Linux users seem to have this problem, although no
599 root 1.102 specific details were reported so far. It is possible that this is caused
600 root 1.120 by the wrong C<TERM> setting, although the details of whether and how
601 root 1.102 this can happen are unknown, as C<TERM=rxvt> should offer a compatible
602     keymap. See the answer to the previous question, and please report if that
603     helped.
604 root 1.54
605 root 1.102 =head3 My Compose (Multi_key) key is no longer working.
606 root 1.25
607     The most common causes for this are that either your locale is not set
608 root 1.229 correctly, or you specified a B<preeditType> that is not supported by
609 root 1.25 your input method. For example, if you specified B<OverTheSpot> and
610     your input method (e.g. the default input method handling Compose keys)
611     does not support this (for instance because it is not visual), then
612     rxvt-unicode will continue without an input method.
613    
614 root 1.229 In this case either do not specify a B<preeditType> or specify more than
615 root 1.25 one pre-edit style, such as B<OverTheSpot,Root,None>.
616    
617 root 1.178 If it still doesn't work, then maybe your input method doesn't support
618     compose sequences - to fall back to the built-in one, make sure you don't
619     specify an input method via C<-im> or C<XMODIFIERS>.
620    
621 root 1.102 =head3 I cannot type C<Ctrl-Shift-2> to get an ASCII NUL character due to ISO 14755
622 root 1.29
623     Either try C<Ctrl-2> alone (it often is mapped to ASCII NUL even on
624     international keyboards) or simply use ISO 14755 support to your
625     advantage, typing <Ctrl-Shift-0> to get a ASCII NUL. This works for other
626     codes, too, such as C<Ctrl-Shift-1-d> to type the default telnet escape
627     character and so on.
628    
629 root 1.102 =head3 Mouse cut/paste suddenly no longer works.
630    
631     Make sure that mouse reporting is actually turned off since killing
632 sf-exg 1.208 some editors prematurely may leave it active. I've
633     heard that tcsh may use mouse reporting unless it is otherwise specified. A
634 root 1.102 quick check is to see if cut/paste works when the Alt or Shift keys are
635 sf-exg 1.208 pressed.
636 root 1.25
637 root 1.102 =head3 What's with the strange Backspace/Delete key behaviour?
638 root 1.25
639 root 1.102 Assuming that the physical Backspace key corresponds to the
640 root 1.120 Backspace keysym (not likely for Linux ... see the following
641 root 1.102 question) there are two standard values that can be used for
642     Backspace: C<^H> and C<^?>.
643 root 1.25
644 root 1.102 Historically, either value is correct, but rxvt-unicode adopts the debian
645 root 1.127 policy of using C<^?> when unsure, because it's the one and only correct
646 root 1.102 choice :).
647 root 1.25
648 sf-exg 1.192 It is possible to toggle between C<^H> and C<^?> with the DECBKM
649     private mode:
650 root 1.52
651 root 1.102 # use Backspace = ^H
652     $ stty erase ^H
653 root 1.223 $ printf "\e[?67h"
654 root 1.25
655 root 1.102 # use Backspace = ^?
656     $ stty erase ^?
657 root 1.223 $ printf "\e[?67l"
658 root 1.25
659 root 1.102 This helps satisfy some of the Backspace discrepancies that occur, but
660     if you use Backspace = C<^H>, make sure that the termcap/terminfo value
661     properly reflects that.
662 root 1.25
663 root 1.102 The Delete key is a another casualty of the ill-defined Backspace problem.
664     To avoid confusion between the Backspace and Delete keys, the Delete
665     key has been assigned an escape sequence to match the vt100 for Execute
666     (C<ESC [ 3 ~>) and is in the supplied termcap/terminfo.
667 root 1.55
668 root 1.102 Some other Backspace problems:
669 root 1.55
670 ayin 1.150 some editors use termcap/terminfo,
671 root 1.102 some editors (vim I'm told) expect Backspace = ^H,
672     GNU Emacs (and Emacs-like editors) use ^H for help.
673 root 1.56
674 root 1.102 Perhaps someday this will all be resolved in a consistent manner.
675 root 1.56
676 root 1.102 =head3 I don't like the key-bindings. How do I change them?
677 root 1.56
678 root 1.102 There are some compile-time selections available via configure. Unless
679     you have run "configure" with the C<--disable-resources> option you can
680     use the `keysym' resource to alter the keystrings associated with keysyms.
681 root 1.25
682 root 1.103 Here's an example for a URxvt session started using C<@@URXVT_NAME@@ -name URxvt>
683 root 1.100
684 sf-exg 1.214 URxvt.keysym.Prior: \033[5~
685     URxvt.keysym.Next: \033[6~
686     URxvt.keysym.Home: \033[7~
687     URxvt.keysym.End: \033[8~
688     URxvt.keysym.Up: \033[A
689     URxvt.keysym.Down: \033[B
690     URxvt.keysym.Right: \033[C
691     URxvt.keysym.Left: \033[D
692 root 1.25
693 root 1.102 See some more examples in the documentation for the B<keysym> resource.
694 root 1.25
695 root 1.102 =head3 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
696 root 1.25
697 root 1.102 KP_Insert == Insert
698     F22 == Print
699     F27 == Home
700     F29 == Prior
701     F33 == End
702     F35 == Next
703 root 1.25
704 root 1.102 Rather than have rxvt-unicode try to accommodate all the various possible
705     keyboard mappings, it is better to use `xmodmap' to remap the keys as
706     required for your particular machine.
707 root 1.25
708    
709 root 1.102 =head2 Terminal Configuration
710 root 1.25
711 root 1.114 =head3 Can I see a typical configuration?
712    
713     The default configuration tries to be xterm-like, which I don't like that
714     much, but it's least surprise to regular users.
715    
716     As a rxvt or rxvt-unicode user, you are practically supposed to invest
717     time into customising your terminal. To get you started, here is the
718 root 1.115 author's .Xdefaults entries, with comments on what they do. It's certainly
719     not I<typical>, but what's typical...
720 root 1.114
721     URxvt.cutchars: "()*,<>[]{}|'
722 root 1.247 URxvt.print-pipe: cat >/some/path
723 root 1.114
724     These are just for testing stuff.
725    
726     URxvt.imLocale: ja_JP.UTF-8
727     URxvt.preeditType: OnTheSpot,None
728    
729     This tells rxvt-unicode to use a special locale when communicating with
730     the X Input Method, and also tells it to only use the OnTheSpot pre-edit
731     type, which requires the C<xim-onthespot> perl extension but rewards me
732     with correct-looking fonts.
733    
734     URxvt.perl-lib: /root/lib/urxvt
735     URxvt.perl-ext-common: default,selection-autotransform,selection-pastebin,xim-onthespot,remote-clipboard
736     URxvt.selection.pattern-0: ( at .*? line \\d+)
737     URxvt.selection.pattern-1: ^(/[^:]+):\
738     URxvt.selection-autotransform.0: s/^([^:[:space:]]+):(\\d+):?$/:e \\Q$1\\E\\x0d:$2\\x0d/
739     URxvt.selection-autotransform.1: s/^ at (.*?) line (\\d+)$/:e \\Q$1\\E\\x0d:$2\\x0d/
740    
741     This is my perl configuration. The first two set the perl library
742     directory and also tells urxvt to use a large number of extensions. I
743     develop for myself mostly, so I actually use most of the extensions I
744     write.
745    
746     The selection stuff mainly makes the selection perl-error-message aware
747 root 1.120 and tells it to convert perl error messages into vi-commands to load the
748 sf-exg 1.181 relevant file and go to the error line number.
749 root 1.114
750     URxvt.scrollstyle: plain
751     URxvt.secondaryScroll: true
752    
753     As the documentation says: plain is the preferred scrollbar for the
754 root 1.120 author. The C<secondaryScroll> configures urxvt to scroll in full-screen
755     apps, like screen, so lines scrolled out of screen end up in urxvt's
756 root 1.114 scrollback buffer.
757    
758     URxvt.background: #000000
759     URxvt.foreground: gray90
760     URxvt.color7: gray90
761     URxvt.colorBD: #ffffff
762     URxvt.cursorColor: #e0e080
763     URxvt.throughColor: #8080f0
764     URxvt.highlightColor: #f0f0f0
765    
766     Some colours. Not sure which ones are being used or even non-defaults, but
767     these are in my .Xdefaults. Most notably, they set foreground/background
768     to light gray/black, and also make sure that the colour 7 matches the
769     default foreground colour.
770    
771     URxvt.underlineColor: yellow
772    
773     Another colour, makes underline lines look different. Sometimes hurts, but
774     is mostly a nice effect.
775    
776     URxvt.geometry: 154x36
777     URxvt.loginShell: false
778     URxvt.meta: ignore
779     URxvt.utmpInhibit: true
780    
781     Uh, well, should be mostly self-explanatory. By specifying some defaults
782     manually, I can quickly switch them for testing.
783    
784     URxvt.saveLines: 8192
785    
786     A large scrollback buffer is essential. Really.
787    
788     URxvt.mapAlert: true
789    
790     The only case I use it is for my IRC window, which I like to keep
791     iconified till people msg me (which beeps).
792    
793     URxvt.visualBell: true
794    
795     The audible bell is often annoying, especially when in a crowd.
796    
797     URxvt.insecure: true
798    
799     Please don't hack my mutt! Ooops...
800    
801     URxvt.pastableTabs: false
802    
803     I once thought this is a great idea.
804    
805     urxvt.font: 9x15bold,\
806     -misc-fixed-bold-r-normal--15-140-75-75-c-90-iso10646-1,\
807     -misc-fixed-medium-r-normal--15-140-75-75-c-90-iso10646-1, \
808     [codeset=JISX0208]xft:Kochi Gothic, \
809     xft:Bitstream Vera Sans Mono:autohint=true, \
810     xft:Code2000:antialias=false
811     urxvt.boldFont: -xos4-terminus-bold-r-normal--14-140-72-72-c-80-iso8859-15
812     urxvt.italicFont: xft:Bitstream Vera Sans Mono:italic:autohint=true
813     urxvt.boldItalicFont: xft:Bitstream Vera Sans Mono:bold:italic:autohint=true
814    
815     I wrote rxvt-unicode to be able to specify fonts exactly. So don't be
816 root 1.120 overwhelmed. A special note: the C<9x15bold> mentioned above is actually
817 root 1.114 the version from XFree-3.3, as XFree-4 replaced it by a totally different
818     font (different glyphs for C<;> and many other harmless characters),
819     while the second font is actually the C<9x15bold> from XFree4/XOrg. The
820     bold version has less chars than the medium version, so I use it for rare
821 root 1.120 characters, too. When editing sources with vim, I use italic for comments
822 root 1.114 and other stuff, which looks quite good with Bitstream Vera anti-aliased.
823    
824     Terminus is a quite bad font (many very wrong glyphs), but for most of my
825     purposes, it works, and gives a different look, as my normal (Non-bold)
826     font is already bold, and I want to see a difference between bold and
827     normal fonts.
828    
829     Please note that I used the C<urxvt> instance name and not the C<URxvt>
830 sf-exg 1.181 class name. That is because I use different configs for different purposes,
831 root 1.114 for example, my IRC window is started with C<-name IRC>, and uses these
832     defaults:
833    
834     IRC*title: IRC
835     IRC*geometry: 87x12+535+542
836     IRC*saveLines: 0
837     IRC*mapAlert: true
838     IRC*font: suxuseuro
839     IRC*boldFont: suxuseuro
840     IRC*colorBD: white
841     IRC*keysym.M-C-1: command:\033]710;suxuseuro\007\033]711;suxuseuro\007
842     IRC*keysym.M-C-2: command:\033]710;9x15bold\007\033]711;9x15bold\007
843    
844 root 1.174 C<Alt-Ctrl-1> and C<Alt-Ctrl-2> switch between two different font
845 root 1.114 sizes. C<suxuseuro> allows me to keep an eye (and actually read)
846     stuff while keeping a very small window. If somebody pastes something
847     complicated (e.g. japanese), I temporarily switch to a larger font.
848    
849     The above is all in my C<.Xdefaults> (I don't use C<.Xresources> nor
850     C<xrdb>). I also have some resources in a separate C<.Xdefaults-hostname>
851 sf-exg 1.191 file for different hosts, for example, on my main desktop, I use:
852 root 1.114
853     URxvt.keysym.C-M-q: command:\033[3;5;5t
854     URxvt.keysym.C-M-y: command:\033[3;5;606t
855     URxvt.keysym.C-M-e: command:\033[3;1605;5t
856     URxvt.keysym.C-M-c: command:\033[3;1605;606t
857     URxvt.keysym.C-M-p: perl:test
858    
859     The first for keysym definitions allow me to quickly bring some windows
860     in the layout I like most. Ion users might start laughing but will stop
861     immediately when I tell them that I use my own Fvwm2 module for much the
862     same effect as Ion provides, and I only very rarely use the above key
863     combinations :->
864    
865 root 1.102 =head3 Why doesn't rxvt-unicode read my resources?
866 root 1.25
867 root 1.102 Well, why, indeed? It does, in a way very similar to other X
868     applications. Most importantly, this means that if you or your OS loads
869     resources into the X display (the right way to do it), rxvt-unicode will
870     ignore any resource files in your home directory. It will only read
871     F<$HOME/.Xdefaults> when no resources are attached to the display.
872 root 1.25
873 root 1.102 If you have or use an F<$HOME/.Xresources> file, chances are that
874     resources are loaded into your X-server. In this case, you have to
875     re-login after every change (or run F<xrdb -merge $HOME/.Xresources>).
876 root 1.25
877 root 1.102 Also consider the form resources have to use:
878 root 1.25
879 root 1.102 URxvt.resource: value
880 root 1.25
881 root 1.102 If you want to use another form (there are lots of different ways of
882 root 1.120 specifying resources), make sure you understand whether and why it
883 root 1.102 works. If unsure, use the form above.
884 root 1.25
885 root 1.102 =head3 When I log-in to another system it tells me about missing terminfo data?
886 root 1.44
887 root 1.102 The terminal description used by rxvt-unicode is not as widely available
888     as that for xterm, or even rxvt (for which the same problem often arises).
889 root 1.25
890 root 1.102 The correct solution for this problem is to install the terminfo, this can
891 root 1.176 be done by simply installing rxvt-unicode on the remote system as well
892     (in case you have a nice package manager ready), or you can install the
893     terminfo database manually like this (with ncurses infocmp. works as
894     user and root):
895 root 1.25
896 root 1.102 REMOTE=remotesystem.domain
897 root 1.122 infocmp rxvt-unicode | ssh $REMOTE "mkdir -p .terminfo && cat >/tmp/ti && tic /tmp/ti"
898 root 1.25
899 root 1.122 One some systems you might need to set C<$TERMINFO> to the full path of
900 sf-exg 1.237 F<$HOME/.terminfo> for this to work.
901 root 1.122
902 root 1.102 If you cannot or do not want to do this, then you can simply set
903     C<TERM=rxvt> or even C<TERM=xterm>, and live with the small number of
904     problems arising, which includes wrong keymapping, less and different
905     colours and some refresh errors in fullscreen applications. It's a nice
906     quick-and-dirty workaround for rare cases, though.
907 root 1.25
908 root 1.102 If you always want to do this (and are fine with the consequences) you
909     can either recompile rxvt-unicode with the desired TERM value or use a
910     resource to set it:
911 root 1.25
912 root 1.102 URxvt.termName: rxvt
913 root 1.25
914 root 1.102 If you don't plan to use B<rxvt> (quite common...) you could also replace
915 root 1.105 the rxvt terminfo file with the rxvt-unicode one and use C<TERM=rxvt>.
916 root 1.25
917 root 1.176 =head3 nano fails with "Error opening terminal: rxvt-unicode"
918    
919     This exceptionally confusing and useless error message is printed by nano
920     when it can't find the terminfo database. Nothing is wrong with your
921     terminal, read the previous answer for a solution.
922    
923 root 1.102 =head3 C<tic> outputs some error when compiling the terminfo entry.
924 root 1.25
925 root 1.102 Most likely it's the empty definition for C<enacs=>. Just replace it by
926     C<enacs=\E[0@> and try again.
927 root 1.25
928 root 1.103 =head3 C<bash>'s readline does not work correctly under @@URXVT_NAME@@.
929 root 1.25
930 root 1.102 See next entry.
931 root 1.25
932 root 1.102 =head3 I need a termcap file entry.
933 root 1.45
934 root 1.102 One reason you might want this is that some distributions or operating
935     systems still compile some programs using the long-obsoleted termcap
936 sf-exg 1.241 library (Fedora's bash is one example) and rely on a termcap entry
937 root 1.102 for C<rxvt-unicode>.
938    
939 root 1.120 You could use rxvt's termcap entry with reasonable results in many cases.
940 root 1.102 You can also create a termcap entry by using terminfo's infocmp program
941     like this:
942    
943     infocmp -C rxvt-unicode
944    
945 ayin 1.169 Or you could use the termcap entry in doc/etc/rxvt-unicode.termcap,
946     generated by the command above.
947 root 1.102
948     =head3 Why does C<ls> no longer have coloured output?
949    
950     The C<ls> in the GNU coreutils unfortunately doesn't use terminfo to
951 root 1.120 decide whether a terminal has colour, but uses its own configuration
952 root 1.119 file. Needless to say, C<rxvt-unicode> is not in its default file (among
953 root 1.102 with most other terminals supporting colour). Either add:
954    
955     TERM rxvt-unicode
956    
957     to C</etc/DIR_COLORS> or simply add:
958    
959     alias ls='ls --color=auto'
960    
961     to your C<.profile> or C<.bashrc>.
962    
963     =head3 Why doesn't vim/emacs etc. use the 88 colour mode?
964    
965     See next entry.
966    
967     =head3 Why doesn't vim/emacs etc. make use of italic?
968    
969     See next entry.
970    
971     =head3 Why are the secondary screen-related options not working properly?
972    
973     Make sure you are using C<TERM=rxvt-unicode>. Some pre-packaged
974 sf-exg 1.237 distributions break rxvt-unicode by setting C<TERM> to C<rxvt>, which
975     doesn't have these extra features. Unfortunately, some of these
976     furthermore fail to even install the C<rxvt-unicode> terminfo file, so
977     you will need to install it on your own (See the question B<When I
978     log-in to another system it tells me about missing terminfo data?> on
979 root 1.102 how to do this).
980    
981    
982     =head2 Encoding / Locale / Input Method Issues
983    
984     =head3 Rxvt-unicode does not seem to understand the selected encoding?
985    
986     See next entry.
987    
988     =head3 Unicode does not seem to work?
989 root 1.45
990 root 1.102 If you encounter strange problems like typing an accented character but
991     getting two unrelated other characters or similar, or if program output is
992     subtly garbled, then you should check your locale settings.
993 root 1.45
994 root 1.102 Rxvt-unicode must be started with the same C<LC_CTYPE> setting as the
995 root 1.124 programs running in it. Often rxvt-unicode is started in the C<C> locale,
996     while the login script running within the rxvt-unicode window changes the
997     locale to something else, e.g. C<en_GB.UTF-8>. Needless to say, this is
998     not going to work, and is the most common cause for problems.
999 root 1.25
1000 root 1.102 The best thing is to fix your startup environment, as you will likely run
1001     into other problems. If nothing works you can try this in your .profile.
1002 root 1.25
1003 root 1.124 printf '\33]701;%s\007' "$LC_CTYPE" # $LANG or $LC_ALL are worth a try, too
1004 root 1.25
1005 root 1.102 If this doesn't work, then maybe you use a C<LC_CTYPE> specification not
1006     supported on your systems. Some systems have a C<locale> command which
1007     displays this (also, C<perl -e0> can be used to check locale settings, as
1008     it will complain loudly if it cannot set the locale). If it displays something
1009     like:
1010 root 1.25
1011 root 1.102 locale: Cannot set LC_CTYPE to default locale: ...
1012 root 1.25
1013 root 1.102 Then the locale you specified is not supported on your system.
1014 root 1.25
1015 root 1.102 If nothing works and you are sure that everything is set correctly then
1016     you will need to remember a little known fact: Some programs just don't
1017     support locales :(
1018 root 1.25
1019 root 1.102 =head3 How does rxvt-unicode determine the encoding to use?
1020 root 1.25
1021 root 1.102 See next entry.
1022 root 1.25
1023 root 1.102 =head3 Is there an option to switch encodings?
1024 root 1.25
1025 root 1.102 Unlike some other terminals, rxvt-unicode has no encoding switch, and no
1026     specific "utf-8" mode, such as xterm. In fact, it doesn't even know about
1027     UTF-8 or any other encodings with respect to terminal I/O.
1028 root 1.25
1029 root 1.102 The reasons is that there exists a perfectly fine mechanism for selecting
1030     the encoding, doing I/O and (most important) communicating this to all
1031     applications so everybody agrees on character properties such as width
1032     and code number. This mechanism is the I<locale>. Applications not using
1033     that info will have problems (for example, C<xterm> gets the width of
1034 root 1.119 characters wrong as it uses its own, locale-independent table under all
1035 root 1.102 locales).
1036 root 1.25
1037 root 1.102 Rxvt-unicode uses the C<LC_CTYPE> locale category to select encoding. All
1038     programs doing the same (that is, most) will automatically agree in the
1039     interpretation of characters.
1040 root 1.25
1041 root 1.102 Unfortunately, there is no system-independent way to select locales, nor
1042     is there a standard on how locale specifiers will look like.
1043 root 1.25
1044 root 1.102 On most systems, the content of the C<LC_CTYPE> environment variable
1045     contains an arbitrary string which corresponds to an already-installed
1046     locale. Common names for locales are C<en_US.UTF-8>, C<de_DE.ISO-8859-15>,
1047     C<ja_JP.EUC-JP>, i.e. C<language_country.encoding>, but other forms
1048     (i.e. C<de> or C<german>) are also common.
1049 root 1.25
1050 root 1.102 Rxvt-unicode ignores all other locale categories, and except for
1051     the encoding, ignores country or language-specific settings,
1052     i.e. C<de_DE.UTF-8> and C<ja_JP.UTF-8> are the normally same to
1053     rxvt-unicode.
1054 root 1.25
1055 root 1.102 If you want to use a specific encoding you have to make sure you start
1056     rxvt-unicode with the correct C<LC_CTYPE> category.
1057 root 1.25
1058 root 1.102 =head3 Can I switch locales at runtime?
1059 root 1.25
1060 root 1.102 Yes, using an escape sequence. Try something like this, which sets
1061     rxvt-unicode's idea of C<LC_CTYPE>.
1062 root 1.25
1063 root 1.116 printf '\33]701;%s\007' ja_JP.SJIS
1064 root 1.44
1065 root 1.102 See also the previous answer.
1066 root 1.28
1067 root 1.102 Sometimes this capability is rather handy when you want to work in
1068     one locale (e.g. C<de_DE.UTF-8>) but some programs don't support it
1069     (e.g. UTF-8). For example, I use this script to start C<xjdic>, which
1070     first switches to a locale supported by xjdic and back later:
1071 root 1.28
1072 root 1.116 printf '\33]701;%s\007' ja_JP.SJIS
1073 root 1.102 xjdic -js
1074 root 1.116 printf '\33]701;%s\007' de_DE.UTF-8
1075 root 1.25
1076 root 1.102 You can also use xterm's C<luit> program, which usually works fine, except
1077     for some locales where character width differs between program- and
1078     rxvt-unicode-locales.
1079 root 1.44
1080 root 1.112 =head3 I have problems getting my input method working.
1081    
1082     Try a search engine, as this is slightly different for every input method server.
1083    
1084     Here is a checklist:
1085    
1086     =over 4
1087    
1088     =item - Make sure your locale I<and> the imLocale are supported on your OS.
1089    
1090     Try C<locale -a> or check the documentation for your OS.
1091    
1092     =item - Make sure your locale or imLocale matches a locale supported by your XIM.
1093    
1094     For example, B<kinput2> does not support UTF-8 locales, you should use
1095     C<ja_JP.EUC-JP> or equivalent.
1096    
1097     =item - Make sure your XIM server is actually running.
1098    
1099     =item - Make sure the C<XMODIFIERS> environment variable is set correctly when I<starting> rxvt-unicode.
1100    
1101     When you want to use e.g. B<kinput2>, it must be set to
1102 root 1.120 C<@im=kinput2>. For B<scim>, use C<@im=SCIM>. You can see what input
1103 root 1.112 method servers are running with this command:
1104    
1105     xprop -root XIM_SERVERS
1106    
1107     =back
1108    
1109 root 1.102 =head3 My input method wants <some encoding> but I want UTF-8, what can I do?
1110 root 1.44
1111 root 1.102 You can specify separate locales for the input method and the rest of the
1112     terminal, using the resource C<imlocale>:
1113 root 1.25
1114 root 1.102 URxvt.imlocale: ja_JP.EUC-JP
1115 root 1.25
1116 root 1.102 Now you can start your terminal with C<LC_CTYPE=ja_JP.UTF-8> and still
1117 root 1.112 use your input method. Please note, however, that, depending on your Xlib
1118     version, you may not be able to input characters outside C<EUC-JP> in a
1119     normal way then, as your input method limits you.
1120 root 1.25
1121 root 1.102 =head3 Rxvt-unicode crashes when the X Input Method changes or exits.
1122 root 1.25
1123 root 1.102 Unfortunately, this is unavoidable, as the XIM protocol is racy by
1124     design. Applications can avoid some crashes at the expense of memory
1125     leaks, and Input Methods can avoid some crashes by careful ordering at
1126     exit time. B<kinput2> (and derived input methods) generally succeeds,
1127     while B<SCIM> (or similar input methods) fails. In the end, however,
1128     crashes cannot be completely avoided even if both sides cooperate.
1129 root 1.25
1130 root 1.102 So the only workaround is not to kill your Input Method Servers.
1131 root 1.25
1132    
1133 root 1.102 =head2 Operating Systems / Package Maintaining
1134 root 1.25
1135 root 1.102 =head3 I am maintaining rxvt-unicode for distribution/OS XXX, any recommendation?
1136 root 1.25
1137 root 1.102 You should build one binary with the default options. F<configure>
1138     now enables most useful options, and the trend goes to making them
1139 root 1.120 runtime-switchable, too, so there is usually no drawback to enabling them,
1140 root 1.102 except higher disk and possibly memory usage. The perl interpreter should
1141     be enabled, as important functionality (menus, selection, likely more in
1142     the future) depends on it.
1143 root 1.25
1144 sf-exg 1.181 You should not overwrite the C<perl-ext-common> and C<perl-ext> resources
1145 root 1.102 system-wide (except maybe with C<defaults>). This will result in useful
1146     behaviour. If your distribution aims at low memory, add an empty
1147     C<perl-ext-common> resource to the app-defaults file. This will keep the
1148     perl interpreter disabled until the user enables it.
1149 root 1.25
1150 root 1.102 If you can/want build more binaries, I recommend building a minimal
1151     one with C<--disable-everything> (very useful) and a maximal one with
1152     C<--enable-everything> (less useful, it will be very big due to a lot of
1153     encodings built-in that increase download times and are rarely used).
1154 root 1.25
1155 root 1.102 =head3 I need to make it setuid/setgid to support utmp/ptys on my OS, is this safe?
1156 root 1.25
1157 root 1.102 It should be, starting with release 7.1. You are encouraged to properly
1158     install urxvt with privileges necessary for your OS now.
1159 root 1.25
1160 root 1.102 When rxvt-unicode detects that it runs setuid or setgid, it will fork
1161     into a helper process for privileged operations (pty handling on some
1162     systems, utmp/wtmp/lastlog handling on others) and drop privileges
1163     immediately. This is much safer than most other terminals that keep
1164     privileges while running (but is more relevant to urxvt, as it contains
1165     things as perl interpreters, which might be "helpful" to attackers).
1166 root 1.25
1167 root 1.102 This forking is done as the very first within main(), which is very early
1168     and reduces possible bugs to initialisation code run before main(), or
1169     things like the dynamic loader of your system, which should result in very
1170     little risk.
1171 root 1.25
1172 root 1.102 =head3 I am on FreeBSD and rxvt-unicode does not seem to work at all.
1173 root 1.25
1174 root 1.102 Rxvt-unicode requires the symbol C<__STDC_ISO_10646__> to be defined
1175     in your compile environment, or an implementation that implements it,
1176 root 1.120 whether it defines the symbol or not. C<__STDC_ISO_10646__> requires that
1177 root 1.102 B<wchar_t> is represented as unicode.
1178 root 1.25
1179 root 1.120 As you might have guessed, FreeBSD does neither define this symbol nor
1180 root 1.119 does it support it. Instead, it uses its own internal representation of
1181 root 1.102 B<wchar_t>. This is, of course, completely fine with respect to standards.
1182 root 1.25
1183 root 1.102 However, that means rxvt-unicode only works in C<POSIX>, C<ISO-8859-1> and
1184 root 1.170 C<UTF-8> locales under FreeBSD (which all use Unicode as B<wchar_t>).
1185 root 1.25
1186 root 1.102 C<__STDC_ISO_10646__> is the only sane way to support multi-language
1187     apps in an OS, as using a locale-dependent (and non-standardized)
1188     representation of B<wchar_t> makes it impossible to convert between
1189     B<wchar_t> (as used by X11 and your applications) and any other encoding
1190     without implementing OS-specific-wrappers for each and every locale. There
1191     simply are no APIs to convert B<wchar_t> into anything except the current
1192     locale encoding.
1193 root 1.25
1194 root 1.102 Some applications (such as the formidable B<mlterm>) work around this
1195     by carrying their own replacement functions for character set handling
1196     with them, and either implementing OS-dependent hacks or doing multiple
1197     conversions (which is slow and unreliable in case the OS implements
1198     encodings slightly different than the terminal emulator).
1199 root 1.25
1200 root 1.102 The rxvt-unicode author insists that the right way to fix this is in the
1201     system libraries once and for all, instead of forcing every app to carry
1202     complete replacements for them :)
1203 root 1.25
1204 root 1.102 =head3 How can I use rxvt-unicode under cygwin?
1205 root 1.25
1206 root 1.102 rxvt-unicode should compile and run out of the box on cygwin, using
1207     the X11 libraries that come with cygwin. libW11 emulation is no
1208     longer supported (and makes no sense, either, as it only supported a
1209     single font). I recommend starting the X-server in C<-multiwindow> or
1210     C<-rootless> mode instead, which will result in similar look&feel as the
1211     old libW11 emulation.
1212 root 1.27
1213 root 1.102 At the time of this writing, cygwin didn't seem to support any multi-byte
1214     encodings (you might try C<LC_CTYPE=C-UTF-8>), so you are likely limited
1215     to 8-bit encodings.
1216 root 1.27
1217 ayin 1.139 =head3 Character widths are not correct.
1218    
1219     urxvt uses the system wcwidth function to know the information about
1220     the width of characters, so on systems with incorrect locale data you
1221     will likely get bad results. Two notorious examples are Solaris 9,
1222     where single-width characters like U+2514 are reported as double-width,
1223     and Darwin 8, where combining chars are reported having width 1.
1224    
1225     The solution is to upgrade your system or switch to a better one. A
1226     possibly working workaround is to use a wcwidth implementation like
1227    
1228     http://www.cl.cam.ac.uk/~mgk25/ucs/wcwidth.c
1229    
1230 root 1.105 =head1 RXVT-UNICODE TECHNICAL REFERENCE
1231 root 1.23
1232     The rest of this document describes various technical aspects of
1233     B<rxvt-unicode>. First the description of supported command sequences,
1234 root 1.85 followed by pixmap support and last by a description of all features
1235     selectable at C<configure> time.
1236 root 1.23
1237 root 1.246 When some functionality is marked as (insecure mode), then it requires
1238     insecure mode to be enabled to work fully, e.g. by using the B<insecure>
1239     resource or command line switch. As that name implies, a terminal running
1240     in insecure mode might not be secure against attackers that can output
1241     arbitrary sequences to the terminal.
1242    
1243 root 1.110 =head2 Definitions
1244 root 1.1
1245     =over 4
1246    
1247     =item B<< C<c> >>
1248    
1249 root 1.202 The literal character c (potentially a multi-byte character).
1250 root 1.1
1251     =item B<< C<C> >>
1252    
1253     A single (required) character.
1254    
1255     =item B<< C<Ps> >>
1256    
1257     A single (usually optional) numeric parameter, composed of one or more
1258     digits.
1259    
1260     =item B<< C<Pm> >>
1261    
1262     A multiple numeric parameter composed of any number of single numeric
1263     parameters, separated by C<;> character(s).
1264    
1265     =item B<< C<Pt> >>
1266    
1267     A text parameter composed of printable characters.
1268    
1269     =back
1270    
1271 root 1.110 =head2 Values
1272 root 1.1
1273     =over 4
1274    
1275     =item B<< C<ENQ> >>
1276    
1277     Enquiry (Ctrl-E) = Send Device Attributes (DA)
1278 root 1.2 request attributes from terminal. See B<< C<ESC [ Ps c> >>.
1279 root 1.1
1280     =item B<< C<BEL> >>
1281    
1282     Bell (Ctrl-G)
1283    
1284     =item B<< C<BS> >>
1285    
1286     Backspace (Ctrl-H)
1287    
1288     =item B<< C<TAB> >>
1289    
1290     Horizontal Tab (HT) (Ctrl-I)
1291    
1292     =item B<< C<LF> >>
1293    
1294     Line Feed or New Line (NL) (Ctrl-J)
1295    
1296     =item B<< C<VT> >>
1297    
1298     Vertical Tab (Ctrl-K) same as B<< C<LF> >>
1299    
1300     =item B<< C<FF> >>
1301    
1302     Form Feed or New Page (NP) (Ctrl-L) same as B<< C<LF> >>
1303    
1304     =item B<< C<CR> >>
1305    
1306     Carriage Return (Ctrl-M)
1307    
1308     =item B<< C<SO> >>
1309    
1310     Shift Out (Ctrl-N), invokes the G1 character set.
1311     Switch to Alternate Character Set
1312    
1313     =item B<< C<SI> >>
1314    
1315     Shift In (Ctrl-O), invokes the G0 character set (the default).
1316     Switch to Standard Character Set
1317    
1318 sf-exg 1.225 =item B<< C<SP> >>
1319 root 1.1
1320     Space Character
1321    
1322     =back
1323    
1324 root 1.110 =head2 Escape Sequences
1325 root 1.1
1326     =over 4
1327    
1328     =item B<< C<ESC # 8> >>
1329    
1330     DEC Screen Alignment Test (DECALN)
1331    
1332     =item B<< C<ESC 7> >>
1333    
1334     Save Cursor (SC)
1335    
1336     =item B<< C<ESC 8> >>
1337    
1338     Restore Cursor
1339    
1340     =item B<< C<ESC => >>
1341    
1342     Application Keypad (SMKX). See also next sequence.
1343    
1344 root 1.182 =item B<<< C<< ESC > >> >>>
1345 root 1.1
1346     Normal Keypad (RMKX)
1347    
1348 sf-exg 1.232 B<Note:> numbers or control functions are generated by the numeric
1349     keypad in normal or application mode, respectively (see Key Codes).
1350    
1351 root 1.1
1352     =item B<< C<ESC D> >>
1353    
1354     Index (IND)
1355    
1356     =item B<< C<ESC E> >>
1357    
1358     Next Line (NEL)
1359    
1360     =item B<< C<ESC H> >>
1361    
1362     Tab Set (HTS)
1363    
1364     =item B<< C<ESC M> >>
1365    
1366     Reverse Index (RI)
1367    
1368     =item B<< C<ESC N> >>
1369    
1370     Single Shift Select of G2 Character Set (SS2): affects next character
1371     only I<unimplemented>
1372    
1373     =item B<< C<ESC O> >>
1374    
1375     Single Shift Select of G3 Character Set (SS3): affects next character
1376     only I<unimplemented>
1377    
1378     =item B<< C<ESC Z> >>
1379    
1380 root 1.44 Obsolete form of returns: B<< C<ESC [ ? 1 ; 2 C> >> I<rxvt-unicode compile-time option>
1381 root 1.1
1382     =item B<< C<ESC c> >>
1383    
1384     Full reset (RIS)
1385    
1386     =item B<< C<ESC n> >>
1387    
1388     Invoke the G2 Character Set (LS2)
1389    
1390     =item B<< C<ESC o> >>
1391    
1392     Invoke the G3 Character Set (LS3)
1393    
1394 root 1.44 =item B<< C<ESC ( C> >>
1395 root 1.1
1396     Designate G0 Character Set (ISO 2022), see below for values of C<C>.
1397    
1398 root 1.44 =item B<< C<ESC ) C> >>
1399 root 1.1
1400     Designate G1 Character Set (ISO 2022), see below for values of C<C>.
1401    
1402     =item B<< C<ESC * C> >>
1403    
1404     Designate G2 Character Set (ISO 2022), see below for values of C<C>.
1405    
1406     =item B<< C<ESC + C> >>
1407    
1408     Designate G3 Character Set (ISO 2022), see below for values of C<C>.
1409    
1410     =item B<< C<ESC $ C> >>
1411    
1412     Designate Kanji Character Set
1413    
1414     Where B<< C<C> >> is one of:
1415    
1416     =begin table
1417    
1418 root 1.238 C = C<0> DEC Special Character and Line Drawing Set
1419     C = C<A> United Kingdom (UK)
1420     C = C<B> United States (USASCII)
1421 root 1.1 C = C<< < >> Multinational character set I<unimplemented>
1422 root 1.238 C = C<5> Finnish character set I<unimplemented>
1423     C = C<C> Finnish character set I<unimplemented>
1424     C = C<K> German character set I<unimplemented>
1425 root 1.1
1426     =end table
1427    
1428     =back
1429    
1430     X<CSI>
1431    
1432 root 1.110 =head2 CSI (Command Sequence Introducer) Sequences
1433 root 1.1
1434     =over 4
1435    
1436     =item B<< C<ESC [ Ps @> >>
1437    
1438     Insert B<< C<Ps> >> (Blank) Character(s) [default: 1] (ICH)X<ESCOBPsA>
1439    
1440     =item B<< C<ESC [ Ps A> >>
1441    
1442     Cursor Up B<< C<Ps> >> Times [default: 1] (CUU)
1443    
1444     =item B<< C<ESC [ Ps B> >>
1445    
1446     Cursor Down B<< C<Ps> >> Times [default: 1] (CUD)X<ESCOBPsC>
1447    
1448     =item B<< C<ESC [ Ps C> >>
1449    
1450     Cursor Forward B<< C<Ps> >> Times [default: 1] (CUF)
1451    
1452     =item B<< C<ESC [ Ps D> >>
1453    
1454     Cursor Backward B<< C<Ps> >> Times [default: 1] (CUB)
1455    
1456     =item B<< C<ESC [ Ps E> >>
1457    
1458     Cursor Down B<< C<Ps> >> Times [default: 1] and to first column
1459    
1460     =item B<< C<ESC [ Ps F> >>
1461    
1462     Cursor Up B<< C<Ps> >> Times [default: 1] and to first columnX<ESCOBPsG>
1463    
1464     =item B<< C<ESC [ Ps G> >>
1465    
1466     Cursor to Column B<< C<Ps> >> (HPA)
1467    
1468     =item B<< C<ESC [ Ps;Ps H> >>
1469    
1470     Cursor Position [row;column] [default: 1;1] (CUP)
1471    
1472     =item B<< C<ESC [ Ps I> >>
1473    
1474     Move forward B<< C<Ps> >> tab stops [default: 1]
1475    
1476     =item B<< C<ESC [ Ps J> >>
1477    
1478     Erase in Display (ED)
1479    
1480     =begin table
1481    
1482 root 1.215 B<< C<Ps = 0> >> Clear Right and Below (default)
1483     B<< C<Ps = 1> >> Clear Left and Above
1484 root 1.1 B<< C<Ps = 2> >> Clear All
1485    
1486     =end table
1487    
1488     =item B<< C<ESC [ Ps K> >>
1489    
1490     Erase in Line (EL)
1491    
1492     =begin table
1493    
1494     B<< C<Ps = 0> >> Clear to Right (default)
1495     B<< C<Ps = 1> >> Clear to Left
1496     B<< C<Ps = 2> >> Clear All
1497 root 1.171 B<< C<Ps = 3> >> Like Ps = 0, but is ignored when wrapped
1498 root 1.238 (@@RXVT_NAME@@ extension)
1499 root 1.1
1500     =end table
1501    
1502     =item B<< C<ESC [ Ps L> >>
1503    
1504     Insert B<< C<Ps> >> Line(s) [default: 1] (IL)
1505    
1506     =item B<< C<ESC [ Ps M> >>
1507    
1508     Delete B<< C<Ps> >> Line(s) [default: 1] (DL)
1509    
1510     =item B<< C<ESC [ Ps P> >>
1511    
1512     Delete B<< C<Ps> >> Character(s) [default: 1] (DCH)
1513    
1514     =item B<< C<ESC [ Ps;Ps;Ps;Ps;Ps T> >>
1515    
1516     Initiate . I<unimplemented> Parameters are
1517     [func;startx;starty;firstrow;lastrow].
1518    
1519     =item B<< C<ESC [ Ps W> >>
1520    
1521     Tabulator functions
1522    
1523     =begin table
1524    
1525     B<< C<Ps = 0> >> Tab Set (HTS)
1526     B<< C<Ps = 2> >> Tab Clear (TBC), Clear Current Column (default)
1527     B<< C<Ps = 5> >> Tab Clear (TBC), Clear All
1528    
1529     =end table
1530    
1531     =item B<< C<ESC [ Ps X> >>
1532    
1533     Erase B<< C<Ps> >> Character(s) [default: 1] (ECH)
1534    
1535     =item B<< C<ESC [ Ps Z> >>
1536    
1537     Move backward B<< C<Ps> >> [default: 1] tab stops
1538    
1539     =item B<< C<ESC [ Ps '> >>
1540    
1541 root 1.2 See B<< C<ESC [ Ps G> >>
1542 root 1.1
1543     =item B<< C<ESC [ Ps a> >>
1544    
1545 root 1.2 See B<< C<ESC [ Ps C> >>
1546 root 1.1
1547     =item B<< C<ESC [ Ps c> >>
1548    
1549     Send Device Attributes (DA)
1550     B<< C<Ps = 0> >> (or omitted): request attributes from terminal
1551 root 1.44 returns: B<< C<ESC [ ? 1 ; 2 c> >> (``I am a VT100 with Advanced Video
1552 root 1.1 Option'')
1553    
1554     =item B<< C<ESC [ Ps d> >>
1555    
1556     Cursor to Line B<< C<Ps> >> (VPA)
1557    
1558     =item B<< C<ESC [ Ps e> >>
1559    
1560 root 1.2 See B<< C<ESC [ Ps A> >>
1561 root 1.1
1562     =item B<< C<ESC [ Ps;Ps f> >>
1563    
1564     Horizontal and Vertical Position [row;column] (HVP) [default: 1;1]
1565    
1566     =item B<< C<ESC [ Ps g> >>
1567    
1568     Tab Clear (TBC)
1569    
1570     =begin table
1571    
1572     B<< C<Ps = 0> >> Clear Current Column (default)
1573     B<< C<Ps = 3> >> Clear All (TBC)
1574    
1575     =end table
1576    
1577 root 1.23 =item B<< C<ESC [ Pm h> >>
1578    
1579     Set Mode (SM). See B<< C<ESC [ Pm l> >> sequence for description of C<Pm>.
1580    
1581 root 1.1 =item B<< C<ESC [ Ps i> >>
1582    
1583 root 1.23 Printing. See also the C<print-pipe> resource.
1584 root 1.1
1585     =begin table
1586    
1587 root 1.23 B<< C<Ps = 0> >> print screen (MC0)
1588 root 1.1 B<< C<Ps = 4> >> disable transparent print mode (MC4)
1589 root 1.23 B<< C<Ps = 5> >> enable transparent print mode (MC5)
1590 root 1.1
1591     =end table
1592    
1593     =item B<< C<ESC [ Pm l> >>
1594    
1595     Reset Mode (RM)
1596    
1597     =over 4
1598    
1599     =item B<< C<Ps = 4> >>
1600    
1601     =begin table
1602    
1603     B<< C<h> >> Insert Mode (SMIR)
1604     B<< C<l> >> Replace Mode (RMIR)
1605    
1606     =end table
1607    
1608 root 1.12 =item B<< C<Ps = 20> >> (partially implemented)
1609 root 1.1
1610     =begin table
1611    
1612     B<< C<h> >> Automatic Newline (LNM)
1613 root 1.12 B<< C<l> >> Normal Linefeed (LNM)
1614 root 1.1
1615     =end table
1616    
1617     =back
1618    
1619     =item B<< C<ESC [ Pm m> >>
1620    
1621     Character Attributes (SGR)
1622    
1623     =begin table
1624    
1625 root 1.227 B<< C<Pm = 0> >> Normal (default)
1626     B<< C<Pm = 1 / 21> >> On / Off Bold (bright fg)
1627     B<< C<Pm = 3 / 23> >> On / Off Italic
1628     B<< C<Pm = 4 / 24> >> On / Off Underline
1629     B<< C<Pm = 5 / 25> >> On / Off Slow Blink (bright bg)
1630     B<< C<Pm = 6 / 26> >> On / Off Rapid Blink (bright bg)
1631     B<< C<Pm = 7 / 27> >> On / Off Inverse
1632     B<< C<Pm = 8 / 27> >> On / Off Invisible (NYI)
1633     B<< C<Pm = 30 / 40> >> fg/bg Black
1634     B<< C<Pm = 31 / 41> >> fg/bg Red
1635     B<< C<Pm = 32 / 42> >> fg/bg Green
1636     B<< C<Pm = 33 / 43> >> fg/bg Yellow
1637     B<< C<Pm = 34 / 44> >> fg/bg Blue
1638     B<< C<Pm = 35 / 45> >> fg/bg Magenta
1639     B<< C<Pm = 36 / 46> >> fg/bg Cyan
1640     B<< C<Pm = 37 / 47> >> fg/bg White
1641     B<< C<Pm = 38;5 / 48;5> >> set fg/bg to colour #m (ISO 8613-6)
1642 sf-exg 1.243 B<< C<Pm = 38;2;R;G;B> >> set fg to 24-bit colour #RGB (ISO 8613-3)
1643     B<< C<Pm = 48;2;R;G;B> >> set bg to 24-bit colour #RGB (ISO 8613-3)
1644 root 1.227 B<< C<Pm = 39 / 49> >> fg/bg Default
1645     B<< C<Pm = 90 / 100> >> fg/bg Bright Black
1646     B<< C<Pm = 91 / 101> >> fg/bg Bright Red
1647     B<< C<Pm = 92 / 102> >> fg/bg Bright Green
1648     B<< C<Pm = 93 / 103> >> fg/bg Bright Yellow
1649     B<< C<Pm = 94 / 104> >> fg/bg Bright Blue
1650     B<< C<Pm = 95 / 105> >> fg/bg Bright Magenta
1651     B<< C<Pm = 96 / 106> >> fg/bg Bright Cyan
1652     B<< C<Pm = 97 / 107> >> fg/bg Bright White
1653     B<< C<Pm = 99 / 109> >> fg/bg Bright Default
1654 root 1.1
1655     =end table
1656    
1657     =item B<< C<ESC [ Ps n> >>
1658    
1659     Device Status Report (DSR)
1660    
1661     =begin table
1662    
1663     B<< C<Ps = 5> >> Status Report B<< C<ESC [ 0 n> >> (``OK'')
1664     B<< C<Ps = 6> >> Report Cursor Position (CPR) [row;column] as B<< C<ESC [ r ; c R> >>
1665 root 1.246 B<< C<Ps = 7> >> Request Display Name (insecure mode)
1666 root 1.1 B<< C<Ps = 8> >> Request Version Number (place in window title)
1667    
1668     =end table
1669    
1670 sf-exg 1.225 =item B<< C<ESC [ Ps SP q> >>
1671    
1672 sf-exg 1.230 Set Cursor Style (DECSCUSR)
1673 sf-exg 1.225
1674     =begin table
1675    
1676     B<< C<Ps = 0> >> Blink Block
1677     B<< C<Ps = 1> >> Blink Block
1678     B<< C<Ps = 2> >> Steady Block
1679     B<< C<Ps = 3> >> Blink Underline
1680     B<< C<Ps = 4> >> Steady Underline
1681 sf-exg 1.233 B<< C<Ps = 5> >> Blink Bar (XTerm)
1682     B<< C<Ps = 6> >> Steady Bar (XTerm)
1683 sf-exg 1.225
1684     =end table
1685    
1686 root 1.1 =item B<< C<ESC [ Ps;Ps r> >>
1687    
1688     Set Scrolling Region [top;bottom]
1689     [default: full size of window] (CSR)
1690    
1691     =item B<< C<ESC [ s> >>
1692    
1693     Save Cursor (SC)
1694    
1695 root 1.34 =item B<< C<ESC [ Ps;Pt t> >>
1696    
1697     Window Operations
1698    
1699     =begin table
1700    
1701     B<< C<Ps = 1> >> Deiconify (map) window
1702     B<< C<Ps = 2> >> Iconify window
1703     B<< C<Ps = 3> >> B<< C<ESC [ 3 ; X ; Y t> >> Move window to (X|Y)
1704     B<< C<Ps = 4> >> B<< C<ESC [ 4 ; H ; W t> >> Resize to WxH pixels
1705     B<< C<Ps = 5> >> Raise window
1706     B<< C<Ps = 6> >> Lower window
1707     B<< C<Ps = 7> >> Refresh screen once
1708     B<< C<Ps = 8> >> B<< C<ESC [ 8 ; R ; C t> >> Resize to R rows and C columns
1709 root 1.44 B<< C<Ps = 11> >> Report window state (responds with C<Ps = 1> or C<Ps = 2>)
1710 root 1.34 B<< C<Ps = 13> >> Report window position (responds with C<Ps = 3>)
1711     B<< C<Ps = 14> >> Report window pixel size (responds with C<Ps = 4>)
1712     B<< C<Ps = 18> >> Report window text size (responds with C<Ps = 7>)
1713     B<< C<Ps = 19> >> Currently the same as C<Ps = 18>, but responds with C<Ps = 9>
1714 root 1.246 B<< C<Ps = 20> >> Reports icon label (B<< C<ESC ] L NAME \234> >>) (insecure mode)
1715     B<< C<Ps = 21> >> Reports window title (B<< C<ESC ] l NAME \234> >>) (insecure mode)
1716 root 1.34 B<< C<Ps = 24..> >> Set window height to C<Ps> rows
1717 root 1.1
1718 root 1.34 =end table
1719 root 1.1
1720     =item B<< C<ESC [ u> >>
1721    
1722     Restore Cursor
1723    
1724 root 1.34 =item B<< C<ESC [ Ps x> >>
1725    
1726     Request Terminal Parameters (DECREQTPARM)
1727    
1728 root 1.1 =back
1729    
1730     X<PrivateModes>
1731    
1732 root 1.110 =head2 DEC Private Modes
1733 root 1.1
1734     =over 4
1735    
1736     =item B<< C<ESC [ ? Pm h> >>
1737    
1738     DEC Private Mode Set (DECSET)
1739    
1740     =item B<< C<ESC [ ? Pm l> >>
1741    
1742     DEC Private Mode Reset (DECRST)
1743    
1744     =item B<< C<ESC [ ? Pm r> >>
1745    
1746     Restore previously saved DEC Private Mode Values.
1747    
1748     =item B<< C<ESC [ ? Pm s> >>
1749    
1750     Save DEC Private Mode Values.
1751    
1752     =item B<< C<ESC [ ? Pm t> >>
1753    
1754     Toggle DEC Private Mode Values (rxvt extension). I<where>
1755    
1756     =over 4
1757    
1758 root 1.117 =item B<< C<Pm = 1> >> (DECCKM)
1759 root 1.1
1760     =begin table
1761    
1762     B<< C<h> >> Application Cursor Keys
1763     B<< C<l> >> Normal Cursor Keys
1764    
1765     =end table
1766    
1767 sf-exg 1.226 =item B<< C<Pm = 2> >> (DECANM)
1768 root 1.1
1769     =begin table
1770    
1771     B<< C<h> >> Enter VT52 mode
1772     B<< C<l> >> Enter VT52 mode
1773    
1774     =end table
1775    
1776 sf-exg 1.226 =item B<< C<Pm = 3> >> (DECCOLM)
1777 root 1.1
1778     =begin table
1779    
1780 sf-exg 1.226 B<< C<h> >> 132 Column Mode
1781     B<< C<l> >> 80 Column Mode
1782 root 1.1
1783     =end table
1784    
1785 sf-exg 1.226 =item B<< C<Pm = 4> >> (DECSCLM)
1786 root 1.1
1787     =begin table
1788    
1789 sf-exg 1.226 B<< C<h> >> Smooth (Slow) Scroll
1790     B<< C<l> >> Jump (Fast) Scroll
1791 root 1.1
1792     =end table
1793    
1794 sf-exg 1.226 =item B<< C<Pm = 5> >> (DECSCNM)
1795 root 1.1
1796     =begin table
1797    
1798 sf-exg 1.226 B<< C<h> >> Reverse Video
1799     B<< C<l> >> Normal Video
1800 root 1.1
1801     =end table
1802    
1803 sf-exg 1.226 =item B<< C<Pm = 6> >> (DECOM)
1804 root 1.1
1805     =begin table
1806    
1807 sf-exg 1.226 B<< C<h> >> Origin Mode
1808     B<< C<l> >> Normal Cursor Mode
1809 root 1.1
1810     =end table
1811    
1812 sf-exg 1.226 =item B<< C<Pm = 7> >> (DECAWM)
1813 root 1.1
1814     =begin table
1815    
1816 sf-exg 1.226 B<< C<h> >> Wraparound Mode
1817     B<< C<l> >> No Wraparound Mode
1818 root 1.1
1819     =end table
1820    
1821 sf-exg 1.226 =item B<< C<Pm = 8> >> (DECARM) I<unimplemented>
1822 root 1.1
1823     =begin table
1824    
1825 sf-exg 1.226 B<< C<h> >> Auto-repeat Keys
1826     B<< C<l> >> No Auto-repeat Keys
1827 root 1.1
1828     =end table
1829    
1830 root 1.235 =item B<< C<Pm = 9> >> (X10 XTerm mouse protocol)
1831 root 1.1
1832     =begin table
1833    
1834     B<< C<h> >> Send Mouse X & Y on button press.
1835     B<< C<l> >> No mouse reporting.
1836    
1837     =end table
1838    
1839 root 1.235 =item B<< C<Pm = 12> >> (AT&T 610, XTerm)
1840 sf-exg 1.234
1841     =begin table
1842    
1843 root 1.235 B<< C<h> >> Blinking cursor (cvvis)
1844     B<< C<l> >> Steady cursor (cnorm)
1845 sf-exg 1.234
1846     =end table
1847    
1848 sf-exg 1.226 =item B<< C<Pm = 25> >> (DECTCEM)
1849 root 1.1
1850     =begin table
1851    
1852     B<< C<h> >> Visible cursor {cnorm/cvvis}
1853     B<< C<l> >> Invisible cursor {civis}
1854    
1855     =end table
1856    
1857 root 1.235 =item B<< C<Pm = 30> >> (B<rxvt>)
1858 root 1.1
1859     =begin table
1860    
1861 ayin 1.160 B<< C<h> >> scrollBar visible
1862     B<< C<l> >> scrollBar invisible
1863 root 1.1
1864     =end table
1865    
1866 root 1.117 =item B<< C<Pm = 35> >> (B<rxvt>)
1867 root 1.1
1868     =begin table
1869    
1870     B<< C<h> >> Allow XTerm Shift+key sequences
1871     B<< C<l> >> Disallow XTerm Shift+key sequences
1872    
1873     =end table
1874    
1875 root 1.117 =item B<< C<Pm = 38> >> I<unimplemented>
1876 root 1.1
1877     Enter Tektronix Mode (DECTEK)
1878    
1879 root 1.117 =item B<< C<Pm = 40> >>
1880 root 1.1
1881     =begin table
1882    
1883     B<< C<h> >> Allow 80/132 Mode
1884     B<< C<l> >> Disallow 80/132 Mode
1885    
1886     =end table
1887    
1888 root 1.117 =item B<< C<Pm = 44> >> I<unimplemented>
1889 root 1.1
1890     =begin table
1891    
1892     B<< C<h> >> Turn On Margin Bell
1893     B<< C<l> >> Turn Off Margin Bell
1894    
1895     =end table
1896    
1897 root 1.117 =item B<< C<Pm = 45> >> I<unimplemented>
1898 root 1.1
1899     =begin table
1900    
1901     B<< C<h> >> Reverse-wraparound Mode
1902     B<< C<l> >> No Reverse-wraparound Mode
1903    
1904     =end table
1905    
1906 root 1.117 =item B<< C<Pm = 46> >> I<unimplemented>
1907 root 1.1
1908 root 1.117 =item B<< C<Pm = 47> >>
1909 root 1.1
1910     =begin table
1911    
1912     B<< C<h> >> Use Alternate Screen Buffer
1913     B<< C<l> >> Use Normal Screen Buffer
1914    
1915     =end table
1916    
1917     X<Priv66>
1918    
1919 sf-exg 1.226 =item B<< C<Pm = 66> >> (DECNKM)
1920 root 1.1
1921     =begin table
1922    
1923 root 1.184 B<< C<h> >> Application Keypad (DECKPAM/DECPAM) == C<ESC =>
1924     B<< C<l> >> Normal Keypad (DECKPNM/DECPNM) == C<< ESC > >>
1925 root 1.1
1926     =end table
1927    
1928 sf-exg 1.226 =item B<< C<Pm = 67> >> (DECBKM)
1929 root 1.1
1930     =begin table
1931    
1932 sf-exg 1.226 B<< C<h> >> Backspace key sends B<< C<BS> >>
1933 root 1.1 B<< C<l> >> Backspace key sends B<< C<DEL> >>
1934    
1935     =end table
1936    
1937 root 1.235 =item B<< C<Pm = 1000> >> (X11 XTerm mouse protocol)
1938 root 1.1
1939     =begin table
1940    
1941     B<< C<h> >> Send Mouse X & Y on button press and release.
1942     B<< C<l> >> No mouse reporting.
1943    
1944     =end table
1945    
1946 root 1.117 =item B<< C<Pm = 1001> >> (X11 XTerm) I<unimplemented>
1947 root 1.1
1948     =begin table
1949    
1950     B<< C<h> >> Use Hilite Mouse Tracking.
1951     B<< C<l> >> No mouse reporting.
1952    
1953     =end table
1954    
1955 root 1.235 =item B<< C<Pm = 1002> >> (X11 XTerm cell motion mouse tracking)
1956 ayin 1.148
1957     =begin table
1958    
1959     B<< C<h> >> Send Mouse X & Y on button press and release, and motion with a button pressed.
1960     B<< C<l> >> No mouse reporting.
1961    
1962     =end table
1963    
1964 root 1.235 =item B<< C<Pm = 1003> >> (X11 XTerm all motion mouse tracking)
1965 ayin 1.148
1966     =begin table
1967    
1968     B<< C<h> >> Send Mouse X & Y on button press and release, and motion.
1969     B<< C<l> >> No mouse reporting.
1970    
1971     =end table
1972    
1973 sf-exg 1.242 =item B<< C<Pm = 1004> >> (X11 XTerm focus in/focus out events)
1974 root 1.235
1975     =begin table
1976    
1977     B<< C<h> >> Send Mouse focus in/focus out events.
1978 sf-exg 1.242 B<< C<l> >> Don't send focus events.
1979 root 1.235
1980     =end table
1981    
1982     =item B<< C<Pm = 1005> >> (X11 XTerm UTF-8 mouse mode) (Compile frills)
1983 root 1.202
1984     Try to avoid this mode, it doesn't work sensibly in non-UTF-8 locales. Use
1985     mode C<1015> instead.
1986    
1987 root 1.244 Unlike XTerm, coordinates larger than 2015 will work fine.
1988 root 1.202
1989     =begin table
1990    
1991     B<< C<h> >> Enable mouse coordinates in locale-specific encoding.
1992 sf-exg 1.248 B<< C<l> >> Disable mouse coordinates in locale-specific encoding.
1993    
1994     =end table
1995    
1996     =item B<< C<Pm = 1006> >> (X11 XTerm SGR mouse mode) (Compile frills)
1997    
1998     =begin table
1999    
2000     B<< C<h> >> Enable xterm SGR mouse coordinate reporting.
2001     B<< C<l> >> Disable xterm SGR mouse coordinate reporting.
2002 root 1.202
2003     =end table
2004    
2005 root 1.117 =item B<< C<Pm = 1010> >> (B<rxvt>)
2006 root 1.1
2007     =begin table
2008    
2009     B<< C<h> >> Don't scroll to bottom on TTY output
2010     B<< C<l> >> Scroll to bottom on TTY output
2011    
2012     =end table
2013    
2014 root 1.117 =item B<< C<Pm = 1011> >> (B<rxvt>)
2015 root 1.1
2016     =begin table
2017    
2018     B<< C<h> >> Scroll to bottom when a key is pressed
2019     B<< C<l> >> Don't scroll to bottom when a key is pressed
2020    
2021     =end table
2022    
2023 root 1.203 =item B<< C<Pm = 1015> >> (B<rxvt-unicode>) (Compile frills)
2024 root 1.202
2025 root 1.235 =begin table
2026    
2027     B<< C<h> >> Enable urxvt mouse coordinate reporting.
2028 sf-exg 1.248 B<< C<l> >> Disable urxvt mouse coordinate reporting.
2029 root 1.235
2030     =end table
2031    
2032 root 1.117 =item B<< C<Pm = 1021> >> (B<rxvt>)
2033 root 1.65
2034     =begin table
2035    
2036     B<< C<h> >> Bold/italic implies high intensity (see option B<-is>)
2037 root 1.66 B<< C<l> >> Font styles have no effect on intensity (Compile styles)
2038 root 1.65
2039     =end table
2040    
2041 root 1.235 =item B<< C<Pm = 1047> >> (X11 XTerm alternate screen buffer)
2042 root 1.1
2043     =begin table
2044    
2045     B<< C<h> >> Use Alternate Screen Buffer
2046     B<< C<l> >> Use Normal Screen Buffer - clear Alternate Screen Buffer if returning from it
2047    
2048     =end table
2049    
2050 root 1.235 =item B<< C<Pm = 1048> >> (X11 XTerm alternate DECSC)
2051 root 1.1
2052     =begin table
2053    
2054     B<< C<h> >> Save cursor position
2055     B<< C<l> >> Restore cursor position
2056    
2057     =end table
2058    
2059 root 1.235 =item B<< C<Pm = 1049> >> (X11 XTerm 1047 + 1048)
2060 root 1.12
2061     =begin table
2062    
2063     B<< C<h> >> Use Alternate Screen Buffer - clear Alternate Screen Buffer if switching to it
2064     B<< C<l> >> Use Normal Screen Buffer
2065    
2066     =end table
2067    
2068 root 1.235 =item B<< C<Pm = 2004> >> (X11 XTerm bracketed paste mode)
2069 ayin 1.164
2070     =begin table
2071    
2072     B<< C<h> >> Enable bracketed paste mode - prepend / append to the pasted text the control sequences C<ESC [ 200 ~> / C<ESC [ 201 ~>
2073     B<< C<l> >> Disable bracketed paste mode
2074    
2075     =end table
2076    
2077 root 1.1 =back
2078    
2079     =back
2080    
2081     X<XTerm>
2082    
2083 root 1.110 =head2 XTerm Operating System Commands
2084 root 1.1
2085     =over 4
2086    
2087     =item B<< C<ESC ] Ps;Pt ST> >>
2088    
2089     Set XTerm Parameters. 8-bit ST: 0x9c, 7-bit ST sequence: ESC \ (0x1b,
2090     0x5c), backwards compatible terminator BEL (0x07) is also accepted. any
2091     B<octet> can be escaped by prefixing it with SYN (0x16, ^V).
2092    
2093 root 1.246 Many of these settings can be queried by specifying C<?> as parameter, but
2094     this requires insecure mode to be enabled for most of these.
2095    
2096 root 1.1 =begin table
2097    
2098     B<< C<Ps = 0> >> Change Icon Name and Window Title to B<< C<Pt> >>
2099     B<< C<Ps = 1> >> Change Icon Name to B<< C<Pt> >>
2100     B<< C<Ps = 2> >> Change Window Title to B<< C<Pt> >>
2101 root 1.246 B<< C<Ps = 3> >> If B<< C<Pt> >> starts with a B<< C<?> >>, query the (STRING) property of the window and return it (insecure mode). If B<< C<Pt> >> contains a B<< C<=> >>, set the named property to the given value, else delete the specified property.
2102 root 1.1 B<< C<Ps = 4> >> B<< C<Pt> >> is a semi-colon separated sequence of one or more semi-colon separated B<number>/B<name> pairs, where B<number> is an index to a colour and B<name> is the name of a colour. Each pair causes the B<number>ed colour to be changed to B<name>. Numbers 0-7 corresponds to low-intensity (normal) colours and 8-15 corresponds to high-intensity colours. 0=black, 1=red, 2=green, 3=yellow, 4=blue, 5=magenta, 6=cyan, 7=white
2103 ayin 1.162 B<< C<Ps = 10> >> Change colour of text foreground to B<< C<Pt> >>
2104     B<< C<Ps = 11> >> Change colour of text background to B<< C<Pt> >>
2105 root 1.1 B<< C<Ps = 12> >> Change colour of text cursor foreground to B<< C<Pt> >>
2106     B<< C<Ps = 13> >> Change colour of mouse foreground to B<< C<Pt> >>
2107 sf-exg 1.186 B<< C<Ps = 17> >> Change background colour of highlight characters to B<< C<Pt> >>
2108     B<< C<Ps = 19> >> Change foreground colour of highlight characters to B<< C<Pt> >>
2109 root 1.246 B<< C<Ps = 20> >> Change background image to B<< C<Pt> >> (see the L<urxvt-background>) extension documentation)
2110 ayin 1.162 B<< C<Ps = 39> >> Change default foreground colour to B<< C<Pt> >>. [deprecated, use 10]
2111 root 1.1 B<< C<Ps = 46> >> Change Log File to B<< C<Pt> >> I<unimplemented>
2112 ayin 1.162 B<< C<Ps = 49> >> Change default background colour to B<< C<Pt> >>. [deprecated, use 11]
2113 root 1.1 B<< C<Ps = 50> >> Set fontset to B<< C<Pt> >>, with the following special values of B<< C<Pt> >> (B<rxvt>) B<< C<#+n> >> change up B<< C<n> >> B<< C<#-n> >> change down B<< C<n> >> if B<< C<n> >> is missing of 0, a value of 1 is used I<empty> change to font0 B<< C<n> >> change to font B<< C<n> >>
2114 ayin 1.163 B<< C<Ps = 55> >> Log all scrollback buffer and all of screen to B<< C<Pt> >> [disabled]
2115 root 1.246 B<< C<Ps = 701> >> Change current locale to B<< C<Pt> >>, or, if B<< C<Pt> >> is B<< C<?> >>, return the current locale (insecure mode, Compile frills).
2116 root 1.92 B<< C<Ps = 702> >> Request version if B<< C<Pt> >> is B<< C<?> >>, returning C<rxvt-unicode>, the resource name, the major and minor version numbers, e.g. C<ESC ] 702 ; rxvt-unicode ; urxvt ; 7 ; 4 ST>.
2117 root 1.23 B<< C<Ps = 704> >> Change colour of italic characters to B<< C<Pt> >>
2118 root 1.246 B<< C<Ps = 705> >> Change background tint color to B<< C<Pt> >> (see the L<urxvt-background>) extension documentation)
2119 root 1.75 B<< C<Ps = 706> >> Change colour of bold characters to B<< C<Pt> >>
2120     B<< C<Ps = 707> >> Change colour of underlined characters to B<< C<Pt> >>
2121 root 1.173 B<< C<Ps = 708> >> Change colour of the border to B<< C<Pt> >>
2122 root 1.23 B<< C<Ps = 710> >> Set normal fontset to B<< C<Pt> >>. Same as C<Ps = 50>.
2123 root 1.51 B<< C<Ps = 711> >> Set bold fontset to B<< C<Pt> >>. Similar to C<Ps = 50> (Compile styles).
2124     B<< C<Ps = 712> >> Set italic fontset to B<< C<Pt> >>. Similar to C<Ps = 50> (Compile styles).
2125     B<< C<Ps = 713> >> Set bold-italic fontset to B<< C<Pt> >>. Similar to C<Ps = 50> (Compile styles).
2126     B<< C<Ps = 720> >> Move viewing window up by B<< C<Pt> >> lines, or clear scrollback buffer if C<Pt = 0> (Compile frills).
2127     B<< C<Ps = 721> >> Move viewing window down by B<< C<Pt> >> lines, or clear scrollback buffer if C<Pt = 0> (Compile frills).
2128 root 1.69 B<< C<Ps = 777> >> Call the perl extension with the given string, which should be of the form C<extension:parameters> (Compile perl).
2129 root 1.1
2130     =end table
2131    
2132     =back
2133    
2134     X<Mouse>
2135    
2136     =head1 Mouse Reporting
2137    
2138 sf-exg 1.248 When mouse reporting is enabled and none of the extended mouse modes
2139     (1005, 1006, 1015) is active, urxvt sends the following sequence on a
2140     mouse event:
2141    
2142 root 1.1 =over 4
2143    
2144     =item B<< C<< ESC [ M <b> <x> <y> >> >>
2145    
2146     =back
2147    
2148     The lower 2 bits of B<< C<< <b> >> >> indicate the button:
2149    
2150     =over 4
2151    
2152     =item Button = B<< C<< (<b> - SPACE) & 3 >> >>
2153    
2154     =begin table
2155    
2156     0 Button1 pressed
2157     1 Button2 pressed
2158     2 Button3 pressed
2159     3 button released (X11 mouse report)
2160    
2161     =end table
2162    
2163     =back
2164    
2165     The upper bits of B<< C<< <b> >> >> indicate the modifiers when the
2166     button was pressed and are added together (X11 mouse report only):
2167    
2168     =over 4
2169    
2170 root 1.211 =item State = B<< C<< (<b> - SPACE) & ~3 >> >>
2171 root 1.1
2172     =begin table
2173    
2174     4 Shift
2175     8 Meta
2176     16 Control
2177 sf-exg 1.212 32 Motion Notify
2178 root 1.211 32 Double Click I<(rxvt extension)>, disabled by default
2179     64 Button1 is actually Button4, Button2 is actually Button5 etc.
2180 root 1.1
2181     =end table
2182    
2183 sf-exg 1.248 =back
2184    
2185     C<x> and C<y> encode the coordinates (1|1 is the upper left corner,
2186     just as with cursor positioning):
2187    
2188     =over 4
2189    
2190     =item Col = B<< C<< <x> - SPACE >> >>
2191    
2192     =item Row = B<< C<< <y> - SPACE >> >>
2193    
2194     =back
2195    
2196     The parameters include an offset of 32 to ensure that they are
2197     printable characters.
2198    
2199     Example: Shift-Button-1 press at top row, column 80.
2200    
2201     ESC [ M $ p !
2202    
2203     The largest coordinate that can be represented in this encoding is
2204     223. The range can be extended by using one of the extended mouse
2205     modes, which should be enabled I<before> enabling mouse reporting, for
2206     semi-obvious reasons.
2207 root 1.1
2208 sf-exg 1.248 =head2 Mode 1005
2209    
2210     If mode 1005 is active, urxvt sends the sequence
2211    
2212     =over 4
2213    
2214     =item B<< C<< ESC [ M <b> <x> <y> >> >>
2215    
2216     =back
2217    
2218     with the coordinates provided as characters in locale-encoding instead
2219     of 1 byte octets. This mode does not work sensibly in non-UTF-8
2220     locales and should therefore be avoided.
2221    
2222     =head2 Mode 1006
2223    
2224     If mode 1006 is active, urxvt sends the following sequences:
2225    
2226     =over 4
2227    
2228     =item B<< C<< ESC [ < <b>;<x>;<y> M >> >>
2229    
2230     button press and motion
2231    
2232     =item B<< C<< ESC [ < <b>;<x>;<y> m >> >>
2233    
2234     button release
2235 root 1.1
2236     =back
2237    
2238 sf-exg 1.248 where the parameters are provided as decimal numbers instead of
2239     octets and do not include an offset of 32.
2240    
2241     The lower 2 bits of C<b> encode the button number also on button
2242     release (instead of the value C<3>). The final character of the
2243     sequence (M or m) specifies the event type (press/motion or release).
2244    
2245     Example: Shift-Button-1 press at top row, column 80.
2246    
2247     ESC [ < 4 ; 80 ; 1 M
2248    
2249     =head2 Mode 1015
2250    
2251     If mode 1015 is active, urxvt sends the sequence
2252    
2253     =over 4
2254    
2255     =item B<< C<< ESC [ <b>;<x>;<y> M >> >>
2256    
2257     =back
2258    
2259     where the parameters are provided as decimal numbers instead of
2260     octets and only C<b> includes an offset of 32.
2261    
2262     Example: Shift-Button-1 press at top row, column 80.
2263    
2264     ESC [ 36 ; 80 ; 1 M
2265    
2266 root 1.1 =head1 Key Codes
2267    
2268 root 1.166 X<KeyCodes>
2269    
2270 root 1.1 Note: B<Shift> + B<F1>-B<F10> generates B<F11>-B<F20>
2271    
2272 sf-exg 1.232 For the keypad, use B<Shift> to temporarily toggle Application Keypad
2273     mode and use B<Num_Lock> to override Application Keypad mode, i.e. if
2274     B<Num_Lock> is on the keypad is in normal mode. Also note that the
2275     values of B<BackSpace>, B<Delete> may have been compiled differently
2276     on your system.
2277 root 1.1
2278     =begin table
2279    
2280     B<Normal> B<Shift> B<Control> B<Ctrl+Shift>
2281     Tab ^I ESC [ Z ^I ESC [ Z
2282 sf-exg 1.231 BackSpace ^? ^? ^H ^H
2283 root 1.1 Find ESC [ 1 ~ ESC [ 1 $ ESC [ 1 ^ ESC [ 1 @
2284     Insert ESC [ 2 ~ I<paste> ESC [ 2 ^ ESC [ 2 @
2285     Execute ESC [ 3 ~ ESC [ 3 $ ESC [ 3 ^ ESC [ 3 @
2286     Select ESC [ 4 ~ ESC [ 4 $ ESC [ 4 ^ ESC [ 4 @
2287     Prior ESC [ 5 ~ I<scroll-up> ESC [ 5 ^ ESC [ 5 @
2288     Next ESC [ 6 ~ I<scroll-down> ESC [ 6 ^ ESC [ 6 @
2289     Home ESC [ 7 ~ ESC [ 7 $ ESC [ 7 ^ ESC [ 7 @
2290     End ESC [ 8 ~ ESC [ 8 $ ESC [ 8 ^ ESC [ 8 @
2291     Delete ESC [ 3 ~ ESC [ 3 $ ESC [ 3 ^ ESC [ 3 @
2292     F1 ESC [ 11 ~ ESC [ 23 ~ ESC [ 11 ^ ESC [ 23 ^
2293     F2 ESC [ 12 ~ ESC [ 24 ~ ESC [ 12 ^ ESC [ 24 ^
2294     F3 ESC [ 13 ~ ESC [ 25 ~ ESC [ 13 ^ ESC [ 25 ^
2295     F4 ESC [ 14 ~ ESC [ 26 ~ ESC [ 14 ^ ESC [ 26 ^
2296     F5 ESC [ 15 ~ ESC [ 28 ~ ESC [ 15 ^ ESC [ 28 ^
2297     F6 ESC [ 17 ~ ESC [ 29 ~ ESC [ 17 ^ ESC [ 29 ^
2298     F7 ESC [ 18 ~ ESC [ 31 ~ ESC [ 18 ^ ESC [ 31 ^
2299     F8 ESC [ 19 ~ ESC [ 32 ~ ESC [ 19 ^ ESC [ 32 ^
2300     F9 ESC [ 20 ~ ESC [ 33 ~ ESC [ 20 ^ ESC [ 33 ^
2301     F10 ESC [ 21 ~ ESC [ 34 ~ ESC [ 21 ^ ESC [ 34 ^
2302     F11 ESC [ 23 ~ ESC [ 23 $ ESC [ 23 ^ ESC [ 23 @
2303     F12 ESC [ 24 ~ ESC [ 24 $ ESC [ 24 ^ ESC [ 24 @
2304     F13 ESC [ 25 ~ ESC [ 25 $ ESC [ 25 ^ ESC [ 25 @
2305     F14 ESC [ 26 ~ ESC [ 26 $ ESC [ 26 ^ ESC [ 26 @
2306     F15 (Help) ESC [ 28 ~ ESC [ 28 $ ESC [ 28 ^ ESC [ 28 @
2307     F16 (Menu) ESC [ 29 ~ ESC [ 29 $ ESC [ 29 ^ ESC [ 29 @
2308     F17 ESC [ 31 ~ ESC [ 31 $ ESC [ 31 ^ ESC [ 31 @
2309     F18 ESC [ 32 ~ ESC [ 32 $ ESC [ 32 ^ ESC [ 32 @
2310     F19 ESC [ 33 ~ ESC [ 33 $ ESC [ 33 ^ ESC [ 33 @
2311     F20 ESC [ 34 ~ ESC [ 34 $ ESC [ 34 ^ ESC [ 34 @
2312     B<Application>
2313     Up ESC [ A ESC [ a ESC O a ESC O A
2314     Down ESC [ B ESC [ b ESC O b ESC O B
2315     Right ESC [ C ESC [ c ESC O c ESC O C
2316     Left ESC [ D ESC [ d ESC O d ESC O D
2317     KP_Enter ^M ESC O M
2318     KP_F1 ESC O P ESC O P
2319     KP_F2 ESC O Q ESC O Q
2320     KP_F3 ESC O R ESC O R
2321     KP_F4 ESC O S ESC O S
2322 sf-exg 1.231 KP_Multiply * ESC O j
2323     KP_Add + ESC O k
2324     KP_Separator , ESC O l
2325     KP_Subtract - ESC O m
2326     KP_Decimal . ESC O n
2327     KP_Divide / ESC O o
2328     KP_0 0 ESC O p
2329     KP_1 1 ESC O q
2330     KP_2 2 ESC O r
2331     KP_3 3 ESC O s
2332     KP_4 4 ESC O t
2333     KP_5 5 ESC O u
2334     KP_6 6 ESC O v
2335     KP_7 7 ESC O w
2336     KP_8 8 ESC O x
2337     KP_9 9 ESC O y
2338 root 1.1
2339     =end table
2340 root 1.2
2341 root 1.6 =head1 CONFIGURE OPTIONS
2342    
2343     General hint: if you get compile errors, then likely your configuration
2344 root 1.61 hasn't been tested well. Either try with C<--enable-everything> or use
2345 root 1.146 the default configuration (i.e. no C<--enable-xxx> or C<--disable-xxx>
2346     switches). Of course, you should always report when a combination doesn't
2347     work, so it can be fixed. Marc Lehmann <rxvt@schmorp.de>.
2348 root 1.61
2349     All
2350 root 1.6
2351     =over 4
2352    
2353     =item --enable-everything
2354    
2355 root 1.189 Add (or remove) support for all non-multichoice options listed
2356     in C<./configure --help>, except for C<--enable-assert> and
2357     C<--enable-256-color>.
2358 root 1.61
2359     You can specify this and then disable options you do not like by
2360     I<following> this with the appropriate C<--disable-...> arguments,
2361     or you can start with a minimal configuration by specifying
2362     C<--disable-everything> and than adding just the C<--enable-...> arguments
2363     you want.
2364 root 1.6
2365 sf-exg 1.210 =item --enable-xft (default: on)
2366 root 1.6
2367 sf-exg 1.206 Add support for Xft (anti-aliased, among others) fonts. Xft fonts are
2368 root 1.6 slower and require lots of memory, but as long as you don't use them, you
2369     don't pay for them.
2370    
2371 root 1.61 =item --enable-font-styles (default: on)
2372 root 1.23
2373     Add support for B<bold>, I<italic> and B<< I<bold italic> >> font
2374     styles. The fonts can be set manually or automatically.
2375    
2376 sf-exg 1.210 =item --with-codesets=CS,... (default: all)
2377 root 1.6
2378 root 1.53 Compile in support for additional codeset (encoding) groups (C<eu>, C<vn>
2379     are always compiled in, which includes most 8-bit character sets). These
2380     codeset tables are used for driving X11 core fonts, they are not required
2381     for Xft fonts, although having them compiled in lets rxvt-unicode choose
2382     replacement fonts more intelligently. Compiling them in will make your
2383     binary bigger (all of together cost about 700kB), but it doesn't increase
2384     memory usage unless you use a font requiring one of these encodings.
2385 root 1.6
2386     =begin table
2387    
2388 root 1.12 all all available codeset groups
2389 root 1.27 zh common chinese encodings
2390 ayin 1.125 zh_ext rarely used but very big chinese encodings
2391 root 1.6 jp common japanese encodings
2392     jp_ext rarely used but big japanese encodings
2393     kr korean encodings
2394    
2395     =end table
2396    
2397 root 1.61 =item --enable-xim (default: on)
2398 root 1.6
2399     Add support for XIM (X Input Method) protocol. This allows using
2400     alternative input methods (e.g. kinput2) and will also correctly
2401     set up the input for people using dead keys or compose keys.
2402    
2403 root 1.61 =item --enable-unicode3 (default: off)
2404 root 1.6
2405 root 1.90 Recommended to stay off unless you really need non-BMP characters.
2406    
2407 root 1.6 Enable direct support for displaying unicode codepoints above
2408     65535 (the basic multilingual page). This increases storage
2409     requirements per character from 2 to 4 bytes. X11 fonts do not yet
2410     support these extra characters, but Xft does.
2411    
2412     Please note that rxvt-unicode can store unicode code points >65535
2413     even without this flag, but the number of such characters is
2414 root 1.131 limited to a few thousand (shared with combining characters,
2415 root 1.6 see next switch), and right now rxvt-unicode cannot display them
2416     (input/output and cut&paste still work, though).
2417    
2418 root 1.61 =item --enable-combining (default: on)
2419 root 1.6
2420     Enable automatic composition of combining characters into
2421     composite characters. This is required for proper viewing of text
2422 sf-exg 1.180 where accents are encoded as separate unicode characters. This is
2423 sf-exg 1.212 done by using precomposed characters when available or creating
2424 root 1.6 new pseudo-characters when no precomposed form exists.
2425    
2426 root 1.90 Without --enable-unicode3, the number of additional precomposed
2427     characters is somewhat limited (the 6400 private use characters will be
2428     (ab-)used). With --enable-unicode3, no practical limit exists.
2429 root 1.46
2430     This option will also enable storage (but not display) of characters
2431     beyond plane 0 (>65535) when --enable-unicode3 was not specified.
2432 root 1.6
2433     The combining table also contains entries for arabic presentation forms,
2434 root 1.46 but these are not currently used. Bug me if you want these to be used (and
2435     tell me how these are to be used...).
2436 root 1.6
2437 sf-exg 1.210 =item --enable-fallback[=CLASS] (default: Rxvt)
2438 root 1.6
2439 root 1.90 When reading resource settings, also read settings for class CLASS. To
2440     disable resource fallback use --disable-fallback.
2441 root 1.6
2442 root 1.61 =item --with-res-name=NAME (default: urxvt)
2443 root 1.6
2444 root 1.61 Use the given name as default application name when
2445 root 1.6 reading resources. Specify --with-res-name=rxvt to replace rxvt.
2446    
2447 ayin 1.155 =item --with-res-class=CLASS (default: URxvt)
2448 root 1.6
2449 root 1.61 Use the given class as default application class
2450     when reading resources. Specify --with-res-class=Rxvt to replace
2451 root 1.6 rxvt.
2452    
2453 root 1.61 =item --enable-utmp (default: on)
2454 root 1.6
2455     Write user and tty to utmp file (used by programs like F<w>) at
2456     start of rxvt execution and delete information when rxvt exits.
2457    
2458 root 1.61 =item --enable-wtmp (default: on)
2459 root 1.6
2460     Write user and tty to wtmp file (used by programs like F<last>) at
2461     start of rxvt execution and write logout when rxvt exits. This
2462     option requires --enable-utmp to also be specified.
2463    
2464 root 1.61 =item --enable-lastlog (default: on)
2465 root 1.6
2466     Write user and tty to lastlog file (used by programs like
2467     F<lastlogin>) at start of rxvt execution. This option requires
2468     --enable-utmp to also be specified.
2469    
2470 sf-exg 1.209 =item --enable-pixbuf (default: on)
2471 sf-exg 1.196
2472     Add support for GDK-PixBuf to be used for background images.
2473     It adds support for many file formats including JPG, PNG,
2474     TIFF, GIF, XPM, BMP, ICO and TGA.
2475    
2476 mikachu 1.216 =item --enable-startup-notification (default: on)
2477    
2478     Add support for freedesktop startup notifications. This allows window managers
2479     to display some kind of progress indicator during startup.
2480    
2481 root 1.72 =item --enable-transparency (default: on)
2482 root 1.6
2483 sf-exg 1.199 Add support for using the root pixmap as background to simulate transparency.
2484 sf-exg 1.224 Note that this feature depends on libXrender and on the availability
2485     of the RENDER extension in the X server.
2486 root 1.6
2487 root 1.61 =item --enable-fading (default: on)
2488 root 1.6
2489 ayin 1.138 Add support for fading the text when focus is lost.
2490 root 1.6
2491 root 1.61 =item --enable-rxvt-scroll (default: on)
2492 root 1.6
2493     Add support for the original rxvt scrollbar.
2494    
2495 root 1.61 =item --enable-next-scroll (default: on)
2496 root 1.6
2497     Add support for a NeXT-like scrollbar.
2498    
2499 root 1.61 =item --enable-xterm-scroll (default: on)
2500 root 1.6
2501     Add support for an Xterm-like scrollbar.
2502    
2503     =item --disable-backspace-key
2504    
2505 root 1.61 Removes any handling of the backspace key by us - let the X server do it.
2506 root 1.6
2507     =item --disable-delete-key
2508    
2509 root 1.61 Removes any handling of the delete key by us - let the X server
2510 root 1.6 do it.
2511    
2512     =item --disable-resources
2513    
2514 root 1.61 Removes any support for resource checking.
2515 root 1.6
2516     =item --disable-swapscreen
2517    
2518 root 1.61 Remove support for secondary/swap screen.
2519 root 1.6
2520 root 1.61 =item --enable-frills (default: on)
2521 root 1.6
2522     Add support for many small features that are not essential but nice to
2523     have. Normally you want this, but for very small binaries you may want to
2524     disable this.
2525    
2526 root 1.33 A non-exhaustive list of features enabled by C<--enable-frills> (possibly
2527     in combination with other switches) is:
2528    
2529     MWM-hints
2530 root 1.50 EWMH-hints (pid, utf8 names) and protocols (ping)
2531 ayin 1.128 urgency hint
2532 sf-exg 1.180 separate underline colour (-underlineColor)
2533 root 1.70 settable border widths and borderless switch (-w, -b, -bl)
2534 root 1.94 visual depth selection (-depth)
2535 sf-exg 1.188 settable extra linespacing (-lsp)
2536 root 1.129 iso-14755 5.1 (basic) support
2537 root 1.70 tripleclickwords (-tcw)
2538     settable insecure mode (-insecure)
2539 root 1.44 keysym remapping support
2540 root 1.177 cursor blinking and underline cursor (-bc, -uc)
2541 root 1.70 XEmbed support (-embed)
2542     user-pty (-pty-fd)
2543     hold on exit (-hold)
2544 root 1.154 compile in built-in block graphics
2545 root 1.70 skip builtin block graphics (-sbg)
2546 sf-exg 1.187 separate highlight colour (-highlightColor, -highlightTextColor)
2547 sf-exg 1.242 focus reporting mode (1004).
2548 sf-exg 1.248 extended mouse reporting modes (1005, 1006 and 1015).
2549 root 1.220 visual selection via -visual and -depth.
2550 sf-exg 1.249 systemd socket activation
2551 root 1.33
2552 root 1.118 It also enables some non-essential features otherwise disabled, such as:
2553 root 1.93
2554     some round-trip time optimisations
2555 root 1.189 nearest colour allocation on pseudocolor screens
2556 ayin 1.125 UTF8_STRING support for selection
2557 root 1.94 sgr modes 90..97 and 100..107
2558     backindex and forwardindex escape sequences
2559 ayin 1.125 view change/zero scrollback escape sequences
2560 root 1.94 locale switching escape sequence
2561     window op and some xterm/OSC escape sequences
2562     rectangular selections
2563     trailing space removal for selections
2564     verbose X error handling
2565 root 1.93
2566 root 1.61 =item --enable-iso14755 (default: on)
2567 root 1.12
2568 ayin 1.168 Enable extended ISO 14755 support (see @@RXVT_NAME@@(1)).
2569     Basic support (section 5.1) is enabled by C<--enable-frills>, while
2570     support for 5.2, 5.3 and 5.4 is enabled with this switch.
2571 root 1.12
2572 root 1.61 =item --enable-keepscrolling (default: on)
2573 root 1.6
2574     Add support for continual scrolling of the display when you hold
2575     the mouse button down on a scrollbar arrow.
2576    
2577 ayin 1.136 =item --enable-selectionscrolling (default: on)
2578    
2579     Add support for scrolling when the selection moves to the top or
2580     bottom of the screen.
2581    
2582 root 1.61 =item --enable-mousewheel (default: on)
2583 root 1.6
2584     Add support for scrolling via mouse wheel or buttons 4 & 5.
2585    
2586 root 1.61 =item --enable-slipwheeling (default: on)
2587 root 1.6
2588     Add support for continual scrolling (using the mouse wheel as an
2589     accelerator) while the control key is held down. This option
2590     requires --enable-mousewheel to also be specified.
2591    
2592 ayin 1.137 =item --enable-smart-resize (default: off)
2593 root 1.6
2594 ayin 1.137 Add smart growth/shrink behaviour when resizing.
2595     This should keep the window corner which is closest to a corner of
2596 root 1.62 the screen in a fixed position.
2597 root 1.6
2598 ayin 1.156 =item --enable-text-blink (default: on)
2599    
2600     Add support for blinking text.
2601    
2602 root 1.61 =item --enable-pointer-blank (default: on)
2603 root 1.6
2604     Add support to have the pointer disappear when typing or inactive.
2605    
2606 root 1.90 =item --enable-perl (default: on)
2607 root 1.67
2608 root 1.68 Enable an embedded perl interpreter. See the B<@@RXVT_NAME@@perl(3)>
2609 ayin 1.168 manpage for more info on this feature, or the files in F<src/perl/>
2610     for the extensions that are installed by default.
2611     The perl interpreter that is used can be specified via the C<PERL>
2612     environment variable when running configure. Even when compiled in,
2613     perl will I<not> be initialised when all extensions have been disabled
2614 root 1.130 C<-pe "" --perl-ext-common "">, so it should be safe to enable from a
2615     resource standpoint.
2616 root 1.67
2617 root 1.179 =item --enable-assert (default: off)
2618    
2619     Enables the assertions in the code, normally disabled. This switch is only
2620     useful when developing rxvt-unicode.
2621    
2622 root 1.189 =item --enable-256-color (default: off)
2623    
2624     Force use of so-called 256 colour mode, to work around buggy applications
2625     that do not support termcap/terminfo, or simply improve support for
2626     applications hardcoding the xterm 256 colour table.
2627    
2628     This switch breaks termcap/terminfo compatibility to C<TERM=rxvt-unicode>,
2629     and consequently sets C<TERM> to C<rxvt-unicode-256color> by default
2630 sf-exg 1.190 (F<doc/etc/> contains termcap/terminfo definitions for both).
2631 root 1.189
2632     It also results in higher memory usage and can slow down @@RXVT_NAME@@
2633     dramatically when more than six fonts are in use by a terminal instance.
2634    
2635 root 1.61 =item --with-name=NAME (default: urxvt)
2636 root 1.6
2637 root 1.61 Set the basename for the installed binaries, resulting
2638 root 1.33 in C<urxvt>, C<urxvtd> etc.). Specify C<--with-name=rxvt> to replace with
2639     C<rxvt>.
2640 root 1.6
2641 root 1.61 =item --with-term=NAME (default: rxvt-unicode)
2642 root 1.6
2643 root 1.61 Change the environmental variable for the terminal to NAME.
2644 root 1.6
2645     =item --with-terminfo=PATH
2646    
2647     Change the environmental variable for the path to the terminfo tree to
2648     PATH.
2649    
2650     =item --with-x
2651    
2652     Use the X Window System (pretty much default, eh?).
2653    
2654     =back
2655    
2656 root 1.2 =head1 AUTHORS
2657    
2658 root 1.5 Marc Lehmann <rxvt@schmorp.de> converted this document to pod and
2659 root 1.2 reworked it from the original Rxvt documentation, which was done by Geoff
2660     Wing <gcw@pobox.com>, who in turn used the XTerm documentation and other
2661     sources.
2662 root 1.1