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