The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Eesh - Enlightenment Window Manager IPC Library

SYNOPSIS

  ## Long form:
  use Eesh qw( e_open e_send e_recv ) ;

  e_open() ;
  print e_recv( 'window_list' ) ;
  e_send( 'restart' ) ;

  ## Short form
  use Eesh qw( :all ) ;
  e_open() ;
  print "$_\n" for ( e_window_list ) ;

  my $win_id = (grep { /Terminal/ } e_window_list)[0] ;
  e_win_op( $win_id, 'raise' ) ;

  ## For non-blocking receives:
  my $hmmm = e_recv( { non_blocking => 1 } ) ;

DESCRIPTION

Eesh.pm provides simple wrappers around the routines from eesh (included).

This code is in alpha mode, please let me know of any improvements, and patches are especially welcome.

Basic Communications Functions

e_open

Opens communications with E.

e_send

Sends to E.

e_recv

Receives from E, blocking until data is received.

Can send strings first and then wait for the result:

   my @windows = split( /^/m, e_recv( 'window_list' ) ) ;

Can be called non-blocking:

   e_send( 'window_list' ) ;
    
   my $hmmm ;
   $hmmm = e_recv( { non_blocking => 1 } ) until defined $hmmmm ;
e_fileno

Returns the file number of the connection to E, useful for select loops.

High level functions

These are simple functions that wrap around E IPC commands. The really simple commands aren't wrapped, since it wouldn't save much typing (though they would provide varying levels of mispeled option detection):

   e_send( 'advanced_focus new_window_focus on' ) ;

vs.

   e_enable_advanced_focus_new_window_focus() ;
   e_advanced_focus_new_window_focus( 'on' ) ;
   e_advanced_focus( 'new_window_focus', 'on' ) ;
   e_enable( 'advanced_focus', 'new_window_focus' ) ;

Perhaps we could provide something like:

   e_enable_new_window_focus() ;

which would be a savings and allow for safer programming (since a mispelling would show up under 'use strict'). But that's only viable so long as no identifier is used more than once in the entire command set, which I can't guarantee.

If you don't see a function here that you need, ask for it or send a patch. See the eesh help command for more documentation on these.

e_backgrounds

Returns a list of all background ids, one per element.

e_delete_background

Deletes a background

e_background

Returns a hash reference to the values defined for a particular background:

   print e_background( shift e_backgrounds )->{'bg.solid'}, "\n" ;
e_set_background

Takes a background id and either a hash or a list of key/value pairs and sets them:

   e_set_background( $bg_id, 'bg.file' => $filename ) ;
e_focused

A short form of e_set_focus( '?' ) :

   my $win_id = e_focused() ;
e_internal_list

Returns the requested list:

   e_internal_list( 'menus' ) ;

might yield:

   ('1400509','14000f9')

Note that spaces and newlines are stripped, and that these are strings, not numbers.

e_list_class

Returns a list of the supplied class.

   e_list_class( 'backgrounds' ) ;

should return the same list as e_backgrounds().

e_list_themes

Returns a list of themes.

e_modules

Returns a list of modules. Don't ask me why this isn't "list_modules" or "modules_list".

e_remember

Takes a window ID and a parameter. The window ID may be the full item returned from e_window_list(), or just the ID portion.

e_set_focus

Can take a window ID, the full ID returned from window_list().

See e_focused() for a short form of e_set_focus( '?' ).

e_win_op

Takes a window ID, or one of the values returned by e_window_list() and performs a win_op on it.

If used in a non-void context, this will block and return any data received. So don't do that if you might not get anything back.

e_window_list

Returns a list of strings containing window IDs and titles:

   (
      '2400006 : Terminal',
      '3c00080 : VIM - ~/src/Eesh/Eesh.pm',
      ...
   )

The leading whitespace and trailing newlines are trimmed.

These may be passed in anywhere a window ID is needed, such as e_win_op() or e_iconify().

LICENSE

Copyright (C) 2000 Barrie Slaymaker, Carsten Haitzler, Geoff Harrison and various contributors

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies of the Software, its documentation and marketing & publicity materials, and acknowledgment shall be given in the documentation, materials and software packages that this Software was used.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

AUTHORS

Eesh: Barrie Slaymaker <barries@slaysys.com>

eesh: Carsten Haitzler, Geoff Harrison and various contributors

SEE ALSO

eesh