ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/rxvt-unicode/doc/rxvtperl.3.txt
Revision: 1.33
Committed: Fri Jan 20 22:49:34 2006 UTC (18 years, 5 months ago) by root
Content type: text/plain
Branch: MAIN
Changes since 1.32: +50 -8 lines
Log Message:
*** empty log message ***

File Contents

# User Rev Content
1 root 1.1 NAME
2 root 1.28 rxvtperl - rxvt-unicode's embedded perl interpreter
3 root 1.1
4     SYNOPSIS
5 root 1.3 # create a file grab_test in $HOME:
6 root 1.1
7     sub on_sel_grab {
8     warn "you selected ", $_[0]->selection;
9     ()
10     }
11    
12 root 1.28 # start a rxvt using it:
13 root 1.3
14 root 1.28 rxvt --perl-lib $HOME -pe grab_test
15 root 1.1
16     DESCRIPTION
17 root 1.13 Everytime a terminal object gets created, extension scripts specified
18     via the "perl" resource are loaded and associated with it.
19 root 1.3
20     Scripts are compiled in a 'use strict' and 'use utf8' environment, and
21     thus must be encoded as UTF-8.
22 root 1.1
23 root 1.28 Each script will only ever be loaded once, even in rxvtd, where scripts
24 root 1.5 will be shared (but not enabled) for all terminals.
25 root 1.1
26 root 1.18 PREPACKAGED EXTENSIONS
27     This section describes the extensions delivered with this release. You
28 root 1.28 can find them in /opt/rxvt/lib/urxvt/perl/.
29 root 1.4
30     You can activate them like this:
31    
32 root 1.28 rxvt -pe <extensionname>
33 root 1.4
34 root 1.32 Or by adding them to the resource for extensions loaded by default:
35    
36     URxvt.perl-ext-common: default,automove-background,selection-autotransform
37    
38 root 1.14 selection (enabled by default)
39 root 1.18 (More) intelligent selection. This extension tries to be more
40 root 1.23 intelligent when the user extends selections (double-click and
41     further clicks). Right now, it tries to select words, urls and
42     complete shell-quoted arguments, which is very convenient, too, if
43     your ls supports "--quoting-style=shell".
44    
45     A double-click usually selects the word under the cursor, further
46     clicks will enlarge the selection.
47 root 1.7
48 root 1.24 The selection works by trying to match a number of regexes and
49     displaying them in increasing order of length. You can add your own
50     regexes by specifying resources of the form:
51    
52     URxvt.selection.pattern-0: perl-regex
53     URxvt.selection.pattern-1: perl-regex
54     ...
55    
56     The index number (0, 1...) must not have any holes, and each regex
57     must contain at least one pair of capturing parentheses, which will
58     be used for the match. For example, the followign adds a regex that
59     matches everything between two vertical bars:
60    
61     URxvt.selection.pattern-0: \\|([^|]+)\\|
62    
63     You can look at the source of the selection extension to see more
64     interesting uses, such as parsing a line from beginning to end.
65    
66 root 1.29 This extension also offers following bindable keyboard commands:
67 root 1.4
68     rot13
69     Rot-13 the selection when activated. Used via keyboard trigger:
70    
71     URxvt.keysym.C-M-r: perl:selection:rot13
72    
73 root 1.14 option-popup (enabled by default)
74 root 1.15 Binds a popup menu to Ctrl-Button2 that lets you toggle (some)
75 root 1.14 options at runtime.
76    
77 root 1.15 selection-popup (enabled by default)
78     Binds a popup menu to Ctrl-Button3 that lets you convert the
79 root 1.18 selection text into various other formats/action (such as uri
80 root 1.33 unescaping, perl evaluation, web-browser starting etc.), depending
81     on content.
82 root 1.15
83 root 1.31 Other extensions can extend this popup menu by pushing a code
84     reference onto "@{ $term-"{selection_popup_hook} }>, that is called
85     whenever the popup is displayed.
86    
87     It's sole argument is the popup menu, which can be modified. The
88     selection is in $_, which can be used to decide wether to add
89     something or not. It should either return nothing or a string and a
90     code reference. The string will be used as button text and the code
91     reference will be called when the button gets activated and should
92     transform $_.
93    
94     The following will add an entry "a to b" that transforms all "a"s in
95     the selection to "b"s, but only if the selection currently contains
96     any "a"s:
97    
98     push @{ $self->{term}{selection_popup_hook} }, sub {
99     /a/ ? ("a to be" => sub { s/a/b/g }
100     : ()
101     };
102    
103 root 1.17 searchable-scrollback<hotkey> (enabled by default)
104     Adds regex search functionality to the scrollback buffer, triggered
105 root 1.23 by a hotkey (default: "M-s"). While in search mode, normal terminal
106     input/output is suspended and a regex is displayed at the bottom of
107     the screen.
108    
109     Inputting characters appends them to the regex and continues
110     incremental search. "BackSpace" removes a character from the regex,
111     "Up" and "Down" search upwards/downwards in the scrollback buffer,
112     "End" jumps to the bottom. "Escape" leaves search mode and returns
113     to the point where search was started, while "Enter" or "Return"
114     stay at the current position and additionally stores the first match
115     in the current line into the primary selection.
116 root 1.17
117 root 1.24 selection-autotransform
118     This selection allows you to do automatic transforms on a selection
119     whenever a selection is made.
120    
121     It works by specifying perl snippets (most useful is a single "s///"
122     operator) that modify $_ as resources:
123    
124     URxvt.selection-autotransform.0: transform
125     URxvt.selection-autotransform.1: transform
126     ...
127    
128     For example, the following will transform selections of the form
129     "filename:number", often seen in compiler messages, into "vi
130     +$filename $word":
131    
132 root 1.27 URxvt.selection-autotransform.0: s/^([^:[:space:]]+):(\\d+):?$/vi +$2 \\Q$1\\E\\x0d/
133 root 1.24
134     And this example matches the same,but replaces it with vi-commands
135     you can paste directly into your (vi :) editor:
136    
137 root 1.31 URxvt.selection-autotransform.0: s/^([^:[:space:]]+(\\d+):?$/:e \\Q$1\\E\\x0d:$2\\x0d/
138 root 1.6
139 root 1.25 Of course, this can be modified to suit your needs and your editor
140     :)
141    
142 root 1.26 To expand the example above to typical perl error messages ("XXX at
143     FILENAME line YYY."), you need a slightly more elaborate solution:
144    
145 root 1.31 URxvt.selection.pattern-0: ( at .*? line \\d+[,.])
146     URxvt.selection-autotransform.0: s/^ at (.*?) line (\\d+)[,.]$/:e \\Q$1\E\\x0d:$2\\x0d/
147 root 1.26
148     The first line tells the selection code to treat the unchanging part
149     of every error message as a selection pattern, and the second line
150     transforms the message into vi commands to load the file.
151    
152 root 1.33 readline
153     A support package that tries to make editing with readline easier.
154     At the moment, it reacts to clicking with the left mouse button by
155     trying to move the text cursor to this position. It does so by
156     generating as many cursor-left or cursor-right keypresses as
157     required (the this only works for programs that correctly support
158     wide characters).
159    
160     It only works when clicking into the same line (possibly extended
161     over multiple rows) as the text cursor and on the primary screen, to
162     reduce the risk of misinterpreting. The normal selection isn't
163     disabled, so quick successive clicks might interfere with selection
164     creation in harmless ways.
165    
166 root 1.32 tabbed
167     This transforms the terminal into a tabbar with additional
168     terminals, that is, it implements what is commonly refered to as
169     "tabbed terminal". The topmost line displays a "[NEW]" button,
170     which, when clicked, will add a new tab, followed by one button per
171     tab.
172    
173     Clicking a button will activate that tab. Pressing Shift-Left and
174 root 1.33 Shift-Right will switch to the tab left or right of the current one,
175     while Shift-Down creates a new tab.
176 root 1.32
177 root 1.12 mark-urls
178 root 1.22 Uses per-line display filtering ("on_line_update") to underline urls
179 root 1.23 and make them clickable. When middle-clicked, the program specified
180     in the resource "urlLauncher" (default "x-www-browser") will be
181     started with the URL as first argument.
182 root 1.12
183 root 1.31 automove-background
184     This is basically a one-line extension that dynamically changes the
185     background pixmap offset to the window position, in effect creating
186     the same effect as pseudo transparency with a custom pixmap. No
187     scaling is supported in this mode. Exmaple:
188    
189     rxvt -pixmap background.xpm -pe automove-background
190    
191 root 1.12 block-graphics-to-ascii
192     A not very useful example of filtering all text output to the
193     terminal, by replacing all line-drawing characters (U+2500 ..
194     U+259F) by a similar-looking ascii character.
195    
196 root 1.24 digital-clock
197     Displays a digital clock using the built-in overlay.
198    
199 root 1.6 example-refresh-hooks
200 root 1.4 Displays a very simple digital clock in the upper right corner of
201     the window. Illustrates overwriting the refresh callbacks to create
202     your own overlays or changes.
203    
204 root 1.30 selection-pastebin
205     This is a little rarely useful extension that Uploads the selection
206     as textfile to a remote site (or does other things). (The
207     implementation is not currently secure for use in a multiuser
208     environment as it writes to /tmp directly.).
209    
210     It listens to the "selection-pastebin:remote-pastebin" keyboard
211     command, i.e.
212    
213     URxvt.keysym.C-M-e: perl:selection-pastebin:remote-pastebin
214    
215     Pressing this combination runs a command with "%" replaced by the
216     name of the textfile. This command can be set via a resource:
217    
218     URxvt.selection-pastebin.cmd: rsync -apP % ruth:/var/www/www.ta-sa.org/files/txt/.
219    
220     And the default is likely not useful to anybody but the few people
221     around here :)
222    
223     The name of the textfile is the hex encoded md5 sum of the
224     selection, so the same content should lead to the same filename.
225    
226     After a successful upload the selection will be replaced by the text
227     given in the "selection-pastebin-url" resource (again, the % is the
228     placeholder for the filename):
229    
230     URxvt.selection-pastebin.url: http://www.ta-sa.org/files/txt/%
231    
232 root 1.18 API DOCUMENTATION
233 root 1.1 General API Considerations
234     All objects (such as terminals, time watchers etc.) are typical
235     reference-to-hash objects. The hash can be used to store anything you
236     like. All members starting with an underscore (such as "_ptr" or
237 root 1.7 "_hook") are reserved for internal uses and MUST NOT be accessed or
238 root 1.1 modified).
239    
240     When objects are destroyed on the C++ side, the perl object hashes are
241     emptied, so its best to store related objects such as time watchers and
242     the like inside the terminal object so they get destroyed as soon as the
243     terminal is destroyed.
244    
245 root 1.12 Argument names also often indicate the type of a parameter. Here are
246     some hints on what they mean:
247    
248     $text
249     Rxvt-unicodes special way of encoding text, where one "unicode"
250 root 1.21 character always represents one screen cell. See ROW_t for a
251 root 1.12 discussion of this format.
252    
253     $string
254     A perl text string, with an emphasis on *text*. It can store all
255     unicode characters and is to be distinguished with text encoded in a
256     specific encoding (often locale-specific) and binary data.
257    
258     $octets
259     Either binary data or - more common - a text string encoded in a
260     locale-specific way.
261    
262 root 1.17 Extension Objects
263     Very perl extension is a perl class. A separate perl object is created
264     for each terminal and each extension and passed as the first parameter
265     to hooks. So extensions can use their $self object without having to
266     think about other extensions, with the exception of methods and members
267     that begin with an underscore character "_": these are reserved for
268     internal use.
269    
270     Although it isn't a "urxvt::term" object, you can call all methods of
271     the "urxvt::term" class on this object.
272    
273     It has the following methods and data members:
274    
275     $urxvt_term = $self->{term}
276     Returns the "urxvt::term" object associated with this instance of
277     the extension. This member *must not* be changed in any way.
278    
279     $self->enable ($hook_name => $cb, [$hook_name => $cb..])
280     Dynamically enable the given hooks (named without the "on_" prefix)
281     for this extension, replacing any previous hook. This is useful when
282     you want to overwrite time-critical hooks only temporarily.
283    
284     $self->disable ($hook_name[, $hook_name..])
285     Dynamically disable the given hooks.
286    
287 root 1.1 Hooks
288 root 1.12 The following subroutines can be declared in extension files, and will
289     be called whenever the relevant event happens.
290 root 1.1
291 root 1.17 The first argument passed to them is an extension oject as described in
292     the in the "Extension Objects" section.
293 root 1.7
294 root 1.32 All of these hooks must return a boolean value. If any of the called
295     hooks returns true, then the event counts as being *consumed*, and the
296     relevant action might not be carried out by the C++ code.
297 root 1.1
298 root 1.17 *When in doubt, return a false value (preferably "()").*
299 root 1.1
300     on_init $term
301     Called after a new terminal object has been initialized, but before
302 root 1.12 windows are created or the command gets run. Most methods are unsafe
303     to call or deliver senseless data, as terminal size and other
304     characteristics have not yet been determined. You can safely query
305 root 1.32 and change resources and options, though. For many purposes the
306     "on_start" hook is a better place.
307    
308     on_start $term
309     Called at the very end of initialisation of a new terminal, just
310     before trying to map (display) the toplevel and returning to the
311     mainloop.
312    
313     on_destroy $term
314     Called whenever something tries to destroy terminal, before doing
315     anything yet. If this hook returns true, then destruction is
316     skipped, but this is rarely a good idea.
317 root 1.1
318     on_reset $term
319     Called after the screen is "reset" for any reason, such as resizing
320     or control sequences. Here is where you can react on changes to
321     size-related variables.
322    
323 root 1.31 on_child_start $term, $pid
324     Called just after the child process has been "fork"ed.
325    
326     on_child_exit $term, $status
327     Called just after the child process has exited. $status is the
328     status from "waitpid".
329    
330 root 1.1 on_sel_make $term, $eventtime
331     Called whenever a selection has been made by the user, but before
332     the selection text is copied, so changes to the beginning, end or
333     type of the selection will be honored.
334    
335     Returning a true value aborts selection making by urxvt, in which
336     case you have to make a selection yourself by calling
337     "$term->selection_grab".
338    
339     on_sel_grab $term, $eventtime
340     Called whenever a selection has been copied, but before the
341     selection is requested from the server. The selection text can be
342     queried and changed by calling "$term->selection".
343    
344     Returning a true value aborts selection grabbing. It will still be
345     hilighted.
346    
347 root 1.7 on_sel_extend $term
348     Called whenever the user tries to extend the selection (e.g. with a
349     double click) and is either supposed to return false (normal
350     operation), or should extend the selection itelf and return true to
351 root 1.23 suppress the built-in processing. This can happen multiple times, as
352     long as the callback returns true, it will be called on every
353     further click by the user and is supposed to enlarge the selection
354     more and more, if possible.
355 root 1.7
356     See the selection example extension.
357    
358 root 1.1 on_view_change $term, $offset
359     Called whenever the view offset changes, i..e the user or program
360     scrolls. Offset 0 means display the normal terminal, positive values
361     show this many lines of scrollback.
362    
363     on_scroll_back $term, $lines, $saved
364     Called whenever lines scroll out of the terminal area into the
365     scrollback buffer. $lines is the number of lines scrolled out and
366     may be larger than the scroll back buffer or the terminal.
367    
368     It is called before lines are scrolled out (so rows 0 .. min ($lines
369     - 1, $nrow - 1) represent the lines to be scrolled out). $saved is
370     the total number of lines that will be in the scrollback buffer.
371    
372 root 1.9 on_osc_seq $term, $string
373     Called whenever the ESC ] 777 ; string ST command sequence (OSC =
374     operating system command) is processed. Cursor position and other
375     state information is up-to-date when this happens. For
376     interoperability, the string should start with the extension name
377     and a colon, to distinguish it from commands for other extensions,
378     and this might be enforced in the future.
379    
380     Be careful not ever to trust (in a security sense) the data you
381     receive, as its source can not easily be controleld (e-mail content,
382     messages from other users on the same system etc.).
383    
384 root 1.12 on_add_lines $term, $string
385     Called whenever text is about to be output, with the text as
386     argument. You can filter/change and output the text yourself by
387     returning a true value and calling "$term->scr_add_lines" yourself.
388     Please note that this might be very slow, however, as your hook is
389     called for all text being output.
390    
391 root 1.17 on_tt_write $term, $octets
392     Called whenever some data is written to the tty/pty and can be used
393     to suppress or filter tty input.
394    
395 root 1.12 on_line_update $term, $row
396     Called whenever a line was updated or changed. Can be used to filter
397     screen output (e.g. underline urls or other useless stuff). Only
398     lines that are being shown will be filtered, and, due to performance
399     reasons, not always immediately.
400    
401     The row number is always the topmost row of the line if the line
402     spans multiple rows.
403    
404     Please note that, if you change the line, then the hook might get
405     called later with the already-modified line (e.g. if unrelated parts
406     change), so you cannot just toggle rendition bits, but only set
407     them.
408    
409 root 1.1 on_refresh_begin $term
410     Called just before the screen gets redrawn. Can be used for overlay
411     or similar effects by modify terminal contents in refresh_begin, and
412     restoring them in refresh_end. The built-in overlay and selection
413     display code is run after this hook, and takes precedence.
414    
415     on_refresh_end $term
416     Called just after the screen gets redrawn. See "on_refresh_begin".
417    
418 root 1.3 on_keyboard_command $term, $string
419     Called whenever the user presses a key combination that has a
420     "perl:string" action bound to it (see description of the keysym
421 root 1.28 resource in the rxvt(1) manpage).
422 root 1.27
423     on_x_event $term, $event
424     Called on every X event received on the vt window (and possibly
425     other windows). Should only be used as a last resort. Most event
426     structure members are not passed.
427 root 1.3
428 root 1.13 on_focus_in $term
429     Called whenever the window gets the keyboard focus, before
430     rxvt-unicode does focus in processing.
431    
432     on_focus_out $term
433     Called wheneever the window loses keyboard focus, before
434     rxvt-unicode does focus out processing.
435    
436 root 1.31 on_configure_notify $term, $event
437 root 1.33 on_property_notify $term, $event
438 root 1.17 on_key_press $term, $event, $keysym, $octets
439     on_key_release $term, $event, $keysym
440 root 1.12 on_button_press $term, $event
441     on_button_release $term, $event
442     on_motion_notify $term, $event
443 root 1.13 on_map_notify $term, $event
444     on_unmap_notify $term, $event
445 root 1.12 Called whenever the corresponding X event is received for the
446     terminal If the hook returns true, then the even will be ignored by
447     rxvt-unicode.
448    
449     The event is a hash with most values as named by Xlib (see the
450     XEvent manpage), with the additional members "row" and "col", which
451 root 1.33 are the (real, not screen-based) row and column under the mouse
452     cursor.
453 root 1.12
454     "on_key_press" additionally receives the string rxvt-unicode would
455     output, if any, in locale-specific encoding.
456    
457     subwindow.
458    
459 root 1.32 on_client_message $term, $event
460     on_wm_protocols $term, $event
461     on_wm_delete_window $term, $event
462     Called when various types of ClientMessage events are received (all
463     with format=32, WM_PROTOCOLS or WM_PROTOCOLS:WM_DELETE_WINDOW).
464    
465 root 1.7 Variables in the "urxvt" Package
466 root 1.19 $urxvt::LIBDIR
467     The rxvt-unicode library directory, where, among other things, the
468     perl modules and scripts are stored.
469    
470     $urxvt::RESCLASS, $urxvt::RESCLASS
471     The resource class and name rxvt-unicode uses to look up X
472     resources.
473    
474     $urxvt::RXVTNAME
475     The basename of the installed binaries, usually "urxvt".
476    
477 root 1.7 $urxvt::TERM
478 root 1.12 The current terminal. This variable stores the current "urxvt::term"
479     object, whenever a callback/hook is executing.
480 root 1.7
481 root 1.32 @urxvt::TERM_INIT
482     All coderefs in this array will be called as methods of the next
483     newly created "urxvt::term" object (during the "on_init" phase). The
484     array gets cleared before the codereferences that were in it are
485     being executed, so coderefs can push themselves onto it again if
486     they so desire.
487    
488     This complements to the perl-eval commandline option, but gets
489     executed first.
490    
491     @urxvt::TERM_EXT
492     Works similar to @TERM_INIT, but contains perl package/class names,
493     which get registered as normal extensions after calling the hooks in
494     @TERM_INIT but before other extensions. Gets cleared just like
495     @TERM_INIT.
496    
497 root 1.1 Functions in the "urxvt" Package
498     urxvt::fatal $errormessage
499     Fatally aborts execution with the given error message. Avoid at all
500     costs! The only time this is acceptable is when the terminal process
501     starts up.
502    
503     urxvt::warn $string
504     Calls "rxvt_warn" with the given string which should not include a
505     newline. The module also overwrites the "warn" builtin with a
506     function that calls this function.
507    
508     Using this function has the advantage that its output ends up in the
509     correct place, e.g. on stderr of the connecting urxvtc client.
510    
511 root 1.20 Messages have a size limit of 1023 bytes currently.
512    
513 root 1.1 $time = urxvt::NOW
514     Returns the "current time" (as per the event loop).
515    
516 root 1.13 urxvt::CurrentTime
517     urxvt::ShiftMask, LockMask, ControlMask, Mod1Mask, Mod2Mask, Mod3Mask,
518     Mod4Mask, Mod5Mask, Button1Mask, Button2Mask, Button3Mask, Button4Mask,
519     Button5Mask, AnyModifier
520 root 1.27 urxvt::NoEventMask, KeyPressMask, KeyReleaseMask, ButtonPressMask,
521     ButtonReleaseMask, EnterWindowMask, LeaveWindowMask, PointerMotionMask,
522     PointerMotionHintMask, Button1MotionMask, Button2MotionMask,
523     Button3MotionMask, Button4MotionMask, Button5MotionMask,
524     ButtonMotionMask, KeymapStateMask, ExposureMask, VisibilityChangeMask,
525     StructureNotifyMask, ResizeRedirectMask, SubstructureNotifyMask,
526     SubstructureRedirectMask, FocusChangeMask, PropertyChangeMask,
527     ColormapChangeMask, OwnerGrabButtonMask
528     urxvt::KeyPress, KeyRelease, ButtonPress, ButtonRelease, MotionNotify,
529     EnterNotify, LeaveNotify, FocusIn, FocusOut, KeymapNotify, Expose,
530     GraphicsExpose, NoExpose, VisibilityNotify, CreateNotify, DestroyNotify,
531     UnmapNotify, MapNotify, MapRequest, ReparentNotify, ConfigureNotify,
532     ConfigureRequest, GravityNotify, ResizeRequest, CirculateNotify,
533     CirculateRequest, PropertyNotify, SelectionClear, SelectionRequest,
534     SelectionNotify, ColormapNotify, ClientMessage, MappingNotify
535 root 1.14 Various constants for use in X calls and event processing.
536 root 1.13
537 root 1.6 RENDITION
538     Rendition bitsets contain information about colour, font, font styles
539     and similar information for each screen cell.
540    
541     The following "macros" deal with changes in rendition sets. You should
542     never just create a bitset, you should always modify an existing one, as
543     they contain important information required for correct operation of
544     rxvt-unicode.
545    
546     $rend = urxvt::DEFAULT_RSTYLE
547     Returns the default rendition, as used when the terminal is starting
548     up or being reset. Useful as a base to start when creating
549     renditions.
550    
551     $rend = urxvt::OVERLAY_RSTYLE
552     Return the rendition mask used for overlays by default.
553    
554     $rendbit = urxvt::RS_Bold, RS_Italic, RS_Blink, RS_RVid, RS_Uline
555     Return the bit that enabled bold, italic, blink, reverse-video and
556     underline, respectively. To enable such a style, just logically OR
557     it into the bitset.
558    
559     $foreground = urxvt::GET_BASEFG $rend
560     $background = urxvt::GET_BASEBG $rend
561     Return the foreground/background colour index, respectively.
562    
563 root 1.19 $rend = urxvt::SET_FGCOLOR $rend, $new_colour
564     $rend = urxvt::SET_BGCOLOR $rend, $new_colour
565 root 1.6 Replace the foreground/background colour in the rendition mask with
566     the specified one.
567    
568 root 1.19 $value = urxvt::GET_CUSTOM $rend
569 root 1.6 Return the "custom" value: Every rendition has 5 bits for use by
570     extensions. They can be set and changed as you like and are
571     initially zero.
572    
573 root 1.19 $rend = urxvt::SET_CUSTOM $rend, $new_value
574 root 1.6 Change the custom value.
575    
576 root 1.14 The "urxvt::anyevent" Class
577     The sole purpose of this class is to deliver an interface to the
578     "AnyEvent" module - any module using it will work inside urxvt without
579 root 1.19 further programming. The only exception is that you cannot wait on
580     condition variables, but non-blocking condvar use is ok. What this means
581     is that you cannot use blocking APIs, but the non-blocking variant
582     should work.
583 root 1.14
584 root 1.1 The "urxvt::term" Class
585 root 1.20 $term = new urxvt::term $envhashref, $rxvtname, [arg...]
586     Creates a new terminal, very similar as if you had started it with
587     system "$rxvtname, arg...". $envhashref must be a reference to a
588 root 1.21 %ENV-like hash which defines the environment of the new terminal.
589 root 1.20
590 root 1.21 Croaks (and probably outputs an error message) if the new instance
591 root 1.20 couldn't be created. Returns "undef" if the new instance didn't
592     initialise perl, and the terminal object otherwise. The "init" and
593     "start" hooks will be called during this call.
594    
595 root 1.12 $term->destroy
596     Destroy the terminal object (close the window, free resources etc.).
597 root 1.28 Please note that rxvt will not exit as long as any event watchers
598 root 1.19 (timers, io watchers) are still active.
599 root 1.12
600 root 1.31 $term->exec_async ($cmd[, @args])
601     Works like the combination of the "fork"/"exec" builtins, which
602     executes ("starts") programs in the background. This function takes
603     care of setting the user environment before exec'ing the command
604     (e.g. "PATH") and should be preferred over explicit calls to "exec"
605     or "system".
606    
607     Returns the pid of the subprocess or "undef" on error.
608    
609 root 1.13 $isset = $term->option ($optval[, $set])
610     Returns true if the option specified by $optval is enabled, and
611     optionally change it. All option values are stored by name in the
612     hash %urxvt::OPTION. Options not enabled in this binary are not in
613     the hash.
614    
615     Here is a a likely non-exhaustive list of option names, please see
616     the source file /src/optinc.h to see the actual list:
617    
618     borderLess console cursorBlink cursorUnderline hold iconic insecure
619     intensityStyles jumpScroll loginShell mapAlert meta8 mouseWheelScrollPage
620 root 1.31 override-redirect pastableTabs pointerBlank reverseVideo scrollBar
621     scrollBar_floating scrollBar_right scrollTtyKeypress scrollTtyOutput
622     scrollWithBuffer secondaryScreen secondaryScroll skipBuiltinGlyphs
623     transparent tripleclickwords utmpInhibit visualBell
624 root 1.13
625 root 1.1 $value = $term->resource ($name[, $newval])
626     Returns the current resource value associated with a given name and
627     optionally sets a new value. Setting values is most useful in the
628     "init" hook. Unset resources are returned and accepted as "undef".
629    
630     The new value must be properly encoded to a suitable character
631     encoding before passing it to this method. Similarly, the returned
632     value may need to be converted from the used encoding to text.
633    
634     Resource names are as defined in src/rsinc.h. Colours can be
635     specified as resource names of the form "color+<index>", e.g.
636     "color+5". (will likely change).
637    
638     Please note that resource strings will currently only be freed when
639     the terminal is destroyed, so changing options frequently will eat
640     memory.
641    
642     Here is a a likely non-exhaustive list of resource names, not all of
643 root 1.13 which are supported in every build, please see the source file
644     /src/rsinc.h to see the actual list:
645 root 1.1
646     answerbackstring backgroundPixmap backspace_key boldFont boldItalicFont
647     borderLess color cursorBlink cursorUnderline cutchars delete_key
648     display_name embed ext_bwidth fade font geometry hold iconName
649     imFont imLocale inputMethod insecure int_bwidth intensityStyles
650 root 1.31 italicFont jumpScroll lineSpace loginShell mapAlert meta8 modifier
651     mouseWheelScrollPage name override_redirect pastableTabs path perl_eval
652     perl_ext_1 perl_ext_2 perl_lib pointerBlank pointerBlankDelay
653     preeditType print_pipe pty_fd reverseVideo saveLines scrollBar
654     scrollBar_align scrollBar_floating scrollBar_right scrollBar_thickness
655     scrollTtyKeypress scrollTtyOutput scrollWithBuffer scrollstyle
656     secondaryScreen secondaryScroll selectstyle shade term_name title
657     transient_for transparent transparent_all tripleclickwords utmpInhibit
658     visualBell
659 root 1.1
660 root 1.22 $value = $term->x_resource ($pattern)
661     Returns the X-Resource for the given pattern, excluding the program
662     or class name, i.e. "$term->x_resource ("boldFont")" should return
663     the same value as used by this instance of rxvt-unicode. Returns
664     "undef" if no resource with that pattern exists.
665    
666     This method should only be called during the "on_start" hook, as
667     there is only one resource database per display, and later
668     invocations might return the wrong resources.
669    
670 root 1.17 $success = $term->parse_keysym ($keysym_spec, $command_string)
671     Adds a keymap translation exactly as specified via a resource. See
672 root 1.28 the "keysym" resource in the rxvt(1) manpage.
673 root 1.17
674 root 1.12 $rend = $term->rstyle ([$new_rstyle])
675     Return and optionally change the current rendition. Text that is
676     output by the terminal application will use this style.
677 root 1.11
678     ($row, $col) = $term->screen_cur ([$row, $col])
679     Return the current coordinates of the text cursor position and
680     optionally set it (which is usually bad as applications don't expect
681     that).
682    
683 root 1.1 ($row, $col) = $term->selection_mark ([$row, $col])
684     ($row, $col) = $term->selection_beg ([$row, $col])
685     ($row, $col) = $term->selection_end ([$row, $col])
686     Return the current values of the selection mark, begin or end
687     positions, and optionally set them to new values.
688    
689 root 1.23 $term->selection_make ($eventtime[, $rectangular])
690     Tries to make a selection as set by "selection_beg" and
691     "selection_end". If $rectangular is true (default: false), a
692     rectangular selection will be made. This is the prefered function to
693     make a selection.
694    
695 root 1.1 $success = $term->selection_grab ($eventtime)
696 root 1.23 Try to request the primary selection text from the server (for
697     example, as set by the next method). No visual feedback will be
698     given. This function is mostly useful from within "on_sel_grab"
699     hooks.
700 root 1.1
701     $oldtext = $term->selection ([$newtext])
702     Return the current selection text and optionally replace it by
703     $newtext.
704    
705 root 1.17 $term->overlay_simple ($x, $y, $text)
706     Create a simple multi-line overlay box. See the next method for
707     details.
708 root 1.6
709     $term->overlay ($x, $y, $width, $height[, $rstyle[, $border]])
710 root 1.1 Create a new (empty) overlay at the given position with the given
711 root 1.6 width/height. $rstyle defines the initial rendition style (default:
712     "OVERLAY_RSTYLE").
713    
714     If $border is 2 (default), then a decorative border will be put
715     around the box.
716    
717     If either $x or $y is negative, then this is counted from the
718     right/bottom side, respectively.
719    
720     This method returns an urxvt::overlay object. The overlay will be
721     visible as long as the perl object is referenced.
722 root 1.1
723 root 1.7 The methods currently supported on "urxvt::overlay" objects are:
724 root 1.6
725 root 1.7 $overlay->set ($x, $y, $text, $rend)
726     Similar to "$term->ROW_t" and "$term->ROW_r" in that it puts
727     text in rxvt-unicode's special encoding and an array of
728     rendition values at a specific position inside the overlay.
729    
730     $overlay->hide
731     If visible, hide the overlay, but do not destroy it.
732    
733     $overlay->show
734     If hidden, display the overlay again.
735 root 1.1
736 root 1.13 $popup = $term->popup ($event)
737     Creates a new "urxvt::popup" object that implements a popup menu.
738     The $event *must* be the event causing the menu to pop up (a button
739     event, currently).
740    
741 root 1.12 $cellwidth = $term->strwidth ($string)
742 root 1.1 Returns the number of screen-cells this string would need. Correctly
743     accounts for wide and combining characters.
744    
745 root 1.12 $octets = $term->locale_encode ($string)
746 root 1.1 Convert the given text string into the corresponding locale
747     encoding.
748    
749 root 1.12 $string = $term->locale_decode ($octets)
750 root 1.1 Convert the given locale-encoded octets into a perl string.
751    
752 root 1.17 $term->scr_xor_span ($beg_row, $beg_col, $end_row, $end_col[, $rstyle])
753     XORs the rendition values in the given span with the provided value
754 root 1.23 (default: "RS_RVid"), which *MUST NOT* contain font styles. Useful
755     in refresh hooks to provide effects similar to the selection.
756 root 1.17
757     $term->scr_xor_rect ($beg_row, $beg_col, $end_row, $end_col[, $rstyle1[,
758     $rstyle2]])
759     Similar to "scr_xor_span", but xors a rectangle instead. Trailing
760     whitespace will additionally be xored with the $rstyle2, which
761     defaults to "RS_RVid | RS_Uline", which removes reverse video again
762 root 1.23 and underlines it instead. Both styles *MUST NOT* contain font
763     styles.
764 root 1.17
765     $term->scr_bell
766     Ring the bell!
767    
768 root 1.12 $term->scr_add_lines ($string)
769     Write the given text string to the screen, as if output by the
770     application running inside the terminal. It may not contain command
771     sequences (escape codes), but is free to use line feeds, carriage
772     returns and tabs. The string is a normal text string, not in
773     locale-dependent encoding.
774    
775     Normally its not a good idea to use this function, as programs might
776     be confused by changes in cursor position or scrolling. Its useful
777     inside a "on_add_lines" hook, though.
778    
779 root 1.33 $term->scr_change_screen ($screen)
780     Switch to given screen - 0 primary, 1 secondary.
781    
782 root 1.12 $term->cmd_parse ($octets)
783     Similar to "scr_add_lines", but the argument must be in the
784     locale-specific encoding of the terminal and can contain command
785     sequences (escape codes) that will be interpreted.
786    
787 root 1.1 $term->tt_write ($octets)
788     Write the octets given in $data to the tty (i.e. as program input).
789 root 1.4 To pass characters instead of octets, you should convert your
790     strings first to the locale-specific encoding using
791     "$term->locale_encode".
792    
793 root 1.17 $old_events = $term->pty_ev_events ([$new_events])
794     Replaces the event mask of the pty watcher by the given event mask.
795     Can be used to suppress input and output handling to the pty/tty.
796     See the description of "urxvt::timer->events". Make sure to always
797     restore the previous value.
798    
799 root 1.12 $windowid = $term->parent
800     Return the window id of the toplevel window.
801    
802     $windowid = $term->vt
803     Return the window id of the terminal window.
804    
805 root 1.27 $term->vt_emask_add ($x_event_mask)
806     Adds the specified events to the vt event mask. Useful e.g. when you
807     want to receive pointer events all the times:
808    
809     $term->vt_emask_add (urxvt::PointerMotionMask);
810    
811 root 1.11 $window_width = $term->width
812     $window_height = $term->height
813     $font_width = $term->fwidth
814     $font_height = $term->fheight
815     $font_ascent = $term->fbase
816     $terminal_rows = $term->nrow
817     $terminal_columns = $term->ncol
818     $has_focus = $term->focus
819     $is_mapped = $term->mapped
820     $max_scrollback = $term->saveLines
821     $nrow_plus_saveLines = $term->total_rows
822 root 1.28 $topmost_scrollback_row = $term->top_row
823 root 1.11 Return various integers describing terminal characteristics.
824 root 1.4
825 root 1.20 $x_display = $term->display_id
826     Return the DISPLAY used by rxvt-unicode.
827    
828 root 1.17 $lc_ctype = $term->locale
829     Returns the LC_CTYPE category string used by this rxvt-unicode.
830    
831 root 1.20 $env = $term->env
832     Returns a copy of the environment in effect for the terminal as a
833     hashref similar to "\%ENV".
834 root 1.17
835 root 1.13 $modifiermask = $term->ModLevel3Mask
836     $modifiermask = $term->ModMetaMask
837     $modifiermask = $term->ModNumLockMask
838     Return the modifier masks corresponding to the "ISO Level 3 Shift"
839     (often AltGr), the meta key (often Alt) and the num lock key, if
840     applicable.
841    
842 root 1.33 $screen = $term->current_screen
843     Returns the currently displayed screen (0 primary, 1 secondary).
844    
845 root 1.4 $view_start = $term->view_start ([$newvalue])
846 root 1.28 Returns the row number of the topmost displayed line. Maximum value
847     is 0, which displays the normal terminal contents. Lower values
848 root 1.4 scroll this many lines into the scrollback buffer.
849    
850     $term->want_refresh
851     Requests a screen refresh. At the next opportunity, rxvt-unicode
852     will compare the on-screen display with its stored representation.
853     If they differ, it redraws the differences.
854    
855     Used after changing terminal contents to display them.
856    
857     $text = $term->ROW_t ($row_number[, $new_text[, $start_col]])
858     Returns the text of the entire row with number $row_number. Row 0 is
859     the topmost terminal line, row "$term->$ncol-1" is the bottommost
860     terminal line. The scrollback buffer starts at line -1 and extends
861 root 1.7 to line "-$term->nsaved". Nothing will be returned if a nonexistent
862     line is requested.
863 root 1.4
864     If $new_text is specified, it will replace characters in the current
865     line, starting at column $start_col (default 0), which is useful to
866 root 1.6 replace only parts of a line. The font index in the rendition will
867 root 1.4 automatically be updated.
868    
869     $text is in a special encoding: tabs and wide characters that use
870 root 1.33 more than one cell when displayed are padded with $urxvt::NOCHAR
871     characters. Characters with combining characters and other
872     characters that do not fit into the normal tetx encoding will be
873     replaced with characters in the private use area.
874 root 1.4
875     You have to obey this encoding when changing text. The advantage is
876     that "substr" and similar functions work on screen cells and not on
877     characters.
878    
879     The methods "$term->special_encode" and "$term->special_decode" can
880     be used to convert normal strings into this encoding and vice versa.
881    
882     $rend = $term->ROW_r ($row_number[, $new_rend[, $start_col]])
883     Like "$term->ROW_t", but returns an arrayref with rendition bitsets.
884     Rendition bitsets contain information about colour, font, font
885     styles and similar information. See also "$term->ROW_t".
886    
887     When setting rendition, the font mask will be ignored.
888    
889 root 1.6 See the section on RENDITION, above.
890 root 1.4
891     $length = $term->ROW_l ($row_number[, $new_length])
892     Returns the number of screen cells that are in use ("the line
893 root 1.7 length"). Unlike the urxvt core, this returns "$term->ncol" if the
894     line is joined with the following one.
895    
896     $bool = $term->is_longer ($row_number)
897     Returns true if the row is part of a multiple-row logical "line"
898     (i.e. joined with the following row), which means all characters are
899     in use and it is continued on the next row (and possibly a
900     continuation of the previous row(s)).
901    
902     $line = $term->line ($row_number)
903     Create and return a new "urxvt::line" object that stores information
904     about the logical line that row $row_number is part of. It supports
905     the following methods:
906    
907 root 1.12 $text = $line->t ([$new_text])
908     Returns or replaces the full text of the line, similar to
909     "ROW_t"
910    
911     $rend = $line->r ([$new_rend])
912     Returns or replaces the full rendition array of the line,
913     similar to "ROW_r"
914 root 1.7
915     $length = $line->l
916     Returns the length of the line in cells, similar to "ROW_l".
917    
918     $rownum = $line->beg
919     $rownum = $line->end
920     Return the row number of the first/last row of the line,
921     respectively.
922    
923     $offset = $line->offset_of ($row, $col)
924     Returns the character offset of the given row|col pair within
925 root 1.23 the logical line. Works for rows outside the line, too, and
926     returns corresponding offsets outside the string.
927 root 1.7
928     ($row, $col) = $line->coord_of ($offset)
929     Translates a string offset into terminal coordinates again.
930 root 1.4
931 root 1.15 $text = $term->special_encode $string
932 root 1.4 Converts a perl string into the special encoding used by
933     rxvt-unicode, where one character corresponds to one screen cell.
934     See "$term->ROW_t" for details.
935    
936     $string = $term->special_decode $text
937     Converts rxvt-unicodes text reprsentation into a perl string. See
938     "$term->ROW_t" for details.
939    
940 root 1.15 $success = $term->grab_button ($button, $modifiermask)
941 root 1.16 Registers a synchronous button grab. See the XGrabButton manpage.
942 root 1.15
943     $success = $term->grab ($eventtime[, $sync])
944     Calls XGrabPointer and XGrabKeyboard in asynchronous (default) or
945     synchronous ($sync is true). Also remembers the grab timestampe.
946    
947     $term->allow_events_async
948     Calls XAllowEvents with AsyncBoth for the most recent grab.
949    
950     $term->allow_events_sync
951     Calls XAllowEvents with SyncBoth for the most recent grab.
952    
953     $term->allow_events_replay
954     Calls XAllowEvents with both ReplayPointer and ReplayKeyboard for
955     the most recent grab.
956    
957     $term->ungrab
958     Calls XUngrab for the most recent grab. Is called automatically on
959     evaluation errors, as it is better to lose the grab in the error
960     case as the session.
961    
962 root 1.33 $atom = $term->XInternAtom ($atom_name[, $only_if_exists])
963     $atom_name = $term->XGetAtomName ($atom)
964     @atoms = $term->XListProperties ($window)
965     ($type,$format,$octets) = $term->XGetWindowProperty ($window, $property)
966     $term->XChangeWindowProperty ($window, $property, $type, $format,
967     $octets)
968     $term->XDeleteProperty ($window, $property)
969     $window = $term->DefaultRootWindow
970     $term->XReparentWindow ($window, $parent, [$x, $y])
971     $term->XMapWindow ($window)
972     $term->XUnmapWindow ($window)
973     $term->XMoveResizeWindow ($window, $x, $y, $width, $height)
974     ($x, $y, $child_window) = $term->XTranslateCoordinates ($src, $dst, $x,
975     $y)
976     $term->XChangeInput ($window, $add_events[, $del_events])
977     Various X or X-related functions. The $term object only serves as
978     the source of the display, otherwise those functions map
979     more-or-less directory onto the X functions of the same name.
980    
981 root 1.13 The "urxvt::popup" Class
982 root 1.19 $popup->add_title ($title)
983     Adds a non-clickable title to the popup.
984    
985     $popup->add_separator ([$sepchr])
986     Creates a separator, optionally using the character given as
987     $sepchr.
988    
989     $popup->add_button ($text, $cb)
990     Adds a clickable button to the popup. $cb is called whenever it is
991     selected.
992    
993     $popup->add_toggle ($text, $cb, $initial_value)
994     Adds a toggle/checkbox item to the popup. Teh callback gets called
995     whenever it gets toggled, with a boolean indicating its value as its
996     first argument.
997    
998     $popup->show
999     Displays the popup (which is initially hidden).
1000    
1001 root 1.1 The "urxvt::timer" Class
1002 root 1.21 This class implements timer watchers/events. Time is represented as a
1003     fractional number of seconds since the epoch. Example:
1004 root 1.1
1005 root 1.21 $term->{overlay} = $term->overlay (-1, 0, 8, 1, urxvt::OVERLAY_RSTYLE, 0);
1006     $term->{timer} = urxvt::timer
1007     ->new
1008     ->interval (1)
1009     ->cb (sub {
1010     $term->{overlay}->set (0, 0,
1011     sprintf "%2d:%02d:%02d", (localtime urxvt::NOW)[2,1,0]);
1012     });
1013    
1014     $timer = new urxvt::timer
1015     Create a new timer object in started state. It is scheduled to fire
1016     immediately.
1017    
1018     $timer = $timer->cb (sub { my ($timer) = @_; ... })
1019     Set the callback to be called when the timer triggers.
1020    
1021     $tstamp = $timer->at
1022     Return the time this watcher will fire next.
1023    
1024     $timer = $timer->set ($tstamp)
1025     Set the time the event is generated to $tstamp.
1026    
1027     $timer = $timer->interval ($interval)
1028     Normally (and when $interval is 0), the timer will automatically
1029     stop after it has fired once. If $interval is non-zero, then the
1030     timer is automatically rescheduled at the given intervals.
1031 root 1.6
1032 root 1.21 $timer = $timer->start
1033     Start the timer.
1034 root 1.1
1035 root 1.21 $timer = $timer->start ($tstamp)
1036     Set the event trigger time to $tstamp and start the timer.
1037 root 1.1
1038 root 1.31 $timer = $timer->after ($delay)
1039     Like "start", but sets the expiry timer to c<urxvt::NOW + $delay>.
1040    
1041 root 1.21 $timer = $timer->stop
1042     Stop the timer.
1043 root 1.1
1044     The "urxvt::iow" Class
1045 root 1.21 This class implements io watchers/events. Example:
1046 root 1.1
1047 root 1.21 $term->{socket} = ...
1048     $term->{iow} = urxvt::iow
1049     ->new
1050     ->fd (fileno $term->{socket})
1051     ->events (urxvt::EVENT_READ)
1052     ->start
1053     ->cb (sub {
1054     my ($iow, $revents) = @_;
1055     # $revents must be 1 here, no need to check
1056     sysread $term->{socket}, my $buf, 8192
1057     or end-of-file;
1058     });
1059    
1060     $iow = new urxvt::iow
1061     Create a new io watcher object in stopped state.
1062    
1063     $iow = $iow->cb (sub { my ($iow, $reventmask) = @_; ... })
1064     Set the callback to be called when io events are triggered.
1065     $reventmask is a bitset as described in the "events" method.
1066    
1067     $iow = $iow->fd ($fd)
1068     Set the filedescriptor (not handle) to watch.
1069    
1070     $iow = $iow->events ($eventmask)
1071     Set the event mask to watch. The only allowed values are
1072     "urxvt::EVENT_READ" and "urxvt::EVENT_WRITE", which might be ORed
1073     together, or "urxvt::EVENT_NONE".
1074 root 1.1
1075 root 1.21 $iow = $iow->start
1076     Start watching for requested events on the given handle.
1077 root 1.1
1078 root 1.21 $iow = $iow->stop
1079     Stop watching for events on the given filehandle.
1080 root 1.1
1081 root 1.32 The "urxvt::iw" Class
1082     This class implements idle watchers, that get called automatically when
1083     the process is idle. They should return as fast as possible, after doing
1084     some useful work.
1085    
1086     $iw = new urxvt::iw
1087     Create a new idle watcher object in stopped state.
1088    
1089     $iw = $iw->cb (sub { my ($iw) = @_; ... })
1090     Set the callback to be called when the watcher triggers.
1091    
1092     $timer = $timer->start
1093     Start the watcher.
1094    
1095     $timer = $timer->stop
1096     Stop the watcher.
1097    
1098     The "urxvt::pw" Class
1099     This class implements process watchers. They create an event whenever a
1100     process exits, after which they stop automatically.
1101    
1102     my $pid = fork;
1103     ...
1104     $term->{pw} = urxvt::pw
1105     ->new
1106     ->start ($pid)
1107     ->cb (sub {
1108     my ($pw, $exit_status) = @_;
1109     ...
1110     });
1111    
1112     $pw = new urxvt::pw
1113     Create a new process watcher in stopped state.
1114    
1115     $pw = $pw->cb (sub { my ($pw, $exit_status) = @_; ... })
1116     Set the callback to be called when the timer triggers.
1117    
1118     $pw = $timer->start ($pid)
1119     Tells the wqtcher to start watching for process $pid.
1120    
1121     $pw = $pw->stop
1122     Stop the watcher.
1123    
1124 root 1.1 ENVIRONMENT
1125     URXVT_PERL_VERBOSITY
1126 root 1.21 This variable controls the verbosity level of the perl extension. Higher
1127     numbers indicate more verbose output.
1128 root 1.1
1129 root 1.21 == 0 - fatal messages
1130     >= 3 - script loading and management
1131 root 1.23 >=10 - all called hooks
1132     >=11 - hook reutrn values
1133 root 1.1
1134     AUTHOR
1135 root 1.21 Marc Lehmann <pcg@goof.com>
1136     http://software.schmorp.de/pkg/rxvt-unicode
1137 root 1.1