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