--- rxvt-unicode/doc/rxvt.7.pod 2004/08/12 20:42:12 1.1 +++ rxvt-unicode/doc/rxvt.7.pod 2010/12/09 10:03:56 1.205 @@ -1,16 +1,1228 @@ -=head1 Rxvt Technical Reference +=head1 NAME -Marc Lehmann , converted to pod and reworked from the -original Rxvt documentation by Geoff Wing , who in turn used -the XTerm documentation and other sources. +RXVT REFERENCE - FAQ, command sequences and other background information -=head1 Definitions +=head1 SYNOPSIS + + # set a new font set + printf '\33]50;%s\007' 9x15,xft:Kochi" Mincho" + + # change the locale and tell rxvt-unicode about it + export LC_CTYPE=ja_JP.EUC-JP; printf "\33]701;$LC_CTYPE\007" + + # set window title + printf '\33]2;%s\007' "new window title" + +=head1 DESCRIPTION + +This document contains the FAQ, the RXVT TECHNICAL REFERENCE documenting +all escape sequences, and other background information. + +The newest version of this document is also available on the World Wide Web at +L. + +The main manual page for @@RXVT_NAME@@ itself is available at +L. + +=head1 RXVT-UNICODE/URXVT FREQUENTLY ASKED QUESTIONS + + +=head2 Meta, Features & Commandline Issues + +=head3 My question isn't answered here, can I ask a human? + +Before sending me mail, you could go to IRC: C, +channel C<#rxvt-unicode> has some rxvt-unicode enthusiasts that might be +interested in learning about new and exciting problems (but not FAQs :). + +=head3 I use Gentoo, and I have a problem... + +There are three big problems with Gentoo Linux: first of all, most if not +all Gentoo systems are completely broken (missing or mismatched header +files, broken compiler etc. are just the tip of the iceberg); secondly, +the Gentoo maintainer thinks it is a good idea to add broken patches to +the code; and lastly, it should be called Gentoo GNU/Linux. + +For these reasons, it is impossible to support rxvt-unicode on +Gentoo. Problems appearing on Gentoo systems will usually simply be +ignored unless they can be reproduced on non-Gentoo systems. + +=head3 Does it support tabs, can I have a tabbed rxvt-unicode? + +Beginning with version 7.3, there is a perl extension that implements a +simple tabbed terminal. It is installed by default, so any of these should +give you tabs: + + @@URXVT_NAME@@ -pe tabbed + + URxvt.perl-ext-common: default,tabbed + +It will also work fine with tabbing functionality of many window managers +or similar tabbing programs, and its embedding-features allow it to be +embedded into other programs, as witnessed by F or +the upcoming C perl module, which features a tabbed urxvt +(murxvt) terminal as an example embedding application. + +=head3 How do I know which rxvt-unicode version I'm using? + +The version number is displayed with the usage (-h). Also the escape +sequence C sets the window title to the version number. When +using the @@URXVT_NAME@@c client, the version displayed is that of the +daemon. + +=head3 Rxvt-unicode uses gobs of memory, how can I reduce that? + +Rxvt-unicode tries to obey the rule of not charging you for something you +don't use. One thing you should try is to configure out all settings that +you don't need, for example, Xft support is a resource hog by design, +when used. Compiling it out ensures that no Xft font will be loaded +accidentally when rxvt-unicode tries to find a font for your characters. + +Also, many people (me included) like large windows and even larger +scrollback buffers: Without C<--enable-unicode3>, rxvt-unicode will use +6 bytes per screen cell. For a 160x?? window this amounts to almost a +kilobyte per line. A scrollback buffer of 10000 lines will then (if full) +use 10 Megabytes of memory. With C<--enable-unicode3> it gets worse, as +rxvt-unicode then uses 8 bytes per screen cell. + +=head3 How can I start @@URXVT_NAME@@d in a race-free way? + +Try C<@@URXVT_NAME@@d -f -o>, which tells @@URXVT_NAME@@d to open the +display, create the listening socket and then fork. + +=head3 How can I start @@URXVT_NAME@@d automatically when I run @@URXVT_NAME@@c? + +If you want to start @@URXVT_NAME@@d automatically whenever you run +@@URXVT_NAME@@c and the daemon isn't running yet, use this script: + + #!/bin/sh + @@URXVT_NAME@@c "$@" + if [ $? -eq 2 ]; then + @@URXVT_NAME@@d -q -o -f + @@URXVT_NAME@@c "$@" + fi + +This tries to create a new terminal, and if fails with exit status 2, +meaning it couldn't connect to the daemon, it will start the daemon and +re-run the command. Subsequent invocations of the script will re-use the +existing daemon. + +=head3 How do I distinguish whether I'm running rxvt-unicode or a regular +xterm? I need this to decide about setting colours etc. + +The original rxvt and rxvt-unicode always export the variable "COLORTERM", +so you can check and see if that is set. Note that several programs, JED, +slrn, Midnight Commander automatically check this variable to decide +whether or not to use colour. + +=head3 How do I set the correct, full IP address for the DISPLAY variable? + +If you've compiled rxvt-unicode with DISPLAY_IS_IP and have enabled +insecure mode then it is possible to use the following shell script +snippets to correctly set the display. If your version of rxvt-unicode +wasn't also compiled with ESCZ_ANSWER (as assumed in these snippets) then +the COLORTERM variable can be used to distinguish rxvt-unicode from a +regular xterm. + +Courtesy of Chuck Blake with the following shell script +snippets: + + # Bourne/Korn/POSIX family of shells: + [ ${TERM:-foo} = foo ] && TERM=xterm # assume an xterm if we don't know + if [ ${TERM:-foo} = xterm ]; then + stty -icanon -echo min 0 time 15 # see if enhanced rxvt or not + echo -n '^[Z' + read term_id + stty icanon echo + if [ ""${term_id} = '^[[?1;2C' -a ${DISPLAY:-foo} = foo ]; then + echo -n '^[[7n' # query the rxvt we are in for the DISPLAY string + read DISPLAY # set it in our local shell + fi + fi + +=head3 How do I compile the manual pages on my own? + +You need to have a recent version of perl installed as F, +one that comes with F, F and F (from +F). Then go to the doc subdirectory and enter C. + +=head3 Isn't rxvt-unicode supposed to be small? Don't all those features bloat? + +I often get asked about this, and I think, no, they didn't cause extra +bloat. If you compare a minimal rxvt and a minimal urxvt, you can see +that the urxvt binary is larger (due to some encoding tables always being +compiled in), but it actually uses less memory (RSS) after startup. Even +with C<--disable-everything>, this comparison is a bit unfair, as many +features unique to urxvt (locale, encoding conversion, iso14755 etc.) are +already in use in this mode. + + text data bss drs rss filename + 98398 1664 24 15695 1824 rxvt --disable-everything + 188985 9048 66616 18222 1788 urxvt --disable-everything + +When you C<--enable-everything> (which I unfair, as this involves xft +and full locale/XIM support which are quite bloaty inside libX11 and my +libc), the two diverge, but not unreasonably so. + + text data bss drs rss filename + 163431 2152 24 20123 2060 rxvt --enable-everything + 1035683 49680 66648 29096 3680 urxvt --enable-everything + +The very large size of the text section is explained by the east-asian +encoding tables, which, if unused, take up disk space but nothing else +and can be compiled out unless you rely on X11 core fonts that use those +encodings. The BSS size comes from the 64k emergency buffer that my c++ +compiler allocates (but of course doesn't use unless you are out of +memory). Also, using an xft font instead of a core font immediately adds a +few megabytes of RSS. Xft indeed is responsible for a lot of RSS even when +not used. + +Of course, due to every character using two or four bytes instead of one, +a large scrollback buffer will ultimately make rxvt-unicode use more +memory. + +Compared to e.g. Eterm (5112k), aterm (3132k) and xterm (4680k), this +still fares rather well. And compared to some monsters like gnome-terminal +(21152k + extra 4204k in separate processes) or konsole (22200k + extra +43180k in daemons that stay around after exit, plus half a minute of +startup time, including the hundreds of warnings it spits out), it fares +extremely well *g*. + +=head3 Why C++, isn't that unportable/bloated/uncool? + +Is this a question? :) It comes up very often. The simple answer is: I had +to write it, and C++ allowed me to write and maintain it in a fraction +of the time and effort (which is a scarce resource for me). Put even +shorter: It simply wouldn't exist without C++. + +My personal stance on this is that C++ is less portable than C, but in +the case of rxvt-unicode this hardly matters, as its portability limits +are defined by things like X11, pseudo terminals, locale support and unix +domain sockets, which are all less portable than C++ itself. + +Regarding the bloat, see the above question: It's easy to write programs +in C that use gobs of memory, and certainly possible to write programs in +C++ that don't. C++ also often comes with large libraries, but this is +not necessarily the case with GCC. Here is what rxvt links against on my +system with a minimal config: + + libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0x00002aaaaabc3000) + libc.so.6 => /lib/libc.so.6 (0x00002aaaaadde000) + libdl.so.2 => /lib/libdl.so.2 (0x00002aaaab01d000) + /lib64/ld-linux-x86-64.so.2 (0x00002aaaaaaab000) + +And here is rxvt-unicode: + + libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0x00002aaaaabc3000) + libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00002aaaaada2000) + libc.so.6 => /lib/libc.so.6 (0x00002aaaaaeb0000) + libdl.so.2 => /lib/libdl.so.2 (0x00002aaaab0ee000) + /lib64/ld-linux-x86-64.so.2 (0x00002aaaaaaab000) + +No large bloated libraries (of course, none were linked in statically), +except maybe libX11 :) + + +=head2 Rendering, Font & Look and Feel Issues + +=head3 I can't get transparency working, what am I doing wrong? + +First of all, transparency isn't officially supported in rxvt-unicode, so +you are mostly on your own. Do not bug the author about it (but you may +bug everybody else). Also, if you can't get it working consider it a rite +of passage: ... and you failed. + +Here are four ways to get transparency. B read the manpage and option +descriptions for the programs mentioned and rxvt-unicode. Really, do it! + +1. Use transparent mode: + + Esetroot wallpaper.jpg + @@URXVT_NAME@@ -tr -tint red -sh 40 + +That works. If you think it doesn't, you lack transparency and tinting +support, or you are unable to read. +This method requires that the background-setting program sets the +_XROOTPMAP_ID or ESETROOT_PMAP_ID property. Compatible programs +are Esetroot, hsetroot and feh. + +2. Use a simple pixmap and emulate pseudo-transparency. This enables you +to use effects other than tinting and shading: Just shade/tint/whatever +your picture with gimp or any other tool: + + convert wallpaper.jpg -blur 20x20 -modulate 30 background.jpg + @@URXVT_NAME@@ -pixmap "background.jpg;:root" + +That works. If you think it doesn't, you lack libAfterImage or GDK-PixBuf support, or you +are unable to read. + +3. Use an ARGB visual: + + @@URXVT_NAME@@ -depth 32 -fg grey90 -bg rgba:0000/0000/4444/cccc + +This requires XFT support, and the support of your X-server. If that +doesn't work for you, blame Xorg and Keith Packard. ARGB visuals aren't +there yet, no matter what they claim. Rxvt-Unicode contains the necessary +bugfixes and workarounds for Xft and Xlib to make it work, but that +doesn't mean that your WM has the required kludges in place. + +4. Use xcompmgr and let it do the job: + + xprop -frame -f _NET_WM_WINDOW_OPACITY 32c \ + -set _NET_WM_WINDOW_OPACITY 0xc0000000 + +Then click on a window you want to make transparent. Replace C<0xc0000000> +by other values to change the degree of opacity. If it doesn't work and +your server crashes, you got to keep the pieces. + +=head3 Why does rxvt-unicode sometimes leave pixel droppings? + +Most fonts were not designed for terminal use, which means that character +size varies a lot. A font that is otherwise fine for terminal use might +contain some characters that are simply too wide. Rxvt-unicode will avoid +these characters. For characters that are just "a bit" too wide a special +"careful" rendering mode is used that redraws adjacent characters. + +All of this requires that fonts do not lie about character sizes, +however: Xft fonts often draw glyphs larger than their acclaimed bounding +box, and rxvt-unicode has no way of detecting this (the correct way is to +ask for the character bounding box, which unfortunately is wrong in these +cases). + +It's not clear (to me at least), whether this is a bug in Xft, freetype, +or the respective font. If you encounter this problem you might try using +the C<-lsp> option to give the font more height. If that doesn't work, you +might be forced to use a different font. + +All of this is not a problem when using X11 core fonts, as their bounding +box data is correct. + +=head3 How can I keep rxvt-unicode from using reverse video so much? + +First of all, make sure you are running with the right terminal settings +(C), which will get rid of most of these effects. Then +make sure you have specified colours for italic and bold, as otherwise +rxvt-unicode might use reverse video to simulate the effect: + + URxvt.colorBD: white + URxvt.colorIT: green + +=head3 Some programs assume totally weird colours (red instead of blue), how can I fix that? + +For some unexplainable reason, some rare programs assume a very weird +colour palette when confronted with a terminal with more than the standard +8 colours (rxvt-unicode supports 88). The right fix is, of course, to fix +these programs not to assume non-ISO colours without very good reasons. + +In the meantime, you can either edit your C terminfo +definition to only claim 8 colour support or use C, which will +fix colours but keep you from using other rxvt-unicode features. + +=head3 Can I switch the fonts at runtime? + +Yes, using an escape sequence. Try something like this, which has the same +effect as using the C<-fn> switch, and takes effect immediately: + + printf '\33]50;%s\007' "9x15bold,xft:Kochi Gothic" + +This is useful if you e.g. work primarily with japanese (and prefer a +japanese font), but you have to switch to chinese temporarily, where +japanese fonts would only be in your way. + +You can think of this as a kind of manual ISO-2022 switching. + +=head3 Why do italic characters look as if clipped? + +Many fonts have difficulties with italic characters and hinting. For +example, the otherwise very nicely hinted font C completely fails in its italic face. A workaround might be to +enable freetype autohinting, i.e. like this: + + URxvt.italicFont: xft:Bitstream Vera Sans Mono:italic:autohint=true + URxvt.boldItalicFont: xft:Bitstream Vera Sans Mono:bold:italic:autohint=true + +=head3 Can I speed up Xft rendering somehow? + +Yes, the most obvious way to speed it up is to avoid Xft entirely, as +it is simply slow. If you still want Xft fonts you might try to disable +antialiasing (by appending C<:antialias=false>), which saves lots of +memory and also speeds up rendering considerably. + +=head3 Rxvt-unicode doesn't seem to anti-alias its fonts, what is wrong? + +Rxvt-unicode will use whatever you specify as a font. If it needs to +fall back to its default font search list it will prefer X11 core +fonts, because they are small and fast, and then use Xft fonts. It has +antialiasing disabled for most of them, because the author thinks they +look best that way. + +If you want antialiasing, you have to specify the fonts manually. + +=head3 What's with this bold/blink stuff? + +If no bold colour is set via C, bold will invert text using the +standard foreground colour. + +For the standard background colour, blinking will actually make +the text blink when compiled with C<--enable-text-blink>. Without +C<--enable-text-blink>, the blink attribute will be ignored. + +On ANSI colours, bold/blink attributes are used to set high-intensity +foreground/background colours. + +color0-7 are the low-intensity colours. + +color8-15 are the corresponding high-intensity colours. + +=head3 I don't like the screen colours. How do I change them? + +You can change the screen colours at run-time using F<~/.Xdefaults> +resources (or as long-options). + +Here are values that are supposed to resemble a VGA screen, +including the murky brown that passes for low-intensity yellow: + + URxvt.color0: #000000 + URxvt.color1: #A80000 + URxvt.color2: #00A800 + URxvt.color3: #A8A800 + URxvt.color4: #0000A8 + URxvt.color5: #A800A8 + URxvt.color6: #00A8A8 + URxvt.color7: #A8A8A8 + + URxvt.color8: #000054 + URxvt.color9: #FF0054 + URxvt.color10: #00FF54 + URxvt.color11: #FFFF54 + URxvt.color12: #0000FF + URxvt.color13: #FF00FF + URxvt.color14: #00FFFF + URxvt.color15: #FFFFFF + +And here is a more complete set of non-standard colours. + + URxvt.cursorColor: #dc74d1 + URxvt.pointerColor: #dc74d1 + URxvt.background: #0e0e0e + URxvt.foreground: #4ad5e1 + URxvt.color0: #000000 + URxvt.color8: #8b8f93 + URxvt.color1: #dc74d1 + URxvt.color9: #dc74d1 + URxvt.color2: #0eb8c7 + URxvt.color10: #0eb8c7 + URxvt.color3: #dfe37e + URxvt.color11: #dfe37e + URxvt.color5: #9e88f0 + URxvt.color13: #9e88f0 + URxvt.color6: #73f7ff + URxvt.color14: #73f7ff + URxvt.color7: #e1dddd + URxvt.color15: #e1dddd + +They have been described (not by me) as "pretty girly". + +=head3 Why do some characters look so much different than others? + +See next entry. + +=head3 How does rxvt-unicode choose fonts? + +Most fonts do not contain the full range of Unicode, which is +fine. Chances are that the font you (or the admin/package maintainer of +your system/os) have specified does not cover all the characters you want +to display. + +B makes a best-effort try at finding a replacement +font. Often the result is fine, but sometimes the chosen font looks +bad/ugly/wrong. Some fonts have totally strange characters that don't +resemble the correct glyph at all, and rxvt-unicode lacks the artificial +intelligence to detect that a specific glyph is wrong: it has to believe +the font that the characters it claims to contain indeed look correct. + +In that case, select a font of your taste and add it to the font list, +e.g.: + + @@URXVT_NAME@@ -fn basefont,font2,font3... + +When rxvt-unicode sees a character, it will first look at the base +font. If the base font does not contain the character, it will go to the +next font, and so on. Specifying your own fonts will also speed up this +search and use less resources within rxvt-unicode and the X-server. + +The only limitation is that none of the fonts may be larger than the base +font, as the base font defines the terminal character cell size, which +must be the same due to the way terminals work. + +=head3 Why do some chinese characters look so different than others? + +This is because there is a difference between script and language -- +rxvt-unicode does not know which language the text that is output is, +as it only knows the unicode character codes. If rxvt-unicode first +sees a japanese/chinese character, it might choose a japanese font for +display. Subsequent japanese characters will use that font. Now, many +chinese characters aren't represented in japanese fonts, so when the first +non-japanese character comes up, rxvt-unicode will look for a chinese font +-- unfortunately at this point, it will still use the japanese font for +chinese characters that are also in the japanese font. + +The workaround is easy: just tag a chinese font at the end of your font +list (see the previous question). The key is to view the font list as +a preference list: If you expect more japanese, list a japanese font +first. If you expect more chinese, put a chinese font first. + +In the future it might be possible to switch language preferences at +runtime (the internal data structure has no problem with using different +fonts for the same character at the same time, but no interface for this +has been designed yet). + +Until then, you might get away with switching fonts at runtime (see L later in this document). + +=head3 How can I make mplayer display video correctly? + +We are working on it, in the meantime, as a workaround, use something like: + + @@URXVT_NAME@@ -b 600 -geometry 20x1 -e sh -c 'mplayer -wid $WINDOWID file...' + + +=head2 Keyboard, Mouse & User Interaction + +=head3 The new selection selects pieces that are too big, how can I select single words? + +If you want to select e.g. alphanumeric words, you can use the following +setting: + + URxvt.selection.pattern-0: ([[:word:]]+) + +If you click more than twice, the selection will be extended +more and more. + +To get a selection that is very similar to the old code, try this pattern: + + URxvt.selection.pattern-0: ([^"&'()*,;<=>?@[\\\\]^`{|})]+) + +Please also note that the I combination also +selects words like the old code. + +=head3 I don't like the new selection/popups/hotkeys/perl, how do I change/disable it? + +You can disable the perl extension completely by setting the +B resource to the empty string, which also keeps +rxvt-unicode from initialising perl, saving memory. + +If you only want to disable specific features, you first have to +identify which perl extension is responsible. For this, read the section +B in the @@URXVT_NAME@@perl(3) manpage. For +example, to disable the B and B, specify +this B resource: + + URxvt.perl-ext-common: default,-selection-popup,-option-popup + +This will keep the default extensions, but disable the two popup +extensions. Some extensions can also be configured, for example, +scrollback search mode is triggered by B. You can move it to any +other combination either by setting the B resource: + + URxvt.searchable-scrollback: CM-s + +=head3 The cursor moves when selecting text in the current input line, how do I switch this off? + +See next entry. + +=head3 During rlogin/ssh/telnet/etc. sessions, clicking near the cursor outputs strange escape sequences, how do I fix this? + +These are caused by the C perl extension. Under normal +circumstances, it will move your cursor around when you click into the +line that contains it. It tries hard not to do this at the wrong moment, +but when running a program that doesn't parse cursor movements or in some +cases during rlogin sessions, it fails to detect this properly. + +You can permanently switch this feature off by disabling the C +extension: + + URxvt.perl-ext-common: default,-readline + +=head3 My numerical keypad acts weird and generates differing output? + +Some Debian GNUL/Linux users seem to have this problem, although no +specific details were reported so far. It is possible that this is caused +by the wrong C setting, although the details of whether and how +this can happen are unknown, as C should offer a compatible +keymap. See the answer to the previous question, and please report if that +helped. + +=head3 My Compose (Multi_key) key is no longer working. + +The most common causes for this are that either your locale is not set +correctly, or you specified a B that is not supported by +your input method. For example, if you specified B and +your input method (e.g. the default input method handling Compose keys) +does not support this (for instance because it is not visual), then +rxvt-unicode will continue without an input method. + +In this case either do not specify a B or specify more than +one pre-edit style, such as B. + +If it still doesn't work, then maybe your input method doesn't support +compose sequences - to fall back to the built-in one, make sure you don't +specify an input method via C<-im> or C. + +=head3 I cannot type C to get an ASCII NUL character due to ISO 14755 + +Either try C alone (it often is mapped to ASCII NUL even on +international keyboards) or simply use ISO 14755 support to your +advantage, typing to get a ASCII NUL. This works for other +codes, too, such as C to type the default telnet escape +character and so on. + +=head3 Mouse cut/paste suddenly no longer works. + +Make sure that mouse reporting is actually turned off since killing +some editors prematurely may leave the mouse in mouse report mode. I've +heard that tcsh may use mouse reporting unless it otherwise specified. A +quick check is to see if cut/paste works when the Alt or Shift keys are +depressed. + +=head3 What's with the strange Backspace/Delete key behaviour? + +Assuming that the physical Backspace key corresponds to the +Backspace keysym (not likely for Linux ... see the following +question) there are two standard values that can be used for +Backspace: C<^H> and C<^?>. + +Historically, either value is correct, but rxvt-unicode adopts the debian +policy of using C<^?> when unsure, because it's the one and only correct +choice :). + +It is possible to toggle between C<^H> and C<^?> with the DECBKM +private mode: + + # use Backspace = ^H + $ stty erase ^H + $ echo -n "^[[?67h" + + # use Backspace = ^? + $ stty erase ^? + $ echo -n "^[[?67l" + +This helps satisfy some of the Backspace discrepancies that occur, but +if you use Backspace = C<^H>, make sure that the termcap/terminfo value +properly reflects that. + +The Delete key is a another casualty of the ill-defined Backspace problem. +To avoid confusion between the Backspace and Delete keys, the Delete +key has been assigned an escape sequence to match the vt100 for Execute +(C) and is in the supplied termcap/terminfo. + +Some other Backspace problems: + +some editors use termcap/terminfo, +some editors (vim I'm told) expect Backspace = ^H, +GNU Emacs (and Emacs-like editors) use ^H for help. + +Perhaps someday this will all be resolved in a consistent manner. + +=head3 I don't like the key-bindings. How do I change them? + +There are some compile-time selections available via configure. Unless +you have run "configure" with the C<--disable-resources> option you can +use the `keysym' resource to alter the keystrings associated with keysyms. + +Here's an example for a URxvt session started using C<@@URXVT_NAME@@ -name URxvt> + + URxvt.keysym.Home: \033[1~ + URxvt.keysym.End: \033[4~ + URxvt.keysym.C-apostrophe: \033 + URxvt.keysym.C-slash: \033 + URxvt.keysym.C-semicolon: \033 + URxvt.keysym.C-grave: \033 + URxvt.keysym.C-comma: \033 + URxvt.keysym.C-period: \033 + URxvt.keysym.C-0x60: \033 + URxvt.keysym.C-Tab: \033 + URxvt.keysym.C-Return: \033 + URxvt.keysym.S-Return: \033 + URxvt.keysym.S-space: \033 + URxvt.keysym.M-Up: \033 + URxvt.keysym.M-Down: \033 + URxvt.keysym.M-Left: \033 + URxvt.keysym.M-Right: \033 + URxvt.keysym.M-C-0: list \033 + URxvt.keysym.M-C-a: list \033 + URxvt.keysym.F12: command:\033]701;zh_CN.GBK\007 + +See some more examples in the documentation for the B resource. + +=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 + + KP_Insert == Insert + F22 == Print + F27 == Home + F29 == Prior + F33 == End + F35 == Next + +Rather than have rxvt-unicode try to accommodate all the various possible +keyboard mappings, it is better to use `xmodmap' to remap the keys as +required for your particular machine. + + +=head2 Terminal Configuration + +=head3 Can I see a typical configuration? + +The default configuration tries to be xterm-like, which I don't like that +much, but it's least surprise to regular users. + +As a rxvt or rxvt-unicode user, you are practically supposed to invest +time into customising your terminal. To get you started, here is the +author's .Xdefaults entries, with comments on what they do. It's certainly +not I, but what's typical... + + URxvt.cutchars: "()*,<>[]{}|' + URxvt.print-pipe: cat >/tmp/xxx + +These are just for testing stuff. + + URxvt.imLocale: ja_JP.UTF-8 + URxvt.preeditType: OnTheSpot,None + +This tells rxvt-unicode to use a special locale when communicating with +the X Input Method, and also tells it to only use the OnTheSpot pre-edit +type, which requires the C perl extension but rewards me +with correct-looking fonts. + + URxvt.perl-lib: /root/lib/urxvt + URxvt.perl-ext-common: default,selection-autotransform,selection-pastebin,xim-onthespot,remote-clipboard + URxvt.selection.pattern-0: ( at .*? line \\d+) + URxvt.selection.pattern-1: ^(/[^:]+):\ + URxvt.selection-autotransform.0: s/^([^:[:space:]]+):(\\d+):?$/:e \\Q$1\\E\\x0d:$2\\x0d/ + URxvt.selection-autotransform.1: s/^ at (.*?) line (\\d+)$/:e \\Q$1\\E\\x0d:$2\\x0d/ + +This is my perl configuration. The first two set the perl library +directory and also tells urxvt to use a large number of extensions. I +develop for myself mostly, so I actually use most of the extensions I +write. + +The selection stuff mainly makes the selection perl-error-message aware +and tells it to convert perl error messages into vi-commands to load the +relevant file and go to the error line number. + + URxvt.scrollstyle: plain + URxvt.secondaryScroll: true + +As the documentation says: plain is the preferred scrollbar for the +author. The C configures urxvt to scroll in full-screen +apps, like screen, so lines scrolled out of screen end up in urxvt's +scrollback buffer. + + URxvt.background: #000000 + URxvt.foreground: gray90 + URxvt.color7: gray90 + URxvt.colorBD: #ffffff + URxvt.cursorColor: #e0e080 + URxvt.throughColor: #8080f0 + URxvt.highlightColor: #f0f0f0 + +Some colours. Not sure which ones are being used or even non-defaults, but +these are in my .Xdefaults. Most notably, they set foreground/background +to light gray/black, and also make sure that the colour 7 matches the +default foreground colour. + + URxvt.underlineColor: yellow + +Another colour, makes underline lines look different. Sometimes hurts, but +is mostly a nice effect. + + URxvt.geometry: 154x36 + URxvt.loginShell: false + URxvt.meta: ignore + URxvt.utmpInhibit: true + +Uh, well, should be mostly self-explanatory. By specifying some defaults +manually, I can quickly switch them for testing. + + URxvt.saveLines: 8192 + +A large scrollback buffer is essential. Really. + + URxvt.mapAlert: true + +The only case I use it is for my IRC window, which I like to keep +iconified till people msg me (which beeps). + + URxvt.visualBell: true + +The audible bell is often annoying, especially when in a crowd. + + URxvt.insecure: true + +Please don't hack my mutt! Ooops... + + URxvt.pastableTabs: false + +I once thought this is a great idea. + + urxvt.font: 9x15bold,\ + -misc-fixed-bold-r-normal--15-140-75-75-c-90-iso10646-1,\ + -misc-fixed-medium-r-normal--15-140-75-75-c-90-iso10646-1, \ + [codeset=JISX0208]xft:Kochi Gothic, \ + xft:Bitstream Vera Sans Mono:autohint=true, \ + xft:Code2000:antialias=false + urxvt.boldFont: -xos4-terminus-bold-r-normal--14-140-72-72-c-80-iso8859-15 + urxvt.italicFont: xft:Bitstream Vera Sans Mono:italic:autohint=true + urxvt.boldItalicFont: xft:Bitstream Vera Sans Mono:bold:italic:autohint=true + +I wrote rxvt-unicode to be able to specify fonts exactly. So don't be +overwhelmed. A special note: the C<9x15bold> mentioned above is actually +the version from XFree-3.3, as XFree-4 replaced it by a totally different +font (different glyphs for C<;> and many other harmless characters), +while the second font is actually the C<9x15bold> from XFree4/XOrg. The +bold version has less chars than the medium version, so I use it for rare +characters, too. When editing sources with vim, I use italic for comments +and other stuff, which looks quite good with Bitstream Vera anti-aliased. + +Terminus is a quite bad font (many very wrong glyphs), but for most of my +purposes, it works, and gives a different look, as my normal (Non-bold) +font is already bold, and I want to see a difference between bold and +normal fonts. + +Please note that I used the C instance name and not the C +class name. That is because I use different configs for different purposes, +for example, my IRC window is started with C<-name IRC>, and uses these +defaults: + + IRC*title: IRC + IRC*geometry: 87x12+535+542 + IRC*saveLines: 0 + IRC*mapAlert: true + IRC*font: suxuseuro + IRC*boldFont: suxuseuro + IRC*colorBD: white + IRC*keysym.M-C-1: command:\033]710;suxuseuro\007\033]711;suxuseuro\007 + IRC*keysym.M-C-2: command:\033]710;9x15bold\007\033]711;9x15bold\007 + +C and C switch between two different font +sizes. C allows me to keep an eye (and actually read) +stuff while keeping a very small window. If somebody pastes something +complicated (e.g. japanese), I temporarily switch to a larger font. + +The above is all in my C<.Xdefaults> (I don't use C<.Xresources> nor +C). I also have some resources in a separate C<.Xdefaults-hostname> +file for different hosts, for example, on my main desktop, I use: + + URxvt.keysym.C-M-q: command:\033[3;5;5t + URxvt.keysym.C-M-y: command:\033[3;5;606t + URxvt.keysym.C-M-e: command:\033[3;1605;5t + URxvt.keysym.C-M-c: command:\033[3;1605;606t + URxvt.keysym.C-M-p: perl:test + +The first for keysym definitions allow me to quickly bring some windows +in the layout I like most. Ion users might start laughing but will stop +immediately when I tell them that I use my own Fvwm2 module for much the +same effect as Ion provides, and I only very rarely use the above key +combinations :-> + +=head3 Why doesn't rxvt-unicode read my resources? + +Well, why, indeed? It does, in a way very similar to other X +applications. Most importantly, this means that if you or your OS loads +resources into the X display (the right way to do it), rxvt-unicode will +ignore any resource files in your home directory. It will only read +F<$HOME/.Xdefaults> when no resources are attached to the display. + +If you have or use an F<$HOME/.Xresources> file, chances are that +resources are loaded into your X-server. In this case, you have to +re-login after every change (or run F). + +Also consider the form resources have to use: + + URxvt.resource: value + +If you want to use another form (there are lots of different ways of +specifying resources), make sure you understand whether and why it +works. If unsure, use the form above. + +=head3 When I log-in to another system it tells me about missing terminfo data? + +The terminal description used by rxvt-unicode is not as widely available +as that for xterm, or even rxvt (for which the same problem often arises). + +The correct solution for this problem is to install the terminfo, this can +be done by simply installing rxvt-unicode on the remote system as well +(in case you have a nice package manager ready), or you can install the +terminfo database manually like this (with ncurses infocmp. works as +user and root): + + REMOTE=remotesystem.domain + infocmp rxvt-unicode | ssh $REMOTE "mkdir -p .terminfo && cat >/tmp/ti && tic /tmp/ti" + +One some systems you might need to set C<$TERMINFO> to the full path of +F<$HOME/.terminfo> for this to work. + +If you cannot or do not want to do this, then you can simply set +C or even C, and live with the small number of +problems arising, which includes wrong keymapping, less and different +colours and some refresh errors in fullscreen applications. It's a nice +quick-and-dirty workaround for rare cases, though. + +If you always want to do this (and are fine with the consequences) you +can either recompile rxvt-unicode with the desired TERM value or use a +resource to set it: + + URxvt.termName: rxvt + +If you don't plan to use B (quite common...) you could also replace +the rxvt terminfo file with the rxvt-unicode one and use C. + +=head3 nano fails with "Error opening terminal: rxvt-unicode" + +This exceptionally confusing and useless error message is printed by nano +when it can't find the terminfo database. Nothing is wrong with your +terminal, read the previous answer for a solution. + +=head3 C outputs some error when compiling the terminfo entry. + +Most likely it's the empty definition for C. Just replace it by +C and try again. + +=head3 C's readline does not work correctly under @@URXVT_NAME@@. + +See next entry. + +=head3 I need a termcap file entry. + +One reason you might want this is that some distributions or operating +systems still compile some programs using the long-obsoleted termcap +library (Fedora Core's bash is one example) and rely on a termcap entry +for C. + +You could use rxvt's termcap entry with reasonable results in many cases. +You can also create a termcap entry by using terminfo's infocmp program +like this: + + infocmp -C rxvt-unicode + +Or you could use the termcap entry in doc/etc/rxvt-unicode.termcap, +generated by the command above. + +=head3 Why does C no longer have coloured output? + +The C in the GNU coreutils unfortunately doesn't use terminfo to +decide whether a terminal has colour, but uses its own configuration +file. Needless to say, C is not in its default file (among +with most other terminals supporting colour). Either add: + + TERM rxvt-unicode + +to C or simply add: + + alias ls='ls --color=auto' + +to your C<.profile> or C<.bashrc>. + +=head3 Why doesn't vim/emacs etc. use the 88 colour mode? + +See next entry. + +=head3 Why doesn't vim/emacs etc. make use of italic? + +See next entry. + +=head3 Why are the secondary screen-related options not working properly? + +Make sure you are using C. Some pre-packaged +distributions (most notably Debian GNU/Linux) break rxvt-unicode +by setting C to C, which doesn't have these extra +features. Unfortunately, some of these (most notably, again, Debian +GNU/Linux) furthermore fail to even install the C terminfo +file, so you will need to install it on your own (See the question B on +how to do this). + + +=head2 Encoding / Locale / Input Method Issues + +=head3 Rxvt-unicode does not seem to understand the selected encoding? + +See next entry. + +=head3 Unicode does not seem to work? + +If you encounter strange problems like typing an accented character but +getting two unrelated other characters or similar, or if program output is +subtly garbled, then you should check your locale settings. + +Rxvt-unicode must be started with the same C setting as the +programs running in it. Often rxvt-unicode is started in the C locale, +while the login script running within the rxvt-unicode window changes the +locale to something else, e.g. C. Needless to say, this is +not going to work, and is the most common cause for problems. + +The best thing is to fix your startup environment, as you will likely run +into other problems. If nothing works you can try this in your .profile. + + printf '\33]701;%s\007' "$LC_CTYPE" # $LANG or $LC_ALL are worth a try, too + +If this doesn't work, then maybe you use a C specification not +supported on your systems. Some systems have a C command which +displays this (also, C can be used to check locale settings, as +it will complain loudly if it cannot set the locale). If it displays something +like: + + locale: Cannot set LC_CTYPE to default locale: ... + +Then the locale you specified is not supported on your system. + +If nothing works and you are sure that everything is set correctly then +you will need to remember a little known fact: Some programs just don't +support locales :( + +=head3 How does rxvt-unicode determine the encoding to use? + +See next entry. + +=head3 Is there an option to switch encodings? + +Unlike some other terminals, rxvt-unicode has no encoding switch, and no +specific "utf-8" mode, such as xterm. In fact, it doesn't even know about +UTF-8 or any other encodings with respect to terminal I/O. + +The reasons is that there exists a perfectly fine mechanism for selecting +the encoding, doing I/O and (most important) communicating this to all +applications so everybody agrees on character properties such as width +and code number. This mechanism is the I. Applications not using +that info will have problems (for example, C gets the width of +characters wrong as it uses its own, locale-independent table under all +locales). + +Rxvt-unicode uses the C locale category to select encoding. All +programs doing the same (that is, most) will automatically agree in the +interpretation of characters. + +Unfortunately, there is no system-independent way to select locales, nor +is there a standard on how locale specifiers will look like. + +On most systems, the content of the C environment variable +contains an arbitrary string which corresponds to an already-installed +locale. Common names for locales are C, C, +C, i.e. C, but other forms +(i.e. C or C) are also common. + +Rxvt-unicode ignores all other locale categories, and except for +the encoding, ignores country or language-specific settings, +i.e. C and C are the normally same to +rxvt-unicode. + +If you want to use a specific encoding you have to make sure you start +rxvt-unicode with the correct C category. + +=head3 Can I switch locales at runtime? + +Yes, using an escape sequence. Try something like this, which sets +rxvt-unicode's idea of C. + + printf '\33]701;%s\007' ja_JP.SJIS + +See also the previous answer. + +Sometimes this capability is rather handy when you want to work in +one locale (e.g. C) but some programs don't support it +(e.g. UTF-8). For example, I use this script to start C, which +first switches to a locale supported by xjdic and back later: + + printf '\33]701;%s\007' ja_JP.SJIS + xjdic -js + printf '\33]701;%s\007' de_DE.UTF-8 + +You can also use xterm's C program, which usually works fine, except +for some locales where character width differs between program- and +rxvt-unicode-locales. + +=head3 I have problems getting my input method working. + +Try a search engine, as this is slightly different for every input method server. + +Here is a checklist: + +=over 4 + +=item - Make sure your locale I the imLocale are supported on your OS. + +Try C or check the documentation for your OS. + +=item - Make sure your locale or imLocale matches a locale supported by your XIM. + +For example, B does not support UTF-8 locales, you should use +C or equivalent. + +=item - Make sure your XIM server is actually running. + +=item - Make sure the C environment variable is set correctly when I rxvt-unicode. + +When you want to use e.g. B, it must be set to +C<@im=kinput2>. For B, use C<@im=SCIM>. You can see what input +method servers are running with this command: + + xprop -root XIM_SERVERS + +=item + +=back + +=head3 My input method wants but I want UTF-8, what can I do? + +You can specify separate locales for the input method and the rest of the +terminal, using the resource C: + + URxvt.imlocale: ja_JP.EUC-JP + +Now you can start your terminal with C and still +use your input method. Please note, however, that, depending on your Xlib +version, you may not be able to input characters outside C in a +normal way then, as your input method limits you. + +=head3 Rxvt-unicode crashes when the X Input Method changes or exits. + +Unfortunately, this is unavoidable, as the XIM protocol is racy by +design. Applications can avoid some crashes at the expense of memory +leaks, and Input Methods can avoid some crashes by careful ordering at +exit time. B (and derived input methods) generally succeeds, +while B (or similar input methods) fails. In the end, however, +crashes cannot be completely avoided even if both sides cooperate. + +So the only workaround is not to kill your Input Method Servers. + + +=head2 Operating Systems / Package Maintaining + +=head3 I am using Debian GNU/Linux and have a problem... + +The Debian GNU/Linux package of rxvt-unicode in sarge contains large +patches that considerably change the behaviour of rxvt-unicode (but +unfortunately this notice has been removed). Before reporting a bug to +the original rxvt-unicode author please download and install the genuine +version (L) and try to reproduce +the problem. If you cannot, chances are that the problems are specific to +Debian GNU/Linux, in which case it should be reported via the Debian Bug +Tracking System (use C to report the bug). + +For other problems that also affect the Debian package, you can and +probably should use the Debian BTS, too, because, after all, it's also a +bug in the Debian version and it serves as a reminder for other users that +might encounter the same issue. + +=head3 I am maintaining rxvt-unicode for distribution/OS XXX, any recommendation? + +You should build one binary with the default options. F +now enables most useful options, and the trend goes to making them +runtime-switchable, too, so there is usually no drawback to enabling them, +except higher disk and possibly memory usage. The perl interpreter should +be enabled, as important functionality (menus, selection, likely more in +the future) depends on it. + +You should not overwrite the C and C resources +system-wide (except maybe with C). This will result in useful +behaviour. If your distribution aims at low memory, add an empty +C resource to the app-defaults file. This will keep the +perl interpreter disabled until the user enables it. + +If you can/want build more binaries, I recommend building a minimal +one with C<--disable-everything> (very useful) and a maximal one with +C<--enable-everything> (less useful, it will be very big due to a lot of +encodings built-in that increase download times and are rarely used). + +=head3 I need to make it setuid/setgid to support utmp/ptys on my OS, is this safe? + +It should be, starting with release 7.1. You are encouraged to properly +install urxvt with privileges necessary for your OS now. + +When rxvt-unicode detects that it runs setuid or setgid, it will fork +into a helper process for privileged operations (pty handling on some +systems, utmp/wtmp/lastlog handling on others) and drop privileges +immediately. This is much safer than most other terminals that keep +privileges while running (but is more relevant to urxvt, as it contains +things as perl interpreters, which might be "helpful" to attackers). + +This forking is done as the very first within main(), which is very early +and reduces possible bugs to initialisation code run before main(), or +things like the dynamic loader of your system, which should result in very +little risk. + +=head3 I am on FreeBSD and rxvt-unicode does not seem to work at all. + +Rxvt-unicode requires the symbol C<__STDC_ISO_10646__> to be defined +in your compile environment, or an implementation that implements it, +whether it defines the symbol or not. C<__STDC_ISO_10646__> requires that +B is represented as unicode. + +As you might have guessed, FreeBSD does neither define this symbol nor +does it support it. Instead, it uses its own internal representation of +B. This is, of course, completely fine with respect to standards. + +However, that means rxvt-unicode only works in C, C and +C locales under FreeBSD (which all use Unicode as B). + +C<__STDC_ISO_10646__> is the only sane way to support multi-language +apps in an OS, as using a locale-dependent (and non-standardized) +representation of B makes it impossible to convert between +B (as used by X11 and your applications) and any other encoding +without implementing OS-specific-wrappers for each and every locale. There +simply are no APIs to convert B into anything except the current +locale encoding. + +Some applications (such as the formidable B) work around this +by carrying their own replacement functions for character set handling +with them, and either implementing OS-dependent hacks or doing multiple +conversions (which is slow and unreliable in case the OS implements +encodings slightly different than the terminal emulator). + +The rxvt-unicode author insists that the right way to fix this is in the +system libraries once and for all, instead of forcing every app to carry +complete replacements for them :) + +=head3 How can I use rxvt-unicode under cygwin? + +rxvt-unicode should compile and run out of the box on cygwin, using +the X11 libraries that come with cygwin. libW11 emulation is no +longer supported (and makes no sense, either, as it only supported a +single font). I recommend starting the X-server in C<-multiwindow> or +C<-rootless> mode instead, which will result in similar look&feel as the +old libW11 emulation. + +At the time of this writing, cygwin didn't seem to support any multi-byte +encodings (you might try C), so you are likely limited +to 8-bit encodings. + +=head3 Character widths are not correct. + +urxvt uses the system wcwidth function to know the information about +the width of characters, so on systems with incorrect locale data you +will likely get bad results. Two notorious examples are Solaris 9, +where single-width characters like U+2514 are reported as double-width, +and Darwin 8, where combining chars are reported having width 1. + +The solution is to upgrade your system or switch to a better one. A +possibly working workaround is to use a wcwidth implementation like + +http://www.cl.cam.ac.uk/~mgk25/ucs/wcwidth.c + +=head1 RXVT-UNICODE TECHNICAL REFERENCE + +The rest of this document describes various technical aspects of +B. First the description of supported command sequences, +followed by pixmap support and last by a description of all features +selectable at C time. + +=head2 Definitions =over 4 =item B<< C >> -The literal character c. +The literal character c (potentially a multi-byte character). =item B<< C >> @@ -32,14 +1244,14 @@ =back -=head1 Values +=head2 Values =over 4 =item B<< C >> Enquiry (Ctrl-E) = Send Device Attributes (DA) -request attributes from terminal == +request attributes from terminal. See B<< C >>. =item B<< C >> @@ -85,7 +1297,7 @@ =back -=head1 Escape Sequences +=head2 Escape Sequences =over 4 @@ -105,7 +1317,7 @@ Application Keypad (SMKX). See also next sequence. -=item B<<< C<< ESC >> >>> +=item B<<< C<< ESC > >> >>> Normal Keypad (RMKX) @@ -141,7 +1353,7 @@ =item B<< C >> -Obsolete form of returns: B<< C >> I +Obsolete form of returns: B<< C >> I =item B<< C >> @@ -155,11 +1367,11 @@ Invoke the G3 Character Set (LS3) -=item B<< C(C >> +=item B<< C >> Designate G0 Character Set (ISO 2022), see below for values of C. -=item B<< C)C >> +=item B<< C >> Designate G1 Character Set (ISO 2022), see below for values of C. @@ -193,7 +1405,7 @@ X -=head1 CSI (Code Sequence Introducer) Sequences +=head2 CSI (Command Sequence Introducer) Sequences =over 4 @@ -258,6 +1470,8 @@ B<< C >> Clear to Right (default) B<< C >> Clear to Left B<< C >> Clear All + B<< C >> Like Ps = 0, but is ignored when wrapped + (@@RXVT_NAME@@ extension) =end table @@ -300,17 +1514,17 @@ =item B<< C >> -== +See B<< C >> =item B<< C >> -==X +See B<< C >> =item B<< C >> Send Device Attributes (DA) B<< C >> (or omitted): request attributes from terminal -returns: B<< C >> (``I am a VT100 with Advanced Video +returns: B<< C >> (``I am a VT100 with Advanced Video Option'') =item B<< C >> @@ -319,7 +1533,7 @@ =item B<< C >> -== +See B<< C >> =item B<< C >> @@ -336,21 +1550,22 @@ =end table +=item B<< C >> + +Set Mode (SM). See B<< C >> sequence for description of C. + =item B<< C >> -Printing +Printing. See also the C resource. =begin table + B<< C >> print screen (MC0) B<< C >> disable transparent print mode (MC4) - B<< C >> enable transparent print mode (MC5) I + B<< C >> enable transparent print mode (MC5) =end table -=item B<< C >> - -Set Mode (SM). See next sequence for description of C. - =item B<< C >> Reset Mode (RM) @@ -366,12 +1581,12 @@ =end table -=item B<< C >> I +=item B<< C >> (partially implemented) =begin table B<< C >> Automatic Newline (LNM) - B<< C >> Normal Linefeed (LNM) + B<< C >> Normal Linefeed (LNM) =end table @@ -384,10 +1599,13 @@ =begin table B<< C >> Normal (default) - B<< C >> On / Off Bold (bright fg) + B<< C >> On / Off Bold (bright fg) + B<< C >> On / Off Italic B<< C >> On / Off Underline - B<< C >> On / Off Blink (bright bg) + B<< C >> On / Off Slow Blink (bright bg) + B<< C >> On / Off Rapid Blink (bright bg) B<< C >> On / Off Inverse + B<< C >> On / Off Invisible (NYI) B<< C >> fg/bg Black B<< C >> fg/bg Red B<< C >> fg/bg Green @@ -395,8 +1613,18 @@ B<< C >> fg/bg Blue B<< C >> fg/bg Magenta B<< C >> fg/bg Cyan + B<< C >> set fg/bg to colour #m (ISO 8613-6) B<< C >> fg/bg White B<< C >> fg/bg Default + B<< C >> fg/bg Bright Black + B<< C >> fg/bg Bright Red + B<< C >> fg/bg Bright Green + B<< C >> fg/bg Bright Yellow + B<< C >> fg/bg Bright Blue + B<< C >> fg/bg Bright Magenta + B<< C >> fg/bg Bright Cyan + B<< C >> fg/bg Bright White + B<< C >> fg/bg Bright Default =end table @@ -422,19 +1650,44 @@ Save Cursor (SC) -=item B<< C >> +=item B<< C >> -Request Terminal Parameters (DECREQTPARM) +Window Operations + +=begin table + + B<< C >> Deiconify (map) window + B<< C >> Iconify window + B<< C >> B<< C >> Move window to (X|Y) + B<< C >> B<< C >> Resize to WxH pixels + B<< C >> Raise window + B<< C >> Lower window + B<< C >> Refresh screen once + B<< C >> B<< C >> Resize to R rows and C columns + B<< C >> Report window state (responds with C or C) + B<< C >> Report window position (responds with C) + B<< C >> Report window pixel size (responds with C) + B<< C >> Report window text size (responds with C) + B<< C >> Currently the same as C, but responds with C + B<< C >> Reports icon label (B<< C >>) + B<< C >> Reports window title (B<< C >>) + B<< C >> Set window height to C rows + +=end table =item B<< C >> Restore Cursor +=item B<< C >> + +Request Terminal Parameters (DECREQTPARM) + =back X -=head1 DEC Private Modes +=head2 DEC Private Modes =over 4 @@ -460,7 +1713,7 @@ =over 4 -=item B<< C >> (DECCKM) +=item B<< C >> (DECCKM) =begin table @@ -469,7 +1722,7 @@ =end table -=item B<< C >> (ANSI/VT52 mode) +=item B<< C >> (ANSI/VT52 mode) =begin table @@ -478,7 +1731,7 @@ =end table -=item B<< C >> +=item B<< C >> =begin table @@ -487,7 +1740,7 @@ =end table -=item B<< C >> +=item B<< C >> =begin table @@ -496,7 +1749,7 @@ =end table -=item B<< C >> +=item B<< C >> =begin table @@ -505,7 +1758,7 @@ =end table -=item B<< C >> +=item B<< C >> =begin table @@ -514,7 +1767,7 @@ =end table -=item B<< C >> +=item B<< C >> =begin table @@ -523,7 +1776,7 @@ =end table -=item B<< C >> I +=item B<< C >> I =begin table @@ -532,7 +1785,7 @@ =end table -=item B<< C >> X10 XTerm +=item B<< C >> X10 XTerm =begin table @@ -541,18 +1794,7 @@ =end table -)X - -=item B<< C >> (B) - -=begin table - - B<< C >> visible - B<< C >> invisible - -=end table - -=item B<< C >> +=item B<< C >> =begin table @@ -561,16 +1803,16 @@ =end table -=item B<< C >> +=item B<< C >> =begin table - B<< C >> scrollBar visisble - B<< C >> scrollBar invisisble + B<< C >> scrollBar visible + B<< C >> scrollBar invisible =end table -=item B<< C >> (B) +=item B<< C >> (B) =begin table @@ -579,11 +1821,11 @@ =end table -=item B<< C >> I +=item B<< C >> I Enter Tektronix Mode (DECTEK) -=item B<< C >> +=item B<< C >> =begin table @@ -592,7 +1834,7 @@ =end table -=item B<< C >> I +=item B<< C >> I =begin table @@ -601,7 +1843,7 @@ =end table -=item B<< C >> I +=item B<< C >> I =begin table @@ -610,9 +1852,9 @@ =end table -=item B<< C >> I +=item B<< C >> I -=item B<< C >> +=item B<< C >> =begin table @@ -623,16 +1865,16 @@ X -=item B<< C >> +=item B<< C >> =begin table - B<< C >> Application Keypad (DECPAM) == - B<< C >> Normal Keypad (DECPNM) == + B<< C >> Application Keypad (DECKPAM/DECPAM) == C + B<< C >> Normal Keypad (DECKPNM/DECPNM) == C<< ESC > >> =end table -=item B<< C >> +=item B<< C >> =begin table @@ -641,7 +1883,7 @@ =end table -=item B<< C >> (X11 XTerm) +=item B<< C >> (X11 XTerm) =begin table @@ -650,7 +1892,7 @@ =end table -=item B<< C >> (X11 XTerm) I +=item B<< C >> (X11 XTerm) I =begin table @@ -659,754 +1901,669 @@ =end table -=item B<< C >> +=item B<< C >> (X11 XTerm) =begin table - B<< C >> Don't scroll to bottom on TTY output - B<< C >> Scroll to bottom on TTY output + B<< C >> Send Mouse X & Y on button press and release, and motion with a button pressed. + B<< C >> No mouse reporting. =end table -=item B<< C >> +=item B<< C >> (X11 XTerm) =begin table - B<< C >> Scroll to bottom when a key is pressed - B<< C >> Don't scroll to bottom when a key is pressed + B<< C >> Send Mouse X & Y on button press and release, and motion. + B<< C >> No mouse reporting. =end table -=item B<< C >> +=item B<< C >> (X11 XTerm) (Compile frills) -=begin table +Try to avoid this mode, it doesn't work sensibly in non-UTF-8 locales. Use +mode C<1015> instead. - B<< C >> Use Alternate Screen Buffer - B<< C >> Use Normal Screen Buffer - clear Alternate Screen Buffer if returning from it - -=end table - -=item B<< C >> +Unlike XTerm, coordinates larger than 2015) will work fine. =begin table - B<< C >> Save cursor position - B<< C >> Restore cursor position + B<< C >> Enable mouse coordinates in locale-specific encoding. + B<< C >> Enable mouse coordinates as binary octets. =end table -=back - -=back - -X - -=head1 XTerm Operating System Commands - -=over 4 - -=item B<< C >> - -Set XTerm Parameters. 8-bit ST: 0x9c, 7-bit ST sequence: ESC \ (0x1b, -0x5c), backwards compatible terminator BEL (0x07) is also accepted. any -B can be escaped by prefixing it with SYN (0x16, ^V). +=item B<< C >> (B) =begin table - B<< C >> Change Icon Name and Window Title to B<< C >> - B<< C >> Change Icon Name to B<< C >> - B<< C >> Change Window Title to B<< C >> - B<< C >> If B<< C >> starts with a B<< C >>, query the (STRING) property of the window and return it. If B<< C >> contains a B<< C<=> >>, set the named property to the given value, else delete the specified property. - B<< C >> B<< C >> is a semi-colon separated sequence of one or more semi-colon separated B/B pairs, where B is an index to a colour and B is the name of a colour. Each pair causes the Bed colour to be changed to B. 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 - B<< C >> Change colour of text foreground to B<< C >> B<(NB: may change in future)> - B<< C >> Change colour of text background to B<< C >> B<(NB: may change in future)> - B<< C >> Change colour of text cursor foreground to B<< C >> - B<< C >> Change colour of mouse foreground to B<< C >> - B<< C >> Change colour of highlight characters to B<< C >> - B<< C >> Change colour of bold characters to B<< C >> - B<< C >> Change colour of underlined characters to B<< C >> - B<< C >> Change default background to B<< C >> - B<< C >> Change default foreground colour to B<< C >> I - B<< C >> Change Log File to B<< C >> I - B<< C >> Change default background colour to B<< C >> I - B<< C >> Set fontset to B<< C >>, with the following special values of B<< C >> (B) B<< C<#+n> >> change up B<< C >> B<< C<#-n> >> change down B<< C >> if B<< C >> is missing of 0, a value of 1 is used I change to font0 B<< C >> change to font B<< C >> - B<< C >> Log all scrollback buffer and all of screen to B<< C >> - B<< C >> Change current locale to B<< C >>, or, if B<< C >> is B<< C >>, return the current locale (@@RXVTNAME@@ extension) - B<< C >> find font for character, used for debugging (@@RXVTNAME@@ extension) - B<< C >> command B<< C >> I (@@RXVTNAME@@ extension) + B<< C >> Don't scroll to bottom on TTY output + B<< C >> Scroll to bottom on TTY output =end table -=back - -X - -=head1 menuBar - -B<< The exact syntax used is I solidified. >> -In the menus, B try to use menuBar commands that add or remove a -menuBar. - -Note that in all of the commands, the B<< I >> I be -omitted: use B<./> to specify a menu relative to the current menu. - -=head2 Overview of menuBar operation - -For the menuBar XTerm escape sequence C, the syntax -of C can be used for a variety of tasks: - -At the top level is the current menuBar which is a member of a circular -linked-list of other such menuBars. - -The menuBar acts as a parent for the various drop-down menus, which in -turn, may have labels, separator lines, menuItems and subMenus. - -The menuItems are the useful bits: you can use them to mimic keyboard -input or even to send text or escape sequences back to rxvt. - -The menuBar syntax is intended to provide a simple yet robust method of -constructing and manipulating menus and navigating through the -menuBars. - -The first step is to use the tag B<< [menu:I] >> which creates -the menuBar called I and allows access. You may now or menus, -subMenus, and menuItems. Finally, use the tag B<[done]> to set the -menuBar access as B to prevent accidental corruption of the -menus. To re-access the current menuBar for alterations, use the tag -B<[menu]>, make the alterations and then use B<[done]> - -X +=item B<< C >> (B) -=head2 Commands - -=over 4 - -=item B<< [menu:+I] >> +=begin table -access the named menuBar for creation or alteration. If a new menuBar -is created, it is called I (max of 15 chars) and the current -menuBar is pushed onto the stack + B<< C >> Scroll to bottom when a key is pressed + B<< C >> Don't scroll to bottom when a key is pressed -=item B<[menu]> +=end table -access the current menuBar for alteration +=item B<< C >> (B) (Compile frills) -=item B<< [title:+I] >> +Changes all mouse reporting codes to use decimal parameters instead of +octets or characters. -set the current menuBar's title to I, which may contain the -following format specifiers: -B<%%> : literal B<%> character -B<%n> : rxvt name (as per the B<-name> command-line option) -B<%v> : rxvt version +This mode should be enabled I actually enabling mouse reporting, +for semi-obvious reasons. -=item B<[done]> +The sequences received for various modes are as follows: -set menuBar access as B. -End-of-file tag for B<< [read:+I] >> operations. + ESC [ M o o o !1005, !1015 (three octets) + ESC [ M c c c 1005, !1015 (three characters) + ESC [ Pm M 1015 (three or more numeric paramaters) -=item B<< [read:+I] >> +The three parameters are C, C and C. Code is the numeric code +as for the other modes (but encoded as a decimal number), C and C +are the coordinates (1|1 is the upper left corner, just as with cursor +positioning). -read menu commands directly from I (extension ".menu" will be -appended if required.) Start reading at a line with B<[menu]> or B<< -[menu:+I >> and continuing until B<[done]> is encountered. +Example: Shift-Button-1 press at top row, column 80. -Blank and comment lines (starting with B<#>) are ignored. Actually, -since any invalid menu commands are also ignored, almost anything could -be construed as a comment line, but this may be tightened up in the -future ... so don't count on it!. + ESC [ 5 ; 80 ; 1 M -=item B<< [read:+I;+I] >> +One can use this feature by simply enabling it and then looking for +parameters to the C reply - if there are any, this mode is +active, otherwise one of the old reporting styles is used. -The same as B<< [read:+I] >>, but start reading at a line with -B<< [menu:+I] >> and continuing until B<< [done:+I] >> or -B<[done]> is encountered. +Other (to be implemented) reply sequences will use a similar encoding. -=item B<[dump]> +In the future, more parameters might get added (pixel coordinates for +example - anybody out there who needs this?). -dump all menuBars to the file B in a format suitable for -later rereading. +=begin table -=item B<[rm:name]> + B<< C >> Enable new mouse coordinate reporting. + B<< C >> Use old-style C encoding. -remove the named menuBar +=end table -=item B<[rm] [rm:]> +=item B<< C >> (B) -remove the current menuBar +=begin table -=item B<[rm*] [rm:*]> + B<< C >> Bold/italic implies high intensity (see option B<-is>) + B<< C >> Font styles have no effect on intensity (Compile styles) -remove all menuBars +=end table -=item B<[swap]> +=item B<< C >> -swap the top two menuBars +=begin table -=item B<[prev]> + B<< C >> Use Alternate Screen Buffer + B<< C >> Use Normal Screen Buffer - clear Alternate Screen Buffer if returning from it -access the previous menuBar +=end table -=item B<[next]> +=item B<< C >> -access the next menuBar +=begin table -=item B<[show]> + B<< C >> Save cursor position + B<< C >> Restore cursor position -Enable display of the menuBar +=end table -=item B<[hide]> +=item B<< C >> -Disable display of the menuBar +=begin table -=item B<< [pixmap:+I] >> + B<< C >> Use Alternate Screen Buffer - clear Alternate Screen Buffer if switching to it + B<< C >> Use Normal Screen Buffer -=item B<< [pixmap:+I;I] >> +=end table -(set the background pixmap globally +=item B<< C >> -B<< A Future implementation I make this local to the menubar >>) +=begin table -=item B<< [:+I:] >> + B<< C >> Enable bracketed paste mode - prepend / append to the pasted text the control sequences C / C + B<< C >> Disable bracketed paste mode -ignore the menu readonly status and issue a I to or a menu or -menuitem or change the ; a useful shortcut for setting the quick arrows -from a menuBar. +=end table =back -X +=back -=head2 Adding and accessing menus +X -The following commands may also be B<+> prefixed. +=head2 XTerm Operating System Commands =over 4 -=item B - -access menuBar top level - -=item B<./+> - -access current menu level - -=item B<../+> - -access parent menu (1 level up) - -=item B<../../> - -access parent menu (multiple levels up) - -=item B<< Imenu >> - -add/access menu - -=item B<< Imenu/* >> - -add/access menu and clear it if it exists - -=item B<< I{-} >> - -add separator - -=item B<< I{item} >> - -add B as a label - -=item B<< I{item} action >> - -add/alter I with an associated I - -=item B<< I{item}{right-text} >> - -add/alter I with B as the right-justified text -and as the associated I - -=item B<< I{item}{rtext} action >> - -add/alter I with an associated I and with B as -the right-justified text. - -=back - -=over 4 +=item B<< C >> -=item Special characters in I must be backslash-escaped: +Set XTerm Parameters. 8-bit ST: 0x9c, 7-bit ST sequence: ESC \ (0x1b, +0x5c), backwards compatible terminator BEL (0x07) is also accepted. any +B can be escaped by prefixing it with SYN (0x16, ^V). -B<\a \b \E \e \n \r \t \octal> +=begin table -=item or in control-character notation: + B<< C >> Change Icon Name and Window Title to B<< C >> + B<< C >> Change Icon Name to B<< C >> + B<< C >> Change Window Title to B<< C >> + B<< C >> If B<< C >> starts with a B<< C >>, query the (STRING) property of the window and return it. If B<< C >> contains a B<< C<=> >>, set the named property to the given value, else delete the specified property. + B<< C >> B<< C >> is a semi-colon separated sequence of one or more semi-colon separated B/B pairs, where B is an index to a colour and B is the name of a colour. Each pair causes the Bed colour to be changed to B. 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 + B<< C >> Change colour of text foreground to B<< C >> + B<< C >> Change colour of text background to B<< C >> + B<< C >> Change colour of text cursor foreground to B<< C >> + B<< C >> Change colour of mouse foreground to B<< C >> + B<< C >> Change background colour of highlight characters to B<< C >> + B<< C >> Change foreground colour of highlight characters to B<< C >> + B<< C >> Change background pixmap parameters (see section BACKGROUND IMAGE) (Compile afterimage or pixbuf). + B<< C >> Change default foreground colour to B<< C >>. [deprecated, use 10] + B<< C >> Change Log File to B<< C >> I + B<< C >> Change default background colour to B<< C >>. [deprecated, use 11] + B<< C >> Set fontset to B<< C >>, with the following special values of B<< C >> (B) B<< C<#+n> >> change up B<< C >> B<< C<#-n> >> change down B<< C >> if B<< C >> is missing of 0, a value of 1 is used I change to font0 B<< C >> change to font B<< C >> + B<< C >> Log all scrollback buffer and all of screen to B<< C >> [disabled] + B<< C >> Change current locale to B<< C >>, or, if B<< C >> is B<< C >>, return the current locale (Compile frills). + B<< C >> Request version if B<< C >> is B<< C >>, returning C, the resource name, the major and minor version numbers, e.g. C. + B<< C >> Change colour of italic characters to B<< C >> + B<< C >> Change background pixmap tint colour to B<< C >> (Compile transparency). + B<< C >> Change colour of bold characters to B<< C >> + B<< C >> Change colour of underlined characters to B<< C >> + B<< C >> Change colour of the border to B<< C >> + B<< C >> Set normal fontset to B<< C >>. Same as C. + B<< C >> Set bold fontset to B<< C >>. Similar to C (Compile styles). + B<< C >> Set italic fontset to B<< C >>. Similar to C (Compile styles). + B<< C >> Set bold-italic fontset to B<< C >>. Similar to C (Compile styles). + B<< C >> Move viewing window up by B<< C >> lines, or clear scrollback buffer if C (Compile frills). + B<< C >> Move viewing window down by B<< C >> lines, or clear scrollback buffer if C (Compile frills). + B<< C >> Call the perl extension with the given string, which should be of the form C (Compile perl). -B<^@, ^A .. ^Z .. ^_, ^?> +=end table =back -To send a string starting with a B (B<^@>) character to the -program, start I with a pair of B characters (B<^@^@>), -the first of which will be stripped off and the balance directed to the -program. Otherwise if I begins with B followed by -non-+B characters, the leading B is stripped off and the -balance is sent back to rxvt. - -As a convenience for the many Emacs-type editors, I may start -with B (eg, B is equivalent to B<\E$>) and a B will be -appended if missed from B commands. +=head1 BACKGROUND IMAGE -As a convenience for issuing XTerm B sequences from a menubar (or -quick arrow), a B (B<^G>) will be appended if needed. +For the BACKGROUND IMAGE XTerm escape sequence B<< C >> the value +of B<< C >> can be one of the following commands: =over 4 -=item For example, - -B is equivalent to B<\Exapropos\r> +=item B<< C >> -=item and +display scale and position in the title -B<\E]703;mona;100> is equivalent to B<\E]703;mona;100\a> +=item B<< C<;WxH+X+Y> >> -=back - -The option B<< {I} >> will be right-justified. In the -absence of a specified action, this text will be used as the I -as well. - -=over 4 +change scale and/or position -=item For example, +=item B<< C >> -B is equivalent to B +change background image =back -The left label I necessary, since it's used for matching, but -implicitly hiding the left label (by using same name for both left and -right labels), or explicitly hiding the left label (by preceeding it -with a dot), makes it possible to have right-justified text only. - -=over 4 +X -=item For example, +=head1 Mouse Reporting -B +=over 4 -=item or hiding it +=item B<< C<< ESC [ M >> >> -B +report mouse position =back -X - -=head2 Removing menus +The lower 2 bits of B<< C<< >> >> indicate the button: =over 4 -=item B<< -/*+ >> - -remove all menus from the menuBar, the same as B<[clear]> - -=item B<< -+Imenu+ >> - -remove menu - -=item B<< -+I{item}+ >> - -remove item - -=item B<< -+I{-} >> +=item Button = B<< C<< ( - SPACE) & 3 >> >> -remove separator) +=begin table -=item B<-/path/menu/*> + 0 Button1 pressed + 1 Button2 pressed + 2 Button3 pressed + 3 button released (X11 mouse report) -remove all items, separators and submenus from menu +=end table =back -X - -=head2 Quick Arrows - -The menus also provide a hook for I to provide easier -user access. If nothing has been explicitly set, the default is to -emulate the curror keys. The syntax permits each arrow to be altered -individually or all four at once without re-entering their common -beginning/end text. For example, to explicitly associate cursor actions -with the arrows, any of the following forms could be used: +The upper bits of B<< C<< >> >> indicate the modifiers when the +button was pressed and are added together (X11 mouse report only): =over 4 -=item B<< +I >> - -=item B<< +I >> - -=item B<< +I >> +=item State = B<< C<< ( - SPACE) & 60 >> >> -=item B<< +I >> +=begin table -Define actions for the respective arrow buttons + 4 Shift + 8 Meta + 16 Control + 32 Double Click I<(rxvt extension)> -=item B<< +I >> +=end table -=item B<< +I >> +Col = B<< C<< - SPACE >> >> -Define common beginning/end parts for I which used in -conjunction with the above constructs +Row = B<< C<< - SPACE >> >> =back -=over 4 - -=item For example, define arrows individually, - - \E[A - - \E[B - - \E[C +=head1 Key Codes - \E[D +X -=item or all at once +Note: B + B-B generates B-B - \E[AZ<>\E[BZ<>\E[CZ<>\E[D +For the keypad, use B to temporarily override Application-Keypad +setting use B to toggle Application-Keypad setting if +B is off, toggle Application-Keypad setting. Also note that +values of B, B may have been compiled differently on +your system. -=item or more compactly (factoring out common parts) +=begin table - \E[AZ<>BZ<>CZ<>D + B B B B + Tab ^I ESC [ Z ^I ESC [ Z + BackSpace ^H ^? ^? ^? + Find ESC [ 1 ~ ESC [ 1 $ ESC [ 1 ^ ESC [ 1 @ + Insert ESC [ 2 ~ I ESC [ 2 ^ ESC [ 2 @ + Execute ESC [ 3 ~ ESC [ 3 $ ESC [ 3 ^ ESC [ 3 @ + Select ESC [ 4 ~ ESC [ 4 $ ESC [ 4 ^ ESC [ 4 @ + Prior ESC [ 5 ~ I ESC [ 5 ^ ESC [ 5 @ + Next ESC [ 6 ~ I ESC [ 6 ^ ESC [ 6 @ + Home ESC [ 7 ~ ESC [ 7 $ ESC [ 7 ^ ESC [ 7 @ + End ESC [ 8 ~ ESC [ 8 $ ESC [ 8 ^ ESC [ 8 @ + Delete ESC [ 3 ~ ESC [ 3 $ ESC [ 3 ^ ESC [ 3 @ + F1 ESC [ 11 ~ ESC [ 23 ~ ESC [ 11 ^ ESC [ 23 ^ + F2 ESC [ 12 ~ ESC [ 24 ~ ESC [ 12 ^ ESC [ 24 ^ + F3 ESC [ 13 ~ ESC [ 25 ~ ESC [ 13 ^ ESC [ 25 ^ + F4 ESC [ 14 ~ ESC [ 26 ~ ESC [ 14 ^ ESC [ 26 ^ + F5 ESC [ 15 ~ ESC [ 28 ~ ESC [ 15 ^ ESC [ 28 ^ + F6 ESC [ 17 ~ ESC [ 29 ~ ESC [ 17 ^ ESC [ 29 ^ + F7 ESC [ 18 ~ ESC [ 31 ~ ESC [ 18 ^ ESC [ 31 ^ + F8 ESC [ 19 ~ ESC [ 32 ~ ESC [ 19 ^ ESC [ 32 ^ + F9 ESC [ 20 ~ ESC [ 33 ~ ESC [ 20 ^ ESC [ 33 ^ + F10 ESC [ 21 ~ ESC [ 34 ~ ESC [ 21 ^ ESC [ 34 ^ + F11 ESC [ 23 ~ ESC [ 23 $ ESC [ 23 ^ ESC [ 23 @ + F12 ESC [ 24 ~ ESC [ 24 $ ESC [ 24 ^ ESC [ 24 @ + F13 ESC [ 25 ~ ESC [ 25 $ ESC [ 25 ^ ESC [ 25 @ + F14 ESC [ 26 ~ ESC [ 26 $ ESC [ 26 ^ ESC [ 26 @ + F15 (Help) ESC [ 28 ~ ESC [ 28 $ ESC [ 28 ^ ESC [ 28 @ + F16 (Menu) ESC [ 29 ~ ESC [ 29 $ ESC [ 29 ^ ESC [ 29 @ + F17 ESC [ 31 ~ ESC [ 31 $ ESC [ 31 ^ ESC [ 31 @ + F18 ESC [ 32 ~ ESC [ 32 $ ESC [ 32 ^ ESC [ 32 @ + F19 ESC [ 33 ~ ESC [ 33 $ ESC [ 33 ^ ESC [ 33 @ + F20 ESC [ 34 ~ ESC [ 34 $ ESC [ 34 ^ ESC [ 34 @ + B + Up ESC [ A ESC [ a ESC O a ESC O A + Down ESC [ B ESC [ b ESC O b ESC O B + Right ESC [ C ESC [ c ESC O c ESC O C + Left ESC [ D ESC [ d ESC O d ESC O D + KP_Enter ^M ESC O M + KP_F1 ESC O P ESC O P + KP_F2 ESC O Q ESC O Q + KP_F3 ESC O R ESC O R + KP_F4 ESC O S ESC O S + XK_KP_Multiply * ESC O j + XK_KP_Add + ESC O k + XK_KP_Separator , ESC O l + XK_KP_Subtract - ESC O m + XK_KP_Decimal . ESC O n + XK_KP_Divide / ESC O o + XK_KP_0 0 ESC O p + XK_KP_1 1 ESC O q + XK_KP_2 2 ESC O r + XK_KP_3 3 ESC O s + XK_KP_4 4 ESC O t + XK_KP_5 5 ESC O u + XK_KP_6 6 ESC O v + XK_KP_7 7 ESC O w + XK_KP_8 8 ESC O x + XK_KP_9 9 ESC O y -=back +=end table -X +=head1 CONFIGURE OPTIONS -=head2 Command Summary +General hint: if you get compile errors, then likely your configuration +hasn't been tested well. Either try with C<--enable-everything> or use +the default configuration (i.e. no C<--enable-xxx> or C<--disable-xxx> +switches). Of course, you should always report when a combination doesn't +work, so it can be fixed. Marc Lehmann . -A short summary of the most I commands: +All =over 4 -=item [menu:name] - -use an existing named menuBar or start a new one - -=item [menu] - -use the current menuBar - -=item [title:string] - -set menuBar title - -=item [done] - -set menu access to readonly and, if reading from a file, signal EOF - -=item [done:name] - -if reading from a file using [read:file;name] signal EOF +=item --enable-everything -=item [rm:name] +Add (or remove) support for all non-multichoice options listed +in C<./configure --help>, except for C<--enable-assert> and +C<--enable-256-color>. -remove named menuBar(s) +You can specify this and then disable options you do not like by +I this with the appropriate C<--disable-...> arguments, +or you can start with a minimal configuration by specifying +C<--disable-everything> and than adding just the C<--enable-...> arguments +you want. -=item [rm] [rm:] +=item --enable-xft (default: enabled) -remove current menuBar +Add support for Xft (anti-aliases, among others) fonts. Xft fonts are +slower and require lots of memory, but as long as you don't use them, you +don't pay for them. -=item [rm*] [rm:*] +=item --enable-font-styles (default: on) -remove all menuBar(s) +Add support for B, I and B<< I >> font +styles. The fonts can be set manually or automatically. -=item [swap] +=item --with-codesets=NAME,... (default: all) -swap top two menuBars +Compile in support for additional codeset (encoding) groups (C, C +are always compiled in, which includes most 8-bit character sets). These +codeset tables are used for driving X11 core fonts, they are not required +for Xft fonts, although having them compiled in lets rxvt-unicode choose +replacement fonts more intelligently. Compiling them in will make your +binary bigger (all of together cost about 700kB), but it doesn't increase +memory usage unless you use a font requiring one of these encodings. -=item [prev] +=begin table -access the previous menuBar + all all available codeset groups + zh common chinese encodings + zh_ext rarely used but very big chinese encodings + jp common japanese encodings + jp_ext rarely used but big japanese encodings + kr korean encodings -=item [next] +=end table -access the next menuBar +=item --enable-xim (default: on) -=item [show] +Add support for XIM (X Input Method) protocol. This allows using +alternative input methods (e.g. kinput2) and will also correctly +set up the input for people using dead keys or compose keys. -map menuBar +=item --enable-unicode3 (default: off) -=item [hide] +Recommended to stay off unless you really need non-BMP characters. -unmap menuBar +Enable direct support for displaying unicode codepoints above +65535 (the basic multilingual page). This increases storage +requirements per character from 2 to 4 bytes. X11 fonts do not yet +support these extra characters, but Xft does. -=item [pixmap;file] +Please note that rxvt-unicode can store unicode code points >65535 +even without this flag, but the number of such characters is +limited to a few thousand (shared with combining characters, +see next switch), and right now rxvt-unicode cannot display them +(input/output and cut&paste still work, though). -=item [pixmap;file;scaling] +=item --enable-combining (default: on) -set a background pixmap +Enable automatic composition of combining characters into +composite characters. This is required for proper viewing of text +where accents are encoded as separate unicode characters. This is +done by using precomposited characters when available or creating +new pseudo-characters when no precomposed form exists. -=item [read:file] +Without --enable-unicode3, the number of additional precomposed +characters is somewhat limited (the 6400 private use characters will be +(ab-)used). With --enable-unicode3, no practical limit exists. -=item [read:file;name] +This option will also enable storage (but not display) of characters +beyond plane 0 (>65535) when --enable-unicode3 was not specified. -read in a menu from a file +The combining table also contains entries for arabic presentation forms, +but these are not currently used. Bug me if you want these to be used (and +tell me how these are to be used...). -=item [dump] +=item --enable-fallback(=CLASS) (default: Rxvt) -dump out all menuBars to /tmp/rxvt-PID +When reading resource settings, also read settings for class CLASS. To +disable resource fallback use --disable-fallback. -=item / +=item --with-res-name=NAME (default: urxvt) -access menuBar top level +Use the given name as default application name when +reading resources. Specify --with-res-name=rxvt to replace rxvt. -=item ./ +=item --with-res-class=CLASS (default: URxvt) -=item ../ +Use the given class as default application class +when reading resources. Specify --with-res-class=Rxvt to replace +rxvt. -=item ../../ +=item --enable-utmp (default: on) -access current or parent menu level +Write user and tty to utmp file (used by programs like F) at +start of rxvt execution and delete information when rxvt exits. -=item /path/menu +=item --enable-wtmp (default: on) -add/access menu +Write user and tty to wtmp file (used by programs like F) at +start of rxvt execution and write logout when rxvt exits. This +option requires --enable-utmp to also be specified. -=item /path/{-} +=item --enable-lastlog (default: on) -add separator +Write user and tty to lastlog file (used by programs like +F) at start of rxvt execution. This option requires +--enable-utmp to also be specified. -=item /path/{item}{rtext} action +=item --enable-afterimage (default: on) -add/alter menu item +Add support for libAfterImage to be used for background +images. It adds support for many file formats including JPG, PNG, +SVG, TIFF, GIF, XPM, BMP, ICO, XCF, TGA and AfterStep image XML +(L). -=item -/* +Note that with this option enabled, @@RXVT_NAME@@'s memory footprint might +increase by a few megabytes even if no extra features are used (mostly due +to third-party libraries used by libAI). Memory footprint may somewhat be +lowered if libAfterImage is configured without support for SVG. -remove all menus from the menuBar +=item --enable-pixbuf (default: off) -=item -/path/menu +Add support for GDK-PixBuf to be used for background images. +It adds support for many file formats including JPG, PNG, +TIFF, GIF, XPM, BMP, ICO and TGA. -remove menu items, separators and submenus from menu +=item --enable-transparency (default: on) -=item -/path/menu +Add support for using the root pixmap as background to simulate transparency. +Note that blur and blend effects depend on libAfterImage or on +libXrender and on the availability of the RENDER extension in the X +server. -remove menu +=item --enable-fading (default: on) -=item -/path/{item} +Add support for fading the text when focus is lost. -remove item +=item --enable-rxvt-scroll (default: on) -=item -/path/{-} +Add support for the original rxvt scrollbar. -remove separator +=item --enable-next-scroll (default: on) -=item BeginRightLeftUpDownEnd +Add support for a NeXT-like scrollbar. -menu quick arrows +=item --enable-xterm-scroll (default: on) -=back -X +Add support for an Xterm-like scrollbar. -=head1 XPM +=item --disable-backspace-key -For the XPM XTerm escape sequence B<< C >> then value -of B<< C >> can be the name of the background pixmap followed by a -sequence of scaling/positioning commands separated by semi-colons. The -scaling/positioning commands are as follows: +Removes any handling of the backspace key by us - let the X server do it. -=over 4 +=item --disable-delete-key -=item query scale/position +Removes any handling of the delete key by us - let the X server +do it. -B +=item --disable-resources -=item change scale and position +Removes any support for resource checking. -B +=item --disable-swapscreen -B (== B) +Remove support for secondary/swap screen. -B (same as B) +=item --enable-frills (default: on) -B (same as B) +Add support for many small features that are not essential but nice to +have. Normally you want this, but for very small binaries you may want to +disable this. -B (same as B) +A non-exhaustive list of features enabled by C<--enable-frills> (possibly +in combination with other switches) is: -B (same as B) + MWM-hints + EWMH-hints (pid, utf8 names) and protocols (ping) + urgency hint + separate underline colour (-underlineColor) + settable border widths and borderless switch (-w, -b, -bl) + visual depth selection (-depth) + settable extra linespacing (-lsp) + iso-14755 5.1 (basic) support + tripleclickwords (-tcw) + settable insecure mode (-insecure) + keysym remapping support + cursor blinking and underline cursor (-bc, -uc) + XEmbed support (-embed) + user-pty (-pty-fd) + hold on exit (-hold) + compile in built-in block graphics + skip builtin block graphics (-sbg) + separate highlight colour (-highlightColor, -highlightTextColor) + extended mouse reporting modes (1005 and 1015). -=item change position (absolute) +It also enables some non-essential features otherwise disabled, such as: -B<=+X+Y> + some round-trip time optimisations + nearest colour allocation on pseudocolor screens + UTF8_STRING support for selection + sgr modes 90..97 and 100..107 + backindex and forwardindex escape sequences + view change/zero scrollback escape sequences + locale switching escape sequence + window op and some xterm/OSC escape sequences + rectangular selections + trailing space removal for selections + verbose X error handling -B<=+X> (same as B<=+X+Y>) +=item --enable-iso14755 (default: on) -=item change position (relative) +Enable extended ISO 14755 support (see @@RXVT_NAME@@(1)). +Basic support (section 5.1) is enabled by C<--enable-frills>, while +support for 5.2, 5.3 and 5.4 is enabled with this switch. -B<+X+Y> +=item --enable-keepscrolling (default: on) -B<+X> (same as B<+X+Y>) +Add support for continual scrolling of the display when you hold +the mouse button down on a scrollbar arrow. -=item rescale (relative) +=item --enable-selectionscrolling (default: on) -B -> B +Add support for scrolling when the selection moves to the top or +bottom of the screen. -B<0xH> -> B +=item --enable-mousewheel (default: on) -=back +Add support for scrolling via mouse wheel or buttons 4 & 5. -For example: +=item --enable-slipwheeling (default: on) -=over 4 +Add support for continual scrolling (using the mouse wheel as an +accelerator) while the control key is held down. This option +requires --enable-mousewheel to also be specified. -=item B<\E]20;funky\a> +=item --enable-smart-resize (default: off) -load B as a tiled image +Add smart growth/shrink behaviour when resizing. +This should keep the window corner which is closest to a corner of +the screen in a fixed position. -=item B<\E]20;mona;100\a> +=item --enable-text-blink (default: on) -load B with a scaling of 100% - -=item B<\E]20;;200;?\a> - -rescale the current pixmap to 200% and display the image geometry in -the title - -=back -X +Add support for blinking text. -=head1 Mouse Reporting +=item --enable-pointer-blank (default: on) -=over 4 +Add support to have the pointer disappear when typing or inactive. -=item B<< C<< ESC [ M >> >> +=item --enable-perl (default: on) -report mouse position +Enable an embedded perl interpreter. See the B<@@RXVT_NAME@@perl(3)> +manpage for more info on this feature, or the files in F +for the extensions that are installed by default. +The perl interpreter that is used can be specified via the C +environment variable when running configure. Even when compiled in, +perl will I be initialised when all extensions have been disabled +C<-pe "" --perl-ext-common "">, so it should be safe to enable from a +resource standpoint. -=back +=item --enable-assert (default: off) -The lower 2 bits of B<< C<< >> >> indicate the button: +Enables the assertions in the code, normally disabled. This switch is only +useful when developing rxvt-unicode. -=over 4 +=item --enable-256-color (default: off) -=item Button = B<< C<< ( - SPACE) & 3 >> >> +Force use of so-called 256 colour mode, to work around buggy applications +that do not support termcap/terminfo, or simply improve support for +applications hardcoding the xterm 256 colour table. -=begin table +This switch breaks termcap/terminfo compatibility to C, +and consequently sets C to C by default +(F contains termcap/terminfo definitions for both). - 0 Button1 pressed - 1 Button2 pressed - 2 Button3 pressed - 3 button released (X11 mouse report) +It also results in higher memory usage and can slow down @@RXVT_NAME@@ +dramatically when more than six fonts are in use by a terminal instance. -=end table +=item --with-afterimage-config=DIR -=back +Look for the libAfterImage config script in DIR. -The upper bits of B<< C<< >> >> indicate the modifiers when the -button was pressed and are added together (X11 mouse report only): +=item --with-name=NAME (default: urxvt) -=over 4 +Set the basename for the installed binaries, resulting +in C, C etc.). Specify C<--with-name=rxvt> to replace with +C. -=item State = B<< C<< ( - SPACE) & 60 >> >> +=item --with-term=NAME (default: rxvt-unicode) -=begin table +Change the environmental variable for the terminal to NAME. - 4 Shift - 8 Meta - 16 Control - 32 Double Click I<(Rxvt extension)> +=item --with-terminfo=PATH -=end table +Change the environmental variable for the path to the terminfo tree to +PATH. -Col = B<< C<< - SPACE >> >> +=item --with-x -Row = B<< C<< - SPACE >> >> +Use the X Window System (pretty much default, eh?). =back -X - -=head1 ISO 14755 support - -Partial ISO 14755-support is implemented. that means that pressing -section 5.1: Control and Shift together enters unicode input -mode. Entering hex digits composes a Unicode character, pressing space or -releasing the modifiers commits the keycode and every other key cancels -the current input character. - -section 5.2: Pressing and immediately releasing Control and Shift together -enters keycap entry mode for the next key: pressing a function key (tab, -return etc..) will enter the unicode character corresponding to the given -key. +=head1 AUTHORS -=head1 Key Codes - -Note: B + B-B generates B-B - -For the keypad, use B to temporarily override Application-Keypad -setting use B to toggle Application-Keypad setting if -B is off, toggle Application-Keypad setting. Also note that -values of B, B, B may have been compiled differently on -your system. - -=begin table - - B B B B - Tab ^I ESC [ Z ^I ESC [ Z - BackSpace ^H ^? ^? ^? - Find ESC [ 1 ~ ESC [ 1 $ ESC [ 1 ^ ESC [ 1 @ - Insert ESC [ 2 ~ I ESC [ 2 ^ ESC [ 2 @ - Execute ESC [ 3 ~ ESC [ 3 $ ESC [ 3 ^ ESC [ 3 @ - Select ESC [ 4 ~ ESC [ 4 $ ESC [ 4 ^ ESC [ 4 @ - Prior ESC [ 5 ~ I ESC [ 5 ^ ESC [ 5 @ - Next ESC [ 6 ~ I ESC [ 6 ^ ESC [ 6 @ - Home ESC [ 7 ~ ESC [ 7 $ ESC [ 7 ^ ESC [ 7 @ - End ESC [ 8 ~ ESC [ 8 $ ESC [ 8 ^ ESC [ 8 @ - Delete ESC [ 3 ~ ESC [ 3 $ ESC [ 3 ^ ESC [ 3 @ - F1 ESC [ 11 ~ ESC [ 23 ~ ESC [ 11 ^ ESC [ 23 ^ - F2 ESC [ 12 ~ ESC [ 24 ~ ESC [ 12 ^ ESC [ 24 ^ - F3 ESC [ 13 ~ ESC [ 25 ~ ESC [ 13 ^ ESC [ 25 ^ - F4 ESC [ 14 ~ ESC [ 26 ~ ESC [ 14 ^ ESC [ 26 ^ - F5 ESC [ 15 ~ ESC [ 28 ~ ESC [ 15 ^ ESC [ 28 ^ - F6 ESC [ 17 ~ ESC [ 29 ~ ESC [ 17 ^ ESC [ 29 ^ - F7 ESC [ 18 ~ ESC [ 31 ~ ESC [ 18 ^ ESC [ 31 ^ - F8 ESC [ 19 ~ ESC [ 32 ~ ESC [ 19 ^ ESC [ 32 ^ - F9 ESC [ 20 ~ ESC [ 33 ~ ESC [ 20 ^ ESC [ 33 ^ - F10 ESC [ 21 ~ ESC [ 34 ~ ESC [ 21 ^ ESC [ 34 ^ - F11 ESC [ 23 ~ ESC [ 23 $ ESC [ 23 ^ ESC [ 23 @ - F12 ESC [ 24 ~ ESC [ 24 $ ESC [ 24 ^ ESC [ 24 @ - F13 ESC [ 25 ~ ESC [ 25 $ ESC [ 25 ^ ESC [ 25 @ - F14 ESC [ 26 ~ ESC [ 26 $ ESC [ 26 ^ ESC [ 26 @ - F15 (Help) ESC [ 28 ~ ESC [ 28 $ ESC [ 28 ^ ESC [ 28 @ - F16 (Menu) ESC [ 29 ~ ESC [ 29 $ ESC [ 29 ^ ESC [ 29 @ - F17 ESC [ 31 ~ ESC [ 31 $ ESC [ 31 ^ ESC [ 31 @ - F18 ESC [ 32 ~ ESC [ 32 $ ESC [ 32 ^ ESC [ 32 @ - F19 ESC [ 33 ~ ESC [ 33 $ ESC [ 33 ^ ESC [ 33 @ - F20 ESC [ 34 ~ ESC [ 34 $ ESC [ 34 ^ ESC [ 34 @ - B - Up ESC [ A ESC [ a ESC O a ESC O A - Down ESC [ B ESC [ b ESC O b ESC O B - Right ESC [ C ESC [ c ESC O c ESC O C - Left ESC [ D ESC [ d ESC O d ESC O D - KP_Enter ^M ESC O M - KP_F1 ESC O P ESC O P - KP_F2 ESC O Q ESC O Q - KP_F3 ESC O R ESC O R - KP_F4 ESC O S ESC O S - XK_KP_Multiply * ESC O j - XK_KP_Add + ESC O k - XK_KP_Separator , ESC O l - XK_KP_Subtract - ESC O m - XK_KP_Decimal . ESC O n - XK_KP_Divide / ESC O o - XK_KP_0 0 ESC O p - XK_KP_1 1 ESC O q - XK_KP_2 2 ESC O r - XK_KP_3 3 ESC O s - XK_KP_4 4 ESC O t - XK_KP_5 5 ESC O u - XK_KP_6 6 ESC O v - XK_KP_7 7 ESC O w - XK_KP_8 8 ESC O x - XK_KP_9 9 ESC O y - -=end table +Marc Lehmann converted this document to pod and +reworked it from the original Rxvt documentation, which was done by Geoff +Wing , who in turn used the XTerm documentation and other +sources.