--- rxvt-unicode/doc/rxvtperl.3.html 2006/01/02 17:21:59 1.2 +++ rxvt-unicode/doc/rxvtperl.3.html 2006/01/11 02:13:56 1.24 @@ -15,11 +15,19 @@
  • NAME
  • SYNOPSIS
  • DESCRIPTION
  • +
  • PREPACKAGED EXTENSIONS
  • +
  • API DOCUMENTATION
  • @@ -37,43 +45,220 @@

    +

    NAME

    rxvtperl - rxvt-unicode's embedded perl interpreter


    SYNOPSIS

    -

    * Put your scripts into /opt/rxvt/lib/urxvt/perl-ext/, they will be loaded automatically.

    -

    * Each script will only be loaded once, even in urxvtd, and will be valid -globally.

    -

    * Scripts are evaluated in a 'use strict' and 'use utf8' environment, and -thus must be encoded as UTF-8.

    +
    +   # create a file grab_test in $HOME:
        sub on_sel_grab {
           warn "you selected ", $_[0]->selection;
           ()
        }
    -   1
    + # start a rxvt using it: +
    +   rxvt --perl-lib $HOME -pe grab_test


    DESCRIPTION

    +

    Everytime a terminal object gets created, extension scripts specified via +the perl resource are loaded and associated with it.

    +

    Scripts are compiled in a 'use strict' and 'use utf8' environment, and +thus must be encoded as UTF-8.

    +

    Each script will only ever be loaded once, even in rxvtd, where +scripts will be shared (but not enabled) for all terminals.

    +

    +

    +
    +

    PREPACKAGED EXTENSIONS

    +

    This section describes the extensions delivered with this release. You can +find them in /opt/rxvt/lib/urxvt/perl/.

    +

    You can activate them like this:

    +
    +  rxvt -pe <extensionname>
    +
    +
    selection (enabled by default)
    +
    +
    +(More) intelligent selection. This extension tries to be more intelligent +when the user extends selections (double-click). Right now, it tries to +select urls and complete shell-quoted arguments, which is very convenient, +too, if your ls supports --quoting-style=shell. +
    +
    +

    It also offers the following bindable keyboard command:

    +
    +
    +
    rot13
    +
    +
    +Rot-13 the selection when activated. Used via keyboard trigger: +
    +
    +
    +   URxvt.keysym.C-M-r: perl:selection:rot13
    +
    +

    +
    option-popup (enabled by default)
    +
    +
    +Binds a popup menu to Ctrl-Button2 that lets you toggle (some) options at +runtime. +
    +

    +
    selection-popup (enabled by default)
    +
    +
    +Binds a popup menu to Ctrl-Button3 that lets you convert the selection +text into various other formats/action (such as uri unescaping, perl +evalution, web-browser starting etc.), depending on content. +
    +

    +
    searchable-scrollback<hotkey> (enabled by default)
    +
    +
    +Adds regex search functionality to the scrollback buffer, triggered +by a hotkey (default: M-s). When in search mode, normal terminal +input/output is suspended. +
    +
    +

    / starts an incremental regex search, n searches further, p or +N jump to the previous match, G jumps to the bottom and clears the +history, enter leaves search mode at the current position and escape +returns to the original position.

    +
    +

    +
    digital-clock
    +
    +
    +Displays a digital clock using the built-in overlay. +
    +

    +
    mark-urls
    +
    +
    +Uses per-line display filtering (on_line_update) to underline urls and +make them clickable. When clicked, the program specified in the resource +urlLauncher (default x-www-browser) will be started. +
    +

    +
    block-graphics-to-ascii
    +
    +
    +A not very useful example of filtering all text output to the terminal, +by replacing all line-drawing characters (U+2500 .. U+259F) by a +similar-looking ascii character. +
    +

    +
    example-refresh-hooks
    +
    +
    +Displays a very simple digital clock in the upper right corner of the +window. Illustrates overwriting the refresh callbacks to create your own +overlays or changes. +
    +

    +

    +

    +
    +

    API DOCUMENTATION

    +

    +

    +

    General API Considerations

    +

    All objects (such as terminals, time watchers etc.) are typical +reference-to-hash objects. The hash can be used to store anything you +like. All members starting with an underscore (such as _ptr or +_hook) are reserved for internal uses and MUST NOT be accessed or +modified).

    +

    When objects are destroyed on the C++ side, the perl object hashes are +emptied, so its best to store related objects such as time watchers and +the like inside the terminal object so they get destroyed as soon as the +terminal is destroyed.

    +

    Argument names also often indicate the type of a parameter. Here are some +hints on what they mean:

    +
    +
    $text
    +
    +
    +Rxvt-unicodes special way of encoding text, where one ``unicode'' character +always represents one screen cell. See ROW_t for a discussion of this format. +
    +

    +
    $string
    +
    +
    +A perl text string, with an emphasis on text. It can store all unicode +characters and is to be distinguished with text encoded in a specific +encoding (often locale-specific) and binary data. +
    +

    +
    $octets
    +
    +
    +Either binary data or - more common - a text string encoded in a +locale-specific way. +
    +

    +

    +

    +

    Extension Objects

    +

    Very perl extension is a perl class. A separate perl object is created +for each terminal and each extension and passed as the first parameter to +hooks. So extensions can use their $self object without having to think +about other extensions, with the exception of methods and members that +begin with an underscore character _: these are reserved for internal +use.

    +

    Although it isn't a urxvt::term object, you can call all methods of the +urxvt::term class on this object.

    +

    It has the following methods and data members:

    +
    +
    $urxvt_term = $self->{term}
    +
    +
    +Returns the urxvt::term object associated with this instance of the +extension. This member must not be changed in any way. +
    +

    +
    $self->enable ($hook_name => $cb, [$hook_name => $cb..])
    +
    +
    +Dynamically enable the given hooks (named without the on_ prefix) for +this extension, replacing any previous hook. This is useful when you want +to overwrite time-critical hooks only temporarily. +
    +

    +
    $self->disable ($hook_name[, $hook_name..])
    +
    +
    +Dynamically disable the given hooks. +
    +

    Hooks

    -

    The following subroutines can be declared in loaded scripts, and will be called -whenever the relevant event happens.

    -

    All of them must return a boolean value. If it is true, then the event -counts as being consumed, and the invocation of other hooks is skipped, -and the relevant action might not be carried out by the C++ code.

    -

    When in doubt, return a false value (preferably ()).

    +

    The following subroutines can be declared in extension files, and will be +called whenever the relevant event happens.

    +

    The first argument passed to them is an extension oject as described in +the in the Extension Objects section.

    +

    All of these hooks must return a boolean value. If it is true, then the +event counts as being consumed, and the invocation of other hooks is +skipped, and the relevant action might not be carried out by the C++ code.

    +

    When in doubt, return a false value (preferably ()). >

    on_init $term
    Called after a new terminal object has been initialized, but before -windows are created or the command gets run. +windows are created or the command gets run. Most methods are unsafe to +call or deliver senseless data, as terminal size and other characteristics +have not yet been determined. You can safely query and change resources, +though.

    on_reset $term
    @@ -114,18 +299,16 @@

    Returning a true value aborts selection grabbing. It will still be hilighted.

    -
    on_focus_in $term
    +
    on_sel_extend $term
    -Called whenever the window gets the keyboard focus, before urxvt does -focus in processing. +Called whenever the user tries to extend the selection (e.g. with a double +click) and is either supposed to return false (normal operation), or +should extend the selection itelf and return true to suppress the built-in +processing.
    -

    -
    on_focus_out $term
    -
    -Called wheneever the window loses keyboard focus, before urxvt does focus -out processing. +

    See the selection example extension.

    on_view_change $term, $offset
    @@ -149,10 +332,55 @@ number of lines that will be in the scrollback buffer.

    -
    on_tty_activity $term *NYI*
    +
    on_osc_seq $term, $string
    +
    +
    +Called whenever the ESC ] 777 ; string ST command sequence (OSC = +operating system command) is processed. Cursor position and other state +information is up-to-date when this happens. For interoperability, the +string should start with the extension name and a colon, to distinguish +it from commands for other extensions, and this might be enforced in the +future. +
    +
    +

    Be careful not ever to trust (in a security sense) the data you receive, +as its source can not easily be controleld (e-mail content, messages from +other users on the same system etc.).

    +
    +

    +
    on_add_lines $term, $string
    -Called whenever the program(s) running in the urxvt window send output. +Called whenever text is about to be output, with the text as argument. You +can filter/change and output the text yourself by returning a true value +and calling $term->scr_add_lines yourself. Please note that this +might be very slow, however, as your hook is called for all text being +output. +
    +

    +
    on_tt_write $term, $octets
    +
    +
    +Called whenever some data is written to the tty/pty and can be used to +suppress or filter tty input. +
    +

    +
    on_line_update $term, $row
    +
    +
    +Called whenever a line was updated or changed. Can be used to filter +screen output (e.g. underline urls or other useless stuff). Only lines +that are being shown will be filtered, and, due to performance reasons, +not always immediately. +
    +
    +

    The row number is always the topmost row of the line if the line spans +multiple rows.

    +
    +
    +

    Please note that, if you change the line, then the hook might get called +later with the already-modified line (e.g. if unrelated parts change), so +you cannot just toggle rendition bits, but only set them.

    on_refresh_begin $term
    @@ -169,6 +397,89 @@
    Called just after the screen gets redrawn. See on_refresh_begin.
    +

    +
    on_keyboard_command $term, $string
    +
    +
    +Called whenever the user presses a key combination that has a +perl:string action bound to it (see description of the keysym +resource in the rxvt(1) manpage). +
    +

    +
    on_focus_in $term
    +
    +
    +Called whenever the window gets the keyboard focus, before rxvt-unicode +does focus in processing. +
    +

    +
    on_focus_out $term
    +
    +
    +Called wheneever the window loses keyboard focus, before rxvt-unicode does +focus out processing. +
    +

    +
    on_key_press $term, $event, $keysym, $octets
    +
    +
    on_key_release $term, $event, $keysym
    +
    +
    on_button_press $term, $event
    +
    +
    on_button_release $term, $event
    +
    +
    on_motion_notify $term, $event
    +
    +
    on_map_notify $term, $event
    +
    +
    on_unmap_notify $term, $event
    +
    +
    +Called whenever the corresponding X event is received for the terminal If +the hook returns true, then the even will be ignored by rxvt-unicode. +
    +
    +

    The event is a hash with most values as named by Xlib (see the XEvent +manpage), with the additional members row and col, which are the row +and column under the mouse cursor.

    +
    +
    +

    on_key_press additionally receives the string rxvt-unicode would +output, if any, in locale-specific encoding.

    +
    +
    +

    subwindow.

    +
    +

    +

    +

    +

    Variables in the urxvt Package

    +
    +
    $urxvt::LIBDIR
    +
    +
    +The rxvt-unicode library directory, where, among other things, the perl +modules and scripts are stored. +
    +

    +
    $urxvt::RESCLASS, $urxvt::RESCLASS
    +
    +
    +The resource class and name rxvt-unicode uses to look up X resources. +
    +

    +
    $urxvt::RXVTNAME
    +
    +
    +The basename of the installed binaries, usually urxvt. +
    +

    +
    $urxvt::TERM
    +
    +
    +The current terminal. This variable stores the current urxvt::term +object, whenever a callback/hook is executing. +

    @@ -185,7 +496,7 @@
    urxvt::warn $string
    -Calls rxvt_warn witht eh given string which should not include a +Calls rxvt_warn with the given string which should not include a newline. The module also overwrites the warn builtin with a function that calls this function.
    @@ -193,12 +504,16 @@

    Using this function has the advantage that its output ends up in the correct place, e.g. on stderr of the connecting urxvtc client.

    +
    +

    Messages have a size limit of 1023 bytes currently.

    +

    -
    $cellwidth = urxvt::wcswidth $string
    +
    $is_safe = urxvt::safe
    -Returns the number of screen-cells this string would need. Correctly -accounts for wide and combining characters. +Returns true when it is safe to do potentially unsafe things, such as +evaluating perl code specified by the user. This is true when urxvt was +started setuid or setgid.

    $time = urxvt::NOW
    @@ -206,11 +521,135 @@
    Returns the ``current time'' (as per the event loop).
    +

    +
    urxvt::CurrentTime
    +
    +
    urxvt::ShiftMask, LockMask, ControlMask, Mod1Mask, Mod2Mask, +Mod3Mask, Mod4Mask, Mod5Mask, Button1Mask, Button2Mask, Button3Mask, +Button4Mask, Button5Mask, AnyModifier
    +
    +
    +Various constants for use in X calls and event processing. +
    +

    +

    +

    +

    RENDITION

    +

    Rendition bitsets contain information about colour, font, font styles and +similar information for each screen cell.

    +

    The following ``macros'' deal with changes in rendition sets. You should +never just create a bitset, you should always modify an existing one, +as they contain important information required for correct operation of +rxvt-unicode.

    +
    +
    $rend = urxvt::DEFAULT_RSTYLE
    +
    +
    +Returns the default rendition, as used when the terminal is starting up or +being reset. Useful as a base to start when creating renditions. +
    +

    +
    $rend = urxvt::OVERLAY_RSTYLE
    +
    +
    +Return the rendition mask used for overlays by default. +
    +

    +
    $rendbit = urxvt::RS_Bold, RS_Italic, RS_Blink, RS_RVid, RS_Uline
    +
    +
    +Return the bit that enabled bold, italic, blink, reverse-video and +underline, respectively. To enable such a style, just logically OR it into +the bitset. +
    +

    +
    $foreground = urxvt::GET_BASEFG $rend
    +
    +
    $background = urxvt::GET_BASEBG $rend
    +
    +
    +Return the foreground/background colour index, respectively. +
    +

    +
    $rend = urxvt::SET_FGCOLOR $rend, $new_colour
    +
    +
    $rend = urxvt::SET_BGCOLOR $rend, $new_colour
    +
    +
    +Replace the foreground/background colour in the rendition mask with the +specified one. +
    +

    +
    $value = urxvt::GET_CUSTOM $rend
    +
    +
    +Return the ``custom'' value: Every rendition has 5 bits for use by +extensions. They can be set and changed as you like and are initially +zero. +
    +

    +
    $rend = urxvt::SET_CUSTOM $rend, $new_value
    +
    +
    +Change the custom value. +

    +

    The urxvt::anyevent Class

    +

    The sole purpose of this class is to deliver an interface to the +AnyEvent module - any module using it will work inside urxvt without +further programming. The only exception is that you cannot wait on +condition variables, but non-blocking condvar use is ok. What this means +is that you cannot use blocking APIs, but the non-blocking variant should +work.

    +

    +

    The urxvt::term Class

    +
    $term = new urxvt::term $envhashref, $rxvtname, [arg...]
    +
    +
    +Creates a new terminal, very similar as if you had started it with system +$rxvtname, arg.... $envhashref must be a reference to a %ENV-like +hash which defines the environment of the new terminal. +
    +
    +

    Croaks (and probably outputs an error message) if the new instance +couldn't be created. Returns undef if the new instance didn't +initialise perl, and the terminal object otherwise. The init and +start hooks will be called during this call.

    +
    +

    +
    $term->destroy
    +
    +
    +Destroy the terminal object (close the window, free resources +etc.). Please note that rxvt will not exit as long as any event +watchers (timers, io watchers) are still active. +
    +

    +
    $isset = $term->option ($optval[, $set])
    +
    +
    +Returns true if the option specified by $optval is enabled, and +optionally change it. All option values are stored by name in the hash +%urxvt::OPTION. Options not enabled in this binary are not in the hash. +
    +
    +

    Here is a a likely non-exhaustive list of option names, please see the +source file /src/optinc.h to see the actual list:

    +
    +
    +
    + borderLess console cursorBlink cursorUnderline hold iconic insecure
    + intensityStyles jumpScroll loginShell mapAlert meta8 mouseWheelScrollPage
    + pastableTabs pointerBlank reverseVideo scrollBar scrollBar_floating
    + scrollBar_right scrollTtyKeypress scrollTtyOutput scrollWithBuffer
    + secondaryScreen secondaryScroll skipBuiltinGlyphs transparent
    + tripleclickwords utmpInhibit visualBell
    +
    +

    $value = $term->resource ($name[, $newval])
    @@ -234,8 +673,8 @@

    Here is a a likely non-exhaustive list of resource names, not all of which -are supported in every build, please see the source to see the actual -list:

    +are supported in every build, please see the source file /src/rsinc.h +to see the actual list:

    @@ -243,14 +682,49 @@
       borderLess color cursorBlink cursorUnderline cutchars delete_key
       display_name embed ext_bwidth fade font geometry hold iconName
       imFont imLocale inputMethod insecure int_bwidth intensityStyles
    -  italicFont jumpScroll lineSpace loginShell mapAlert menu meta8
    -  modifier mouseWheelScrollPage name pastableTabs path pointerBlank
    -  pointerBlankDelay preeditType print_pipe pty_fd reverseVideo saveLines
    -  scrollBar scrollBar_align scrollBar_floating scrollBar_right
    -  scrollBar_thickness scrollTtyKeypress scrollTtyOutput scrollWithBuffer
    -  scrollstyle secondaryScreen secondaryScroll selectstyle shade term_name
    -  title transparent transparent_all tripleclickwords utmpInhibit
    -  visualBell
    + italicFont jumpScroll lineSpace loginShell mapAlert menu meta8 modifier + mouseWheelScrollPage name pastableTabs path perl_eval perl_ext_1 perl_ext_2 + perl_lib pointerBlank pointerBlankDelay preeditType print_pipe pty_fd + reverseVideo saveLines scrollBar scrollBar_align scrollBar_floating + scrollBar_right scrollBar_thickness scrollTtyKeypress scrollTtyOutput + scrollWithBuffer scrollstyle secondaryScreen secondaryScroll selectstyle + shade term_name title transparent transparent_all tripleclickwords + utmpInhibit visualBell +
    +

    +
    $value = $term->x_resource ($pattern)
    +
    +
    +Returns the X-Resource for the given pattern, excluding the program or +class name, i.e. $term->x_resource ("boldFont") should return the +same value as used by this instance of rxvt-unicode. Returns undef if no +resource with that pattern exists. +
    +
    +

    This method should only be called during the on_start hook, as there is +only one resource database per display, and later invocations might return +the wrong resources.

    +
    +

    +
    $success = $term->parse_keysym ($keysym_spec, $command_string)
    +
    +
    +Adds a keymap translation exactly as specified via a resource. See the +keysym resource in the rxvt(1) manpage. +
    +

    +
    $rend = $term->rstyle ([$new_rstyle])
    +
    +
    +Return and optionally change the current rendition. Text that is output by +the terminal application will use this style. +
    +

    +
    ($row, $col) = $term->screen_cur ([$row, $col])
    +
    +
    +Return the current coordinates of the text cursor position and optionally +set it (which is usually bad as applications don't expect that).

    ($row, $col) = $term->selection_mark ([$row, $col])
    @@ -271,44 +745,439 @@ by the next method).

    -
    $oldtext = $term->selection ([$newtext])
    +
    $oldtext = $term->selection ([$newtext])
    Return the current selection text and optionally replace it by $newtext.

    -
    $term->scr_overlay ($x, $y, $text)
    +
    $term->overlay_simple ($x, $y, $text)
    Create a simple multi-line overlay box. See the next method for details.

    -
    $term->scr_overlay_new ($x, $y, $width, $height)
    +
    $term->overlay ($x, $y, $width, $height[, $rstyle[, $border]])
    Create a new (empty) overlay at the given position with the given -width/height. A border will be put around the box. If either $x or -$y is negative, then this is counted from the right/bottom side, -respectively. +width/height. $rstyle defines the initial rendition style +(default: OVERLAY_RSTYLE). +
    +
    +

    If $border is 2 (default), then a decorative border will be put +around the box.

    +
    +
    +

    If either $x or $y is negative, then this is counted from the +right/bottom side, respectively.

    +
    +
    +

    This method returns an urxvt::overlay object. The overlay will be visible +as long as the perl object is referenced.

    +
    +
    +

    The methods currently supported on urxvt::overlay objects are:

    +
    +
    +
    $overlay->set ($x, $y, $text, $rend)
    +
    +
    +Similar to $term->ROW_t and $term->ROW_r in that it puts +text in rxvt-unicode's special encoding and an array of rendition values +at a specific position inside the overlay. +
    +

    +
    $overlay->hide
    +
    +
    +If visible, hide the overlay, but do not destroy it. +
    +

    +
    $overlay->show
    +
    +
    +If hidden, display the overlay again. +
    +

    +
    $popup = $term->popup ($event)
    +
    +
    +Creates a new urxvt::popup object that implements a popup menu. The +$event must be the event causing the menu to pop up (a button event, +currently). +
    +

    +
    $cellwidth = $term->strwidth ($string)
    +
    +
    +Returns the number of screen-cells this string would need. Correctly +accounts for wide and combining characters. +
    +

    +
    $octets = $term->locale_encode ($string)
    +
    +
    +Convert the given text string into the corresponding locale encoding. +
    +

    +
    $string = $term->locale_decode ($octets)
    +
    +
    +Convert the given locale-encoded octets into a perl string. +
    +

    +
    $term->scr_xor_span ($beg_row, $beg_col, $end_row, $end_col[, $rstyle])
    +
    +
    +XORs the rendition values in the given span with the provided value +(default: RS_RVid). Useful in refresh hooks to provide effects similar +to the selection. +
    +

    +
    $term->scr_xor_rect ($beg_row, $beg_col, $end_row, $end_col[, $rstyle1[, $rstyle2]])
    +
    +
    +Similar to scr_xor_span, but xors a rectangle instead. Trailing +whitespace will additionally be xored with the $rstyle2, which defaults +to RS_RVid | RS_Uline, which removes reverse video again and underlines +it instead. +
    +

    +
    $term->scr_bell
    +
    +
    +Ring the bell! +
    +

    +
    $term->scr_add_lines ($string)
    +
    +
    +Write the given text string to the screen, as if output by the application +running inside the terminal. It may not contain command sequences (escape +codes), but is free to use line feeds, carriage returns and tabs. The +string is a normal text string, not in locale-dependent encoding. +
    +
    +

    Normally its not a good idea to use this function, as programs might be +confused by changes in cursor position or scrolling. Its useful inside a +on_add_lines hook, though.

    +
    +

    +
    $term->cmd_parse ($octets)
    +
    +
    +Similar to scr_add_lines, but the argument must be in the +locale-specific encoding of the terminal and can contain command sequences +(escape codes) that will be interpreted. +
    +

    +
    $term->tt_write ($octets)
    +
    +
    +Write the octets given in $data to the tty (i.e. as program input). To +pass characters instead of octets, you should convert your strings first +to the locale-specific encoding using $term->locale_encode. +
    +

    +
    $old_events = $term->pty_ev_events ([$new_events])
    +
    +
    +Replaces the event mask of the pty watcher by the given event mask. Can +be used to suppress input and output handling to the pty/tty. See the +description of urxvt::timer->events. Make sure to always restore +the previous value. +
    +

    +
    $windowid = $term->parent
    +
    +
    +Return the window id of the toplevel window. +
    +

    +
    $windowid = $term->vt
    +
    +
    +Return the window id of the terminal window. +
    +

    +
    $window_width = $term->width
    +
    +
    $window_height = $term->height
    +
    +
    $font_width = $term->fwidth
    +
    +
    $font_height = $term->fheight
    +
    +
    $font_ascent = $term->fbase
    +
    +
    $terminal_rows = $term->nrow
    +
    +
    $terminal_columns = $term->ncol
    +
    +
    $has_focus = $term->focus
    +
    +
    $is_mapped = $term->mapped
    +
    +
    $max_scrollback = $term->saveLines
    +
    +
    $nrow_plus_saveLines = $term->total_rows
    +
    +
    $lines_in_scrollback = $term->nsaved
    +
    +
    +Return various integers describing terminal characteristics. +
    +

    +
    $x_display = $term->display_id
    +
    +
    +Return the DISPLAY used by rxvt-unicode. +
    +

    +
    $lc_ctype = $term->locale
    +
    +
    +Returns the LC_CTYPE category string used by this rxvt-unicode. +
    +

    +
    $env = $term->env
    +
    +
    +Returns a copy of the environment in effect for the terminal as a hashref +similar to \%ENV. +
    +

    +
    $modifiermask = $term->ModLevel3Mask
    +
    +
    $modifiermask = $term->ModMetaMask
    +
    +
    $modifiermask = $term->ModNumLockMask
    +
    +
    +Return the modifier masks corresponding to the ``ISO Level 3 Shift'' (often +AltGr), the meta key (often Alt) and the num lock key, if applicable. +
    +

    +
    $view_start = $term->view_start ([$newvalue])
    +
    +
    +Returns the negative row number of the topmost line. Minimum value is +0, which displays the normal terminal contents. Larger values scroll +this many lines into the scrollback buffer. +
    +

    +
    $term->want_refresh
    +
    +
    +Requests a screen refresh. At the next opportunity, rxvt-unicode will +compare the on-screen display with its stored representation. If they +differ, it redraws the differences. +
    +
    +

    Used after changing terminal contents to display them.

    +
    +

    +
    $text = $term->ROW_t ($row_number[, $new_text[, $start_col]])
    +
    +
    +Returns the text of the entire row with number $row_number. Row 0 +is the topmost terminal line, row $term->$ncol-1 is the bottommost +terminal line. The scrollback buffer starts at line -1 and extends to +line -$term->nsaved. Nothing will be returned if a nonexistent line +is requested. +
    +
    +

    If $new_text is specified, it will replace characters in the current +line, starting at column $start_col (default 0), which is useful +to replace only parts of a line. The font index in the rendition will +automatically be updated.

    +
    +
    +

    $text is in a special encoding: tabs and wide characters that use more +than one cell when displayed are padded with urxvt::NOCHAR characters +(chr 65535). Characters with combining characters and other characters +that do not fit into the normal tetx encoding will be replaced with +characters in the private use area.

    +
    +
    +

    You have to obey this encoding when changing text. The advantage is +that substr and similar functions work on screen cells and not on +characters.

    +
    +
    +

    The methods $term->special_encode and $term->special_decode +can be used to convert normal strings into this encoding and vice versa.

    +
    +

    +
    $rend = $term->ROW_r ($row_number[, $new_rend[, $start_col]])
    +
    +
    +Like $term->ROW_t, but returns an arrayref with rendition +bitsets. Rendition bitsets contain information about colour, font, font +styles and similar information. See also $term->ROW_t. +
    +
    +

    When setting rendition, the font mask will be ignored.

    +
    +
    +

    See the section on RENDITION, above.

    +
    +

    +
    $length = $term->ROW_l ($row_number[, $new_length])
    +
    +
    +Returns the number of screen cells that are in use (``the line +length''). Unlike the urxvt core, this returns $term->ncol if the +line is joined with the following one. +
    +

    +
    $bool = $term->is_longer ($row_number)
    +
    +
    +Returns true if the row is part of a multiple-row logical ``line'' (i.e. +joined with the following row), which means all characters are in use +and it is continued on the next row (and possibly a continuation of the +previous row(s)). +
    +

    +
    $line = $term->line ($row_number)
    +
    +
    +Create and return a new urxvt::line object that stores information +about the logical line that row $row_number is part of. It supports the +following methods: +
    +
    +
    $text = $line->t ([$new_text])
    +
    +
    +Returns or replaces the full text of the line, similar to ROW_t +
    +

    +
    $rend = $line->r ([$new_rend])
    +
    +
    +Returns or replaces the full rendition array of the line, similar to ROW_r +
    +

    +
    $length = $line->l
    +
    +
    +Returns the length of the line in cells, similar to ROW_l. +
    +

    +
    $rownum = $line->beg
    +
    +
    $rownum = $line->end
    +
    +
    +Return the row number of the first/last row of the line, respectively. +
    +

    +
    $offset = $line->offset_of ($row, $col)
    +
    +
    +Returns the character offset of the given row|col pair within the logical +line. +
    +

    +
    ($row, $col) = $line->coord_of ($offset)
    +
    +
    +Translates a string offset into terminal coordinates again. +
    +

    +
    $text = $term->special_encode $string
    +
    +
    +Converts a perl string into the special encoding used by rxvt-unicode, +where one character corresponds to one screen cell. See +$term->ROW_t for details. +
    +

    +
    $string = $term->special_decode $text
    +
    +
    +Converts rxvt-unicodes text reprsentation into a perl string. See +$term->ROW_t for details. +
    +

    +
    $success = $term->grab_button ($button, $modifiermask)
    +
    +
    +Registers a synchronous button grab. See the XGrabButton manpage. +
    +

    +
    $success = $term->grab ($eventtime[, $sync])
    +
    +
    +Calls XGrabPointer and XGrabKeyboard in asynchronous (default) or +synchronous ($sync is true). Also remembers the grab timestampe. +
    +

    +
    $term->allow_events_async
    +
    +
    +Calls XAllowEvents with AsyncBoth for the most recent grab. +
    +

    +
    $term->allow_events_sync
    +
    +
    +Calls XAllowEvents with SyncBoth for the most recent grab.

    -
    $term->scr_overlay_off
    +
    $term->allow_events_replay
    -Switch the overlay off again. +Calls XAllowEvents with both ReplayPointer and ReplayKeyboard for the most +recent grab.

    -
    $term->scr_overlay_set_char ($x, $y, $char, $rend = OVERLAY_RSTYLE)
    +
    $term->ungrab
    -Put a single character (specified numerically) at the given overlay -position. +Calls XUngrab for the most recent grab. Is called automatically on +evaluation errors, as it is better to lose the grab in the error case as +the session. +
    +

    +

    +

    +

    The urxvt::popup Class

    +
    +
    $popup->add_title ($title)
    +
    +
    +Adds a non-clickable title to the popup.

    -
    $term->scr_overlay_set ($x, $y, $text)
    +
    $popup->add_separator ([$sepchr])
    -Write a string at the given position into the overlay. +Creates a separator, optionally using the character given as $sepchr. +
    +

    +
    $popup->add_button ($text, $cb)
    +
    +
    +Adds a clickable button to the popup. $cb is called whenever it is +selected. +
    +

    +
    $popup->add_toggle ($text, $cb, $initial_value)
    +
    +
    +Adds a toggle/checkbox item to the popup. Teh callback gets called +whenever it gets toggled, with a boolean indicating its value as its first +argument. +
    +

    +
    $popup->show
    +
    +
    +Displays the popup (which is initially hidden).

    @@ -317,22 +1186,20 @@

    This class implements timer watchers/events. Time is represented as a fractional number of seconds since the epoch. Example:

    -   # create a digital clock display in upper right corner
    +   $term->{overlay} = $term->overlay (-1, 0, 8, 1, urxvt::OVERLAY_RSTYLE, 0);
        $term->{timer} = urxvt::timer
                         ->new
    -                    ->start (urxvt::NOW)
    +                    ->interval (1)
                         ->cb (sub {
    -                       my ($timer) = @_;
    -                       my $time = $timer->at;
    -                       $timer->start ($time + 1);
    -                       $self->scr_overlay (-1, 0, 
    -                          POSIX::strftime "%H:%M:%S", localtime $time);
    +                       $term->{overlay}->set (0, 0,
    +                          sprintf "%2d:%02d:%02d", (localtime urxvt::NOW)[2,1,0]);
                         });
    $timer = new urxvt::timer
    -Create a new timer object in stopped state. +Create a new timer object in started state. It is scheduled to fire +immediately.

    $timer = $timer->cb (sub { my ($timer) = @_; ... })
    @@ -347,12 +1214,20 @@ Return the time this watcher will fire next.

    -
    $timer = $timer->set ($tstamp)
    +
    $timer = $timer->set ($tstamp)
    Set the time the event is generated to $tstamp.

    +
    $timer = $timer->interval ($interval)
    +
    +
    +Normally (and when $interval is 0), the timer will automatically +stop after it has fired once. If $interval is non-zero, then the timer +is automatically rescheduled at the given intervals. +
    +

    $timer = $timer->start
    @@ -380,7 +1255,7 @@ $term->{iow} = urxvt::iow ->new ->fd (fileno $term->{socket}) - ->events (1) # wait for read data + ->events (urxvt::EVENT_READ) ->start ->cb (sub { my ($iow, $revents) = @_; @@ -411,8 +1286,9 @@
    $iow = $iow->events ($eventmask)
    -Set the event mask to watch. Bit #0 (value 1) enables watching for read -data, Bit #1 (value 2) enables watching for write data. +Set the event mask to watch. The only allowed values are +urxvt::EVENT_READ and urxvt::EVENT_WRITE, which might be ORed +together, or urxvt::EVENT_NONE.

    $iow = $iow->start
    @@ -436,14 +1312,14 @@

    URXVT_PERL_VERBOSITY

    This variable controls the verbosity level of the perl extension. Higher numbers indicate more verbose output.

    -
      -
    1. - only fatal messages
      -
    2. -
    3. - script loading and management
      -
    4. -
    5. - all events received
      -
    6. -
    +
    +
    == 0 - fatal messages
    +
    +
    >= 3 - script loading and management
    +
    +
    >=10 - all events received
    +
    +