From a13900490c816a2570522c42cb807615cc943cdd Mon Sep 17 00:00:00 2001 From: root Date: Sat, 14 May 2016 08:28:25 +0000 Subject: 9.22-maybe --- doc/rxvt.7.man.in | 2750 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 2750 insertions(+) create mode 100644 doc/rxvt.7.man.in (limited to 'doc/rxvt.7.man.in') diff --git a/doc/rxvt.7.man.in b/doc/rxvt.7.man.in new file mode 100644 index 0000000..14b0c0a --- /dev/null +++ b/doc/rxvt.7.man.in @@ -0,0 +1,2750 @@ +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +. ds C` +. ds C' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX +.. +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} +.\} +.rr rF +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "@@RXVT_NAME@@ 7" +.TH @@RXVT_NAME@@ 7 "2016-01-23" "@@RXVT_VERSION@@" "RXVT-UNICODE" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +RXVT REFERENCE \- FAQ, command sequences and other background information +.SH "SYNOPSIS" +.IX Header "SYNOPSIS" +.Vb 2 +\& # set a new font set +\& printf \*(Aq\e33]50;%s\e007\*(Aq 9x15,xft:Kochi" Mincho" +\& +\& # change the locale and tell rxvt\-unicode about it +\& export LC_CTYPE=ja_JP.EUC\-JP; printf "\e33]701;$LC_CTYPE\e007" +\& +\& # set window title +\& printf \*(Aq\e33]2;%s\e007\*(Aq "new window title" +.Ve +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +This document contains the \s-1FAQ,\s0 the \s-1RXVT TECHNICAL REFERENCE\s0 documenting +all escape sequences, and other background information. +.PP +The newest version of this document is also available on the World Wide Web at +. +.PP +The main manual page for @@RXVT_NAME@@ itself is available at +. +.SH "RXVT\-UNICODE/URXVT FREQUENTLY ASKED QUESTIONS" +.IX Header "RXVT-UNICODE/URXVT FREQUENTLY ASKED QUESTIONS" +.SS "Meta, Features & Commandline Issues" +.IX Subsection "Meta, Features & Commandline Issues" +\fIMy question isn't answered here, can I ask a human?\fR +.IX Subsection "My question isn't answered here, can I ask a human?" +.PP +Before sending me mail, you could go to \s-1IRC: \s0\f(CW\*(C`irc.freenode.net\*(C'\fR, +channel \f(CW\*(C`#rxvt\-unicode\*(C'\fR has some rxvt-unicode enthusiasts that might be +interested in learning about new and exciting problems (but not FAQs :). +.PP +\fII use Gentoo, and I have a problem...\fR +.IX Subsection "I use Gentoo, and I have a problem..." +.PP +There are two big problems with Gentoo Linux: first, 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, it should be called Gentoo GNU/Linux. +.PP +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. +.PP +\fIDoes it support tabs, can I have a tabbed rxvt-unicode?\fR +.IX Subsection "Does it support tabs, can I have a tabbed rxvt-unicode?" +.PP +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: +.PP +.Vb 1 +\& @@URXVT_NAME@@ \-pe tabbed +\& +\& URxvt.perl\-ext\-common: default,tabbed +.Ve +.PP +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 \fIdoc/rxvt\-tabbed\fR or +the upcoming \f(CW\*(C`Gtk2::URxvt\*(C'\fR perl module, which features a tabbed urxvt +(murxvt) terminal as an example embedding application. +.PP +\fIHow do I know which rxvt-unicode version I'm using?\fR +.IX Subsection "How do I know which rxvt-unicode version I'm using?" +.PP +The version number is displayed with the usage (\-h). Also the escape +sequence \f(CW\*(C`ESC [ 8 n\*(C'\fR sets the window title to the version number. When +using the @@URXVT_NAME@@c client, the version displayed is that of the +daemon. +.PP +\fIRxvt-unicode uses gobs of memory, how can I reduce that?\fR +.IX Subsection "Rxvt-unicode uses gobs of memory, how can I reduce that?" +.PP +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. +.PP +Also, many people (me included) like large windows and even larger +scrollback buffers: Without \f(CW\*(C`\-\-enable\-unicode3\*(C'\fR, 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 \f(CW\*(C`\-\-enable\-unicode3\*(C'\fR it gets worse, as +rxvt-unicode then uses 8 bytes per screen cell. +.PP +\fIHow can I start @@URXVT_NAME@@d in a race-free way?\fR +.IX Subsection "How can I start @@URXVT_NAME@@d in a race-free way?" +.PP +Try \f(CW\*(C`@@URXVT_NAME@@d \-f \-o\*(C'\fR, which tells @@URXVT_NAME@@d to open the +display, create the listening socket and then fork. +.PP +\fIHow can I start @@URXVT_NAME@@d automatically when I run @@URXVT_NAME@@c?\fR +.IX Subsection "How can I start @@URXVT_NAME@@d automatically when I run @@URXVT_NAME@@c?" +.PP +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: +.PP +.Vb 6 +\& #!/bin/sh +\& @@URXVT_NAME@@c "$@" +\& if [ $? \-eq 2 ]; then +\& @@URXVT_NAME@@d \-q \-o \-f +\& @@URXVT_NAME@@c "$@" +\& fi +.Ve +.PP +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. +.PP +\fIHow do I distinguish whether I'm running rxvt-unicode or a regular xterm? I need this to decide about setting colours etc.\fR +.IX Subsection "How do I distinguish whether I'm running rxvt-unicode or a regular xterm? I need this to decide about setting colours etc." +.PP +The original rxvt and rxvt-unicode always export the variable \*(L"\s-1COLORTERM\*(R",\s0 +so you can check and see if that is set. Note that several programs, \s-1JED,\s0 +slrn, Midnight Commander automatically check this variable to decide +whether or not to use colour. +.PP +\fIHow do I set the correct, full \s-1IP\s0 address for the \s-1DISPLAY\s0 variable?\fR +.IX Subsection "How do I set the correct, full IP address for the DISPLAY variable?" +.PP +If you've compiled rxvt-unicode with \s-1DISPLAY_IS_IP\s0 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 \s-1ESCZ_ANSWER \s0(as assumed in these snippets) then +the \s-1COLORTERM\s0 variable can be used to distinguish rxvt-unicode from a +regular xterm. +.PP +Courtesy of Chuck Blake with the following shell script +snippets: +.PP +.Vb 12 +\& # Bourne/Korn/POSIX family of shells: +\& [ ${TERM:\-foo} = foo ] && TERM=xterm # assume an xterm if we don\*(Aqt know +\& if [ ${TERM:\-foo} = xterm ]; then +\& stty \-icanon \-echo min 0 time 15 # see if enhanced rxvt or not +\& printf "\eeZ" +\& read term_id +\& stty icanon echo +\& if [ ""${term_id} = \*(Aq^[[?1;2C\*(Aq \-a ${DISPLAY:\-foo} = foo ]; then +\& printf \*(Aq\ee[7n\*(Aq # query the rxvt we are in for the DISPLAY string +\& read DISPLAY # set it in our local shell +\& fi +\& fi +.Ve +.PP +\fIHow do I compile the manual pages on my own?\fR +.IX Subsection "How do I compile the manual pages on my own?" +.PP +You need to have a recent version of perl installed as \fI/usr/bin/perl\fR, +one that comes with \fIpod2man\fR, \fIpod2text\fR and \fIpod2xhtml\fR (from +\&\fIPod::Xhtml\fR). Then go to the doc subdirectory and enter \f(CW\*(C`make alldoc\*(C'\fR. +.PP +\fIIsn't rxvt-unicode supposed to be small? Don't all those features bloat?\fR +.IX Subsection "Isn't rxvt-unicode supposed to be small? Don't all those features bloat?" +.PP +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 (\s-1RSS\s0) after startup. Even +with \f(CW\*(C`\-\-disable\-everything\*(C'\fR, this comparison is a bit unfair, as many +features unique to urxvt (locale, encoding conversion, iso14755 etc.) are +already in use in this mode. +.PP +.Vb 3 +\& text data bss drs rss filename +\& 98398 1664 24 15695 1824 rxvt \-\-disable\-everything +\& 188985 9048 66616 18222 1788 urxvt \-\-disable\-everything +.Ve +.PP +When you \f(CW\*(C`\-\-enable\-everything\*(C'\fR (which \fIis\fR 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. +.PP +.Vb 3 +\& text data bss drs rss filename +\& 163431 2152 24 20123 2060 rxvt \-\-enable\-everything +\& 1035683 49680 66648 29096 3680 urxvt \-\-enable\-everything +.Ve +.PP +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 \s-1BSS\s0 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 \s-1RSS.\s0 Xft indeed is responsible for a lot of \s-1RSS\s0 even when +not used. +.PP +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. +.PP +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*. +.PP +\fIWhy \*(C+, isn't that unportable/bloated/uncool?\fR +.IX Subsection "Why , isn't that unportable/bloated/uncool?" +.PP +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+. +.PP +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. +.PP +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 \s-1GCC.\s0 Here is what rxvt links against on my +system with a minimal config: +.PP +.Vb 4 +\& 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) +.Ve +.PP +And here is rxvt-unicode: +.PP +.Vb 5 +\& 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) +.Ve +.PP +No large bloated libraries (of course, none were linked in statically), +except maybe libX11 :) +.SS "Rendering, Font & Look and Feel Issues" +.IX Subsection "Rendering, Font & Look and Feel Issues" +\fII can't get transparency working, what am I doing wrong?\fR +.IX Subsection "I can't get transparency working, what am I doing wrong?" +.PP +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. +.PP +Here are four ways to get transparency. \fBDo\fR read the manpage and option +descriptions for the programs mentioned and rxvt-unicode. Really, do it! +.PP +1. Use transparent mode: +.PP +.Vb 2 +\& Esetroot wallpaper.jpg +\& @@URXVT_NAME@@ \-tr \-tint red \-sh 40 +.Ve +.PP +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 \s-1ESETROOT_PMAP_ID\s0 property. Compatible programs +are Esetroot, hsetroot and feh. +.PP +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: +.PP +.Vb 2 +\& convert wallpaper.jpg \-blur 20x20 \-modulate 30 background.jpg +\& @@URXVT_NAME@@ \-pixmap "background.jpg;:root" +.Ve +.PP +That works. If you think it doesn't, you lack GDK-PixBuf support, or you +are unable to read. +.PP +3. Use an \s-1ARGB\s0 visual: +.PP +.Vb 1 +\& @@URXVT_NAME@@ \-depth 32 \-fg grey90 \-bg rgba:0000/0000/4444/cccc +.Ve +.PP +This requires \s-1XFT\s0 support, and the support of your X\-server. If that +doesn't work for you, blame Xorg and Keith Packard. \s-1ARGB\s0 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 \s-1WM\s0 has the required kludges in place. +.PP +4. Use xcompmgr and let it do the job: +.PP +.Vb 2 +\& xprop \-frame \-f _NET_WM_WINDOW_OPACITY 32c \e +\& \-set _NET_WM_WINDOW_OPACITY 0xc0000000 +.Ve +.PP +Then click on a window you want to make transparent. Replace \f(CW0xc0000000\fR +by other values to change the degree of opacity. If it doesn't work and +your server crashes, you got to keep the pieces. +.PP +\fIWhy does rxvt-unicode sometimes leave pixel droppings?\fR +.IX Subsection "Why does rxvt-unicode sometimes leave pixel droppings?" +.PP +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 \*(L"a bit\*(R" too wide a special +\&\*(L"careful\*(R" rendering mode is used that redraws adjacent characters. +.PP +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). +.PP +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 \f(CW\*(C`\-lsp\*(C'\fR option to give the font more height. If that doesn't work, you +might be forced to use a different font. +.PP +All of this is not a problem when using X11 core fonts, as their bounding +box data is correct. +.PP +\fIHow can I keep rxvt-unicode from using reverse video so much?\fR +.IX Subsection "How can I keep rxvt-unicode from using reverse video so much?" +.PP +First of all, make sure you are running with the right terminal settings +(\f(CW\*(C`TERM=rxvt\-unicode\*(C'\fR), 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: +.PP +.Vb 2 +\& URxvt.colorBD: white +\& URxvt.colorIT: green +.Ve +.PP +\fISome programs assume totally weird colours (red instead of blue), how can I fix that?\fR +.IX Subsection "Some programs assume totally weird colours (red instead of blue), how can I fix that?" +.PP +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. +.PP +In the meantime, you can either edit your \f(CW\*(C`rxvt\-unicode\*(C'\fR terminfo +definition to only claim 8 colour support or use \f(CW\*(C`TERM=rxvt\*(C'\fR, which will +fix colours but keep you from using other rxvt-unicode features. +.PP +\fICan I switch the fonts at runtime?\fR +.IX Subsection "Can I switch the fonts at runtime?" +.PP +Yes, using an escape sequence. Try something like this, which has the same +effect as using the \f(CW\*(C`\-fn\*(C'\fR switch, and takes effect immediately: +.PP +.Vb 1 +\& printf \*(Aq\e33]50;%s\e007\*(Aq "9x15bold,xft:Kochi Gothic" +.Ve +.PP +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. +.PP +You can think of this as a kind of manual \s-1ISO\-2022\s0 switching. +.PP +\fIWhy do italic characters look as if clipped?\fR +.IX Subsection "Why do italic characters look as if clipped?" +.PP +Many fonts have difficulties with italic characters and hinting. For +example, the otherwise very nicely hinted font \f(CW\*(C`xft:Bitstream Vera Sans +Mono\*(C'\fR completely fails in its italic face. A workaround might be to +enable freetype autohinting, i.e. like this: +.PP +.Vb 2 +\& URxvt.italicFont: xft:Bitstream Vera Sans Mono:italic:autohint=true +\& URxvt.boldItalicFont: xft:Bitstream Vera Sans Mono:bold:italic:autohint=true +.Ve +.PP +\fICan I speed up Xft rendering somehow?\fR +.IX Subsection "Can I speed up Xft rendering somehow?" +.PP +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 \f(CW\*(C`:antialias=false\*(C'\fR), which saves lots of +memory and also speeds up rendering considerably. +.PP +\fIRxvt-unicode doesn't seem to anti-alias its fonts, what is wrong?\fR +.IX Subsection "Rxvt-unicode doesn't seem to anti-alias its fonts, what is wrong?" +.PP +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. +.PP +If you want antialiasing, you have to specify the fonts manually. +.PP +\fIWhat's with this bold/blink stuff?\fR +.IX Subsection "What's with this bold/blink stuff?" +.PP +If no bold colour is set via \f(CW\*(C`colorBD:\*(C'\fR, bold will invert text using the +standard foreground colour. +.PP +For the standard background colour, blinking will actually make +the text blink when compiled with \f(CW\*(C`\-\-enable\-text\-blink\*(C'\fR. Without +\&\f(CW\*(C`\-\-enable\-text\-blink\*(C'\fR, the blink attribute will be ignored. +.PP +On \s-1ANSI\s0 colours, bold/blink attributes are used to set high-intensity +foreground/background colours. +.PP +color0\-7 are the low-intensity colours. +.PP +color8\-15 are the corresponding high-intensity colours. +.PP +\fII don't like the screen colours. How do I change them?\fR +.IX Subsection "I don't like the screen colours. How do I change them?" +.PP +You can change the screen colours at run-time using \fI~/.Xdefaults\fR +resources (or as long-options). +.PP +Here are values that are supposed to resemble a \s-1VGA\s0 screen, +including the murky brown that passes for low-intensity yellow: +.PP +.Vb 8 +\& 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 +.Ve +.PP +And here is a more complete set of non-standard colours. +.PP +.Vb 10 +\& 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 +.Ve +.PP +They have been described (not by me) as \*(L"pretty girly\*(R". +.PP +\fIWhy do some characters look so much different than others?\fR +.IX Subsection "Why do some characters look so much different than others?" +.PP +See next entry. +.PP +\fIHow does rxvt-unicode choose fonts?\fR +.IX Subsection "How does rxvt-unicode choose fonts?" +.PP +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. +.PP +\&\fBrxvt-unicode\fR 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. +.PP +In that case, select a font of your taste and add it to the font list, +e.g.: +.PP +.Vb 1 +\& @@URXVT_NAME@@ \-fn basefont,font2,font3... +.Ve +.PP +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. +.PP +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. +.PP +\fIWhy do some chinese characters look so different than others?\fR +.IX Subsection "Why do some chinese characters look so different than others?" +.PP +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. +.PP +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. +.PP +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). +.PP +Until then, you might get away with switching fonts at runtime (see \*(L"Can +I switch the fonts at runtime?\*(R" later in this document). +.PP +\fIHow can I make mplayer display video correctly?\fR +.IX Subsection "How can I make mplayer display video correctly?" +.PP +We are working on it, in the meantime, as a workaround, use something like: +.PP +.Vb 1 +\& @@URXVT_NAME@@ \-b 600 \-geometry 20x1 \-e sh \-c \*(Aqmplayer \-wid $WINDOWID file...\*(Aq +.Ve +.PP +\fIWhy is the cursor now blinking in emacs/vi/...?\fR +.IX Subsection "Why is the cursor now blinking in emacs/vi/...?" +.PP +This is likely caused by your editor/program's use of the \f(CW\*(C`cvvis\*(C'\fR +terminfo capability. Emacs uses it by default, as well as some versions of +vi and possibly other programs. +.PP +In emacs, you can switch that off by adding this to your \f(CW\*(C`.emacs\*(C'\fR file: +.PP +.Vb 1 +\& (setq visible\-cursor nil) +.Ve +.PP +For other programs, if they do not have an option, your have to remove the +\&\f(CW\*(C`cvvis\*(C'\fR capability from the terminfo description. +.PP +When @@URXVT_NAME@@ first added the blinking cursor option, it didn't +add a \f(CW\*(C`cvvis\*(C'\fR capability, which served no purpose before. Version 9.21 +introduced \f(CW\*(C`cvvis\*(C'\fR (and the ability to control blinking independent of +cursor shape) for compatibility with other terminals, which traditionally +use a blinking cursor for \f(CW\*(C`cvvis\*(C'\fR. This also reflects the intent of +programs such as emacs, who expect \f(CW\*(C`cvvis\*(C'\fR to enable a blinking cursor. +.SS "Keyboard, Mouse & User Interaction" +.IX Subsection "Keyboard, Mouse & User Interaction" +\fIThe new selection selects pieces that are too big, how can I select single words?\fR +.IX Subsection "The new selection selects pieces that are too big, how can I select single words?" +.PP +If you want to select e.g. alphanumeric words, you can use the following +setting: +.PP +.Vb 1 +\& URxvt.selection.pattern\-0: ([[:word:]]+) +.Ve +.PP +If you click more than twice, the selection will be extended +more and more. +.PP +To get a selection that is very similar to the old code, try this pattern: +.PP +.Vb 1 +\& URxvt.selection.pattern\-0: ([^"&\*(Aq()*,;<=>?@[\e\e\e\e]^\`{|})]+) +.Ve +.PP +Please also note that the \fILeftClick Shift-LeftClick\fR combination also +selects words like the old code. +.PP +\fII don't like the new selection/popups/hotkeys/perl, how do I change/disable it?\fR +.IX Subsection "I don't like the new selection/popups/hotkeys/perl, how do I change/disable it?" +.PP +You can disable the perl extension completely by setting the +\&\fBperl-ext-common\fR resource to the empty string, which also keeps +rxvt-unicode from initialising perl, saving memory. +.PP +If you only want to disable specific features, you first have to +identify which perl extension is responsible. For this, read the section +\&\fB\s-1PREPACKAGED EXTENSIONS\s0\fR in the @@URXVT_NAME@@\fIperl\fR\|(3) manpage. For +example, to disable the \fBselection-popup\fR and \fBoption-popup\fR, specify +this \fBperl-ext-common\fR resource: +.PP +.Vb 1 +\& URxvt.perl\-ext\-common: default,\-selection\-popup,\-option\-popup +.Ve +.PP +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 \fBM\-s\fR. You can move it to any +other combination by adding a \fBkeysym\fR resource that binds the desired +combination to the \f(CW\*(C`start\*(C'\fR action of \f(CW\*(C`searchable\-scrollback\*(C'\fR and another +one that binds \fBM\-s\fR to the \f(CW\*(C`builtin:\*(C'\fR action: +.PP +.Vb 2 +\& URxvt.keysym.CM\-s: searchable\-scrollback:start +\& URxvt.keysym.M\-s: builtin: +.Ve +.PP +\fIThe cursor moves when selecting text in the current input line, how do I switch this off?\fR +.IX Subsection "The cursor moves when selecting text in the current input line, how do I switch this off?" +.PP +See next entry. +.PP +\fIDuring rlogin/ssh/telnet/etc. sessions, clicking near the cursor outputs strange escape sequences, how do I fix this?\fR +.IX Subsection "During rlogin/ssh/telnet/etc. sessions, clicking near the cursor outputs strange escape sequences, how do I fix this?" +.PP +These are caused by the \f(CW\*(C`readline\*(C'\fR 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. +.PP +You can permanently switch this feature off by disabling the \f(CW\*(C`readline\*(C'\fR +extension: +.PP +.Vb 1 +\& URxvt.perl\-ext\-common: default,\-readline +.Ve +.PP +\fIMy numeric keypad acts weird and generates differing output?\fR +.IX Subsection "My numeric keypad acts weird and generates differing output?" +.PP +Some Debian GNU/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 \f(CW\*(C`TERM\*(C'\fR setting, although the details of whether and how +this can happen are unknown, as \f(CW\*(C`TERM=rxvt\*(C'\fR should offer a compatible +keymap. See the answer to the previous question, and please report if that +helped. +.PP +\fIMy Compose (Multi_key) key is no longer working.\fR +.IX Subsection "My Compose (Multi_key) key is no longer working." +.PP +The most common causes for this are that either your locale is not set +correctly, or you specified a \fBpreeditType\fR that is not supported by +your input method. For example, if you specified \fBOverTheSpot\fR 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. +.PP +In this case either do not specify a \fBpreeditType\fR or specify more than +one pre-edit style, such as \fBOverTheSpot,Root,None\fR. +.PP +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 \f(CW\*(C`\-im\*(C'\fR or \f(CW\*(C`XMODIFIERS\*(C'\fR. +.PP +\fII cannot type \f(CI\*(C`Ctrl\-Shift\-2\*(C'\fI to get an \s-1ASCII NUL\s0 character due to \s-1ISO 14755\s0\fR +.IX Subsection "I cannot type Ctrl-Shift-2 to get an ASCII NUL character due to ISO 14755" +.PP +Either try \f(CW\*(C`Ctrl\-2\*(C'\fR alone (it often is mapped to \s-1ASCII NUL\s0 even on +international keyboards) or simply use \s-1ISO 14755\s0 support to your +advantage, typing to get a \s-1ASCII NUL.\s0 This works for other +codes, too, such as \f(CW\*(C`Ctrl\-Shift\-1\-d\*(C'\fR to type the default telnet escape +character and so on. +.PP +\fIMouse cut/paste suddenly no longer works.\fR +.IX Subsection "Mouse cut/paste suddenly no longer works." +.PP +Make sure that mouse reporting is actually turned off since killing +some editors prematurely may leave it active. I've +heard that tcsh may use mouse reporting unless it is otherwise specified. A +quick check is to see if cut/paste works when the Alt or Shift keys are +pressed. +.PP +\fIWhat's with the strange Backspace/Delete key behaviour?\fR +.IX Subsection "What's with the strange Backspace/Delete key behaviour?" +.PP +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: \f(CW\*(C`^H\*(C'\fR and \f(CW\*(C`^?\*(C'\fR. +.PP +Historically, either value is correct, but rxvt-unicode adopts the debian +policy of using \f(CW\*(C`^?\*(C'\fR when unsure, because it's the one and only correct +choice :). +.PP +It is possible to toggle between \f(CW\*(C`^H\*(C'\fR and \f(CW\*(C`^?\*(C'\fR with the \s-1DECBKM\s0 +private mode: +.PP +.Vb 3 +\& # use Backspace = ^H +\& $ stty erase ^H +\& $ printf "\ee[?67h" +\& +\& # use Backspace = ^? +\& $ stty erase ^? +\& $ printf "\ee[?67l" +.Ve +.PP +This helps satisfy some of the Backspace discrepancies that occur, but +if you use Backspace = \f(CW\*(C`^H\*(C'\fR, make sure that the termcap/terminfo value +properly reflects that. +.PP +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 +(\f(CW\*(C`ESC [ 3 ~\*(C'\fR) and is in the supplied termcap/terminfo. +.PP +Some other Backspace problems: +.PP +some editors use termcap/terminfo, +some editors (vim I'm told) expect Backspace = ^H, +\&\s-1GNU\s0 Emacs (and Emacs-like editors) use ^H for help. +.PP +Perhaps someday this will all be resolved in a consistent manner. +.PP +\fII don't like the key-bindings. How do I change them?\fR +.IX Subsection "I don't like the key-bindings. How do I change them?" +.PP +There are some compile-time selections available via configure. Unless +you have run \*(L"configure\*(R" with the \f(CW\*(C`\-\-disable\-resources\*(C'\fR option you can +use the `keysym' resource to alter the keystrings associated with keysyms. +.PP +Here's an example for a URxvt session started using \f(CW\*(C`@@URXVT_NAME@@ \-name URxvt\*(C'\fR +.PP +.Vb 8 +\& URxvt.keysym.Prior: \e033[5~ +\& URxvt.keysym.Next: \e033[6~ +\& URxvt.keysym.Home: \e033[7~ +\& URxvt.keysym.End: \e033[8~ +\& URxvt.keysym.Up: \e033[A +\& URxvt.keysym.Down: \e033[B +\& URxvt.keysym.Right: \e033[C +\& URxvt.keysym.Left: \e033[D +.Ve +.PP +See some more examples in the documentation for the \fBkeysym\fR resource. +.PP +\fII'm using keyboard model \s-1XXX\s0 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\fR +.IX Subsection "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" +.PP +.Vb 6 +\& KP_Insert == Insert +\& F22 == Print +\& F27 == Home +\& F29 == Prior +\& F33 == End +\& F35 == Next +.Ve +.PP +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. +.SS "Terminal Configuration" +.IX Subsection "Terminal Configuration" +\fICan I see a typical configuration?\fR +.IX Subsection "Can I see a typical configuration?" +.PP +The default configuration tries to be xterm-like, which I don't like that +much, but it's least surprise to regular users. +.PP +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 \fItypical\fR, but what's typical... +.PP +.Vb 2 +\& URxvt.cutchars: "()*,<>[]{}|\*(Aq +\& URxvt.print\-pipe: cat >/tmp/xxx +.Ve +.PP +These are just for testing stuff. +.PP +.Vb 2 +\& URxvt.imLocale: ja_JP.UTF\-8 +\& URxvt.preeditType: OnTheSpot,None +.Ve +.PP +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 \f(CW\*(C`xim\-onthespot\*(C'\fR perl extension but rewards me +with correct-looking fonts. +.PP +.Vb 6 +\& 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 \e\ed+) +\& URxvt.selection.pattern\-1: ^(/[^:]+):\e +\& URxvt.selection\-autotransform.0: s/^([^:[:space:]]+):(\e\ed+):?$/:e \e\eQ$1\e\eE\e\ex0d:$2\e\ex0d/ +\& URxvt.selection\-autotransform.1: s/^ at (.*?) line (\e\ed+)$/:e \e\eQ$1\e\eE\e\ex0d:$2\e\ex0d/ +.Ve +.PP +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. +.PP +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. +.PP +.Vb 2 +\& URxvt.scrollstyle: plain +\& URxvt.secondaryScroll: true +.Ve +.PP +As the documentation says: plain is the preferred scrollbar for the +author. The \f(CW\*(C`secondaryScroll\*(C'\fR configures urxvt to scroll in full-screen +apps, like screen, so lines scrolled out of screen end up in urxvt's +scrollback buffer. +.PP +.Vb 7 +\& URxvt.background: #000000 +\& URxvt.foreground: gray90 +\& URxvt.color7: gray90 +\& URxvt.colorBD: #ffffff +\& URxvt.cursorColor: #e0e080 +\& URxvt.throughColor: #8080f0 +\& URxvt.highlightColor: #f0f0f0 +.Ve +.PP +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. +.PP +.Vb 1 +\& URxvt.underlineColor: yellow +.Ve +.PP +Another colour, makes underline lines look different. Sometimes hurts, but +is mostly a nice effect. +.PP +.Vb 4 +\& URxvt.geometry: 154x36 +\& URxvt.loginShell: false +\& URxvt.meta: ignore +\& URxvt.utmpInhibit: true +.Ve +.PP +Uh, well, should be mostly self-explanatory. By specifying some defaults +manually, I can quickly switch them for testing. +.PP +.Vb 1 +\& URxvt.saveLines: 8192 +.Ve +.PP +A large scrollback buffer is essential. Really. +.PP +.Vb 1 +\& URxvt.mapAlert: true +.Ve +.PP +The only case I use it is for my \s-1IRC\s0 window, which I like to keep +iconified till people msg me (which beeps). +.PP +.Vb 1 +\& URxvt.visualBell: true +.Ve +.PP +The audible bell is often annoying, especially when in a crowd. +.PP +.Vb 1 +\& URxvt.insecure: true +.Ve +.PP +Please don't hack my mutt! Ooops... +.PP +.Vb 1 +\& URxvt.pastableTabs: false +.Ve +.PP +I once thought this is a great idea. +.PP +.Vb 9 +\& urxvt.font: 9x15bold,\e +\& \-misc\-fixed\-bold\-r\-normal\-\-15\-140\-75\-75\-c\-90\-iso10646\-1,\e +\& \-misc\-fixed\-medium\-r\-normal\-\-15\-140\-75\-75\-c\-90\-iso10646\-1, \e +\& [codeset=JISX0208]xft:Kochi Gothic, \e +\& xft:Bitstream Vera Sans Mono:autohint=true, \e +\& 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 +.Ve +.PP +I wrote rxvt-unicode to be able to specify fonts exactly. So don't be +overwhelmed. A special note: the \f(CW\*(C`9x15bold\*(C'\fR mentioned above is actually +the version from XFree\-3.3, as XFree\-4 replaced it by a totally different +font (different glyphs for \f(CW\*(C`;\*(C'\fR and many other harmless characters), +while the second font is actually the \f(CW\*(C`9x15bold\*(C'\fR 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. +.PP +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. +.PP +Please note that I used the \f(CW\*(C`urxvt\*(C'\fR instance name and not the \f(CW\*(C`URxvt\*(C'\fR +class name. That is because I use different configs for different purposes, +for example, my \s-1IRC\s0 window is started with \f(CW\*(C`\-name IRC\*(C'\fR, and uses these +defaults: +.PP +.Vb 9 +\& 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:\e033]710;suxuseuro\e007\e033]711;suxuseuro\e007 +\& IRC*keysym.M\-C\-2: command:\e033]710;9x15bold\e007\e033]711;9x15bold\e007 +.Ve +.PP +\&\f(CW\*(C`Alt\-Ctrl\-1\*(C'\fR and \f(CW\*(C`Alt\-Ctrl\-2\*(C'\fR switch between two different font +sizes. \f(CW\*(C`suxuseuro\*(C'\fR 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. +.PP +The above is all in my \f(CW\*(C`.Xdefaults\*(C'\fR (I don't use \f(CW\*(C`.Xresources\*(C'\fR nor +\&\f(CW\*(C`xrdb\*(C'\fR). I also have some resources in a separate \f(CW\*(C`.Xdefaults\-hostname\*(C'\fR +file for different hosts, for example, on my main desktop, I use: +.PP +.Vb 5 +\& URxvt.keysym.C\-M\-q: command:\e033[3;5;5t +\& URxvt.keysym.C\-M\-y: command:\e033[3;5;606t +\& URxvt.keysym.C\-M\-e: command:\e033[3;1605;5t +\& URxvt.keysym.C\-M\-c: command:\e033[3;1605;606t +\& URxvt.keysym.C\-M\-p: perl:test +.Ve +.PP +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 :\-> +.PP +\fIWhy doesn't rxvt-unicode read my resources?\fR +.IX Subsection "Why doesn't rxvt-unicode read my resources?" +.PP +Well, why, indeed? It does, in a way very similar to other X +applications. Most importantly, this means that if you or your \s-1OS\s0 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 +\&\fI\f(CI$HOME\fI/.Xdefaults\fR when no resources are attached to the display. +.PP +If you have or use an \fI\f(CI$HOME\fI/.Xresources\fR file, chances are that +resources are loaded into your X\-server. In this case, you have to +re-login after every change (or run \fIxrdb \-merge \f(CI$HOME\fI/.Xresources\fR). +.PP +Also consider the form resources have to use: +.PP +.Vb 1 +\& URxvt.resource: value +.Ve +.PP +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. +.PP +\fIWhen I log-in to another system it tells me about missing terminfo data?\fR +.IX Subsection "When I log-in to another system it tells me about missing terminfo data?" +.PP +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). +.PP +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): +.PP +.Vb 2 +\& REMOTE=remotesystem.domain +\& infocmp rxvt\-unicode | ssh $REMOTE "mkdir \-p .terminfo && cat >/tmp/ti && tic /tmp/ti" +.Ve +.PP +One some systems you might need to set \f(CW$TERMINFO\fR to the full path of +\&\fI\f(CI$HOME\fI/.terminfo\fR for this to work. +.PP +If you cannot or do not want to do this, then you can simply set +\&\f(CW\*(C`TERM=rxvt\*(C'\fR or even \f(CW\*(C`TERM=xterm\*(C'\fR, 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. +.PP +If you always want to do this (and are fine with the consequences) you +can either recompile rxvt-unicode with the desired \s-1TERM\s0 value or use a +resource to set it: +.PP +.Vb 1 +\& URxvt.termName: rxvt +.Ve +.PP +If you don't plan to use \fBrxvt\fR (quite common...) you could also replace +the rxvt terminfo file with the rxvt-unicode one and use \f(CW\*(C`TERM=rxvt\*(C'\fR. +.PP +\fInano fails with \*(L"Error opening terminal: rxvt-unicode\*(R"\fR +.IX Subsection "nano fails with Error opening terminal: rxvt-unicode" +.PP +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. +.PP +\fI\f(CI\*(C`tic\*(C'\fI outputs some error when compiling the terminfo entry.\fR +.IX Subsection "tic outputs some error when compiling the terminfo entry." +.PP +Most likely it's the empty definition for \f(CW\*(C`enacs=\*(C'\fR. Just replace it by +\&\f(CW\*(C`enacs=\eE[0@\*(C'\fR and try again. +.PP +\fI\f(CI\*(C`bash\*(C'\fI's readline does not work correctly under @@URXVT_NAME@@.\fR +.IX Subsection "bash's readline does not work correctly under @@URXVT_NAME@@." +.PP +See next entry. +.PP +\fII need a termcap file entry.\fR +.IX Subsection "I need a termcap file entry." +.PP +One reason you might want this is that some distributions or operating +systems still compile some programs using the long-obsoleted termcap +library (Fedora's bash is one example) and rely on a termcap entry +for \f(CW\*(C`rxvt\-unicode\*(C'\fR. +.PP +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: +.PP +.Vb 1 +\& infocmp \-C rxvt\-unicode +.Ve +.PP +Or you could use the termcap entry in doc/etc/rxvt\-unicode.termcap, +generated by the command above. +.PP +\fIWhy does \f(CI\*(C`ls\*(C'\fI no longer have coloured output?\fR +.IX Subsection "Why does ls no longer have coloured output?" +.PP +The \f(CW\*(C`ls\*(C'\fR in the \s-1GNU\s0 coreutils unfortunately doesn't use terminfo to +decide whether a terminal has colour, but uses its own configuration +file. Needless to say, \f(CW\*(C`rxvt\-unicode\*(C'\fR is not in its default file (among +with most other terminals supporting colour). Either add: +.PP +.Vb 1 +\& TERM rxvt\-unicode +.Ve +.PP +to \f(CW\*(C`/etc/DIR_COLORS\*(C'\fR or simply add: +.PP +.Vb 1 +\& alias ls=\*(Aqls \-\-color=auto\*(Aq +.Ve +.PP +to your \f(CW\*(C`.profile\*(C'\fR or \f(CW\*(C`.bashrc\*(C'\fR. +.PP +\fIWhy doesn't vim/emacs etc. use the 88 colour mode?\fR +.IX Subsection "Why doesn't vim/emacs etc. use the 88 colour mode?" +.PP +See next entry. +.PP +\fIWhy doesn't vim/emacs etc. make use of italic?\fR +.IX Subsection "Why doesn't vim/emacs etc. make use of italic?" +.PP +See next entry. +.PP +\fIWhy are the secondary screen-related options not working properly?\fR +.IX Subsection "Why are the secondary screen-related options not working properly?" +.PP +Make sure you are using \f(CW\*(C`TERM=rxvt\-unicode\*(C'\fR. Some pre-packaged +distributions break rxvt-unicode by setting \f(CW\*(C`TERM\*(C'\fR to \f(CW\*(C`rxvt\*(C'\fR, which +doesn't have these extra features. Unfortunately, some of these +furthermore fail to even install the \f(CW\*(C`rxvt\-unicode\*(C'\fR terminfo file, so +you will need to install it on your own (See the question \fBWhen I +log-in to another system it tells me about missing terminfo data?\fR on +how to do this). +.SS "Encoding / Locale / Input Method Issues" +.IX Subsection "Encoding / Locale / Input Method Issues" +\fIRxvt-unicode does not seem to understand the selected encoding?\fR +.IX Subsection "Rxvt-unicode does not seem to understand the selected encoding?" +.PP +See next entry. +.PP +\fIUnicode does not seem to work?\fR +.IX Subsection "Unicode does not seem to work?" +.PP +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. +.PP +Rxvt-unicode must be started with the same \f(CW\*(C`LC_CTYPE\*(C'\fR setting as the +programs running in it. Often rxvt-unicode is started in the \f(CW\*(C`C\*(C'\fR locale, +while the login script running within the rxvt-unicode window changes the +locale to something else, e.g. \f(CW\*(C`en_GB.UTF\-8\*(C'\fR. Needless to say, this is +not going to work, and is the most common cause for problems. +.PP +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. +.PP +.Vb 1 +\& printf \*(Aq\e33]701;%s\e007\*(Aq "$LC_CTYPE" # $LANG or $LC_ALL are worth a try, too +.Ve +.PP +If this doesn't work, then maybe you use a \f(CW\*(C`LC_CTYPE\*(C'\fR specification not +supported on your systems. Some systems have a \f(CW\*(C`locale\*(C'\fR command which +displays this (also, \f(CW\*(C`perl \-e0\*(C'\fR can be used to check locale settings, as +it will complain loudly if it cannot set the locale). If it displays something +like: +.PP +.Vb 1 +\& locale: Cannot set LC_CTYPE to default locale: ... +.Ve +.PP +Then the locale you specified is not supported on your system. +.PP +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 :( +.PP +\fIHow does rxvt-unicode determine the encoding to use?\fR +.IX Subsection "How does rxvt-unicode determine the encoding to use?" +.PP +See next entry. +.PP +\fIIs there an option to switch encodings?\fR +.IX Subsection "Is there an option to switch encodings?" +.PP +Unlike some other terminals, rxvt-unicode has no encoding switch, and no +specific \*(L"utf\-8\*(R" mode, such as xterm. In fact, it doesn't even know about +\&\s-1UTF\-8\s0 or any other encodings with respect to terminal I/O. +.PP +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 \fIlocale\fR. Applications not using +that info will have problems (for example, \f(CW\*(C`xterm\*(C'\fR gets the width of +characters wrong as it uses its own, locale-independent table under all +locales). +.PP +Rxvt-unicode uses the \f(CW\*(C`LC_CTYPE\*(C'\fR locale category to select encoding. All +programs doing the same (that is, most) will automatically agree in the +interpretation of characters. +.PP +Unfortunately, there is no system-independent way to select locales, nor +is there a standard on how locale specifiers will look like. +.PP +On most systems, the content of the \f(CW\*(C`LC_CTYPE\*(C'\fR environment variable +contains an arbitrary string which corresponds to an already-installed +locale. Common names for locales are \f(CW\*(C`en_US.UTF\-8\*(C'\fR, \f(CW\*(C`de_DE.ISO\-8859\-15\*(C'\fR, +\&\f(CW\*(C`ja_JP.EUC\-JP\*(C'\fR, i.e. \f(CW\*(C`language_country.encoding\*(C'\fR, but other forms +(i.e. \f(CW\*(C`de\*(C'\fR or \f(CW\*(C`german\*(C'\fR) are also common. +.PP +Rxvt-unicode ignores all other locale categories, and except for +the encoding, ignores country or language-specific settings, +i.e. \f(CW\*(C`de_DE.UTF\-8\*(C'\fR and \f(CW\*(C`ja_JP.UTF\-8\*(C'\fR are the normally same to +rxvt-unicode. +.PP +If you want to use a specific encoding you have to make sure you start +rxvt-unicode with the correct \f(CW\*(C`LC_CTYPE\*(C'\fR category. +.PP +\fICan I switch locales at runtime?\fR +.IX Subsection "Can I switch locales at runtime?" +.PP +Yes, using an escape sequence. Try something like this, which sets +rxvt-unicode's idea of \f(CW\*(C`LC_CTYPE\*(C'\fR. +.PP +.Vb 1 +\& printf \*(Aq\e33]701;%s\e007\*(Aq ja_JP.SJIS +.Ve +.PP +See also the previous answer. +.PP +Sometimes this capability is rather handy when you want to work in +one locale (e.g. \f(CW\*(C`de_DE.UTF\-8\*(C'\fR) but some programs don't support it +(e.g. \s-1UTF\-8\s0). For example, I use this script to start \f(CW\*(C`xjdic\*(C'\fR, which +first switches to a locale supported by xjdic and back later: +.PP +.Vb 3 +\& printf \*(Aq\e33]701;%s\e007\*(Aq ja_JP.SJIS +\& xjdic \-js +\& printf \*(Aq\e33]701;%s\e007\*(Aq de_DE.UTF\-8 +.Ve +.PP +You can also use xterm's \f(CW\*(C`luit\*(C'\fR program, which usually works fine, except +for some locales where character width differs between program\- and +rxvt-unicode-locales. +.PP +\fII have problems getting my input method working.\fR +.IX Subsection "I have problems getting my input method working." +.PP +Try a search engine, as this is slightly different for every input method server. +.PP +Here is a checklist: +.IP "\- Make sure your locale \fIand\fR the imLocale are supported on your \s-1OS.\s0" 4 +.IX Item "- Make sure your locale and the imLocale are supported on your OS." +Try \f(CW\*(C`locale \-a\*(C'\fR or check the documentation for your \s-1OS.\s0 +.IP "\- Make sure your locale or imLocale matches a locale supported by your \s-1XIM.\s0" 4 +.IX Item "- Make sure your locale or imLocale matches a locale supported by your XIM." +For example, \fBkinput2\fR does not support \s-1UTF\-8\s0 locales, you should use +\&\f(CW\*(C`ja_JP.EUC\-JP\*(C'\fR or equivalent. +.IP "\- Make sure your \s-1XIM\s0 server is actually running." 4 +.IX Item "- Make sure your XIM server is actually running." +.PD 0 +.ie n .IP "\- Make sure the ""XMODIFIERS"" environment variable is set correctly when \fIstarting\fR rxvt-unicode." 4 +.el .IP "\- Make sure the \f(CWXMODIFIERS\fR environment variable is set correctly when \fIstarting\fR rxvt-unicode." 4 +.IX Item "- Make sure the XMODIFIERS environment variable is set correctly when starting rxvt-unicode." +.PD +When you want to use e.g. \fBkinput2\fR, it must be set to +\&\f(CW\*(C`@im=kinput2\*(C'\fR. For \fBscim\fR, use \f(CW\*(C`@im=SCIM\*(C'\fR. You can see what input +method servers are running with this command: +.Sp +.Vb 1 +\& xprop \-root XIM_SERVERS +.Ve +.PP +\fIMy input method wants but I want \s-1UTF\-8,\s0 what can I do?\fR +.IX Subsection "My input method wants but I want UTF-8, what can I do?" +.PP +You can specify separate locales for the input method and the rest of the +terminal, using the resource \f(CW\*(C`imlocale\*(C'\fR: +.PP +.Vb 1 +\& URxvt.imlocale: ja_JP.EUC\-JP +.Ve +.PP +Now you can start your terminal with \f(CW\*(C`LC_CTYPE=ja_JP.UTF\-8\*(C'\fR and still +use your input method. Please note, however, that, depending on your Xlib +version, you may not be able to input characters outside \f(CW\*(C`EUC\-JP\*(C'\fR in a +normal way then, as your input method limits you. +.PP +\fIRxvt-unicode crashes when the X Input Method changes or exits.\fR +.IX Subsection "Rxvt-unicode crashes when the X Input Method changes or exits." +.PP +Unfortunately, this is unavoidable, as the \s-1XIM\s0 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. \fBkinput2\fR (and derived input methods) generally succeeds, +while \fB\s-1SCIM\s0\fR (or similar input methods) fails. In the end, however, +crashes cannot be completely avoided even if both sides cooperate. +.PP +So the only workaround is not to kill your Input Method Servers. +.SS "Operating Systems / Package Maintaining" +.IX Subsection "Operating Systems / Package Maintaining" +\fII am maintaining rxvt-unicode for distribution/OS \s-1XXX,\s0 any recommendation?\fR +.IX Subsection "I am maintaining rxvt-unicode for distribution/OS XXX, any recommendation?" +.PP +You should build one binary with the default options. \fIconfigure\fR +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. +.PP +You should not overwrite the \f(CW\*(C`perl\-ext\-common\*(C'\fR and \f(CW\*(C`perl\-ext\*(C'\fR resources +system-wide (except maybe with \f(CW\*(C`defaults\*(C'\fR). This will result in useful +behaviour. If your distribution aims at low memory, add an empty +\&\f(CW\*(C`perl\-ext\-common\*(C'\fR resource to the app-defaults file. This will keep the +perl interpreter disabled until the user enables it. +.PP +If you can/want build more binaries, I recommend building a minimal +one with \f(CW\*(C`\-\-disable\-everything\*(C'\fR (very useful) and a maximal one with +\&\f(CW\*(C`\-\-enable\-everything\*(C'\fR (less useful, it will be very big due to a lot of +encodings built-in that increase download times and are rarely used). +.PP +\fII need to make it setuid/setgid to support utmp/ptys on my \s-1OS,\s0 is this safe?\fR +.IX Subsection "I need to make it setuid/setgid to support utmp/ptys on my OS, is this safe?" +.PP +It should be, starting with release 7.1. You are encouraged to properly +install urxvt with privileges necessary for your \s-1OS\s0 now. +.PP +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 \*(L"helpful\*(R" to attackers). +.PP +This forking is done as the very first within \fImain()\fR, which is very early +and reduces possible bugs to initialisation code run before \fImain()\fR, or +things like the dynamic loader of your system, which should result in very +little risk. +.PP +\fII am on FreeBSD and rxvt-unicode does not seem to work at all.\fR +.IX Subsection "I am on FreeBSD and rxvt-unicode does not seem to work at all." +.PP +Rxvt-unicode requires the symbol \f(CW\*(C`_\|_STDC_ISO_10646_\|_\*(C'\fR to be defined +in your compile environment, or an implementation that implements it, +whether it defines the symbol or not. \f(CW\*(C`_\|_STDC_ISO_10646_\|_\*(C'\fR requires that +\&\fBwchar_t\fR is represented as unicode. +.PP +As you might have guessed, FreeBSD does neither define this symbol nor +does it support it. Instead, it uses its own internal representation of +\&\fBwchar_t\fR. This is, of course, completely fine with respect to standards. +.PP +However, that means rxvt-unicode only works in \f(CW\*(C`POSIX\*(C'\fR, \f(CW\*(C`ISO\-8859\-1\*(C'\fR and +\&\f(CW\*(C`UTF\-8\*(C'\fR locales under FreeBSD (which all use Unicode as \fBwchar_t\fR). +.PP +\&\f(CW\*(C`_\|_STDC_ISO_10646_\|_\*(C'\fR is the only sane way to support multi-language +apps in an \s-1OS,\s0 as using a locale-dependent (and non-standardized) +representation of \fBwchar_t\fR makes it impossible to convert between +\&\fBwchar_t\fR (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 \fBwchar_t\fR into anything except the current +locale encoding. +.PP +Some applications (such as the formidable \fBmlterm\fR) 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 \s-1OS\s0 implements +encodings slightly different than the terminal emulator). +.PP +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 :) +.PP +\fIHow can I use rxvt-unicode under cygwin?\fR +.IX Subsection "How can I use rxvt-unicode under cygwin?" +.PP +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 \f(CW\*(C`\-multiwindow\*(C'\fR or +\&\f(CW\*(C`\-rootless\*(C'\fR mode instead, which will result in similar look&feel as the +old libW11 emulation. +.PP +At the time of this writing, cygwin didn't seem to support any multi-byte +encod