+TODO: Make change? [y... flood freezes until outputter is being killed
TODO: do font request caching, might help rxvtd on some machines
TODO: safer command: keymap processing.
TODO: "slow" rendering mode for bidi and scripts
WISH: tabbed windows (hey, just use screen...)
WISH: just for fun, do shade and tint with XRender.
+ - implement some useful (hopefully) options for rxvtd.
+ - seperate and improved rxvtc(1) and rxvtd(1) manpages.
+
5.6 Sun Jun 26 22:11:13 CEST 2005
- R_SB_RXVT bitset value was 0, so rxvt scrollbar was initialised
every time resulting in display errors (original rxvt also affected).
doc/podtbl
doc/rxvt.1.pod
doc/rxvt.7.pod
+doc/rxvtc.1.pod
+doc/rxvtd.1.pod
doc/rxvt.1.man.in
doc/rxvt.7.man.in
+doc/rxvtc.1.man.in
+doc/rxvtd.1.man.in
doc/rxvt.1.html
doc/rxvt.7.html
+doc/rxvtc.1.html
+doc/rxvtd.1.html
doc/rxvt.1.txt
doc/rxvt.7.txt
-doc/rxvtc.1
+doc/rxvtc.1.txt
+doc/rxvtd.1.txt
doc/rxvt-unicode.spec
autoconf/.cvsignore
tags allbin:
-alldoc: rxvt.1.man.in rxvt.7.man.in rxvt.1.html rxvt.7.html rxvt.1.txt rxvt.7.txt ../README.configure ../README.FAQ
+alldoc: rxvt.1.man.in rxvt.7.man.in rxvtc.1.man.in rxvtd.1.man.in \
+ rxvt.1.txt rxvt.7.txt rxvtc.1.txt rxvtd.1.txt \
+ rxvt.1.html rxvt.7.html rxvtc.1.html rxvtd.1.html \
+ ../README.configure ../README.FAQ
infocmp -C rxvt-unicode >etc/rxvt-unicode.termcap
clean:
$(RMF) *~
realclean: clean
- $(RMF) tags rxvt.1.man.in rxvt.7.man.in rxvt.1.html rxvt.7.html rxvt.1.txt rxvt.7.txt ../README.configure ../README.FAQ
+ $(RMF) tags ../README.configure ../README.FAQ
+ $(RMF) rxvt.1.man.in rxvt.7.man.in rxvtc.1.man.in rxvtd.1.man.in
+ $(RMF) rxvt.1.man rxvt.7.man rxvtc.1.man rxvtd.1.man
+ $(RMF) rxvt.1.txt rxvt.7.txt rxvtc.1.txt rxvtd.1.txt
+ $(RMF) rxvt.1.html rxvt.7.html rxvtc.1.html rxvtd.1.html
cleandir: realclean
$(INSTALL_DATA) rxvt.1.man $(DESTDIR)$(man1dir)/$(RXVTNAME).$(man1ext)
$(SED) $(SEDREPLACE) < rxvt.7.man.in >rxvt.7.man
$(INSTALL_DATA) rxvt.7.man $(DESTDIR)$(man7dir)/$(RXVTNAME).$(man7ext)
- $(INSTALL_DATA) rxvtc.1 $(DESTDIR)$(man1dir)/$(RXVTNAME)c.$(man1ext)
- $(INSTALL_DATA) rxvtc.1 $(DESTDIR)$(man1dir)/$(RXVTNAME)d.$(man1ext)
+ $(SED) $(SEDREPLACE) < rxvtc.1.man.in >rxvtc.1.man
+ $(INSTALL_DATA) rxvtc.1.man $(DESTDIR)$(man1dir)/$(RXVTNAME)c.$(man1ext)
+ $(SED) $(SEDREPLACE) < rxvtd.1.man.in >rxvtd.1.man
+ $(INSTALL_DATA) rxvtd.1.man $(DESTDIR)$(man1dir)/$(RXVTNAME)d.$(man1ext)
if test -x "@TIC@"; then if test -n "@TIC@"; then @TIC@ etc/rxvt-unicode.terminfo; fi; fi
uninstall:
#!/usr/bin/perl
-# I tried to write this with Tk, as it uses elss memory and is
+# I tried to write this with Tk, as it uses less memory and is
# more widely available. Alas, Tk is rather broken with respect to embedding.
# on debian, do:
</p>
<hr />
<h1><a name="description">DESCRIPTION</a></h1>
-<p><strong>rxvt-unicode</strong>, version <strong>5.5</strong>, is a colour vt102 terminal
+<p><strong>rxvt-unicode</strong>, version <strong>5.6</strong>, is a colour vt102 terminal
emulator intended as an <em>xterm</em>(1) replacement for users who do not
require features such as Tektronix 4014 emulation and toolkit-style
configurability. As a result, <strong>rxvt-unicode</strong> uses much less swap space --
<strong>Print</strong> to initiate a screen dump to the printer and <strong>Ctrl-Print</strong> or
<strong>Shift-Print</strong> to include the scrollback as well.
</dd>
+<dd>
+<p>The string will be interpreted as if typed into the shell as-is.</p>
+</dd>
+<dd>
+<p>Example:</p>
+</dd>
+<dd>
+<pre>
+ URxvt*print-pipe: cat > $(TMPDIR=$HOME mktemp urxvt.XXXXXX)</pre>
+</dd>
+<dd>
+<p>This creates a new file in your home directory with the screen contents
+everytime you hit <code>Print</code>.</p>
+</dd>
<p></p>
<dt><strong><a name="item_scrollbar_3a_boolean"><strong>scrollBar:</strong> <em>boolean</em></a></strong><br />
</dt>
rxvtd(1).
</dd>
<dd>
-<p>Default <code>$HOME/.rxvt-unicode-<nodename</code>.</p>
+<p>Default <em>$HOME/.rxvt-unicode-<em><nodename </em></em> >>>.</p>
</dd>
<p></p>
<dt><strong><a name="item_home"><strong>HOME</strong></a></strong><br />
</p>
<hr />
<h1><a name="see_also">SEE ALSO</a></h1>
-<p>rxvt(7), xterm(1), sh(1), resize(1), X(1), pty(4), tty(4), <code>utmp(5)</code></p>
+<p>rxvt(7), rxvtc(1), rxvtd(1), xterm(1), sh(1), resize(1), X(1), pty(4), tty(4), <code>utmp(5)</code></p>
<p>
</p>
<hr />
.\" ========================================================================
.\"
.IX Title "rxvt 1"
-.TH rxvt 1 "2005-06-18" "5.5" "RXVT-UNICODE"
+.TH rxvt 1 "2005-07-07" "5.6" "RXVT-UNICODE"
.SH "NAME"
rxvt\-unicode (ouR XVT, unicode) \- (a VT102 emulator for the X window system)
.SH "SYNOPSIS"
Specify a command pipe for vt100 printer [default \fI\fIlpr\fI\|(1)\fR]. Use
\&\fBPrint\fR to initiate a screen dump to the printer and \fBCtrl-Print\fR or
\&\fBShift-Print\fR to include the scrollback as well.
+.Sp
+The string will be interpreted as if typed into the shell as\-is.
+.Sp
+Example:
+.Sp
+.Vb 1
+\& URxvt*print-pipe: cat > $(TMPDIR=$HOME mktemp urxvt.XXXXXX)
+.Ve
+.Sp
+This creates a new file in your home directory with the screen contents
+everytime you hit \f(CW\*(C`Print\*(C'\fR.
.IP "\fBscrollBar:\fR \fIboolean\fR" 4
.IX Item "scrollBar: boolean"
\&\fBTrue\fR: enable the scrollbar [default]; option \fB\-sb\fR. \fBFalse\fR:
The unix domain socket path used by @@RXVT_NAME@@c(1) and
@@RXVT_NAME@@d(1).
.Sp
-Default \f(CW\*(C`$HOME/.rxvt\-unicode\-<nodename\*(C'\fR.
+Default \fI$HOME/.rxvt\-unicode\-\fI<nodename\fI\fR.
.IP "\fB\s-1HOME\s0\fR" 4
.IX Item "HOME"
Used to locate the default directory for the unix domain socket for
Color names.
.SH "SEE ALSO"
.IX Header "SEE ALSO"
-@@RXVT_NAME@@(7), \fIxterm\fR\|(1), \fIsh\fR\|(1), \fIresize\fR\|(1), X(1), \fIpty\fR\|(4), \fItty\fR\|(4), \fIutmp\fR\|(5)
+@@RXVT_NAME@@(7), @@RXVT_NAME@@c(1), @@RXVT_NAME@@d(1), \fIxterm\fR\|(1), \fIsh\fR\|(1), \fIresize\fR\|(1), X(1), \fIpty\fR\|(4), \fItty\fR\|(4), \fIutmp\fR\|(5)
.SH "BUGS"
.IX Header "BUGS"
Check the \s-1BUGS\s0 file for an up-to-date list.
The unix domain socket path used by @@RXVT_NAME@@c(1) and
@@RXVT_NAME@@d(1).
-Default C<< $HOME/.rxvt-unicode-<nodename >>.
+Default F<<< $HOME/.rxvt-unicode-I<< <nodename >> >>>.
=item B<HOME>
=head1 SEE ALSO
-@@RXVT_NAME@@(7), xterm(1), sh(1), resize(1), X(1), pty(4), tty(4), utmp(5)
+@@RXVT_NAME@@(7), @@RXVT_NAME@@c(1), @@RXVT_NAME@@d(1), xterm(1), sh(1), resize(1), X(1), pty(4), tty(4), utmp(5)
=head1 BUGS
rxvt [options] [-e command [ args ]]
DESCRIPTION
- rxvt-unicode, version 5.5, is a colour vt102 terminal emulator intended
+ rxvt-unicode, version 5.6, is a colour vt102 terminal emulator intended
as an *xterm*(1) replacement for users who do not require features such
as Tektronix 4014 emulation and toolkit-style configurability. As a
result, rxvt-unicode uses much less swap space -- a significant
Print to initiate a screen dump to the printer and Ctrl-Print or
Shift-Print to include the scrollback as well.
+ The string will be interpreted as if typed into the shell as-is.
+
+ Example:
+
+ URxvt*print-pipe: cat > $(TMPDIR=$HOME mktemp urxvt.XXXXXX)
+
+ This creates a new file in your home directory with the screen
+ contents everytime you hit "Print".
+
scrollBar: *boolean*
True: enable the scrollbar [default]; option -sb. False: disable the
scrollbar; option +sb.
RXVT_SOCKET
The unix domain socket path used by rxvtc(1) and rxvtd(1).
- Default "$HOME/.rxvt-unicode-<nodename".
+ Default $HOME/.rxvt-unicode-*<nodename*.
HOME
Used to locate the default directory for the unix domain socket for
Color names.
SEE ALSO
- rxvt(7), xterm(1), sh(1), resize(1), X(1), pty(4), tty(4), utmp(5)
+ rxvt(7), rxvtc(1), rxvtd(1), xterm(1), sh(1), resize(1), X(1), pty(4),
+ tty(4), utmp(5)
BUGS
Check the BUGS file for an up-to-date list.
+++ /dev/null
-.if !\n(.g .ab GNU tbl requires GNU troff.
-.if !dTS .ds TS
-.if !dTE .ds TE
-.TH "RXVT-UNICODE" "1" "X Version 11" "X Tools"
-.SH "NAME"
-rxvt (ouR XVT) \- a VT102 emulator for the X window system
-.PP
-.SH "SYNOPSIS"
-.PP
-\fBrxvtd\fP
-.PP
-\fBrxvtc\fP [options] [\-e command [ args ]]
-.PP
-.SH "DESCRIPTION"
-.PP
-\fBrxvtd\fP is a colour vt102 terminal
-emulator intended as an \fIxterm\fP(1) replacement. \fBrxvtd\fP
-implements the actual program that runs as daemon in background and
-opens pseudo-ttys. You can run it from your X startup scripts, for
-example, although it is not dependent on a working DISPLAY and, in fact,
-can open windows on multiple X displays.
-.PP
-Both \fBrxvtd\fP and \fBrxvtc\fP use the environment variable
-\fBRXVT_SOCKET\fP to create a listening socket and to contact
-the \fBrxvtd\fP, respectively. If the variable is missing,
-"\fB$HOME/.rxvt-unicode-\fP<nodename>" is used.
-.PP
-\fBrxvtc\fP is the client program of this duo. It connects to the
-\fBrxvtd\fP daemon and requests a new terminal window. It
-takes the same arguments as the \fBrxvt\fP program. The environment will
-also be respected. Currently, it always returns immediately after contacting
-the daemon.
-.PP
-The positive aspect of this client-server solution is faster creation
-time for terminal windows and a lot of saved memory. The negative side is a
-possible impact on stability - if the main program crashes, all
-processes in the terminal windows are terminated.
-.PP
-.PP
-.SH "SEE ALSO"
-.PP
-\fIrxvt\fP(1), \fIsh\fP(1), \fI/usr/share/doc/rxvt\-unicode/README.unicode\fP
-
--- /dev/null
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title>rxvtc - control the rxvtd daemon</title>
+<link rev="made" href="mailto:perl-binary@plan9.de" />
+</head>
+
+<body style="background-color: white">
+
+<p><a name="__index__"></a></p>
+<!-- INDEX BEGIN -->
+
+<ul>
+
+ <li><a href="#name">NAME</a></li>
+ <li><a href="#synopsis">SYNOPSIS</a></li>
+ <li><a href="#description">DESCRIPTION</a></li>
+ <li><a href="#options">OPTIONS</a></li>
+ <li><a href="#environment">ENVIRONMENT</a></li>
+ <li><a href="#see_also">SEE ALSO</a></li>
+</ul>
+<!-- INDEX END -->
+
+<hr />
+<p>
+</p>
+<h1><a name="name">NAME</a></h1>
+<p>rxvtc - control the rxvtd daemon</p>
+<p>
+</p>
+<hr />
+<h1><a name="synopsis">SYNOPSIS</a></h1>
+<p><strong>rxvtc</strong> [same options as for rxvt]</p>
+<p>
+</p>
+<hr />
+<h1><a name="description">DESCRIPTION</a></h1>
+<p>This manpage describes the <strong>rxvtc</strong> client program. It connects
+to the <strong>rxvtd</strong> daemon and requests a new terminal window. It
+takes the same arguments as the <strong>rxvt</strong> program. The environment
+will also be respected. Currently, it always returns immediately after
+contacting the daemon.</p>
+<p>
+</p>
+<hr />
+<h1><a name="options">OPTIONS</a></h1>
+<p>All options that are valid for <strong>rxvt</strong> are valid for
+<strong>rxvtc</strong>, too. Please note that all options are currently
+interpreted in the context of the daemon process, which makes a difference
+for options that specify a file descriptor (such as <strong>-pty-fd</strong>).</p>
+<p>
+</p>
+<hr />
+<h1><a name="environment">ENVIRONMENT</a></h1>
+<p>All environment variables of the current process will be made available
+to the new instance, and will be interpreted as if <strong>rxvt</strong> were
+started directly.</p>
+<dl>
+<dt><strong><a name="item_rxvt_socket"><strong>RXVT_SOCKET</strong></a></strong><br />
+</dt>
+<dd>
+Both rxvtc and rxvtd use the environment variable
+<em>RXVT_SOCKET</em> to create a listening socket and to contact
+the rxvtd, respectively. If the variable is missing,
+<em>$HOME/.rxvt-unicode-<em><nodename</em> </em>> >>> is used.
+</dd>
+<p></p></dl>
+<p>
+</p>
+<hr />
+<h1><a name="see_also">SEE ALSO</a></h1>
+<p>rxvt(7), <code>rxvtd(1)</code></p>
+
+</body>
+
+</html>
--- /dev/null
+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.14
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sh \" Subsection heading
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.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. | will give a
+.\" real vertical bar. \*(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-|\(bv\*(Tr
+.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" ''
+'br\}
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
+.\" entries marked with X<> in POD. Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.if \nF \{\
+. de IX
+. tm Index:\\$1\t\\n%\t"\\$2"
+..
+. nr % 0
+. rr F
+.\}
+.\"
+.\" For nroff, turn off justification. Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.hy 0
+.if n .na
+.\"
+.\" 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 1"
+.TH rxvt 1 "2005-07-07" "5.6" "RXVT-UNICODE"
+.SH "NAME"
+@@RXVT_NAME@@c \- control the @@RXVT_NAME@@d daemon
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+\&\fB@@RXVT_NAME@@c\fR [same options as for @@RXVT_NAME@@]
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+This manpage describes the \fB@@RXVT_NAME@@c\fR client program. It connects
+to the \fB@@RXVT_NAME@@d\fR daemon and requests a new terminal window. It
+takes the same arguments as the \fB@@RXVT_NAME@@\fR program. The environment
+will also be respected. Currently, it always returns immediately after
+contacting the daemon.
+.SH "OPTIONS"
+.IX Header "OPTIONS"
+All options that are valid for \fB@@RXVT_NAME@@\fR are valid for
+\&\fB@@RXVT_NAME@@c\fR, too. Please note that all options are currently
+interpreted in the context of the daemon process, which makes a difference
+for options that specify a file descriptor (such as \fB\-pty\-fd\fR).
+.SH "ENVIRONMENT"
+.IX Header "ENVIRONMENT"
+All environment variables of the current process will be made available
+to the new instance, and will be interpreted as if \fB@@RXVT_NAME@@\fR were
+started directly.
+.IP "\fB\s-1RXVT_SOCKET\s0\fR" 4
+.IX Item "RXVT_SOCKET"
+Both @@RXVT_NAME@@c and @@RXVT_NAME@@d use the environment variable
+\&\fI\s-1RXVT_SOCKET\s0\fR to create a listening socket and to contact
+the @@RXVT_NAME@@d, respectively. If the variable is missing,
+\&\fI$HOME/.rxvt\-unicode\-\fI<nodename>\fI\fR is used.
+.SH "SEE ALSO"
+.IX Header "SEE ALSO"
+@@RXVT_NAME@@(7), @@RXVT_NAME@@d(1)
--- /dev/null
+=head1 NAME
+
+@@RXVT_NAME@@c - control the @@RXVT_NAME@@d daemon
+
+=head1 SYNOPSIS
+
+B<@@RXVT_NAME@@c> [same options as for @@RXVT_NAME@@]
+
+=head1 DESCRIPTION
+
+This manpage describes the B<@@RXVT_NAME@@c> client program. It connects
+to the B<@@RXVT_NAME@@d> daemon and requests a new terminal window. It
+takes the same arguments as the B<@@RXVT_NAME@@> program. The environment
+will also be respected. Currently, it always returns immediately after
+contacting the daemon.
+
+=head1 OPTIONS
+
+All options that are valid for B<@@RXVT_NAME@@> are valid for
+B<@@RXVT_NAME@@c>, too. Please note that all options are currently
+interpreted in the context of the daemon process, which makes a difference
+for options that specify a file descriptor (such as B<-pty-fd>).
+
+=head1 ENVIRONMENT
+
+All environment variables of the current process will be made available
+to the new instance, and will be interpreted as if B<@@RXVT_NAME@@> were
+started directly.
+
+=over 4
+
+=item B<RXVT_SOCKET>
+
+Both @@RXVT_NAME@@c and @@RXVT_NAME@@d use the environment variable
+F<RXVT_SOCKET> to create a listening socket and to contact
+the @@RXVT_NAME@@d, respectively. If the variable is missing,
+F<<< $HOME/.rxvt-unicode-I<< <nodename> >> >>> is used.
+
+=back
+
+=head1 SEE ALSO
+
+@@RXVT_NAME@@(7), @@RXVT_NAME@@d(1)
+
--- /dev/null
+NAME
+ rxvtc - control the rxvtd daemon
+
+SYNOPSIS
+ rxvtc [same options as for rxvt]
+
+DESCRIPTION
+ This manpage describes the rxvtc client program. It connects to the
+ rxvtd daemon and requests a new terminal window. It takes the same
+ arguments as the rxvt program. The environment will also be respected.
+ Currently, it always returns immediately after contacting the daemon.
+
+OPTIONS
+ All options that are valid for rxvt are valid for rxvtc, too. Please
+ note that all options are currently interpreted in the context of the
+ daemon process, which makes a difference for options that specify a file
+ descriptor (such as -pty-fd).
+
+ENVIRONMENT
+ All environment variables of the current process will be made available
+ to the new instance, and will be interpreted as if rxvt were started
+ directly.
+
+ RXVT_SOCKET
+ Both rxvtc and rxvtd use the environment variable RXVT_SOCKET to
+ create a listening socket and to contact the rxvtd, respectively. If
+ the variable is missing, $HOME/.rxvt-unicode-*<nodename>* is used.
+
+SEE ALSO
+ rxvt(7), rxvtd(1)
+
--- /dev/null
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title>rxvtd - rxvt terminal daemon</title>
+<link rev="made" href="mailto:perl-binary@plan9.de" />
+</head>
+
+<body style="background-color: white">
+
+<p><a name="__index__"></a></p>
+<!-- INDEX BEGIN -->
+
+<ul>
+
+ <li><a href="#name">NAME</a></li>
+ <li><a href="#synopsis">SYNOPSIS</a></li>
+ <li><a href="#description">DESCRIPTION</a></li>
+ <li><a href="#options">OPTIONS</a></li>
+ <li><a href="#examples">EXAMPLES</a></li>
+ <li><a href="#environment">ENVIRONMENT</a></li>
+ <li><a href="#see_also">SEE ALSO</a></li>
+</ul>
+<!-- INDEX END -->
+
+<hr />
+<p>
+</p>
+<h1><a name="name">NAME</a></h1>
+<p>rxvtd - rxvt terminal daemon</p>
+<p>
+</p>
+<hr />
+<h1><a name="synopsis">SYNOPSIS</a></h1>
+<p><strong>rxvtd</strong> [-q|--quiet] [-o|--opendisplay] [-f|--fork]</p>
+<p>
+</p>
+<hr />
+<h1><a name="description">DESCRIPTION</a></h1>
+<p>This manpage describes the rxvtd daemon, which is the same vt102
+terminal emulator as rxvt, but runs as a daemon that can open
+multiple terminal windows within the same process.</p>
+<p>You can run it from your X startup scripts, for example, although it is
+not dependent on a working DISPLAY and, in fact, can open windows on
+multiple X displays on the same time.</p>
+<p>Advantages of running a rxvt daemon include faster creation time
+for terminal windows and a lot of saved memory.</p>
+<p>The disadvantage is a possible impact on stability - if the
+main program crashes, all processes in the terminal windows are
+terminated. For example, as there is no way to cleanly react to abnormal
+connection closes, <code>xkill</code> and server resets/restarts will kill the
+<strong>rxvtd</strong> instance including all windows it has opened.</p>
+<p>
+</p>
+<hr />
+<h1><a name="options">OPTIONS</a></h1>
+<p><strong>rxvtd</strong> currently understands a few options only. Bundling of
+options is not yet supported.</p>
+<dl>
+<dt><strong><a name="item__2dq_2c__2d_2dquiet"><strong>-q</strong>, <strong>--quiet</strong></a></strong><br />
+</dt>
+<dd>
+Normally, <strong>rxvtd</strong> outputs the message <code>rxvt-unicode daemon
+listening on <path></code> after binding to its control socket. This option
+will suppress this message (errors and warnings will still be output).
+</dd>
+<p></p>
+<dt><strong><a name="item__2do_2c__2d_2dopendisplay"><strong>-o</strong>, <strong>--opendisplay</strong></a></strong><br />
+</dt>
+<dd>
+This forces <strong>rxvtd</strong> to open a connection to the current
+<code>$DISPLAY</code> and keep it open.
+</dd>
+<dd>
+<p>This is useful if you want to bind an instance of <strong>rxvtd</strong> to
+the lifetime of a specific display/server. If the server does a reset,
+<strong>rxvtd</strong> will be killed automatically.</p>
+</dd>
+<p></p>
+<dt><strong><a name="item__2df_2c__2d_2dfork"><strong>-f</strong>, <strong>--fork</strong></a></strong><br />
+</dt>
+<dd>
+This makes <strong>rxvtd</strong> fork after it has bound itself to its control
+socket.
+</dd>
+<p></p></dl>
+<p>
+</p>
+<hr />
+<h1><a name="examples">EXAMPLES</a></h1>
+<p>This is a useful invocation of <strong>rxvtd</strong> in a <em>.xsession</em>-style
+script:</p>
+<pre>
+ B<rxvtd> -q -f -o</pre>
+<p>This waits till the control socket is available, opens the current display
+and forks into the background. When you log-out, the server is reset and
+<strong>rxvtd</strong> is killed.</p>
+<p>
+</p>
+<hr />
+<h1><a name="environment">ENVIRONMENT</a></h1>
+<dl>
+<dt><strong><a name="item_rxvt_socket"><strong>RXVT_SOCKET</strong></a></strong><br />
+</dt>
+<dd>
+Both <strong>rxvtc</strong> and <strong>rxvtd</strong> use the environment variable
+<em>RXVT_SOCKET</em> to create a listening socket and to contact
+the rxvtd, respectively. If the variable is missing,
+<em>$HOME/.rxvt-unicode-<em><nodename</em> </em>> >>> is used.
+</dd>
+<p></p>
+<dt><strong><a name="item_display"><strong>DISPLAY</strong></a></strong><br />
+</dt>
+<dd>
+Only used when the <code>--opendisplay</code> option is specified. Must contain a
+valid X display name.
+</dd>
+</dl>
+<p>
+</p>
+<hr />
+<h1><a name="see_also">SEE ALSO</a></h1>
+<p>rxvt(7), <code>rxvtc(1)</code></p>
+
+</body>
+
+</html>
--- /dev/null
+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.14
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sh \" Subsection heading
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.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. | will give a
+.\" real vertical bar. \*(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-|\(bv\*(Tr
+.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" ''
+'br\}
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
+.\" entries marked with X<> in POD. Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.if \nF \{\
+. de IX
+. tm Index:\\$1\t\\n%\t"\\$2"
+..
+. nr % 0
+. rr F
+.\}
+.\"
+.\" For nroff, turn off justification. Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.hy 0
+.if n .na
+.\"
+.\" 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 1"
+.TH rxvt 1 "2005-07-07" "5.6" "RXVT-UNICODE"
+.SH "NAME"
+@@RXVT_NAME@@d \- @@RXVT_NAME@@ terminal daemon
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+\&\fB@@RXVT_NAME@@d\fR [\-q|\-\-quiet] [\-o|\-\-opendisplay] [\-f|\-\-fork]
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+This manpage describes the @@RXVT_NAME@@d daemon, which is the same vt102
+terminal emulator as @@RXVT_NAME@@, but runs as a daemon that can open
+multiple terminal windows within the same process.
+.PP
+You can run it from your X startup scripts, for example, although it is
+not dependent on a working \s-1DISPLAY\s0 and, in fact, can open windows on
+multiple X displays on the same time.
+.PP
+Advantages of running a @@RXVT_NAME@@ daemon include faster creation time
+for terminal windows and a lot of saved memory.
+.PP
+The disadvantage is a possible impact on stability \- if the
+main program crashes, all processes in the terminal windows are
+terminated. For example, as there is no way to cleanly react to abnormal
+connection closes, \f(CW\*(C`xkill\*(C'\fR and server resets/restarts will kill the
+\&\fB@@RXVT_NAME@@d\fR instance including all windows it has opened.
+.SH "OPTIONS"
+.IX Header "OPTIONS"
+\&\fB@@RXVT_NAME@@d\fR currently understands a few options only. Bundling of
+options is not yet supported.
+.IP "\fB\-q\fR, \fB\-\-quiet\fR" 4
+.IX Item "-q, --quiet"
+Normally, \fB@@RXVT_NAME@@d\fR outputs the message \f(CW\*(C`rxvt\-unicode daemon
+listening on <path>\*(C'\fR after binding to its control socket. This option
+will suppress this message (errors and warnings will still be output).
+.IP "\fB\-o\fR, \fB\-\-opendisplay\fR" 4
+.IX Item "-o, --opendisplay"
+This forces \fB@@RXVT_NAME@@d\fR to open a connection to the current
+\&\f(CW$DISPLAY\fR and keep it open.
+.Sp
+This is useful if you want to bind an instance of \fB@@RXVT_NAME@@d\fR to
+the lifetime of a specific display/server. If the server does a reset,
+\&\fB@@RXVT_NAME@@d\fR will be killed automatically.
+.IP "\fB\-f\fR, \fB\-\-fork\fR" 4
+.IX Item "-f, --fork"
+This makes \fB@@RXVT_NAME@@d\fR fork after it has bound itself to its control
+socket.
+.SH "EXAMPLES"
+.IX Header "EXAMPLES"
+This is a useful invocation of \fB@@RXVT_NAME@@d\fR in a \fI.xsession\fR\-style
+script:
+.PP
+.Vb 1
+\& B<@@RXVT_NAME@@d> -q -f -o
+.Ve
+.PP
+This waits till the control socket is available, opens the current display
+and forks into the background. When you log\-out, the server is reset and
+\&\fB@@RXVT_NAME@@d\fR is killed.
+.SH "ENVIRONMENT"
+.IX Header "ENVIRONMENT"
+.IP "\fB\s-1RXVT_SOCKET\s0\fR" 4
+.IX Item "RXVT_SOCKET"
+Both \fB@@RXVT_NAME@@c\fR and \fB@@RXVT_NAME@@d\fR use the environment variable
+\&\fI\s-1RXVT_SOCKET\s0\fR to create a listening socket and to contact
+the @@RXVT_NAME@@d, respectively. If the variable is missing,
+\&\fI$HOME/.rxvt\-unicode\-\fI<nodename>\fI\fR is used.
+.IP "\fB\s-1DISPLAY\s0\fR" 4
+.IX Item "DISPLAY"
+Only used when the \f(CW\*(C`\-\-opendisplay\*(C'\fR option is specified. Must contain a
+valid X display name.
+.RS 4
+.SH "SEE ALSO"
+.IX Header "SEE ALSO"
+.RS 4
+@@RXVT_NAME@@(7), @@RXVT_NAME@@c(1)
--- /dev/null
+=head1 NAME
+
+@@RXVT_NAME@@d - @@RXVT_NAME@@ terminal daemon
+
+=head1 SYNOPSIS
+
+B<@@RXVT_NAME@@d> [-q|--quiet] [-o|--opendisplay] [-f|--fork]
+
+=head1 DESCRIPTION
+
+This manpage describes the @@RXVT_NAME@@d daemon, which is the same vt102
+terminal emulator as @@RXVT_NAME@@, but runs as a daemon that can open
+multiple terminal windows within the same process.
+
+You can run it from your X startup scripts, for example, although it is
+not dependent on a working DISPLAY and, in fact, can open windows on
+multiple X displays on the same time.
+
+Advantages of running a @@RXVT_NAME@@ daemon include faster creation time
+for terminal windows and a lot of saved memory.
+
+The disadvantage is a possible impact on stability - if the
+main program crashes, all processes in the terminal windows are
+terminated. For example, as there is no way to cleanly react to abnormal
+connection closes, C<xkill> and server resets/restarts will kill the
+B<@@RXVT_NAME@@d> instance including all windows it has opened.
+
+=head1 OPTIONS
+
+B<@@RXVT_NAME@@d> currently understands a few options only. Bundling of
+options is not yet supported.
+
+=over 4
+
+=item B<-q>, B<--quiet>
+
+Normally, B<@@RXVT_NAME@@d> outputs the message C<< rxvt-unicode daemon
+listening on <path> >> after binding to its control socket. This option
+will suppress this message (errors and warnings will still be logged).
+
+=item B<-o>, B<--opendisplay>
+
+This forces B<@@RXVT_NAME@@d> to open a connection to the current
+C<$DISPLAY> and keep it open.
+
+This is useful if you want to bind an instance of B<@@RXVT_NAME@@d> to
+the lifetime of a specific display/server. If the server does a reset,
+B<@@RXVT_NAME@@d> will be killed automatically.
+
+=item B<-f>, B<--fork>
+
+This makes B<@@RXVT_NAME@@d> fork after it has bound itself to its control
+socket.
+
+=back
+
+=head1 EXAMPLES
+
+This is a useful invocation of B<@@RXVT_NAME@@d> in a F<.xsession>-style
+script:
+
+ B<@@RXVT_NAME@@d> -q -f -o
+
+This waits till the control socket is available, opens the current display
+and forks into the background. When you log-out, the server is reset and
+B<@@RXVT_NAME@@d> is killed.
+
+=head1 ENVIRONMENT
+
+=over 4
+
+=item B<RXVT_SOCKET>
+
+Both B<@@RXVT_NAME@@c> and B<@@RXVT_NAME@@d> use the environment variable
+F<RXVT_SOCKET> to create a listening socket and to contact
+the @@RXVT_NAME@@d, respectively. If the variable is missing,
+F<<< $HOME/.rxvt-unicode-I<< <nodename> >> >>> is used.
+
+=item B<DISPLAY>
+
+Only used when the C<--opendisplay> option is specified. Must contain a
+valid X display name.
+
+=over
+
+=head1 SEE ALSO
+
+@@RXVT_NAME@@(7), @@RXVT_NAME@@c(1)
--- /dev/null
+NAME
+ rxvtd - rxvt terminal daemon
+
+SYNOPSIS
+ rxvtd [-q|--quiet] [-o|--opendisplay] [-f|--fork]
+
+DESCRIPTION
+ This manpage describes the rxvtd daemon, which is the same vt102
+ terminal emulator as rxvt, but runs as a daemon that can open multiple
+ terminal windows within the same process.
+
+ You can run it from your X startup scripts, for example, although it is
+ not dependent on a working DISPLAY and, in fact, can open windows on
+ multiple X displays on the same time.
+
+ Advantages of running a rxvt daemon include faster creation time for
+ terminal windows and a lot of saved memory.
+
+ The disadvantage is a possible impact on stability - if the main program
+ crashes, all processes in the terminal windows are terminated. For
+ example, as there is no way to cleanly react to abnormal connection
+ closes, "xkill" and server resets/restarts will kill the rxvtd instance
+ including all windows it has opened.
+
+OPTIONS
+ rxvtd currently understands a few options only. Bundling of options is
+ not yet supported.
+
+ -q, --quiet
+ Normally, rxvtd outputs the message "rxvt-unicode daemon listening
+ on <path>" after binding to its control socket. This option will
+ suppress this message (errors and warnings will still be output).
+
+ -o, --opendisplay
+ This forces rxvtd to open a connection to the current $DISPLAY and
+ keep it open.
+
+ This is useful if you want to bind an instance of rxvtd to the
+ lifetime of a specific display/server. If the server does a reset,
+ rxvtd will be killed automatically.
+
+ -f, --fork
+ This makes rxvtd fork after it has bound itself to its control
+ socket.
+
+EXAMPLES
+ This is a useful invocation of rxvtd in a .xsession-style script:
+
+ B<rxvtd> -q -f -o
+
+ This waits till the control socket is available, opens the current
+ display and forks into the background. When you log-out, the server is
+ reset and rxvtd is killed.
+
+ENVIRONMENT
+ RXVT_SOCKET
+ Both rxvtc and rxvtd use the environment variable RXVT_SOCKET to
+ create a listening socket and to contact the rxvtd, respectively. If
+ the variable is missing, $HOME/.rxvt-unicode-*<nodename>* is used.
+
+ DISPLAY
+ Only used when the "--opendisplay" option is specified. Must contain
+ a valid X display name.
+
+SEE ALSO
+ rxvt(7), rxvtc(1)
+
get_options (r_argc, r_argv);
-#ifdef LOCAL_X_IS_UNIX
- if (rs[Rs_display_name][0] == ':')
- {
- val = rxvt_malloc (5 + strlen (rs[Rs_display_name]));
- strcpy (val, "unix");
- strcat (val, rs[Rs_display_name]);
- display = displays.get (val);
- free (val);
- }
-#endif
-
- if (!display
- && ! (display = displays.get (rs[Rs_display_name])))
+ if (!(display = displays.get (rs[Rs_display_name])))
rxvt_fatal ("can't open display %s, aborting.\n", rs[Rs_display_name]);
extract_resources ();
return err ();
}
+int opt_fork, opt_opendisplay, opt_quiet;
+
int
main (int argc, const char *const *argv)
{
+ for (int i = 1; i < argc; i++)
+ {
+ if (!strcmp (argv [i], "-f") || !strcmp (argv [i], "--fork"))
+ opt_fork = 1;
+ else if (!strcmp (argv [i], "-o") || !strcmp (argv [i], "--opendisplay"))
+ opt_opendisplay = 1;
+ else if (!strcmp (argv [i], "-q") || !strcmp (argv [i], "--quiet"))
+ opt_quiet = 1;
+ else
+ {
+ rxvt_log ("%s: unknown option '%s', aborting.\n", argv [0], argv [i]);
+ return EXIT_FAILURE;
+ }
+ }
+
rxvt_init ();
chdir ("/");
+ if (opt_opendisplay)
+ displays.get (getenv ("DISPLAY")); // open display and never release it
+
char *sockname = rxvt_connection::unix_sockname ();
unix_listener l (sockname);
- printf ("rxvt-unicode daemon listening on %s.\n", sockname);
- fflush (stdout);
+
+ if (!opt_quiet)
+ {
+ printf ("rxvt-unicode daemon listening on %s.\n", sockname);
+ fflush (stdout);
+ }
+
free (sockname);
+ if (opt_fork)
+ {
+ pid_t pid = fork ();
+
+ if (pid < 0)
+ {
+ rxvt_log ("unable to fork daemon, aborting.\n");
+ return EXIT_FAILURE;
+ }
+ else if (pid > 0)
+ _exit (EXIT_SUCCESS);
+ }
+
io_manager::loop ();
return EXIT_SUCCESS;
bool rxvt_display::init ()
{
- display = XOpenDisplay (id);
+#ifdef LOCAL_X_IS_UNIX
+ if (id[0] == ':')
+ {
+ val = rxvt_malloc (5 + strlen (id) + 1);
+ strcpy (val, "unix/");
+ strcat (val, id);
+ display = XOpenDisplay (val);
+ free (val);
+ }
+ else
+ display = 0;
+#endif
+
+ if (!display)
+ display = XOpenDisplay (id);
if (!display)
return false;