ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/rxvt-unicode/doc/rxvtperl.3.txt
Revision: 1.26
Committed: Fri Jan 13 01:09:37 2006 UTC (18 years, 5 months ago) by root
Content type: text/plain
Branch: MAIN
Changes since 1.25: +10 -0 lines
Log Message:
*** empty log message ***

File Contents

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