--- rxvt-unicode/README.FAQ 2007/02/17 20:36:35 1.46 +++ rxvt-unicode/README.FAQ 2012/09/09 12:21:25 1.67 @@ -5,6 +5,17 @@ "#rxvt-unicode" has some rxvt-unicode enthusiasts that might be interested in learning about new and exciting problems (but not FAQs :). + 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. + 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 @@ -60,11 +71,12 @@ re-run the command. Subsequent invocations of the script will re-use the existing daemon. - How do I distinguish whether I'm running rxvt-unicode or a regular xterm? I need this to decide about setting colors etc. + 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 color. + variable to decide whether or not to use colour. 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 @@ -81,19 +93,19 @@ [ ${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' + printf "\eZ" 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 + printf '\e[7n' # query the rxvt we are in for the DISPLAY string + read DISPLAY # set it in our local shell fi fi How do I compile the manual pages on my own? You need to have a recent version of perl installed as /usr/bin/perl, - one that comes with pod2man, pod2text and pod2html. Then go to the doc - subdirectory and enter "make alldoc". + one that comes with pod2man, pod2text and pod2xhtml (from Pod::Xhtml). + Then go to the doc subdirectory and enter "make alldoc". 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 @@ -148,10 +160,10 @@ 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, an 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: + 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) @@ -162,9 +174,9 @@ 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) + 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 :) @@ -179,23 +191,25 @@ Here are four ways to get transparency. Do read the manpage and option descriptions for the programs mentioned and rxvt-unicode. Really, do it! - 1. Use inheritPixmap: + 1. Use transparent mode: Esetroot wallpaper.jpg - urxvt -ip -tint red -sh 40 + urxvt -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. + 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.xpm - urxvt -pixmap background.xpm -pe automove-background + convert wallpaper.jpg -blur 20x20 -modulate 30 background.jpg + urxvt -pixmap "background.jpg;:root" - That works. If you think it doesn't, you lack XPM and Perl support, or - you are unable to read. + That works. If you think it doesn't, you lack GDK-PixBuf support, or you + are unable to read. 3. Use an ARGB visual: @@ -299,18 +313,18 @@ standard foreground colour. For the standard background colour, blinking will actually make the text - blink when compiled with "--enable-blinking". with standard colours. - Without "--enable-blinking", the blink attribute will be ignored. + blink when compiled with "--enable-text-blink". Without + "--enable-text-blink", the blink attribute will be ignored. On ANSI colours, bold/blink attributes are used to set high-intensity - foreground/background colors. + foreground/background colours. - color0-7 are the low-intensity colors. + color0-7 are the low-intensity colours. - color8-15 are the corresponding high-intensity colors. + color8-15 are the corresponding high-intensity colours. - I don't like the screen colors. How do I change them? - You can change the screen colors at run-time using ~/.Xdefaults + I don't like the screen colours. How do I change them? + You can change the screen colours at run-time using ~/.Xdefaults resources (or as long-options). Here are values that are supposed to resemble a VGA screen, including @@ -334,7 +348,7 @@ URxvt.color14: #00FFFF URxvt.color15: #FFFFFF - And here is a more complete set of non-standard colors. + And here is a more complete set of non-standard colours. URxvt.cursorColor: #dc74d1 URxvt.pointerColor: #dc74d1 @@ -411,6 +425,12 @@ Until then, you might get away with switching fonts at runtime (see "Can I switch the fonts at runtime?" later in this document). + How can I make mplayer display video correctly? + We are working on it, in the meantime, as a workaround, use something + like: + + urxvt -b 600 -geometry 20x1 -e sh -c 'mplayer -wid $WINDOWID file...' + Keyboard, Mouse & User Interaction 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 @@ -426,7 +446,7 @@ URxvt.selection.pattern-0: ([^"&'()*,;<=>?@[\\\\]^`{|})]+) - Please also note that the *LeftClick Shift-LeftClik* combination also + Please also note that the *LeftClick Shift-LeftClick* combination also selects words like the old code. I don't like the new selection/popups/hotkeys/perl, how do I change/disable it? @@ -483,6 +503,10 @@ In this case either do not specify a preeditStyle or specify more than one pre-edit style, such as OverTheSpot,Root,None. + 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 "-im" or "XMODIFIERS". + I cannot type "Ctrl-Shift-2" to get an ASCII NUL character due to ISO 14755 Either try "Ctrl-2" alone (it often is mapped to ASCII NUL even on international keyboards) or simply use ISO 14755 support to your @@ -492,10 +516,9 @@ 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. + 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. What's with the strange Backspace/Delete key behaviour? Assuming that the physical Backspace key corresponds to the Backspace @@ -503,37 +526,19 @@ two standard values that can be used for Backspace: "^H" and "^?". Historically, either value is correct, but rxvt-unicode adopts the - debian policy of using "^?" when unsure, because it's the one only only + debian policy of using "^?" when unsure, because it's the one and only correct choice :). - Rxvt-unicode tries to inherit the current stty settings and uses the - value of `erase' to guess the value for backspace. If rxvt-unicode - wasn't started from a terminal (say, from a menu or by remote shell), - then the system value of `erase', which corresponds to CERASE in - , will be used (which may not be the same as your stty - setting). - - For starting a new rxvt-unicode: - - # use Backspace = ^H - $ stty erase ^H - $ urxvt - - # use Backspace = ^? - $ stty erase ^? - $ urxvt - - Toggle with "ESC [ 36 h" / "ESC [ 36 l". - - For an existing rxvt-unicode: + It is possible to toggle between "^H" and "^?" with the DECBKM private + mode: # use Backspace = ^H $ stty erase ^H - $ echo -n "^[[36h" + $ printf "\e[?67h" # use Backspace = ^? $ stty erase ^? - $ echo -n "^[[36l" + $ printf "\e[?67l" This helps satisfy some of the Backspace discrepancies that occur, but if you use Backspace = "^H", make sure that the termcap/terminfo value @@ -559,26 +564,14 @@ Here's an example for a URxvt session started using "urxvt -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 + URxvt.keysym.Prior: \033[5~ + URxvt.keysym.Next: \033[6~ + URxvt.keysym.Home: \033[7~ + URxvt.keysym.End: \033[8~ + URxvt.keysym.Up: \033[A + URxvt.keysym.Down: \033[B + URxvt.keysym.Right: \033[C + URxvt.keysym.Left: \033[D See some more examples in the documentation for the keysym resource. @@ -631,7 +624,7 @@ 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 tot he error line number. + relevant file and go to the error line number. URxvt.scrollstyle: plain URxvt.secondaryScroll: true @@ -714,7 +707,7 @@ bold and normal fonts. Please note that I used the "urxvt" instance name and not the "URxvt" - class name. Thats because I use different configs for different + class name. That is because I use different configs for different purposes, for example, my IRC window is started with "-name IRC", and uses these defaults: @@ -728,14 +721,14 @@ 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 - "Alt-Shift-1" and "Alt-Shift-2" switch between two different font sizes. + "Alt-Ctrl-1" and "Alt-Ctrl-2" switch between two different font sizes. "suxuseuro" 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 ".Xdefaults" (I don't use ".Xresources" nor "xrdb"). I also have some resources in a separate ".Xdefaults-hostname" - file for different hosts, for example, on ym main desktop, I use: + 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 @@ -774,16 +767,19 @@ arises). The correct solution for this problem is to install the terminfo, this - can be done like this (with ncurses' infocmp and works as user and - admin): + 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" - ... or by installing rxvt-unicode normally on the remote system, - One some systems you might need to set $TERMINFO to the full path of - $HOME/.terminfo for this to work. + $HOME/.terminfo for this to work. Debian systems have a broken tic which + will not be able to overwrite the existing rxvt-unicode terminfo entry - + you might have to manually delete all traces of rxvt-unicode* from + /etc/terminfo. If you cannot or do not want to do this, then you can simply set "TERM=rxvt" or even "TERM=xterm", and live with the small number of @@ -800,6 +796,11 @@ If you don't plan to use rxvt (quite common...) you could also replace the rxvt terminfo file with the rxvt-unicode one and use "TERM=rxvt". + 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. + "tic" outputs some error when compiling the terminfo entry. Most likely it's the empty definition for "enacs=". Just replace it by "enacs=\E[0@" and try again. @@ -819,28 +820,8 @@ infocmp -C rxvt-unicode - Or you could use this termcap entry, generated by the command above: - - rxvt-unicode|rxvt-unicode terminal (X Window System):\ - :am:bw:eo:km:mi:ms:xn:xo:\ - :co#80:it#8:li#24:lm#0:\ - :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:\ - :K1=\EOw:K2=\EOu:K3=\EOy:K4=\EOq:K5=\EOs:LE=\E[%dD:\ - :RI=\E[%dC:SF=\E[%dS:SR=\E[%dT:UP=\E[%dA:ae=\E(B:al=\E[L:\ - :as=\E(0:bl=^G:cd=\E[J:ce=\E[K:cl=\E[H\E[2J:\ - :cm=\E[%i%d;%dH:cr=^M:cs=\E[%i%d;%dr:ct=\E[3g:dc=\E[P:\ - :dl=\E[M:do=^J:ec=\E[%dX:ei=\E[4l:ho=\E[H:\ - :i1=\E[?47l\E=\E[?1l:ic=\E[@:im=\E[4h:\ - :is=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l:\ - :k1=\E[11~:k2=\E[12~:k3=\E[13~:k4=\E[14~:k5=\E[15~:\ - :k6=\E[17~:k7=\E[18~:k8=\E[19~:k9=\E[20~:kD=\E[3~:\ - :kI=\E[2~:kN=\E[6~:kP=\E[5~:kb=\177:kd=\EOB:ke=\E[?1l\E>:\ - :kh=\E[7~:kl=\EOD:kr=\EOC:ks=\E[?1h\E=:ku=\EOA:le=^H:\ - :mb=\E[5m:md=\E[1m:me=\E[m\017:mr=\E[7m:nd=\E[C:rc=\E8:\ - :sc=\E7:se=\E[27m:sf=^J:so=\E[7m:sr=\EM:st=\EH:ta=^I:\ - :te=\E[r\E[?1049l:ti=\E[?1049h:ue=\E[24m:up=\E[A:\ - :us=\E[4m:vb=\E[?5h\E[?5l:ve=\E[?25h:vi=\E[?25l:\ - :vs=\E[?25h: + Or you could use the termcap entry in doc/etc/rxvt-unicode.termcap, + generated by the command above. Why does "ls" no longer have coloured output? The "ls" in the GNU coreutils unfortunately doesn't use terminfo to @@ -987,7 +968,7 @@ xprop -root XIM_SERVERS - * + 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 @@ -1016,10 +997,10 @@ 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 () 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 "reportbug" to report the bug). + version () 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 "reportbug" 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 @@ -1034,7 +1015,7 @@ should be enabled, as important functionality (menus, selection, likely more in the future) depends on it. - You should not overwrite the "perl-ext-common" snd "perl-ext" resources + You should not overwrite the "perl-ext-common" and "perl-ext" resources system-wide (except maybe with "defaults"). This will result in useful behaviour. If your distribution aims at low memory, add an empty "perl-ext-common" resource to the app-defaults file. This will keep the @@ -1061,13 +1042,6 @@ main(), or things like the dynamic loader of your system, which should result in very little risk. - On Solaris 9, many line-drawing characters are too wide. - Seems to be a known bug, read - . Some people use the - following ugly workaround to get non-double-wide-characters working: - - #define wcwidth(x) wcwidth(x) > 1 ? 1 : wcwidth(x) - I am on FreeBSD and rxvt-unicode does not seem to work at all. Rxvt-unicode requires the symbol "__STDC_ISO_10646__" to be defined in your compile environment, or an implementation that implements it, @@ -1079,7 +1053,7 @@ wchar_t. This is, of course, completely fine with respect to standards. However, that means rxvt-unicode only works in "POSIX", "ISO-8859-1" and - "UTF-8" locales under FreeBSD (which all use Unicode as wchar_t. + "UTF-8" locales under FreeBSD (which all use Unicode as wchar_t). "__STDC_ISO_10646__" is the only sane way to support multi-language apps in an OS, as using a locale-dependent (and non-standardized) @@ -1099,10 +1073,6 @@ system libraries once and for all, instead of forcing every app to carry complete replacements for them :) - I use Solaris 9 and it doesn't compile/work/etc. - Try the diff in doc/solaris9.patch as a base. It fixes the worst - problems with "wcwidth" and a compile problem. - 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 @@ -1115,3 +1085,15 @@ multi-byte encodings (you might try "LC_CTYPE=C-UTF-8"), so you are likely limited to 8-bit encodings. + 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 +