ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/rxvt-unicode/doc/rxvtperl.3.man.in
Revision: 1.66
Committed: Sat Nov 8 16:49:46 2008 UTC (15 years, 8 months ago) by root
Branch: MAIN
CVS Tags: rel-9_06
Changes since 1.65: +6 -1 lines
Log Message:
9.06

File Contents

# Content
1 .\" Automatically generated by Pod::Man 2.16 (Pod::Simple 3.05)
2 .\"
3 .\" Standard preamble:
4 .\" ========================================================================
5 .de Sh \" Subsection heading
6 .br
7 .if t .Sp
8 .ne 5
9 .PP
10 \fB\\$1\fR
11 .PP
12 ..
13 .de Sp \" Vertical space (when we can't use .PP)
14 .if t .sp .5v
15 .if n .sp
16 ..
17 .de Vb \" Begin verbatim text
18 .ft CW
19 .nf
20 .ne \\$1
21 ..
22 .de Ve \" End verbatim text
23 .ft R
24 .fi
25 ..
26 .\" Set up some character translations and predefined strings. \*(-- will
27 .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
28 .\" double quote, and \*(R" will give a right double quote. \*(C+ will
29 .\" give a nicer C++. Capital omega is used to do unbreakable dashes and
30 .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff,
31 .\" nothing in troff, for use with C<>.
32 .tr \(*W-
33 .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
34 .ie n \{\
35 . ds -- \(*W-
36 . ds PI pi
37 . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
38 . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
39 . ds L" ""
40 . ds R" ""
41 . ds C` ""
42 . ds C' ""
43 'br\}
44 .el\{\
45 . ds -- \|\(em\|
46 . ds PI \(*p
47 . ds L" ``
48 . ds R" ''
49 'br\}
50 .\"
51 .\" Escape single quotes in literal strings from groff's Unicode transform.
52 .ie \n(.g .ds Aq \(aq
53 .el .ds Aq '
54 .\"
55 .\" If the F register is turned on, we'll generate index entries on stderr for
56 .\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
57 .\" entries marked with X<> in POD. Of course, you'll have to process the
58 .\" output yourself in some meaningful fashion.
59 .ie \nF \{\
60 . de IX
61 . tm Index:\\$1\t\\n%\t"\\$2"
62 ..
63 . nr % 0
64 . rr F
65 .\}
66 .el \{\
67 . de IX
68 ..
69 .\}
70 .\"
71 .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
72 .\" Fear. Run. Save yourself. No user-serviceable parts.
73 . \" fudge factors for nroff and troff
74 .if n \{\
75 . ds #H 0
76 . ds #V .8m
77 . ds #F .3m
78 . ds #[ \f1
79 . ds #] \fP
80 .\}
81 .if t \{\
82 . ds #H ((1u-(\\\\n(.fu%2u))*.13m)
83 . ds #V .6m
84 . ds #F 0
85 . ds #[ \&
86 . ds #] \&
87 .\}
88 . \" simple accents for nroff and troff
89 .if n \{\
90 . ds ' \&
91 . ds ` \&
92 . ds ^ \&
93 . ds , \&
94 . ds ~ ~
95 . ds /
96 .\}
97 .if t \{\
98 . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
99 . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
100 . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
101 . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
102 . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
103 . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
104 .\}
105 . \" troff and (daisy-wheel) nroff accents
106 .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
107 .ds 8 \h'\*(#H'\(*b\h'-\*(#H'
108 .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
109 .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
110 .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
111 .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
112 .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
113 .ds ae a\h'-(\w'a'u*4/10)'e
114 .ds Ae A\h'-(\w'A'u*4/10)'E
115 . \" corrections for vroff
116 .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
117 .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
118 . \" for low resolution devices (crt and lpr)
119 .if \n(.H>23 .if \n(.V>19 \
120 \{\
121 . ds : e
122 . ds 8 ss
123 . ds o a
124 . ds d- d\h'-1'\(ga
125 . ds D- D\h'-1'\(hy
126 . ds th \o'bp'
127 . ds Th \o'LP'
128 . ds ae ae
129 . ds Ae AE
130 .\}
131 .rm #[ #] #H #V #F C
132 .\" ========================================================================
133 .\"
134 .IX Title "@@RXVT_NAME@@ 3"
135 .TH @@RXVT_NAME@@ 3 "2008-11-08" "@@RXVT_VERSION@@" "RXVT-UNICODE"
136 .\" For nroff, turn off justification. Always turn off hyphenation; it makes
137 .\" way too many mistakes in technical documents.
138 .if n .ad l
139 .nh
140 .SH "NAME"
141 @@RXVT_NAME@@perl \- rxvt\-unicode's embedded perl interpreter
142 .SH "SYNOPSIS"
143 .IX Header "SYNOPSIS"
144 .Vb 1
145 \& # create a file grab_test in $HOME:
146 \&
147 \& sub on_sel_grab {
148 \& warn "you selected ", $_[0]\->selection;
149 \& ()
150 \& }
151 \&
152 \& # start a @@RXVT_NAME@@ using it:
153 \&
154 \& @@RXVT_NAME@@ \-\-perl\-lib $HOME \-pe grab_test
155 .Ve
156 .SH "DESCRIPTION"
157 .IX Header "DESCRIPTION"
158 Every time a terminal object gets created, extension scripts specified via
159 the \f(CW\*(C`perl\*(C'\fR resource are loaded and associated with it.
160 .PP
161 Scripts are compiled in a 'use strict' and 'use utf8' environment, and
162 thus must be encoded as \s-1UTF\-8\s0.
163 .PP
164 Each script will only ever be loaded once, even in @@RXVT_NAME@@d, where
165 scripts will be shared (but not enabled) for all terminals.
166 .PP
167 You can disable the embedded perl interpreter by setting both \*(L"perl-ext\*(R"
168 and \*(L"perl-ext-common\*(R" resources to the empty string.
169 .SH "PREPACKAGED EXTENSIONS"
170 .IX Header "PREPACKAGED EXTENSIONS"
171 This section describes the extensions delivered with this release. You can
172 find them in \fI@@RXVT_LIBDIR@@/urxvt/perl/\fR.
173 .PP
174 You can activate them like this:
175 .PP
176 .Vb 1
177 \& @@RXVT_NAME@@ \-pe <extensionname>
178 .Ve
179 .PP
180 Or by adding them to the resource for extensions loaded by default:
181 .PP
182 .Vb 1
183 \& URxvt.perl\-ext\-common: default,selection\-autotransform
184 .Ve
185 .IP "selection (enabled by default)" 4
186 .IX Item "selection (enabled by default)"
187 (More) intelligent selection. This extension tries to be more intelligent
188 when the user extends selections (double-click and further clicks). Right
189 now, it tries to select words, urls and complete shell-quoted
190 arguments, which is very convenient, too, if your \fIls\fR supports
191 \&\f(CW\*(C`\-\-quoting\-style=shell\*(C'\fR.
192 .Sp
193 A double-click usually selects the word under the cursor, further clicks
194 will enlarge the selection.
195 .Sp
196 The selection works by trying to match a number of regexes and displaying
197 them in increasing order of length. You can add your own regexes by
198 specifying resources of the form:
199 .Sp
200 .Vb 3
201 \& URxvt.selection.pattern\-0: perl\-regex
202 \& URxvt.selection.pattern\-1: perl\-regex
203 \& ...
204 .Ve
205 .Sp
206 The index number (0, 1...) must not have any holes, and each regex must
207 contain at least one pair of capturing parentheses, which will be used for
208 the match. For example, the following adds a regex that matches everything
209 between two vertical bars:
210 .Sp
211 .Vb 1
212 \& URxvt.selection.pattern\-0: \e\e|([^|]+)\e\e|
213 .Ve
214 .Sp
215 Another example: Programs I use often output \*(L"absolute path: \*(R" at the
216 beginning of a line when they process multiple files. The following
217 pattern matches the filename (note, there is a single space at the very
218 end):
219 .Sp
220 .Vb 1
221 \& URxvt.selection.pattern\-0: ^(/[^:]+):\e
222 .Ve
223 .Sp
224 You can look at the source of the selection extension to see more
225 interesting uses, such as parsing a line from beginning to end.
226 .Sp
227 This extension also offers following bindable keyboard commands:
228 .RS 4
229 .IP "rot13" 4
230 .IX Item "rot13"
231 Rot\-13 the selection when activated. Used via keyboard trigger:
232 .Sp
233 .Vb 1
234 \& URxvt.keysym.C\-M\-r: perl:selection:rot13
235 .Ve
236 .RE
237 .RS 4
238 .RE
239 .IP "option-popup (enabled by default)" 4
240 .IX Item "option-popup (enabled by default)"
241 Binds a popup menu to Ctrl\-Button2 that lets you toggle (some) options at
242 runtime.
243 .Sp
244 Other extensions can extend this popup menu by pushing a code reference
245 onto \f(CW\*(C`@{ $term\-\*(C'\fR{option_popup_hook} }>, which gets called whenever the
246 popup is being displayed.
247 .Sp
248 Its sole argument is the popup menu, which can be modified. It should
249 either return nothing or a string, the initial boolean value and a code
250 reference. The string will be used as button text and the code reference
251 will be called when the toggle changes, with the new boolean value as
252 first argument.
253 .Sp
254 The following will add an entry \f(CW\*(C`myoption\*(C'\fR that changes
255 \&\f(CW\*(C`$self\->{myoption}\*(C'\fR:
256 .Sp
257 .Vb 3
258 \& push @{ $self\->{term}{option_popup_hook} }, sub {
259 \& ("my option" => $myoption, sub { $self\->{myoption} = $_[0] })
260 \& };
261 .Ve
262 .IP "selection-popup (enabled by default)" 4
263 .IX Item "selection-popup (enabled by default)"
264 Binds a popup menu to Ctrl\-Button3 that lets you convert the selection
265 text into various other formats/action (such as uri unescaping, perl
266 evaluation, web-browser starting etc.), depending on content.
267 .Sp
268 Other extensions can extend this popup menu by pushing a code reference
269 onto \f(CW\*(C`@{ $term\-\*(C'\fR{selection_popup_hook} }>, which gets called whenever the
270 popup is being displayed.
271 .Sp
272 Its sole argument is the popup menu, which can be modified. The selection
273 is in \f(CW$_\fR, which can be used to decide whether to add something or not.
274 It should either return nothing or a string and a code reference. The
275 string will be used as button text and the code reference will be called
276 when the button gets activated and should transform \f(CW$_\fR.
277 .Sp
278 The following will add an entry \f(CW\*(C`a to b\*(C'\fR that transforms all \f(CW\*(C`a\*(C'\fRs in
279 the selection to \f(CW\*(C`b\*(C'\fRs, but only if the selection currently contains any
280 \&\f(CW\*(C`a\*(C'\fRs:
281 .Sp
282 .Vb 4
283 \& push @{ $self\->{term}{selection_popup_hook} }, sub {
284 \& /a/ ? ("a to b" => sub { s/a/b/g }
285 \& : ()
286 \& };
287 .Ve
288 .IP "searchable\-scrollback<hotkey> (enabled by default)" 4
289 .IX Item "searchable-scrollback<hotkey> (enabled by default)"
290 Adds regex search functionality to the scrollback buffer, triggered
291 by a hotkey (default: \f(CW\*(C`M\-s\*(C'\fR). While in search mode, normal terminal
292 input/output is suspended and a regex is displayed at the bottom of the
293 screen.
294 .Sp
295 Inputting characters appends them to the regex and continues incremental
296 search. \f(CW\*(C`BackSpace\*(C'\fR removes a character from the regex, \f(CW\*(C`Up\*(C'\fR and \f(CW\*(C`Down\*(C'\fR
297 search upwards/downwards in the scrollback buffer, \f(CW\*(C`End\*(C'\fR jumps to the
298 bottom. \f(CW\*(C`Escape\*(C'\fR leaves search mode and returns to the point where search
299 was started, while \f(CW\*(C`Enter\*(C'\fR or \f(CW\*(C`Return\*(C'\fR stay at the current position and
300 additionally stores the first match in the current line into the primary
301 selection if the \f(CW\*(C`Shift\*(C'\fR modifier is active.
302 .Sp
303 The regex defaults to \*(L"(?i)\*(R", resulting in a case-insensitive search. To
304 get a case-sensitive search you can delete this prefix using \f(CW\*(C`BackSpace\*(C'\fR
305 or simply use an uppercase character which removes the \*(L"(?i)\*(R" prefix.
306 .Sp
307 See perlre for more info about perl regular expression syntax.
308 .IP "readline (enabled by default)" 4
309 .IX Item "readline (enabled by default)"
310 A support package that tries to make editing with readline easier. At
311 the moment, it reacts to clicking shift-left mouse button by trying to
312 move the text cursor to this position. It does so by generating as many
313 cursor-left or cursor-right keypresses as required (this only works
314 for programs that correctly support wide characters).
315 .Sp
316 To avoid too many false positives, this is only done when:
317 .RS 4
318 .IP "\- the tty is in \s-1ICANON\s0 state." 4
319 .IX Item "- the tty is in ICANON state."
320 .PD 0
321 .IP "\- the text cursor is visible." 4
322 .IX Item "- the text cursor is visible."
323 .IP "\- the primary screen is currently being displayed." 4
324 .IX Item "- the primary screen is currently being displayed."
325 .IP "\- the mouse is on the same (multi\-row\-) line as the text cursor." 4
326 .IX Item "- the mouse is on the same (multi-row-) line as the text cursor."
327 .RE
328 .RS 4
329 .PD
330 .Sp
331 The normal selection mechanism isn't disabled, so quick successive clicks
332 might interfere with selection creation in harmless ways.
333 .RE
334 .IP "selection-autotransform" 4
335 .IX Item "selection-autotransform"
336 This selection allows you to do automatic transforms on a selection
337 whenever a selection is made.
338 .Sp
339 It works by specifying perl snippets (most useful is a single \f(CW\*(C`s///\*(C'\fR
340 operator) that modify \f(CW$_\fR as resources:
341 .Sp
342 .Vb 3
343 \& URxvt.selection\-autotransform.0: transform
344 \& URxvt.selection\-autotransform.1: transform
345 \& ...
346 .Ve
347 .Sp
348 For example, the following will transform selections of the form
349 \&\f(CW\*(C`filename:number\*(C'\fR, often seen in compiler messages, into \f(CW\*(C`vi +$filename
350 $word\*(C'\fR:
351 .Sp
352 .Vb 1
353 \& URxvt.selection\-autotransform.0: s/^([^:[:space:]]+):(\e\ed+):?$/vi +$2 \e\eQ$1\e\eE\e\ex0d/
354 .Ve
355 .Sp
356 And this example matches the same,but replaces it with vi-commands you can
357 paste directly into your (vi :) editor:
358 .Sp
359 .Vb 1
360 \& URxvt.selection\-autotransform.0: s/^([^:[:space:]]+(\e\ed+):?$/:e \e\eQ$1\e\eE\e\ex0d:$2\e\ex0d/
361 .Ve
362 .Sp
363 Of course, this can be modified to suit your needs and your editor :)
364 .Sp
365 To expand the example above to typical perl error messages (\*(L"\s-1XXX\s0 at
366 \&\s-1FILENAME\s0 line \s-1YYY\s0.\*(R"), you need a slightly more elaborate solution:
367 .Sp
368 .Vb 2
369 \& URxvt.selection.pattern\-0: ( at .*? line \e\ed+[,.])
370 \& URxvt.selection\-autotransform.0: s/^ at (.*?) line (\e\ed+)[,.]$/:e \e\eQ$1\eE\e\ex0d:$2\e\ex0d/
371 .Ve
372 .Sp
373 The first line tells the selection code to treat the unchanging part of
374 every error message as a selection pattern, and the second line transforms
375 the message into vi commands to load the file.
376 .IP "tabbed" 4
377 .IX Item "tabbed"
378 This transforms the terminal into a tabbar with additional terminals, that
379 is, it implements what is commonly referred to as \*(L"tabbed terminal\*(R". The topmost line
380 displays a \*(L"[\s-1NEW\s0]\*(R" button, which, when clicked, will add a new tab, followed by one
381 button per tab.
382 .Sp
383 Clicking a button will activate that tab. Pressing \fBShift-Left\fR and
384 \&\fBShift-Right\fR will switch to the tab left or right of the current one,
385 while \fBShift-Down\fR creates a new tab.
386 .Sp
387 The tabbar itself can be configured similarly to a normal terminal, but
388 with a resource class of \f(CW\*(C`URxvt.tabbed\*(C'\fR. In addition, it supports the
389 following four resources (shown with defaults):
390 .Sp
391 .Vb 4
392 \& URxvt.tabbed.tabbar\-fg: <colour\-index, default 3>
393 \& URxvt.tabbed.tabbar\-bg: <colour\-index, default 0>
394 \& URxvt.tabbed.tab\-fg: <colour\-index, default 0>
395 \& URxvt.tabbed.tab\-bg: <colour\-index, default 1>
396 .Ve
397 .Sp
398 See \fI\s-1COLOR\s0 \s-1AND\s0 \s-1GRAPHICS\s0\fR in the @@RXVT_NAME@@(1) manpage for valid
399 indices.
400 .IP "matcher" 4
401 .IX Item "matcher"
402 Uses per-line display filtering (\f(CW\*(C`on_line_update\*(C'\fR) to underline text
403 matching a certain pattern and make it clickable. When clicked with the
404 mouse button specified in the \f(CW\*(C`matcher.button\*(C'\fR resource (default 2, or
405 middle), the program specified in the \f(CW\*(C`matcher.launcher\*(C'\fR resource
406 (default, the \f(CW\*(C`urlLauncher\*(C'\fR resource, \f(CW\*(C`sensible\-browser\*(C'\fR) will be started
407 with the matched text as first argument. The default configuration is
408 suitable for matching URLs and launching a web browser, like the
409 former \*(L"mark-urls\*(R" extension.
410 .Sp
411 The default pattern to match URLs can be overridden with the
412 \&\f(CW\*(C`matcher.pattern.0\*(C'\fR resource, and additional patterns can be specified
413 with numbered patterns, in a manner similar to the \*(L"selection\*(R" extension.
414 The launcher can also be overridden on a per-pattern basis.
415 .Sp
416 It is possible to activate the most recently seen match from the keyboard.
417 Simply bind a keysym to \*(L"perl:matcher\*(R" as seen in the example below.
418 .Sp
419 Example configuration:
420 .Sp
421 .Vb 7
422 \& URxvt.perl\-ext: default,matcher
423 \& URxvt.urlLauncher: sensible\-browser
424 \& URxvt.keysym.C\-Delete: perl:matcher
425 \& URxvt.matcher.button: 1
426 \& URxvt.matcher.pattern.1: \e\ebwww\e\e.[\e\ew\-]+\e\e.[\e\ew./?&@#\-]*[\e\ew/\-]
427 \& URxvt.matcher.pattern.2: \e\eB(/\e\eS+?):(\e\ed+)(?=:|$)
428 \& URxvt.matcher.launcher.2: gvim +$2 $1
429 .Ve
430 .IP "xim-onthespot" 4
431 .IX Item "xim-onthespot"
432 This (experimental) perl extension implements OnTheSpot editing. It does
433 not work perfectly, and some input methods don't seem to work well with
434 OnTheSpot editing in general, but it seems to work at least for \s-1SCIM\s0 and
435 kinput2.
436 .Sp
437 You enable it by specifying this extension and a preedit style of
438 \&\f(CW\*(C`OnTheSpot\*(C'\fR, i.e.:
439 .Sp
440 .Vb 1
441 \& @@RXVT_NAME@@ \-pt OnTheSpot \-pe xim\-onthespot
442 .Ve
443 .IP "kuake<hotkey>" 4
444 .IX Item "kuake<hotkey>"
445 A very primitive quake-console-like extension. It was inspired by a
446 description of how the programs \f(CW\*(C`kuake\*(C'\fR and \f(CW\*(C`yakuake\*(C'\fR work: Whenever the
447 user presses a global accelerator key (by default \f(CW\*(C`F10\*(C'\fR), the terminal
448 will show or hide itself. Another press of the accelerator key will hide
449 or show it again.
450 .Sp
451 Initially, the window will not be shown when using this extension.
452 .Sp
453 This is useful if you need a single terminal that is not using any desktop
454 space most of the time but is quickly available at the press of a key.
455 .Sp
456 The accelerator key is grabbed regardless of any modifiers, so this
457 extension will actually grab a physical key just for this function.
458 .Sp
459 If you want a quake-like animation, tell your window manager to do so
460 (fvwm can do it).
461 .IP "overlay-osc" 4
462 .IX Item "overlay-osc"
463 This extension implements some \s-1OSC\s0 commands to display timed popups on the
464 screen \- useful for status displays from within scripts. You have to read
465 the sources for more info.
466 .IP "block-graphics-to-ascii" 4
467 .IX Item "block-graphics-to-ascii"
468 A not very useful example of filtering all text output to the terminal
469 by replacing all line-drawing characters (U+2500 .. U+259F) by a
470 similar-looking ascii character.
471 .IP "digital-clock" 4
472 .IX Item "digital-clock"
473 Displays a digital clock using the built-in overlay.
474 .IP "remote-clipboard" 4
475 .IX Item "remote-clipboard"
476 Somewhat of a misnomer, this extension adds two menu entries to the
477 selection popup that allows one to run external commands to store the
478 selection somewhere and fetch it again.
479 .Sp
480 We use it to implement a \*(L"distributed selection mechanism\*(R", which just
481 means that one command uploads the file to a remote server, and another
482 reads it.
483 .Sp
484 The commands can be set using the \f(CW\*(C`URxvt.remote\-selection.store\*(C'\fR and
485 \&\f(CW\*(C`URxvt.remote\-selection.fetch\*(C'\fR resources. The first should read the
486 selection to store from \s-1STDIN\s0 (always in \s-1UTF\-8\s0), the second should provide
487 the selection data on \s-1STDOUT\s0 (also in \s-1UTF\-8\s0).
488 .Sp
489 The defaults (which are likely useless to you) use rsh and cat:
490 .Sp
491 .Vb 2
492 \& URxvt.remote\-selection.store: rsh ruth \*(Aqcat >/tmp/distributed\-selection\*(Aq
493 \& URxvt.remote\-selection.fetch: rsh ruth \*(Aqcat /tmp/distributed\-selection\*(Aq
494 .Ve
495 .IP "selection-pastebin" 4
496 .IX Item "selection-pastebin"
497 This is a little rarely useful extension that Uploads the selection as
498 textfile to a remote site (or does other things). (The implementation is
499 not currently secure for use in a multiuser environment as it writes to
500 \&\fI/tmp\fR directly.).
501 .Sp
502 It listens to the \f(CW\*(C`selection\-pastebin:remote\-pastebin\*(C'\fR keyboard command,
503 i.e.
504 .Sp
505 .Vb 1
506 \& URxvt.keysym.C\-M\-e: perl:selection\-pastebin:remote\-pastebin
507 .Ve
508 .Sp
509 Pressing this combination runs a command with \f(CW\*(C`%\*(C'\fR replaced by the name of
510 the textfile. This command can be set via a resource:
511 .Sp
512 .Vb 1
513 \& URxvt.selection\-pastebin.cmd: rsync \-apP % ruth:/var/www/www.ta\-sa.org/files/txt/.
514 .Ve
515 .Sp
516 And the default is likely not useful to anybody but the few people around
517 here :)
518 .Sp
519 The name of the textfile is the hex encoded md5 sum of the selection, so
520 the same content should lead to the same filename.
521 .Sp
522 After a successful upload the selection will be replaced by the text given
523 in the \f(CW\*(C`selection\-pastebin\-url\*(C'\fR resource (again, the % is the placeholder
524 for the filename):
525 .Sp
526 .Vb 1
527 \& URxvt.selection\-pastebin.url: http://www.ta\-sa.org/files/txt/%
528 .Ve
529 .Sp
530 \&\fINote to xrdb users:\fR xrdb uses the C preprocessor, which might interpret
531 the double \f(CW\*(C`/\*(C'\fR characters as comment start. Use \f(CW\*(C`\e057\e057\*(C'\fR instead,
532 which works regardless of wether xrdb is used to parse the resource file
533 or not.
534 .IP "example-refresh-hooks" 4
535 .IX Item "example-refresh-hooks"
536 Displays a very simple digital clock in the upper right corner of the
537 window. Illustrates overwriting the refresh callbacks to create your own
538 overlays or changes.
539 .SH "API DOCUMENTATION"
540 .IX Header "API DOCUMENTATION"
541 .Sh "General \s-1API\s0 Considerations"
542 .IX Subsection "General API Considerations"
543 All objects (such as terminals, time watchers etc.) are typical
544 reference-to-hash objects. The hash can be used to store anything you
545 like. All members starting with an underscore (such as \f(CW\*(C`_ptr\*(C'\fR or
546 \&\f(CW\*(C`_hook\*(C'\fR) are reserved for internal uses and \fB\s-1MUST\s0 \s-1NOT\s0\fR be accessed or
547 modified).
548 .PP
549 When objects are destroyed on the \*(C+ side, the perl object hashes are
550 emptied, so its best to store related objects such as time watchers and
551 the like inside the terminal object so they get destroyed as soon as the
552 terminal is destroyed.
553 .PP
554 Argument names also often indicate the type of a parameter. Here are some
555 hints on what they mean:
556 .ie n .IP "$text" 4
557 .el .IP "\f(CW$text\fR" 4
558 .IX Item "$text"
559 Rxvt-unicodes special way of encoding text, where one \*(L"unicode\*(R" character
560 always represents one screen cell. See ROW_t for a discussion of this format.
561 .ie n .IP "$string" 4
562 .el .IP "\f(CW$string\fR" 4
563 .IX Item "$string"
564 A perl text string, with an emphasis on \fItext\fR. It can store all unicode
565 characters and is to be distinguished with text encoded in a specific
566 encoding (often locale-specific) and binary data.
567 .ie n .IP "$octets" 4
568 .el .IP "\f(CW$octets\fR" 4
569 .IX Item "$octets"
570 Either binary data or \- more common \- a text string encoded in a
571 locale-specific way.
572 .Sh "Extension Objects"
573 .IX Subsection "Extension Objects"
574 Every perl extension is a perl class. A separate perl object is created
575 for each terminal, and each terminal has its own set of extenion objects,
576 which are passed as the first parameter to hooks. So extensions can use
577 their \f(CW$self\fR object without having to think about clashes with other
578 extensions or other terminals, with the exception of methods and members
579 that begin with an underscore character \f(CW\*(C`_\*(C'\fR: these are reserved for
580 internal use.
581 .PP
582 Although it isn't a \f(CW\*(C`urxvt::term\*(C'\fR object, you can call all methods of the
583 \&\f(CW\*(C`urxvt::term\*(C'\fR class on this object.
584 .PP
585 It has the following methods and data members:
586 .ie n .IP "$urxvt_term\fR = \f(CW$self\->{term}" 4
587 .el .IP "\f(CW$urxvt_term\fR = \f(CW$self\fR\->{term}" 4
588 .IX Item "$urxvt_term = $self->{term}"
589 Returns the \f(CW\*(C`urxvt::term\*(C'\fR object associated with this instance of the
590 extension. This member \fImust not\fR be changed in any way.
591 .ie n .IP "$self\fR\->enable ($hook_name => \f(CW$cb\fR, [$hook_name => \f(CW$cb..])" 4
592 .el .IP "\f(CW$self\fR\->enable ($hook_name => \f(CW$cb\fR, [$hook_name => \f(CW$cb\fR..])" 4
593 .IX Item "$self->enable ($hook_name => $cb, [$hook_name => $cb..])"
594 Dynamically enable the given hooks (named without the \f(CW\*(C`on_\*(C'\fR prefix) for
595 this extension, replacing any previous hook. This is useful when you want
596 to overwrite time-critical hooks only temporarily.
597 .ie n .IP "$self\fR\->disable ($hook_name[, \f(CW$hook_name..])" 4
598 .el .IP "\f(CW$self\fR\->disable ($hook_name[, \f(CW$hook_name\fR..])" 4
599 .IX Item "$self->disable ($hook_name[, $hook_name..])"
600 Dynamically disable the given hooks.
601 .Sh "Hooks"
602 .IX Subsection "Hooks"
603 The following subroutines can be declared in extension files, and will be
604 called whenever the relevant event happens.
605 .PP
606 The first argument passed to them is an extension object as described in
607 the in the \f(CW\*(C`Extension Objects\*(C'\fR section.
608 .PP
609 \&\fBAll\fR of these hooks must return a boolean value. If any of the called
610 hooks returns true, then the event counts as being \fIconsumed\fR, and the
611 relevant action might not be carried out by the \*(C+ code.
612 .PP
613 \&\fIWhen in doubt, return a false value (preferably \f(CI\*(C`()\*(C'\fI).\fR
614 .ie n .IP "on_init $term" 4
615 .el .IP "on_init \f(CW$term\fR" 4
616 .IX Item "on_init $term"
617 Called after a new terminal object has been initialized, but before
618 windows are created or the command gets run. Most methods are unsafe to
619 call or deliver senseless data, as terminal size and other characteristics
620 have not yet been determined. You can safely query and change resources
621 and options, though. For many purposes the \f(CW\*(C`on_start\*(C'\fR hook is a better
622 place.
623 .ie n .IP "on_start $term" 4
624 .el .IP "on_start \f(CW$term\fR" 4
625 .IX Item "on_start $term"
626 Called at the very end of initialisation of a new terminal, just before
627 trying to map (display) the toplevel and returning to the main loop.
628 .ie n .IP "on_destroy $term" 4
629 .el .IP "on_destroy \f(CW$term\fR" 4
630 .IX Item "on_destroy $term"
631 Called whenever something tries to destroy terminal, when the terminal is
632 still fully functional (not for long, though).
633 .ie n .IP "on_reset $term" 4
634 .el .IP "on_reset \f(CW$term\fR" 4
635 .IX Item "on_reset $term"
636 Called after the screen is \*(L"reset\*(R" for any reason, such as resizing or
637 control sequences. Here is where you can react on changes to size-related
638 variables.
639 .ie n .IP "on_child_start $term\fR, \f(CW$pid" 4
640 .el .IP "on_child_start \f(CW$term\fR, \f(CW$pid\fR" 4
641 .IX Item "on_child_start $term, $pid"
642 Called just after the child process has been \f(CW\*(C`fork\*(C'\fRed.
643 .ie n .IP "on_child_exit $term\fR, \f(CW$status" 4
644 .el .IP "on_child_exit \f(CW$term\fR, \f(CW$status\fR" 4
645 .IX Item "on_child_exit $term, $status"
646 Called just after the child process has exited. \f(CW$status\fR is the status
647 from \f(CW\*(C`waitpid\*(C'\fR.
648 .ie n .IP "on_sel_make $term\fR, \f(CW$eventtime" 4
649 .el .IP "on_sel_make \f(CW$term\fR, \f(CW$eventtime\fR" 4
650 .IX Item "on_sel_make $term, $eventtime"
651 Called whenever a selection has been made by the user, but before the
652 selection text is copied, so changes to the beginning, end or type of the
653 selection will be honored.
654 .Sp
655 Returning a true value aborts selection making by urxvt, in which case you
656 have to make a selection yourself by calling \f(CW\*(C`$term\->selection_grab\*(C'\fR.
657 .ie n .IP "on_sel_grab $term\fR, \f(CW$eventtime" 4
658 .el .IP "on_sel_grab \f(CW$term\fR, \f(CW$eventtime\fR" 4
659 .IX Item "on_sel_grab $term, $eventtime"
660 Called whenever a selection has been copied, but before the selection is
661 requested from the server. The selection text can be queried and changed
662 by calling \f(CW\*(C`$term\->selection\*(C'\fR.
663 .Sp
664 Returning a true value aborts selection grabbing. It will still be highlighted.
665 .ie n .IP "on_sel_extend $term" 4
666 .el .IP "on_sel_extend \f(CW$term\fR" 4
667 .IX Item "on_sel_extend $term"
668 Called whenever the user tries to extend the selection (e.g. with a double
669 click) and is either supposed to return false (normal operation), or
670 should extend the selection itself and return true to suppress the built-in
671 processing. This can happen multiple times, as long as the callback
672 returns true, it will be called on every further click by the user and is
673 supposed to enlarge the selection more and more, if possible.
674 .Sp
675 See the \fIselection\fR example extension.
676 .ie n .IP "on_view_change $term\fR, \f(CW$offset" 4
677 .el .IP "on_view_change \f(CW$term\fR, \f(CW$offset\fR" 4
678 .IX Item "on_view_change $term, $offset"
679 Called whenever the view offset changes, i.e. the user or program
680 scrolls. Offset \f(CW0\fR means display the normal terminal, positive values
681 show this many lines of scrollback.
682 .ie n .IP "on_scroll_back $term\fR, \f(CW$lines\fR, \f(CW$saved" 4
683 .el .IP "on_scroll_back \f(CW$term\fR, \f(CW$lines\fR, \f(CW$saved\fR" 4
684 .IX Item "on_scroll_back $term, $lines, $saved"
685 Called whenever lines scroll out of the terminal area into the scrollback
686 buffer. \f(CW$lines\fR is the number of lines scrolled out and may be larger
687 than the scroll back buffer or the terminal.
688 .Sp
689 It is called before lines are scrolled out (so rows 0 .. min ($lines \- 1,
690 \&\f(CW$nrow\fR \- 1) represent the lines to be scrolled out). \f(CW$saved\fR is the total
691 number of lines that will be in the scrollback buffer.
692 .ie n .IP "on_osc_seq $term\fR, \f(CW$op\fR, \f(CW$args\fR, \f(CW$resp" 4
693 .el .IP "on_osc_seq \f(CW$term\fR, \f(CW$op\fR, \f(CW$args\fR, \f(CW$resp\fR" 4
694 .IX Item "on_osc_seq $term, $op, $args, $resp"
695 Called on every \s-1OSC\s0 sequence and can be used to suppress it or modify its
696 behaviour. The default should be to return an empty list. A true value
697 suppresses execution of the request completely. Make sure you don't get
698 confused by recursive invocations when you output an \s-1OSC\s0 sequence within
699 this callback.
700 .Sp
701 \&\f(CW\*(C`on_osc_seq_perl\*(C'\fR should be used for new behaviour.
702 .ie n .IP "on_osc_seq_perl $term\fR, \f(CW$args\fR, \f(CW$resp" 4
703 .el .IP "on_osc_seq_perl \f(CW$term\fR, \f(CW$args\fR, \f(CW$resp\fR" 4
704 .IX Item "on_osc_seq_perl $term, $args, $resp"
705 Called whenever the \fB\s-1ESC\s0 ] 777 ; string \s-1ST\s0\fR command sequence (\s-1OSC\s0 =
706 operating system command) is processed. Cursor position and other state
707 information is up-to-date when this happens. For interoperability, the
708 string should start with the extension name (sans \-osc) and a semicolon,
709 to distinguish it from commands for other extensions, and this might be
710 enforced in the future.
711 .Sp
712 For example, \f(CW\*(C`overlay\-osc\*(C'\fR uses this:
713 .Sp
714 .Vb 2
715 \& sub on_osc_seq_perl {
716 \& my ($self, $osc, $resp) = @_;
717 \&
718 \& return unless $osc =~ s/^overlay;//;
719 \&
720 \& ... process remaining $osc string
721 \& }
722 .Ve
723 .Sp
724 Be careful not ever to trust (in a security sense) the data you receive,
725 as its source can not easily be controlled (e\-mail content, messages from
726 other users on the same system etc.).
727 .Sp
728 For responses, \f(CW$resp\fR contains the end-of-args separator used by the
729 sender.
730 .ie n .IP "on_add_lines $term\fR, \f(CW$string" 4
731 .el .IP "on_add_lines \f(CW$term\fR, \f(CW$string\fR" 4
732 .IX Item "on_add_lines $term, $string"
733 Called whenever text is about to be output, with the text as argument. You
734 can filter/change and output the text yourself by returning a true value
735 and calling \f(CW\*(C`$term\->scr_add_lines\*(C'\fR yourself. Please note that this
736 might be very slow, however, as your hook is called for \fBall\fR text being
737 output.
738 .ie n .IP "on_tt_write $term\fR, \f(CW$octets" 4
739 .el .IP "on_tt_write \f(CW$term\fR, \f(CW$octets\fR" 4
740 .IX Item "on_tt_write $term, $octets"
741 Called whenever some data is written to the tty/pty and can be used to
742 suppress or filter tty input.
743 .ie n .IP "on_line_update $term\fR, \f(CW$row" 4
744 .el .IP "on_line_update \f(CW$term\fR, \f(CW$row\fR" 4
745 .IX Item "on_line_update $term, $row"
746 Called whenever a line was updated or changed. Can be used to filter
747 screen output (e.g. underline urls or other useless stuff). Only lines
748 that are being shown will be filtered, and, due to performance reasons,
749 not always immediately.
750 .Sp
751 The row number is always the topmost row of the line if the line spans
752 multiple rows.
753 .Sp
754 Please note that, if you change the line, then the hook might get called
755 later with the already-modified line (e.g. if unrelated parts change), so
756 you cannot just toggle rendition bits, but only set them.
757 .ie n .IP "on_refresh_begin $term" 4
758 .el .IP "on_refresh_begin \f(CW$term\fR" 4
759 .IX Item "on_refresh_begin $term"
760 Called just before the screen gets redrawn. Can be used for overlay or
761 similar effects by modifying the terminal contents in refresh_begin, and
762 restoring them in refresh_end. The built-in overlay and selection display
763 code is run after this hook, and takes precedence.
764 .ie n .IP "on_refresh_end $term" 4
765 .el .IP "on_refresh_end \f(CW$term\fR" 4
766 .IX Item "on_refresh_end $term"
767 Called just after the screen gets redrawn. See \f(CW\*(C`on_refresh_begin\*(C'\fR.
768 .ie n .IP "on_user_command $term\fR, \f(CW$string" 4
769 .el .IP "on_user_command \f(CW$term\fR, \f(CW$string\fR" 4
770 .IX Item "on_user_command $term, $string"
771 Called whenever a user-configured event is being activated (e.g. via
772 a \f(CW\*(C`perl:string\*(C'\fR action bound to a key, see description of the \fBkeysym\fR
773 resource in the @@RXVT_NAME@@(1) manpage).
774 .Sp
775 The event is simply the action string. This interface is assumed to change
776 slightly in the future.
777 .ie n .IP "on_resize_all_windows $tern\fR, \f(CW$new_width\fR, \f(CW$new_height" 4
778 .el .IP "on_resize_all_windows \f(CW$tern\fR, \f(CW$new_width\fR, \f(CW$new_height\fR" 4
779 .IX Item "on_resize_all_windows $tern, $new_width, $new_height"
780 Called just after the new window size has been calculated, but before
781 windows are actually being resized or hints are being set. If this hook
782 returns \s-1TRUE\s0, setting of the window hints is being skipped.
783 .ie n .IP "on_x_event $term\fR, \f(CW$event" 4
784 .el .IP "on_x_event \f(CW$term\fR, \f(CW$event\fR" 4
785 .IX Item "on_x_event $term, $event"
786 Called on every X event received on the vt window (and possibly other
787 windows). Should only be used as a last resort. Most event structure
788 members are not passed.
789 .ie n .IP "on_root_event $term\fR, \f(CW$event" 4
790 .el .IP "on_root_event \f(CW$term\fR, \f(CW$event\fR" 4
791 .IX Item "on_root_event $term, $event"
792 Like \f(CW\*(C`on_x_event\*(C'\fR, but is called for events on the root window.
793 .ie n .IP "on_focus_in $term" 4
794 .el .IP "on_focus_in \f(CW$term\fR" 4
795 .IX Item "on_focus_in $term"
796 Called whenever the window gets the keyboard focus, before rxvt-unicode
797 does focus in processing.
798 .ie n .IP "on_focus_out $term" 4
799 .el .IP "on_focus_out \f(CW$term\fR" 4
800 .IX Item "on_focus_out $term"
801 Called whenever the window loses keyboard focus, before rxvt-unicode does
802 focus out processing.
803 .ie n .IP "on_configure_notify $term\fR, \f(CW$event" 4
804 .el .IP "on_configure_notify \f(CW$term\fR, \f(CW$event\fR" 4
805 .IX Item "on_configure_notify $term, $event"
806 .PD 0
807 .ie n .IP "on_property_notify $term\fR, \f(CW$event" 4
808 .el .IP "on_property_notify \f(CW$term\fR, \f(CW$event\fR" 4
809 .IX Item "on_property_notify $term, $event"
810 .ie n .IP "on_key_press $term\fR, \f(CW$event\fR, \f(CW$keysym\fR, \f(CW$octets" 4
811 .el .IP "on_key_press \f(CW$term\fR, \f(CW$event\fR, \f(CW$keysym\fR, \f(CW$octets\fR" 4
812 .IX Item "on_key_press $term, $event, $keysym, $octets"
813 .ie n .IP "on_key_release $term\fR, \f(CW$event\fR, \f(CW$keysym" 4
814 .el .IP "on_key_release \f(CW$term\fR, \f(CW$event\fR, \f(CW$keysym\fR" 4
815 .IX Item "on_key_release $term, $event, $keysym"
816 .ie n .IP "on_button_press $term\fR, \f(CW$event" 4
817 .el .IP "on_button_press \f(CW$term\fR, \f(CW$event\fR" 4
818 .IX Item "on_button_press $term, $event"
819 .ie n .IP "on_button_release $term\fR, \f(CW$event" 4
820 .el .IP "on_button_release \f(CW$term\fR, \f(CW$event\fR" 4
821 .IX Item "on_button_release $term, $event"
822 .ie n .IP "on_motion_notify $term\fR, \f(CW$event" 4
823 .el .IP "on_motion_notify \f(CW$term\fR, \f(CW$event\fR" 4
824 .IX Item "on_motion_notify $term, $event"
825 .ie n .IP "on_map_notify $term\fR, \f(CW$event" 4
826 .el .IP "on_map_notify \f(CW$term\fR, \f(CW$event\fR" 4
827 .IX Item "on_map_notify $term, $event"
828 .ie n .IP "on_unmap_notify $term\fR, \f(CW$event" 4
829 .el .IP "on_unmap_notify \f(CW$term\fR, \f(CW$event\fR" 4
830 .IX Item "on_unmap_notify $term, $event"
831 .PD
832 Called whenever the corresponding X event is received for the terminal If
833 the hook returns true, then the even will be ignored by rxvt-unicode.
834 .Sp
835 The event is a hash with most values as named by Xlib (see the XEvent
836 manpage), with the additional members \f(CW\*(C`row\*(C'\fR and \f(CW\*(C`col\*(C'\fR, which are the
837 (real, not screen-based) row and column under the mouse cursor.
838 .Sp
839 \&\f(CW\*(C`on_key_press\*(C'\fR additionally receives the string rxvt-unicode would
840 output, if any, in locale-specific encoding.
841 .Sp
842 subwindow.
843 .ie n .IP "on_client_message $term\fR, \f(CW$event" 4
844 .el .IP "on_client_message \f(CW$term\fR, \f(CW$event\fR" 4
845 .IX Item "on_client_message $term, $event"
846 .PD 0
847 .ie n .IP "on_wm_protocols $term\fR, \f(CW$event" 4
848 .el .IP "on_wm_protocols \f(CW$term\fR, \f(CW$event\fR" 4
849 .IX Item "on_wm_protocols $term, $event"
850 .ie n .IP "on_wm_delete_window $term\fR, \f(CW$event" 4
851 .el .IP "on_wm_delete_window \f(CW$term\fR, \f(CW$event\fR" 4
852 .IX Item "on_wm_delete_window $term, $event"
853 .PD
854 Called when various types of ClientMessage events are received (all with
855 format=32, \s-1WM_PROTOCOLS\s0 or \s-1WM_PROTOCOLS:WM_DELETE_WINDOW\s0).
856 .ie n .Sh "Variables in the ""urxvt"" Package"
857 .el .Sh "Variables in the \f(CWurxvt\fP Package"
858 .IX Subsection "Variables in the urxvt Package"
859 .ie n .IP "$urxvt::LIBDIR" 4
860 .el .IP "\f(CW$urxvt::LIBDIR\fR" 4
861 .IX Item "$urxvt::LIBDIR"
862 The rxvt-unicode library directory, where, among other things, the perl
863 modules and scripts are stored.
864 .ie n .IP "$urxvt::RESCLASS\fR, \f(CW$urxvt::RESCLASS" 4
865 .el .IP "\f(CW$urxvt::RESCLASS\fR, \f(CW$urxvt::RESCLASS\fR" 4
866 .IX Item "$urxvt::RESCLASS, $urxvt::RESCLASS"
867 The resource class and name rxvt-unicode uses to look up X resources.
868 .ie n .IP "$urxvt::RXVTNAME" 4
869 .el .IP "\f(CW$urxvt::RXVTNAME\fR" 4
870 .IX Item "$urxvt::RXVTNAME"
871 The basename of the installed binaries, usually \f(CW\*(C`urxvt\*(C'\fR.
872 .ie n .IP "$urxvt::TERM" 4
873 .el .IP "\f(CW$urxvt::TERM\fR" 4
874 .IX Item "$urxvt::TERM"
875 The current terminal. This variable stores the current \f(CW\*(C`urxvt::term\*(C'\fR
876 object, whenever a callback/hook is executing.
877 .ie n .IP "@urxvt::TERM_INIT" 4
878 .el .IP "\f(CW@urxvt::TERM_INIT\fR" 4
879 .IX Item "@urxvt::TERM_INIT"
880 All code references in this array will be called as methods of the next newly
881 created \f(CW\*(C`urxvt::term\*(C'\fR object (during the \f(CW\*(C`on_init\*(C'\fR phase). The array
882 gets cleared before the code references that were in it are being executed,
883 so references can push themselves onto it again if they so desire.
884 .Sp
885 This complements to the perl-eval command line option, but gets executed
886 first.
887 .ie n .IP "@urxvt::TERM_EXT" 4
888 .el .IP "\f(CW@urxvt::TERM_EXT\fR" 4
889 .IX Item "@urxvt::TERM_EXT"
890 Works similar to \f(CW@TERM_INIT\fR, but contains perl package/class names, which
891 get registered as normal extensions after calling the hooks in \f(CW@TERM_INIT\fR
892 but before other extensions. Gets cleared just like \f(CW@TERM_INIT\fR.
893 .ie n .Sh "Functions in the ""urxvt"" Package"
894 .el .Sh "Functions in the \f(CWurxvt\fP Package"
895 .IX Subsection "Functions in the urxvt Package"
896 .ie n .IP "urxvt::fatal $errormessage" 4
897 .el .IP "urxvt::fatal \f(CW$errormessage\fR" 4
898 .IX Item "urxvt::fatal $errormessage"
899 Fatally aborts execution with the given error message. Avoid at all
900 costs! The only time this is acceptable is when the terminal process
901 starts up.
902 .ie n .IP "urxvt::warn $string" 4
903 .el .IP "urxvt::warn \f(CW$string\fR" 4
904 .IX Item "urxvt::warn $string"
905 Calls \f(CW\*(C`rxvt_warn\*(C'\fR with the given string which should not include a
906 newline. The module also overwrites the \f(CW\*(C`warn\*(C'\fR builtin with a function
907 that calls this function.
908 .Sp
909 Using this function has the advantage that its output ends up in the
910 correct place, e.g. on stderr of the connecting urxvtc client.
911 .Sp
912 Messages have a size limit of 1023 bytes currently.
913 .ie n .IP "@terms = urxvt::termlist" 4
914 .el .IP "\f(CW@terms\fR = urxvt::termlist" 4
915 .IX Item "@terms = urxvt::termlist"
916 Returns all urxvt::term objects that exist in this process, regardless of
917 whether they are started, being destroyed etc., so be careful. Only term
918 objects that have perl extensions attached will be returned (because there
919 is no urxvt::term objet associated with others).
920 .ie n .IP "$time = urxvt::NOW" 4
921 .el .IP "\f(CW$time\fR = urxvt::NOW" 4
922 .IX Item "$time = urxvt::NOW"
923 Returns the \*(L"current time\*(R" (as per the event loop).
924 .IP "urxvt::CurrentTime" 4
925 .IX Item "urxvt::CurrentTime"
926 .PD 0
927 .IP "urxvt::ShiftMask, LockMask, ControlMask, Mod1Mask, Mod2Mask, Mod3Mask, Mod4Mask, Mod5Mask, Button1Mask, Button2Mask, Button3Mask, Button4Mask, Button5Mask, AnyModifier" 4
928 .IX Item "urxvt::ShiftMask, LockMask, ControlMask, Mod1Mask, Mod2Mask, Mod3Mask, Mod4Mask, Mod5Mask, Button1Mask, Button2Mask, Button3Mask, Button4Mask, Button5Mask, AnyModifier"
929 .IP "urxvt::NoEventMask, KeyPressMask, KeyReleaseMask, ButtonPressMask, ButtonReleaseMask, EnterWindowMask, LeaveWindowMask, PointerMotionMask, PointerMotionHintMask, Button1MotionMask, Button2MotionMask, Button3MotionMask, Button4MotionMask, Button5MotionMask, ButtonMotionMask, KeymapStateMask, ExposureMask, VisibilityChangeMask, StructureNotifyMask, ResizeRedirectMask, SubstructureNotifyMask, SubstructureRedirectMask, FocusChangeMask, PropertyChangeMask, ColormapChangeMask, OwnerGrabButtonMask" 4
930 .IX Item "urxvt::NoEventMask, KeyPressMask, KeyReleaseMask, ButtonPressMask, ButtonReleaseMask, EnterWindowMask, LeaveWindowMask, PointerMotionMask, PointerMotionHintMask, Button1MotionMask, Button2MotionMask, Button3MotionMask, Button4MotionMask, Button5MotionMask, ButtonMotionMask, KeymapStateMask, ExposureMask, VisibilityChangeMask, StructureNotifyMask, ResizeRedirectMask, SubstructureNotifyMask, SubstructureRedirectMask, FocusChangeMask, PropertyChangeMask, ColormapChangeMask, OwnerGrabButtonMask"
931 .IP "urxvt::KeyPress, KeyRelease, ButtonPress, ButtonRelease, MotionNotify, EnterNotify, LeaveNotify, FocusIn, FocusOut, KeymapNotify, Expose, GraphicsExpose, NoExpose, VisibilityNotify, CreateNotify, DestroyNotify, UnmapNotify, MapNotify, MapRequest, ReparentNotify, ConfigureNotify, ConfigureRequest, GravityNotify, ResizeRequest, CirculateNotify, CirculateRequest, PropertyNotify, SelectionClear, SelectionRequest, SelectionNotify, ColormapNotify, ClientMessage, MappingNotify" 4
932 .IX Item "urxvt::KeyPress, KeyRelease, ButtonPress, ButtonRelease, MotionNotify, EnterNotify, LeaveNotify, FocusIn, FocusOut, KeymapNotify, Expose, GraphicsExpose, NoExpose, VisibilityNotify, CreateNotify, DestroyNotify, UnmapNotify, MapNotify, MapRequest, ReparentNotify, ConfigureNotify, ConfigureRequest, GravityNotify, ResizeRequest, CirculateNotify, CirculateRequest, PropertyNotify, SelectionClear, SelectionRequest, SelectionNotify, ColormapNotify, ClientMessage, MappingNotify"
933 .PD
934 Various constants for use in X calls and event processing.
935 .Sh "\s-1RENDITION\s0"
936 .IX Subsection "RENDITION"
937 Rendition bitsets contain information about colour, font, font styles and
938 similar information for each screen cell.
939 .PP
940 The following \*(L"macros\*(R" deal with changes in rendition sets. You should
941 never just create a bitset, you should always modify an existing one,
942 as they contain important information required for correct operation of
943 rxvt-unicode.
944 .ie n .IP "$rend = urxvt::DEFAULT_RSTYLE" 4
945 .el .IP "\f(CW$rend\fR = urxvt::DEFAULT_RSTYLE" 4
946 .IX Item "$rend = urxvt::DEFAULT_RSTYLE"
947 Returns the default rendition, as used when the terminal is starting up or
948 being reset. Useful as a base to start when creating renditions.
949 .ie n .IP "$rend = urxvt::OVERLAY_RSTYLE" 4
950 .el .IP "\f(CW$rend\fR = urxvt::OVERLAY_RSTYLE" 4
951 .IX Item "$rend = urxvt::OVERLAY_RSTYLE"
952 Return the rendition mask used for overlays by default.
953 .ie n .IP "$rendbit = urxvt::RS_Bold, RS_Italic, RS_Blink, RS_RVid, RS_Uline" 4
954 .el .IP "\f(CW$rendbit\fR = urxvt::RS_Bold, RS_Italic, RS_Blink, RS_RVid, RS_Uline" 4
955 .IX Item "$rendbit = urxvt::RS_Bold, RS_Italic, RS_Blink, RS_RVid, RS_Uline"
956 Return the bit that enabled bold, italic, blink, reverse-video and
957 underline, respectively. To enable such a style, just logically \s-1OR\s0 it into
958 the bitset.
959 .ie n .IP "$foreground\fR = urxvt::GET_BASEFG \f(CW$rend" 4
960 .el .IP "\f(CW$foreground\fR = urxvt::GET_BASEFG \f(CW$rend\fR" 4
961 .IX Item "$foreground = urxvt::GET_BASEFG $rend"
962 .PD 0
963 .ie n .IP "$background\fR = urxvt::GET_BASEBG \f(CW$rend" 4
964 .el .IP "\f(CW$background\fR = urxvt::GET_BASEBG \f(CW$rend\fR" 4
965 .IX Item "$background = urxvt::GET_BASEBG $rend"
966 .PD
967 Return the foreground/background colour index, respectively.
968 .ie n .IP "$rend\fR = urxvt::SET_FGCOLOR \f(CW$rend\fR, \f(CW$new_colour" 4
969 .el .IP "\f(CW$rend\fR = urxvt::SET_FGCOLOR \f(CW$rend\fR, \f(CW$new_colour\fR" 4
970 .IX Item "$rend = urxvt::SET_FGCOLOR $rend, $new_colour"
971 .PD 0
972 .ie n .IP "$rend\fR = urxvt::SET_BGCOLOR \f(CW$rend\fR, \f(CW$new_colour" 4
973 .el .IP "\f(CW$rend\fR = urxvt::SET_BGCOLOR \f(CW$rend\fR, \f(CW$new_colour\fR" 4
974 .IX Item "$rend = urxvt::SET_BGCOLOR $rend, $new_colour"
975 .ie n .IP "$rend\fR = urxvt::SET_COLOR \f(CW$rend\fR, \f(CW$new_fg\fR, \f(CW$new_bg" 4
976 .el .IP "\f(CW$rend\fR = urxvt::SET_COLOR \f(CW$rend\fR, \f(CW$new_fg\fR, \f(CW$new_bg\fR" 4
977 .IX Item "$rend = urxvt::SET_COLOR $rend, $new_fg, $new_bg"
978 .PD
979 Replace the foreground/background colour in the rendition mask with the
980 specified one.
981 .ie n .IP "$value\fR = urxvt::GET_CUSTOM \f(CW$rend" 4
982 .el .IP "\f(CW$value\fR = urxvt::GET_CUSTOM \f(CW$rend\fR" 4
983 .IX Item "$value = urxvt::GET_CUSTOM $rend"
984 Return the \*(L"custom\*(R" value: Every rendition has 5 bits for use by
985 extensions. They can be set and changed as you like and are initially
986 zero.
987 .ie n .IP "$rend\fR = urxvt::SET_CUSTOM \f(CW$rend\fR, \f(CW$new_value" 4
988 .el .IP "\f(CW$rend\fR = urxvt::SET_CUSTOM \f(CW$rend\fR, \f(CW$new_value\fR" 4
989 .IX Item "$rend = urxvt::SET_CUSTOM $rend, $new_value"
990 Change the custom value.
991 .ie n .Sh "The ""urxvt::anyevent"" Class"
992 .el .Sh "The \f(CWurxvt::anyevent\fP Class"
993 .IX Subsection "The urxvt::anyevent Class"
994 The sole purpose of this class is to deliver an interface to the
995 \&\f(CW\*(C`AnyEvent\*(C'\fR module \- any module using it will work inside urxvt without
996 further programming. The only exception is that you cannot wait on
997 condition variables, but non-blocking condvar use is ok. What this means
998 is that you cannot use blocking APIs, but the non-blocking variant should
999 work.
1000 .ie n .Sh "The ""urxvt::term"" Class"
1001 .el .Sh "The \f(CWurxvt::term\fP Class"
1002 .IX Subsection "The urxvt::term Class"
1003 .ie n .IP "$term\fR = new urxvt::term \f(CW$envhashref\fR, \f(CW$rxvtname, [arg...]" 4
1004 .el .IP "\f(CW$term\fR = new urxvt::term \f(CW$envhashref\fR, \f(CW$rxvtname\fR, [arg...]" 4
1005 .IX Item "$term = new urxvt::term $envhashref, $rxvtname, [arg...]"
1006 Creates a new terminal, very similar as if you had started it with system
1007 \&\f(CW\*(C`$rxvtname, arg...\*(C'\fR. \f(CW$envhashref\fR must be a reference to a \f(CW%ENV\fR\-like
1008 hash which defines the environment of the new terminal.
1009 .Sp
1010 Croaks (and probably outputs an error message) if the new instance
1011 couldn't be created. Returns \f(CW\*(C`undef\*(C'\fR if the new instance didn't
1012 initialise perl, and the terminal object otherwise. The \f(CW\*(C`init\*(C'\fR and
1013 \&\f(CW\*(C`start\*(C'\fR hooks will be called before this call returns, and are free to
1014 refer to global data (which is race free).
1015 .ie n .IP "$term\->destroy" 4
1016 .el .IP "\f(CW$term\fR\->destroy" 4
1017 .IX Item "$term->destroy"
1018 Destroy the terminal object (close the window, free resources
1019 etc.). Please note that @@RXVT_NAME@@ will not exit as long as any event
1020 watchers (timers, io watchers) are still active.
1021 .ie n .IP "$term\fR\->exec_async ($cmd[, \f(CW@args])" 4
1022 .el .IP "\f(CW$term\fR\->exec_async ($cmd[, \f(CW@args\fR])" 4
1023 .IX Item "$term->exec_async ($cmd[, @args])"
1024 Works like the combination of the \f(CW\*(C`fork\*(C'\fR/\f(CW\*(C`exec\*(C'\fR builtins, which executes
1025 (\*(L"starts\*(R") programs in the background. This function takes care of setting
1026 the user environment before exec'ing the command (e.g. \f(CW\*(C`PATH\*(C'\fR) and should
1027 be preferred over explicit calls to \f(CW\*(C`exec\*(C'\fR or \f(CW\*(C`system\*(C'\fR.
1028 .Sp
1029 Returns the pid of the subprocess or \f(CW\*(C`undef\*(C'\fR on error.
1030 .ie n .IP "$isset\fR = \f(CW$term\fR\->option ($optval[, \f(CW$set])" 4
1031 .el .IP "\f(CW$isset\fR = \f(CW$term\fR\->option ($optval[, \f(CW$set\fR])" 4
1032 .IX Item "$isset = $term->option ($optval[, $set])"
1033 Returns true if the option specified by \f(CW$optval\fR is enabled, and
1034 optionally change it. All option values are stored by name in the hash
1035 \&\f(CW%urxvt::OPTION\fR. Options not enabled in this binary are not in the hash.
1036 .Sp
1037 Here is a likely non-exhaustive list of option names, please see the
1038 source file \fI/src/optinc.h\fR to see the actual list:
1039 .Sp
1040 .Vb 6
1041 \& borderLess console cursorBlink cursorUnderline hold iconic insecure
1042 \& intensityStyles jumpScroll loginShell mapAlert meta8 mouseWheelScrollPage
1043 \& override\-redirect pastableTabs pointerBlank reverseVideo scrollBar
1044 \& scrollBar_floating scrollBar_right scrollTtyKeypress scrollTtyOutput
1045 \& scrollWithBuffer secondaryScreen secondaryScroll skipBuiltinGlyphs
1046 \& transparent tripleclickwords utmpInhibit visualBell
1047 .Ve
1048 .ie n .IP "$value\fR = \f(CW$term\fR\->resource ($name[, \f(CW$newval])" 4
1049 .el .IP "\f(CW$value\fR = \f(CW$term\fR\->resource ($name[, \f(CW$newval\fR])" 4
1050 .IX Item "$value = $term->resource ($name[, $newval])"
1051 Returns the current resource value associated with a given name and
1052 optionally sets a new value. Setting values is most useful in the \f(CW\*(C`init\*(C'\fR
1053 hook. Unset resources are returned and accepted as \f(CW\*(C`undef\*(C'\fR.
1054 .Sp
1055 The new value must be properly encoded to a suitable character encoding
1056 before passing it to this method. Similarly, the returned value may need
1057 to be converted from the used encoding to text.
1058 .Sp
1059 Resource names are as defined in \fIsrc/rsinc.h\fR. Colours can be specified
1060 as resource names of the form \f(CW\*(C`color+<index>\*(C'\fR, e.g. \f(CW\*(C`color+5\*(C'\fR. (will
1061 likely change).
1062 .Sp
1063 Please note that resource strings will currently only be freed when the
1064 terminal is destroyed, so changing options frequently will eat memory.
1065 .Sp
1066 Here is a likely non-exhaustive list of resource names, not all of which
1067 are supported in every build, please see the source file \fI/src/rsinc.h\fR
1068 to see the actual list:
1069 .Sp
1070 .Vb 10
1071 \& answerbackstring backgroundPixmap backspace_key boldFont boldItalicFont
1072 \& borderLess chdir color cursorBlink cursorUnderline cutchars delete_key
1073 \& display_name embed ext_bwidth fade font geometry hold iconName
1074 \& imFont imLocale inputMethod insecure int_bwidth intensityStyles
1075 \& italicFont jumpScroll lineSpace loginShell mapAlert meta8 modifier
1076 \& mouseWheelScrollPage name override_redirect pastableTabs path perl_eval
1077 \& perl_ext_1 perl_ext_2 perl_lib pointerBlank pointerBlankDelay
1078 \& preeditType print_pipe pty_fd reverseVideo saveLines scrollBar
1079 \& scrollBar_align scrollBar_floating scrollBar_right scrollBar_thickness
1080 \& scrollTtyKeypress scrollTtyOutput scrollWithBuffer scrollstyle
1081 \& secondaryScreen secondaryScroll shade term_name title
1082 \& transient_for transparent transparent_all tripleclickwords utmpInhibit
1083 \& visualBell
1084 .Ve
1085 .ie n .IP "$value\fR = \f(CW$term\->x_resource ($pattern)" 4
1086 .el .IP "\f(CW$value\fR = \f(CW$term\fR\->x_resource ($pattern)" 4
1087 .IX Item "$value = $term->x_resource ($pattern)"
1088 Returns the X\-Resource for the given pattern, excluding the program or
1089 class name, i.e. \f(CW\*(C`$term\->x_resource ("boldFont")\*(C'\fR should return the
1090 same value as used by this instance of rxvt-unicode. Returns \f(CW\*(C`undef\*(C'\fR if no
1091 resource with that pattern exists.
1092 .Sp
1093 This method should only be called during the \f(CW\*(C`on_start\*(C'\fR hook, as there is
1094 only one resource database per display, and later invocations might return
1095 the wrong resources.
1096 .ie n .IP "$success\fR = \f(CW$term\fR\->parse_keysym ($keysym_spec, \f(CW$command_string)" 4
1097 .el .IP "\f(CW$success\fR = \f(CW$term\fR\->parse_keysym ($keysym_spec, \f(CW$command_string\fR)" 4
1098 .IX Item "$success = $term->parse_keysym ($keysym_spec, $command_string)"
1099 Adds a keymap translation exactly as specified via a resource. See the
1100 \&\f(CW\*(C`keysym\*(C'\fR resource in the @@RXVT_NAME@@(1) manpage.
1101 .ie n .IP "$rend\fR = \f(CW$term\->rstyle ([$new_rstyle])" 4
1102 .el .IP "\f(CW$rend\fR = \f(CW$term\fR\->rstyle ([$new_rstyle])" 4
1103 .IX Item "$rend = $term->rstyle ([$new_rstyle])"
1104 Return and optionally change the current rendition. Text that is output by
1105 the terminal application will use this style.
1106 .ie n .IP "($row, $col\fR) = \f(CW$term\fR\->screen_cur ([$row, \f(CW$col])" 4
1107 .el .IP "($row, \f(CW$col\fR) = \f(CW$term\fR\->screen_cur ([$row, \f(CW$col\fR])" 4
1108 .IX Item "($row, $col) = $term->screen_cur ([$row, $col])"
1109 Return the current coordinates of the text cursor position and optionally
1110 set it (which is usually bad as applications don't expect that).
1111 .ie n .IP "($row, $col\fR) = \f(CW$term\fR\->selection_mark ([$row, \f(CW$col])" 4
1112 .el .IP "($row, \f(CW$col\fR) = \f(CW$term\fR\->selection_mark ([$row, \f(CW$col\fR])" 4
1113 .IX Item "($row, $col) = $term->selection_mark ([$row, $col])"
1114 .PD 0
1115 .ie n .IP "($row, $col\fR) = \f(CW$term\fR\->selection_beg ([$row, \f(CW$col])" 4
1116 .el .IP "($row, \f(CW$col\fR) = \f(CW$term\fR\->selection_beg ([$row, \f(CW$col\fR])" 4
1117 .IX Item "($row, $col) = $term->selection_beg ([$row, $col])"
1118 .ie n .IP "($row, $col\fR) = \f(CW$term\fR\->selection_end ([$row, \f(CW$col])" 4
1119 .el .IP "($row, \f(CW$col\fR) = \f(CW$term\fR\->selection_end ([$row, \f(CW$col\fR])" 4
1120 .IX Item "($row, $col) = $term->selection_end ([$row, $col])"
1121 .PD
1122 Return the current values of the selection mark, begin or end positions,
1123 and optionally set them to new values.
1124 .ie n .IP "$term\fR\->selection_make ($eventtime[, \f(CW$rectangular])" 4
1125 .el .IP "\f(CW$term\fR\->selection_make ($eventtime[, \f(CW$rectangular\fR])" 4
1126 .IX Item "$term->selection_make ($eventtime[, $rectangular])"
1127 Tries to make a selection as set by \f(CW\*(C`selection_beg\*(C'\fR and
1128 \&\f(CW\*(C`selection_end\*(C'\fR. If \f(CW$rectangular\fR is true (default: false), a
1129 rectangular selection will be made. This is the prefered function to make
1130 a selection.
1131 .ie n .IP "$success\fR = \f(CW$term\->selection_grab ($eventtime)" 4
1132 .el .IP "\f(CW$success\fR = \f(CW$term\fR\->selection_grab ($eventtime)" 4
1133 .IX Item "$success = $term->selection_grab ($eventtime)"
1134 Try to request the primary selection text from the server (for example, as
1135 set by the next method). No visual feedback will be given. This function
1136 is mostly useful from within \f(CW\*(C`on_sel_grab\*(C'\fR hooks.
1137 .ie n .IP "$oldtext\fR = \f(CW$term\->selection ([$newtext])" 4
1138 .el .IP "\f(CW$oldtext\fR = \f(CW$term\fR\->selection ([$newtext])" 4
1139 .IX Item "$oldtext = $term->selection ([$newtext])"
1140 Return the current selection text and optionally replace it by \f(CW$newtext\fR.
1141 .ie n .IP "$term\fR\->overlay_simple ($x, \f(CW$y\fR, \f(CW$text)" 4
1142 .el .IP "\f(CW$term\fR\->overlay_simple ($x, \f(CW$y\fR, \f(CW$text\fR)" 4
1143 .IX Item "$term->overlay_simple ($x, $y, $text)"
1144 Create a simple multi-line overlay box. See the next method for details.
1145 .ie n .IP "$term\fR\->overlay ($x, \f(CW$y\fR, \f(CW$width\fR, \f(CW$height\fR[, \f(CW$rstyle\fR[, \f(CW$border]])" 4
1146 .el .IP "\f(CW$term\fR\->overlay ($x, \f(CW$y\fR, \f(CW$width\fR, \f(CW$height\fR[, \f(CW$rstyle\fR[, \f(CW$border\fR]])" 4
1147 .IX Item "$term->overlay ($x, $y, $width, $height[, $rstyle[, $border]])"
1148 Create a new (empty) overlay at the given position with the given
1149 width/height. \f(CW$rstyle\fR defines the initial rendition style
1150 (default: \f(CW\*(C`OVERLAY_RSTYLE\*(C'\fR).
1151 .Sp
1152 If \f(CW$border\fR is \f(CW2\fR (default), then a decorative border will be put
1153 around the box.
1154 .Sp
1155 If either \f(CW$x\fR or \f(CW$y\fR is negative, then this is counted from the
1156 right/bottom side, respectively.
1157 .Sp
1158 This method returns an urxvt::overlay object. The overlay will be visible
1159 as long as the perl object is referenced.
1160 .Sp
1161 The methods currently supported on \f(CW\*(C`urxvt::overlay\*(C'\fR objects are:
1162 .RS 4
1163 .ie n .IP "$overlay\fR\->set ($x, \f(CW$y\fR, \f(CW$text\fR[, \f(CW$rend])" 4
1164 .el .IP "\f(CW$overlay\fR\->set ($x, \f(CW$y\fR, \f(CW$text\fR[, \f(CW$rend\fR])" 4
1165 .IX Item "$overlay->set ($x, $y, $text[, $rend])"
1166 Similar to \f(CW\*(C`$term\->ROW_t\*(C'\fR and \f(CW\*(C`$term\->ROW_r\*(C'\fR in that it puts
1167 text in rxvt-unicode's special encoding and an array of rendition values
1168 at a specific position inside the overlay.
1169 .Sp
1170 If \f(CW$rend\fR is missing, then the rendition will not be changed.
1171 .ie n .IP "$overlay\->hide" 4
1172 .el .IP "\f(CW$overlay\fR\->hide" 4
1173 .IX Item "$overlay->hide"
1174 If visible, hide the overlay, but do not destroy it.
1175 .ie n .IP "$overlay\->show" 4
1176 .el .IP "\f(CW$overlay\fR\->show" 4
1177 .IX Item "$overlay->show"
1178 If hidden, display the overlay again.
1179 .RE
1180 .RS 4
1181 .RE
1182 .ie n .IP "$popup\fR = \f(CW$term\->popup ($event)" 4
1183 .el .IP "\f(CW$popup\fR = \f(CW$term\fR\->popup ($event)" 4
1184 .IX Item "$popup = $term->popup ($event)"
1185 Creates a new \f(CW\*(C`urxvt::popup\*(C'\fR object that implements a popup menu. The
1186 \&\f(CW$event\fR \fImust\fR be the event causing the menu to pop up (a button event,
1187 currently).
1188 .ie n .IP "$cellwidth\fR = \f(CW$term\->strwidth ($string)" 4
1189 .el .IP "\f(CW$cellwidth\fR = \f(CW$term\fR\->strwidth ($string)" 4
1190 .IX Item "$cellwidth = $term->strwidth ($string)"
1191 Returns the number of screen-cells this string would need. Correctly
1192 accounts for wide and combining characters.
1193 .ie n .IP "$octets\fR = \f(CW$term\->locale_encode ($string)" 4
1194 .el .IP "\f(CW$octets\fR = \f(CW$term\fR\->locale_encode ($string)" 4
1195 .IX Item "$octets = $term->locale_encode ($string)"
1196 Convert the given text string into the corresponding locale encoding.
1197 .ie n .IP "$string\fR = \f(CW$term\->locale_decode ($octets)" 4
1198 .el .IP "\f(CW$string\fR = \f(CW$term\fR\->locale_decode ($octets)" 4
1199 .IX Item "$string = $term->locale_decode ($octets)"
1200 Convert the given locale-encoded octets into a perl string.
1201 .ie n .IP "$term\fR\->scr_xor_span ($beg_row, \f(CW$beg_col\fR, \f(CW$end_row\fR, \f(CW$end_col\fR[, \f(CW$rstyle])" 4
1202 .el .IP "\f(CW$term\fR\->scr_xor_span ($beg_row, \f(CW$beg_col\fR, \f(CW$end_row\fR, \f(CW$end_col\fR[, \f(CW$rstyle\fR])" 4
1203 .IX Item "$term->scr_xor_span ($beg_row, $beg_col, $end_row, $end_col[, $rstyle])"
1204 XORs the rendition values in the given span with the provided value
1205 (default: \f(CW\*(C`RS_RVid\*(C'\fR), which \fI\s-1MUST\s0 \s-1NOT\s0\fR contain font styles. Useful in
1206 refresh hooks to provide effects similar to the selection.
1207 .ie n .IP "$term\fR\->scr_xor_rect ($beg_row, \f(CW$beg_col\fR, \f(CW$end_row\fR, \f(CW$end_col\fR[, \f(CW$rstyle1\fR[, \f(CW$rstyle2]])" 4
1208 .el .IP "\f(CW$term\fR\->scr_xor_rect ($beg_row, \f(CW$beg_col\fR, \f(CW$end_row\fR, \f(CW$end_col\fR[, \f(CW$rstyle1\fR[, \f(CW$rstyle2\fR]])" 4
1209 .IX Item "$term->scr_xor_rect ($beg_row, $beg_col, $end_row, $end_col[, $rstyle1[, $rstyle2]])"
1210 Similar to \f(CW\*(C`scr_xor_span\*(C'\fR, but xors a rectangle instead. Trailing
1211 whitespace will additionally be xored with the \f(CW$rstyle2\fR, which defaults
1212 to \f(CW\*(C`RS_RVid | RS_Uline\*(C'\fR, which removes reverse video again and underlines
1213 it instead. Both styles \fI\s-1MUST\s0 \s-1NOT\s0\fR contain font styles.
1214 .ie n .IP "$term\->scr_bell" 4
1215 .el .IP "\f(CW$term\fR\->scr_bell" 4
1216 .IX Item "$term->scr_bell"
1217 Ring the bell!
1218 .ie n .IP "$term\->scr_add_lines ($string)" 4
1219 .el .IP "\f(CW$term\fR\->scr_add_lines ($string)" 4
1220 .IX Item "$term->scr_add_lines ($string)"
1221 Write the given text string to the screen, as if output by the application
1222 running inside the terminal. It may not contain command sequences (escape
1223 codes), but is free to use line feeds, carriage returns and tabs. The
1224 string is a normal text string, not in locale-dependent encoding.
1225 .Sp
1226 Normally its not a good idea to use this function, as programs might be
1227 confused by changes in cursor position or scrolling. Its useful inside a
1228 \&\f(CW\*(C`on_add_lines\*(C'\fR hook, though.
1229 .ie n .IP "$term\->scr_change_screen ($screen)" 4
1230 .el .IP "\f(CW$term\fR\->scr_change_screen ($screen)" 4
1231 .IX Item "$term->scr_change_screen ($screen)"
1232 Switch to given screen \- 0 primary, 1 secondary.
1233 .ie n .IP "$term\->cmd_parse ($octets)" 4
1234 .el .IP "\f(CW$term\fR\->cmd_parse ($octets)" 4
1235 .IX Item "$term->cmd_parse ($octets)"
1236 Similar to \f(CW\*(C`scr_add_lines\*(C'\fR, but the argument must be in the
1237 locale-specific encoding of the terminal and can contain command sequences
1238 (escape codes) that will be interpreted.
1239 .ie n .IP "$term\->tt_write ($octets)" 4
1240 .el .IP "\f(CW$term\fR\->tt_write ($octets)" 4
1241 .IX Item "$term->tt_write ($octets)"
1242 Write the octets given in \f(CW$data\fR to the tty (i.e. as program input). To
1243 pass characters instead of octets, you should convert your strings first
1244 to the locale-specific encoding using \f(CW\*(C`$term\->locale_encode\*(C'\fR.
1245 .ie n .IP "$old_events\fR = \f(CW$term\->pty_ev_events ([$new_events])" 4
1246 .el .IP "\f(CW$old_events\fR = \f(CW$term\fR\->pty_ev_events ([$new_events])" 4
1247 .IX Item "$old_events = $term->pty_ev_events ([$new_events])"
1248 Replaces the event mask of the pty watcher by the given event mask. Can
1249 be used to suppress input and output handling to the pty/tty. See the
1250 description of \f(CW\*(C`urxvt::timer\->events\*(C'\fR. Make sure to always restore
1251 the previous value.
1252 .ie n .IP "$fd\fR = \f(CW$term\->pty_fd" 4
1253 .el .IP "\f(CW$fd\fR = \f(CW$term\fR\->pty_fd" 4
1254 .IX Item "$fd = $term->pty_fd"
1255 Returns the master file descriptor for the pty in use, or \f(CW\*(C`\-1\*(C'\fR if no pty
1256 is used.
1257 .ie n .IP "$windowid\fR = \f(CW$term\->parent" 4
1258 .el .IP "\f(CW$windowid\fR = \f(CW$term\fR\->parent" 4
1259 .IX Item "$windowid = $term->parent"
1260 Return the window id of the toplevel window.
1261 .ie n .IP "$windowid\fR = \f(CW$term\->vt" 4
1262 .el .IP "\f(CW$windowid\fR = \f(CW$term\fR\->vt" 4
1263 .IX Item "$windowid = $term->vt"
1264 Return the window id of the terminal window.
1265 .ie n .IP "$term\->vt_emask_add ($x_event_mask)" 4
1266 .el .IP "\f(CW$term\fR\->vt_emask_add ($x_event_mask)" 4
1267 .IX Item "$term->vt_emask_add ($x_event_mask)"
1268 Adds the specified events to the vt event mask. Useful e.g. when you want
1269 to receive pointer events all the times:
1270 .Sp
1271 .Vb 1
1272 \& $term\->vt_emask_add (urxvt::PointerMotionMask);
1273 .Ve
1274 .ie n .IP "$term\->focus_in" 4
1275 .el .IP "\f(CW$term\fR\->focus_in" 4
1276 .IX Item "$term->focus_in"
1277 .PD 0
1278 .ie n .IP "$term\->focus_out" 4
1279 .el .IP "\f(CW$term\fR\->focus_out" 4
1280 .IX Item "$term->focus_out"
1281 .ie n .IP "$term\fR\->key_press ($state, \f(CW$keycode\fR[, \f(CW$time])" 4
1282 .el .IP "\f(CW$term\fR\->key_press ($state, \f(CW$keycode\fR[, \f(CW$time\fR])" 4
1283 .IX Item "$term->key_press ($state, $keycode[, $time])"
1284 .ie n .IP "$term\fR\->key_release ($state, \f(CW$keycode\fR[, \f(CW$time])" 4
1285 .el .IP "\f(CW$term\fR\->key_release ($state, \f(CW$keycode\fR[, \f(CW$time\fR])" 4
1286 .IX Item "$term->key_release ($state, $keycode[, $time])"
1287 .PD
1288 Deliver various fake events to to terminal.
1289 .ie n .IP "$window_width\fR = \f(CW$term\->width" 4
1290 .el .IP "\f(CW$window_width\fR = \f(CW$term\fR\->width" 4
1291 .IX Item "$window_width = $term->width"
1292 .PD 0
1293 .ie n .IP "$window_height\fR = \f(CW$term\->height" 4
1294 .el .IP "\f(CW$window_height\fR = \f(CW$term\fR\->height" 4
1295 .IX Item "$window_height = $term->height"
1296 .ie n .IP "$font_width\fR = \f(CW$term\->fwidth" 4
1297 .el .IP "\f(CW$font_width\fR = \f(CW$term\fR\->fwidth" 4
1298 .IX Item "$font_width = $term->fwidth"
1299 .ie n .IP "$font_height\fR = \f(CW$term\->fheight" 4
1300 .el .IP "\f(CW$font_height\fR = \f(CW$term\fR\->fheight" 4
1301 .IX Item "$font_height = $term->fheight"
1302 .ie n .IP "$font_ascent\fR = \f(CW$term\->fbase" 4
1303 .el .IP "\f(CW$font_ascent\fR = \f(CW$term\fR\->fbase" 4
1304 .IX Item "$font_ascent = $term->fbase"
1305 .ie n .IP "$terminal_rows\fR = \f(CW$term\->nrow" 4
1306 .el .IP "\f(CW$terminal_rows\fR = \f(CW$term\fR\->nrow" 4
1307 .IX Item "$terminal_rows = $term->nrow"
1308 .ie n .IP "$terminal_columns\fR = \f(CW$term\->ncol" 4
1309 .el .IP "\f(CW$terminal_columns\fR = \f(CW$term\fR\->ncol" 4
1310 .IX Item "$terminal_columns = $term->ncol"
1311 .ie n .IP "$has_focus\fR = \f(CW$term\->focus" 4
1312 .el .IP "\f(CW$has_focus\fR = \f(CW$term\fR\->focus" 4
1313 .IX Item "$has_focus = $term->focus"
1314 .ie n .IP "$is_mapped\fR = \f(CW$term\->mapped" 4
1315 .el .IP "\f(CW$is_mapped\fR = \f(CW$term\fR\->mapped" 4
1316 .IX Item "$is_mapped = $term->mapped"
1317 .ie n .IP "$max_scrollback\fR = \f(CW$term\->saveLines" 4
1318 .el .IP "\f(CW$max_scrollback\fR = \f(CW$term\fR\->saveLines" 4
1319 .IX Item "$max_scrollback = $term->saveLines"
1320 .ie n .IP "$nrow_plus_saveLines\fR = \f(CW$term\->total_rows" 4
1321 .el .IP "\f(CW$nrow_plus_saveLines\fR = \f(CW$term\fR\->total_rows" 4
1322 .IX Item "$nrow_plus_saveLines = $term->total_rows"
1323 .ie n .IP "$topmost_scrollback_row\fR = \f(CW$term\->top_row" 4
1324 .el .IP "\f(CW$topmost_scrollback_row\fR = \f(CW$term\fR\->top_row" 4
1325 .IX Item "$topmost_scrollback_row = $term->top_row"
1326 .PD
1327 Return various integers describing terminal characteristics.
1328 .ie n .IP "$x_display\fR = \f(CW$term\->display_id" 4
1329 .el .IP "\f(CW$x_display\fR = \f(CW$term\fR\->display_id" 4
1330 .IX Item "$x_display = $term->display_id"
1331 Return the \s-1DISPLAY\s0 used by rxvt-unicode.
1332 .ie n .IP "$lc_ctype\fR = \f(CW$term\->locale" 4
1333 .el .IP "\f(CW$lc_ctype\fR = \f(CW$term\fR\->locale" 4
1334 .IX Item "$lc_ctype = $term->locale"
1335 Returns the \s-1LC_CTYPE\s0 category string used by this rxvt-unicode.
1336 .ie n .IP "$env\fR = \f(CW$term\->env" 4
1337 .el .IP "\f(CW$env\fR = \f(CW$term\fR\->env" 4
1338 .IX Item "$env = $term->env"
1339 Returns a copy of the environment in effect for the terminal as a hashref
1340 similar to \f(CW\*(C`\e%ENV\*(C'\fR.
1341 .ie n .IP "@envv\fR = \f(CW$term\->envv" 4
1342 .el .IP "\f(CW@envv\fR = \f(CW$term\fR\->envv" 4
1343 .IX Item "@envv = $term->envv"
1344 Returns the environment as array of strings of the form \f(CW\*(C`VAR=VALUE\*(C'\fR.
1345 .ie n .IP "@argv\fR = \f(CW$term\->argv" 4
1346 .el .IP "\f(CW@argv\fR = \f(CW$term\fR\->argv" 4
1347 .IX Item "@argv = $term->argv"
1348 Return the argument vector as this terminal, similar to \f(CW@ARGV\fR, but
1349 includes the program name as first element.
1350 .ie n .IP "$modifiermask\fR = \f(CW$term\->ModLevel3Mask" 4
1351 .el .IP "\f(CW$modifiermask\fR = \f(CW$term\fR\->ModLevel3Mask" 4
1352 .IX Item "$modifiermask = $term->ModLevel3Mask"
1353 .PD 0
1354 .ie n .IP "$modifiermask\fR = \f(CW$term\->ModMetaMask" 4
1355 .el .IP "\f(CW$modifiermask\fR = \f(CW$term\fR\->ModMetaMask" 4
1356 .IX Item "$modifiermask = $term->ModMetaMask"
1357 .ie n .IP "$modifiermask\fR = \f(CW$term\->ModNumLockMask" 4
1358 .el .IP "\f(CW$modifiermask\fR = \f(CW$term\fR\->ModNumLockMask" 4
1359 .IX Item "$modifiermask = $term->ModNumLockMask"
1360 .PD
1361 Return the modifier masks corresponding to the \*(L"\s-1ISO\s0 Level 3 Shift\*(R" (often
1362 AltGr), the meta key (often Alt) and the num lock key, if applicable.
1363 .ie n .IP "$screen\fR = \f(CW$term\->current_screen" 4
1364 .el .IP "\f(CW$screen\fR = \f(CW$term\fR\->current_screen" 4
1365 .IX Item "$screen = $term->current_screen"
1366 Returns the currently displayed screen (0 primary, 1 secondary).
1367 .ie n .IP "$cursor_is_hidden\fR = \f(CW$term\->hidden_cursor" 4
1368 .el .IP "\f(CW$cursor_is_hidden\fR = \f(CW$term\fR\->hidden_cursor" 4
1369 .IX Item "$cursor_is_hidden = $term->hidden_cursor"
1370 Returns whether the cursor is currently hidden or not.
1371 .ie n .IP "$view_start\fR = \f(CW$term\->view_start ([$newvalue])" 4
1372 .el .IP "\f(CW$view_start\fR = \f(CW$term\fR\->view_start ([$newvalue])" 4
1373 .IX Item "$view_start = $term->view_start ([$newvalue])"
1374 Returns the row number of the topmost displayed line. Maximum value is
1375 \&\f(CW0\fR, which displays the normal terminal contents. Lower values scroll
1376 this many lines into the scrollback buffer.
1377 .ie n .IP "$term\->want_refresh" 4
1378 .el .IP "\f(CW$term\fR\->want_refresh" 4
1379 .IX Item "$term->want_refresh"
1380 Requests a screen refresh. At the next opportunity, rxvt-unicode will
1381 compare the on-screen display with its stored representation. If they
1382 differ, it redraws the differences.
1383 .Sp
1384 Used after changing terminal contents to display them.
1385 .ie n .IP "$text\fR = \f(CW$term\fR\->ROW_t ($row_number[, \f(CW$new_text\fR[, \f(CW$start_col]])" 4
1386 .el .IP "\f(CW$text\fR = \f(CW$term\fR\->ROW_t ($row_number[, \f(CW$new_text\fR[, \f(CW$start_col\fR]])" 4
1387 .IX Item "$text = $term->ROW_t ($row_number[, $new_text[, $start_col]])"
1388 Returns the text of the entire row with number \f(CW$row_number\fR. Row \f(CW\*(C`$term\->top_row\*(C'\fR
1389 is the topmost terminal line, row \f(CW\*(C`$term\->nrow\-1\*(C'\fR is the bottommost
1390 terminal line. Nothing will be returned if a nonexistent line
1391 is requested.
1392 .Sp
1393 If \f(CW$new_text\fR is specified, it will replace characters in the current
1394 line, starting at column \f(CW$start_col\fR (default \f(CW0\fR), which is useful
1395 to replace only parts of a line. The font index in the rendition will
1396 automatically be updated.
1397 .Sp
1398 \&\f(CW$text\fR is in a special encoding: tabs and wide characters that use more
1399 than one cell when displayed are padded with \f(CW$urxvt::NOCHAR\fR (chr 65535)
1400 characters. Characters with combining characters and other characters that
1401 do not fit into the normal text encoding will be replaced with characters
1402 in the private use area.
1403 .Sp
1404 You have to obey this encoding when changing text. The advantage is
1405 that \f(CW\*(C`substr\*(C'\fR and similar functions work on screen cells and not on
1406 characters.
1407 .Sp
1408 The methods \f(CW\*(C`$term\->special_encode\*(C'\fR and \f(CW\*(C`$term\->special_decode\*(C'\fR
1409 can be used to convert normal strings into this encoding and vice versa.
1410 .ie n .IP "$rend\fR = \f(CW$term\fR\->ROW_r ($row_number[, \f(CW$new_rend\fR[, \f(CW$start_col]])" 4
1411 .el .IP "\f(CW$rend\fR = \f(CW$term\fR\->ROW_r ($row_number[, \f(CW$new_rend\fR[, \f(CW$start_col\fR]])" 4
1412 .IX Item "$rend = $term->ROW_r ($row_number[, $new_rend[, $start_col]])"
1413 Like \f(CW\*(C`$term\->ROW_t\*(C'\fR, but returns an arrayref with rendition
1414 bitsets. Rendition bitsets contain information about colour, font, font
1415 styles and similar information. See also \f(CW\*(C`$term\->ROW_t\*(C'\fR.
1416 .Sp
1417 When setting rendition, the font mask will be ignored.
1418 .Sp
1419 See the section on \s-1RENDITION\s0, above.
1420 .ie n .IP "$length\fR = \f(CW$term\fR\->ROW_l ($row_number[, \f(CW$new_length])" 4
1421 .el .IP "\f(CW$length\fR = \f(CW$term\fR\->ROW_l ($row_number[, \f(CW$new_length\fR])" 4
1422 .IX Item "$length = $term->ROW_l ($row_number[, $new_length])"
1423 Returns the number of screen cells that are in use (\*(L"the line
1424 length\*(R"). Unlike the urxvt core, this returns \f(CW\*(C`$term\->ncol\*(C'\fR if the
1425 line is joined with the following one.
1426 .ie n .IP "$bool\fR = \f(CW$term\->is_longer ($row_number)" 4
1427 .el .IP "\f(CW$bool\fR = \f(CW$term\fR\->is_longer ($row_number)" 4
1428 .IX Item "$bool = $term->is_longer ($row_number)"
1429 Returns true if the row is part of a multiple-row logical \*(L"line\*(R" (i.e.
1430 joined with the following row), which means all characters are in use
1431 and it is continued on the next row (and possibly a continuation of the
1432 previous row(s)).
1433 .ie n .IP "$line\fR = \f(CW$term\->line ($row_number)" 4
1434 .el .IP "\f(CW$line\fR = \f(CW$term\fR\->line ($row_number)" 4
1435 .IX Item "$line = $term->line ($row_number)"
1436 Create and return a new \f(CW\*(C`urxvt::line\*(C'\fR object that stores information
1437 about the logical line that row \f(CW$row_number\fR is part of. It supports the
1438 following methods:
1439 .RS 4
1440 .ie n .IP "$text\fR = \f(CW$line\->t ([$new_text])" 4
1441 .el .IP "\f(CW$text\fR = \f(CW$line\fR\->t ([$new_text])" 4
1442 .IX Item "$text = $line->t ([$new_text])"
1443 Returns or replaces the full text of the line, similar to \f(CW\*(C`ROW_t\*(C'\fR
1444 .ie n .IP "$rend\fR = \f(CW$line\->r ([$new_rend])" 4
1445 .el .IP "\f(CW$rend\fR = \f(CW$line\fR\->r ([$new_rend])" 4
1446 .IX Item "$rend = $line->r ([$new_rend])"
1447 Returns or replaces the full rendition array of the line, similar to \f(CW\*(C`ROW_r\*(C'\fR
1448 .ie n .IP "$length\fR = \f(CW$line\->l" 4
1449 .el .IP "\f(CW$length\fR = \f(CW$line\fR\->l" 4
1450 .IX Item "$length = $line->l"
1451 Returns the length of the line in cells, similar to \f(CW\*(C`ROW_l\*(C'\fR.
1452 .ie n .IP "$rownum\fR = \f(CW$line\->beg" 4
1453 .el .IP "\f(CW$rownum\fR = \f(CW$line\fR\->beg" 4
1454 .IX Item "$rownum = $line->beg"
1455 .PD 0
1456 .ie n .IP "$rownum\fR = \f(CW$line\->end" 4
1457 .el .IP "\f(CW$rownum\fR = \f(CW$line\fR\->end" 4
1458 .IX Item "$rownum = $line->end"
1459 .PD
1460 Return the row number of the first/last row of the line, respectively.
1461 .ie n .IP "$offset\fR = \f(CW$line\fR\->offset_of ($row, \f(CW$col)" 4
1462 .el .IP "\f(CW$offset\fR = \f(CW$line\fR\->offset_of ($row, \f(CW$col\fR)" 4
1463 .IX Item "$offset = $line->offset_of ($row, $col)"
1464 Returns the character offset of the given row|col pair within the logical
1465 line. Works for rows outside the line, too, and returns corresponding
1466 offsets outside the string.
1467 .ie n .IP "($row, $col\fR) = \f(CW$line\->coord_of ($offset)" 4
1468 .el .IP "($row, \f(CW$col\fR) = \f(CW$line\fR\->coord_of ($offset)" 4
1469 .IX Item "($row, $col) = $line->coord_of ($offset)"
1470 Translates a string offset into terminal coordinates again.
1471 .RE
1472 .RS 4
1473 .RE
1474 .ie n .IP "$text\fR = \f(CW$term\fR\->special_encode \f(CW$string" 4
1475 .el .IP "\f(CW$text\fR = \f(CW$term\fR\->special_encode \f(CW$string\fR" 4
1476 .IX Item "$text = $term->special_encode $string"
1477 Converts a perl string into the special encoding used by rxvt-unicode,
1478 where one character corresponds to one screen cell. See
1479 \&\f(CW\*(C`$term\->ROW_t\*(C'\fR for details.
1480 .ie n .IP "$string\fR = \f(CW$term\fR\->special_decode \f(CW$text" 4
1481 .el .IP "\f(CW$string\fR = \f(CW$term\fR\->special_decode \f(CW$text\fR" 4
1482 .IX Item "$string = $term->special_decode $text"
1483 Converts rxvt-unicodes text representation into a perl string. See
1484 \&\f(CW\*(C`$term\->ROW_t\*(C'\fR for details.
1485 .ie n .IP "$success\fR = \f(CW$term\fR\->grab_button ($button, \f(CW$modifiermask\fR[, \f(CW$window\fR = \f(CW$term\->vt])" 4
1486 .el .IP "\f(CW$success\fR = \f(CW$term\fR\->grab_button ($button, \f(CW$modifiermask\fR[, \f(CW$window\fR = \f(CW$term\fR\->vt])" 4
1487 .IX Item "$success = $term->grab_button ($button, $modifiermask[, $window = $term->vt])"
1488 .PD 0
1489 .ie n .IP "$term\fR\->ungrab_button ($button, \f(CW$modifiermask\fR[, \f(CW$window\fR = \f(CW$term\->vt])" 4
1490 .el .IP "\f(CW$term\fR\->ungrab_button ($button, \f(CW$modifiermask\fR[, \f(CW$window\fR = \f(CW$term\fR\->vt])" 4
1491 .IX Item "$term->ungrab_button ($button, $modifiermask[, $window = $term->vt])"
1492 .PD
1493 Register/unregister a synchronous button grab. See the XGrabButton
1494 manpage.
1495 .ie n .IP "$success\fR = \f(CW$term\fR\->grab ($eventtime[, \f(CW$sync])" 4
1496 .el .IP "\f(CW$success\fR = \f(CW$term\fR\->grab ($eventtime[, \f(CW$sync\fR])" 4
1497 .IX Item "$success = $term->grab ($eventtime[, $sync])"
1498 Calls XGrabPointer and XGrabKeyboard in asynchronous (default) or
1499 synchronous (\f(CW$sync\fR is true). Also remembers the grab timestamp.
1500 .ie n .IP "$term\->allow_events_async" 4
1501 .el .IP "\f(CW$term\fR\->allow_events_async" 4
1502 .IX Item "$term->allow_events_async"
1503 Calls XAllowEvents with AsyncBoth for the most recent grab.
1504 .ie n .IP "$term\->allow_events_sync" 4
1505 .el .IP "\f(CW$term\fR\->allow_events_sync" 4
1506 .IX Item "$term->allow_events_sync"
1507 Calls XAllowEvents with SyncBoth for the most recent grab.
1508 .ie n .IP "$term\->allow_events_replay" 4
1509 .el .IP "\f(CW$term\fR\->allow_events_replay" 4
1510 .IX Item "$term->allow_events_replay"
1511 Calls XAllowEvents with both ReplayPointer and ReplayKeyboard for the most
1512 recent grab.
1513 .ie n .IP "$term\->ungrab" 4
1514 .el .IP "\f(CW$term\fR\->ungrab" 4
1515 .IX Item "$term->ungrab"
1516 Calls XUngrab for the most recent grab. Is called automatically on
1517 evaluation errors, as it is better to lose the grab in the error case as
1518 the session.
1519 .ie n .IP "$atom\fR = \f(CW$term\fR\->XInternAtom ($atom_name[, \f(CW$only_if_exists])" 4
1520 .el .IP "\f(CW$atom\fR = \f(CW$term\fR\->XInternAtom ($atom_name[, \f(CW$only_if_exists\fR])" 4
1521 .IX Item "$atom = $term->XInternAtom ($atom_name[, $only_if_exists])"
1522 .PD 0
1523 .ie n .IP "$atom_name\fR = \f(CW$term\->XGetAtomName ($atom)" 4
1524 .el .IP "\f(CW$atom_name\fR = \f(CW$term\fR\->XGetAtomName ($atom)" 4
1525 .IX Item "$atom_name = $term->XGetAtomName ($atom)"
1526 .ie n .IP "@atoms\fR = \f(CW$term\->XListProperties ($window)" 4
1527 .el .IP "\f(CW@atoms\fR = \f(CW$term\fR\->XListProperties ($window)" 4
1528 .IX Item "@atoms = $term->XListProperties ($window)"
1529 .ie n .IP "($type,$format,$octets) = $term\fR\->XGetWindowProperty ($window, \f(CW$property)" 4
1530 .el .IP "($type,$format,$octets) = \f(CW$term\fR\->XGetWindowProperty ($window, \f(CW$property\fR)" 4
1531 .IX Item "($type,$format,$octets) = $term->XGetWindowProperty ($window, $property)"
1532 .ie n .IP "$term\fR\->XChangeProperty ($window, \f(CW$property\fR, \f(CW$type\fR, \f(CW$format\fR, \f(CW$octets)" 4
1533 .el .IP "\f(CW$term\fR\->XChangeProperty ($window, \f(CW$property\fR, \f(CW$type\fR, \f(CW$format\fR, \f(CW$octets\fR)" 4
1534 .IX Item "$term->XChangeProperty ($window, $property, $type, $format, $octets)"
1535 .ie n .IP "$term\fR\->XDeleteProperty ($window, \f(CW$property)" 4
1536 .el .IP "\f(CW$term\fR\->XDeleteProperty ($window, \f(CW$property\fR)" 4
1537 .IX Item "$term->XDeleteProperty ($window, $property)"
1538 .ie n .IP "$window\fR = \f(CW$term\->DefaultRootWindow" 4
1539 .el .IP "\f(CW$window\fR = \f(CW$term\fR\->DefaultRootWindow" 4
1540 .IX Item "$window = $term->DefaultRootWindow"
1541 .ie n .IP "$term\fR\->XReparentWindow ($window, \f(CW$parent\fR, [$x, \f(CW$y])" 4
1542 .el .IP "\f(CW$term\fR\->XReparentWindow ($window, \f(CW$parent\fR, [$x, \f(CW$y\fR])" 4
1543 .IX Item "$term->XReparentWindow ($window, $parent, [$x, $y])"
1544 .ie n .IP "$term\->XMapWindow ($window)" 4
1545 .el .IP "\f(CW$term\fR\->XMapWindow ($window)" 4
1546 .IX Item "$term->XMapWindow ($window)"
1547 .ie n .IP "$term\->XUnmapWindow ($window)" 4
1548 .el .IP "\f(CW$term\fR\->XUnmapWindow ($window)" 4
1549 .IX Item "$term->XUnmapWindow ($window)"
1550 .ie n .IP "$term\fR\->XMoveResizeWindow ($window, \f(CW$x\fR, \f(CW$y\fR, \f(CW$width\fR, \f(CW$height)" 4
1551 .el .IP "\f(CW$term\fR\->XMoveResizeWindow ($window, \f(CW$x\fR, \f(CW$y\fR, \f(CW$width\fR, \f(CW$height\fR)" 4
1552 .IX Item "$term->XMoveResizeWindow ($window, $x, $y, $width, $height)"
1553 .ie n .IP "($x, $y\fR, \f(CW$child_window\fR) = \f(CW$term\fR\->XTranslateCoordinates ($src, \f(CW$dst\fR, \f(CW$x\fR, \f(CW$y)" 4
1554 .el .IP "($x, \f(CW$y\fR, \f(CW$child_window\fR) = \f(CW$term\fR\->XTranslateCoordinates ($src, \f(CW$dst\fR, \f(CW$x\fR, \f(CW$y\fR)" 4
1555 .IX Item "($x, $y, $child_window) = $term->XTranslateCoordinates ($src, $dst, $x, $y)"
1556 .ie n .IP "$term\fR\->XChangeInput ($window, \f(CW$add_events\fR[, \f(CW$del_events])" 4
1557 .el .IP "\f(CW$term\fR\->XChangeInput ($window, \f(CW$add_events\fR[, \f(CW$del_events\fR])" 4
1558 .IX Item "$term->XChangeInput ($window, $add_events[, $del_events])"
1559 .PD
1560 Various X or X\-related functions. The \f(CW$term\fR object only serves as
1561 the source of the display, otherwise those functions map more-or-less
1562 directory onto the X functions of the same name.
1563 .ie n .Sh "The ""urxvt::popup"" Class"
1564 .el .Sh "The \f(CWurxvt::popup\fP Class"
1565 .IX Subsection "The urxvt::popup Class"
1566 .ie n .IP "$popup\->add_title ($title)" 4
1567 .el .IP "\f(CW$popup\fR\->add_title ($title)" 4
1568 .IX Item "$popup->add_title ($title)"
1569 Adds a non-clickable title to the popup.
1570 .ie n .IP "$popup\->add_separator ([$sepchr])" 4
1571 .el .IP "\f(CW$popup\fR\->add_separator ([$sepchr])" 4
1572 .IX Item "$popup->add_separator ([$sepchr])"
1573 Creates a separator, optionally using the character given as \f(CW$sepchr\fR.
1574 .ie n .IP "$popup\fR\->add_button ($text, \f(CW$cb)" 4
1575 .el .IP "\f(CW$popup\fR\->add_button ($text, \f(CW$cb\fR)" 4
1576 .IX Item "$popup->add_button ($text, $cb)"
1577 Adds a clickable button to the popup. \f(CW$cb\fR is called whenever it is
1578 selected.
1579 .ie n .IP "$popup\fR\->add_toggle ($text, \f(CW$initial_value\fR, \f(CW$cb)" 4
1580 .el .IP "\f(CW$popup\fR\->add_toggle ($text, \f(CW$initial_value\fR, \f(CW$cb\fR)" 4
1581 .IX Item "$popup->add_toggle ($text, $initial_value, $cb)"
1582 Adds a toggle/checkbox item to the popup. The callback gets called
1583 whenever it gets toggled, with a boolean indicating its new value as its
1584 first argument.
1585 .ie n .IP "$popup\->show" 4
1586 .el .IP "\f(CW$popup\fR\->show" 4
1587 .IX Item "$popup->show"
1588 Displays the popup (which is initially hidden).
1589 .ie n .Sh "The ""urxvt::timer"" Class"
1590 .el .Sh "The \f(CWurxvt::timer\fP Class"
1591 .IX Subsection "The urxvt::timer Class"
1592 This class implements timer watchers/events. Time is represented as a
1593 fractional number of seconds since the epoch. Example:
1594 .PP
1595 .Vb 8
1596 \& $term\->{overlay} = $term\->overlay (\-1, 0, 8, 1, urxvt::OVERLAY_RSTYLE, 0);
1597 \& $term\->{timer} = urxvt::timer
1598 \& \->new
1599 \& \->interval (1)
1600 \& \->cb (sub {
1601 \& $term\->{overlay}\->set (0, 0,
1602 \& sprintf "%2d:%02d:%02d", (localtime urxvt::NOW)[2,1,0]);
1603 \& });
1604 .Ve
1605 .ie n .IP "$timer = new urxvt::timer" 4
1606 .el .IP "\f(CW$timer\fR = new urxvt::timer" 4
1607 .IX Item "$timer = new urxvt::timer"
1608 Create a new timer object in started state. It is scheduled to fire
1609 immediately.
1610 .ie n .IP "$timer\fR = \f(CW$timer\fR\->cb (sub { my ($timer) = \f(CW@_; ... })" 4
1611 .el .IP "\f(CW$timer\fR = \f(CW$timer\fR\->cb (sub { my ($timer) = \f(CW@_\fR; ... })" 4
1612 .IX Item "$timer = $timer->cb (sub { my ($timer) = @_; ... })"
1613 Set the callback to be called when the timer triggers.
1614 .ie n .IP "$tstamp\fR = \f(CW$timer\->at" 4
1615 .el .IP "\f(CW$tstamp\fR = \f(CW$timer\fR\->at" 4
1616 .IX Item "$tstamp = $timer->at"
1617 Return the time this watcher will fire next.
1618 .ie n .IP "$timer\fR = \f(CW$timer\->set ($tstamp)" 4
1619 .el .IP "\f(CW$timer\fR = \f(CW$timer\fR\->set ($tstamp)" 4
1620 .IX Item "$timer = $timer->set ($tstamp)"
1621 Set the time the event is generated to \f(CW$tstamp\fR.
1622 .ie n .IP "$timer\fR = \f(CW$timer\->interval ($interval)" 4
1623 .el .IP "\f(CW$timer\fR = \f(CW$timer\fR\->interval ($interval)" 4
1624 .IX Item "$timer = $timer->interval ($interval)"
1625 Normally (and when \f(CW$interval\fR is \f(CW0\fR), the timer will automatically
1626 stop after it has fired once. If \f(CW$interval\fR is non-zero, then the timer
1627 is automatically rescheduled at the given intervals.
1628 .ie n .IP "$timer\fR = \f(CW$timer\->start" 4
1629 .el .IP "\f(CW$timer\fR = \f(CW$timer\fR\->start" 4
1630 .IX Item "$timer = $timer->start"
1631 Start the timer.
1632 .ie n .IP "$timer\fR = \f(CW$timer\->start ($tstamp)" 4
1633 .el .IP "\f(CW$timer\fR = \f(CW$timer\fR\->start ($tstamp)" 4
1634 .IX Item "$timer = $timer->start ($tstamp)"
1635 Set the event trigger time to \f(CW$tstamp\fR and start the timer.
1636 .ie n .IP "$timer\fR = \f(CW$timer\->after ($delay)" 4
1637 .el .IP "\f(CW$timer\fR = \f(CW$timer\fR\->after ($delay)" 4
1638 .IX Item "$timer = $timer->after ($delay)"
1639 Like \f(CW\*(C`start\*(C'\fR, but sets the expiry timer to c<urxvt::NOW + \f(CW$delay\fR>.
1640 .ie n .IP "$timer\fR = \f(CW$timer\->stop" 4
1641 .el .IP "\f(CW$timer\fR = \f(CW$timer\fR\->stop" 4
1642 .IX Item "$timer = $timer->stop"
1643 Stop the timer.
1644 .ie n .Sh "The ""urxvt::iow"" Class"
1645 .el .Sh "The \f(CWurxvt::iow\fP Class"
1646 .IX Subsection "The urxvt::iow Class"
1647 This class implements io watchers/events. Example:
1648 .PP
1649 .Vb 12
1650 \& $term\->{socket} = ...
1651 \& $term\->{iow} = urxvt::iow
1652 \& \->new
1653 \& \->fd (fileno $term\->{socket})
1654 \& \->events (urxvt::EV_READ)
1655 \& \->start
1656 \& \->cb (sub {
1657 \& my ($iow, $revents) = @_;
1658 \& # $revents must be 1 here, no need to check
1659 \& sysread $term\->{socket}, my $buf, 8192
1660 \& or end\-of\-file;
1661 \& });
1662 .Ve
1663 .ie n .IP "$iow = new urxvt::iow" 4
1664 .el .IP "\f(CW$iow\fR = new urxvt::iow" 4
1665 .IX Item "$iow = new urxvt::iow"
1666 Create a new io watcher object in stopped state.
1667 .ie n .IP "$iow\fR = \f(CW$iow\fR\->cb (sub { my ($iow, \f(CW$reventmask\fR) = \f(CW@_; ... })" 4
1668 .el .IP "\f(CW$iow\fR = \f(CW$iow\fR\->cb (sub { my ($iow, \f(CW$reventmask\fR) = \f(CW@_\fR; ... })" 4
1669 .IX Item "$iow = $iow->cb (sub { my ($iow, $reventmask) = @_; ... })"
1670 Set the callback to be called when io events are triggered. \f(CW$reventmask\fR
1671 is a bitset as described in the \f(CW\*(C`events\*(C'\fR method.
1672 .ie n .IP "$iow\fR = \f(CW$iow\->fd ($fd)" 4
1673 .el .IP "\f(CW$iow\fR = \f(CW$iow\fR\->fd ($fd)" 4
1674 .IX Item "$iow = $iow->fd ($fd)"
1675 Set the file descriptor (not handle) to watch.
1676 .ie n .IP "$iow\fR = \f(CW$iow\->events ($eventmask)" 4
1677 .el .IP "\f(CW$iow\fR = \f(CW$iow\fR\->events ($eventmask)" 4
1678 .IX Item "$iow = $iow->events ($eventmask)"
1679 Set the event mask to watch. The only allowed values are
1680 \&\f(CW\*(C`urxvt::EV_READ\*(C'\fR and \f(CW\*(C`urxvt::EV_WRITE\*(C'\fR, which might be ORed
1681 together, or \f(CW\*(C`urxvt::EV_NONE\*(C'\fR.
1682 .ie n .IP "$iow\fR = \f(CW$iow\->start" 4
1683 .el .IP "\f(CW$iow\fR = \f(CW$iow\fR\->start" 4
1684 .IX Item "$iow = $iow->start"
1685 Start watching for requested events on the given handle.
1686 .ie n .IP "$iow\fR = \f(CW$iow\->stop" 4
1687 .el .IP "\f(CW$iow\fR = \f(CW$iow\fR\->stop" 4
1688 .IX Item "$iow = $iow->stop"
1689 Stop watching for events on the given file handle.
1690 .ie n .Sh "The ""urxvt::iw"" Class"
1691 .el .Sh "The \f(CWurxvt::iw\fP Class"
1692 .IX Subsection "The urxvt::iw Class"
1693 This class implements idle watchers, that get called automatically when
1694 the process is idle. They should return as fast as possible, after doing
1695 some useful work.
1696 .ie n .IP "$iw = new urxvt::iw" 4
1697 .el .IP "\f(CW$iw\fR = new urxvt::iw" 4
1698 .IX Item "$iw = new urxvt::iw"
1699 Create a new idle watcher object in stopped state.
1700 .ie n .IP "$iw\fR = \f(CW$iw\fR\->cb (sub { my ($iw) = \f(CW@_; ... })" 4
1701 .el .IP "\f(CW$iw\fR = \f(CW$iw\fR\->cb (sub { my ($iw) = \f(CW@_\fR; ... })" 4
1702 .IX Item "$iw = $iw->cb (sub { my ($iw) = @_; ... })"
1703 Set the callback to be called when the watcher triggers.
1704 .ie n .IP "$timer\fR = \f(CW$timer\->start" 4
1705 .el .IP "\f(CW$timer\fR = \f(CW$timer\fR\->start" 4
1706 .IX Item "$timer = $timer->start"
1707 Start the watcher.
1708 .ie n .IP "$timer\fR = \f(CW$timer\->stop" 4
1709 .el .IP "\f(CW$timer\fR = \f(CW$timer\fR\->stop" 4
1710 .IX Item "$timer = $timer->stop"
1711 Stop the watcher.
1712 .ie n .Sh "The ""urxvt::pw"" Class"
1713 .el .Sh "The \f(CWurxvt::pw\fP Class"
1714 .IX Subsection "The urxvt::pw Class"
1715 This class implements process watchers. They create an event whenever a
1716 process exits, after which they stop automatically.
1717 .PP
1718 .Vb 9
1719 \& my $pid = fork;
1720 \& ...
1721 \& $term\->{pw} = urxvt::pw
1722 \& \->new
1723 \& \->start ($pid)
1724 \& \->cb (sub {
1725 \& my ($pw, $exit_status) = @_;
1726 \& ...
1727 \& });
1728 .Ve
1729 .ie n .IP "$pw = new urxvt::pw" 4
1730 .el .IP "\f(CW$pw\fR = new urxvt::pw" 4
1731 .IX Item "$pw = new urxvt::pw"
1732 Create a new process watcher in stopped state.
1733 .ie n .IP "$pw\fR = \f(CW$pw\fR\->cb (sub { my ($pw, \f(CW$exit_status\fR) = \f(CW@_; ... })" 4
1734 .el .IP "\f(CW$pw\fR = \f(CW$pw\fR\->cb (sub { my ($pw, \f(CW$exit_status\fR) = \f(CW@_\fR; ... })" 4
1735 .IX Item "$pw = $pw->cb (sub { my ($pw, $exit_status) = @_; ... })"
1736 Set the callback to be called when the timer triggers.
1737 .ie n .IP "$pw\fR = \f(CW$timer\->start ($pid)" 4
1738 .el .IP "\f(CW$pw\fR = \f(CW$timer\fR\->start ($pid)" 4
1739 .IX Item "$pw = $timer->start ($pid)"
1740 Tells the watcher to start watching for process \f(CW$pid\fR.
1741 .ie n .IP "$pw\fR = \f(CW$pw\->stop" 4
1742 .el .IP "\f(CW$pw\fR = \f(CW$pw\fR\->stop" 4
1743 .IX Item "$pw = $pw->stop"
1744 Stop the watcher.
1745 .SH "ENVIRONMENT"
1746 .IX Header "ENVIRONMENT"
1747 .Sh "\s-1URXVT_PERL_VERBOSITY\s0"
1748 .IX Subsection "URXVT_PERL_VERBOSITY"
1749 This variable controls the verbosity level of the perl extension. Higher
1750 numbers indicate more verbose output.
1751 .IP "== 0 \- fatal messages" 4
1752 .IX Item "== 0 - fatal messages"
1753 .PD 0
1754 .IP ">= 3 \- script loading and management" 4
1755 .IX Item ">= 3 - script loading and management"
1756 .IP ">=10 \- all called hooks" 4
1757 .IX Item ">=10 - all called hooks"
1758 .IP ">=11 \- hook return values" 4
1759 .IX Item ">=11 - hook return values"
1760 .PD
1761 .SH "AUTHOR"
1762 .IX Header "AUTHOR"
1763 .Vb 2
1764 \& Marc Lehmann <pcg@goof.com>
1765 \& http://software.schmorp.de/pkg/rxvt\-unicode
1766 .Ve