Metadata-Version: 2.4
Name: screenutils
Version: 0.0.1.6.2
Summary: lib for gnu-screen: creates/close/list/log sessions, injects commands...
Home-page: http://github.com/Christophe31/screenutils
Author: Christophe Narbonne
Author-email: @Christophe31
License: GNU Public License >=2 (ask me if you want other)
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 3
Classifier: Intended Audience :: Developers
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Dynamic: author
Dynamic: author-email
Dynamic: classifier
Dynamic: description
Dynamic: home-page
Dynamic: license
Dynamic: summary

CAUTION: this project is not maintained anymore as it's maintainer don't use it anymore
(and switched to tmux). If you contribute a bit, you may reclaim this project.


screenutils
===========

screenutils is a set of classes that should help handling gnu-screen windows.

It requires gnu-screen binary installed (named screen and in your path) to work.

Feel free to report any modification you made, the whole code source is
available under the terms of the GPLv2 but I think about using a more permissave license (WTFPL).

Example usage
-------------

Example in a python console::

   >>> from screenutils import list_screens, Screen
   >>> list_screens()
   []
   >>> s = Screen("session1",True)
   >>> # funky prompts could reduce log visibility. Use sh or bash for best results
   >>> s.send_commands('bash')
   >>> s.enable_logs()
   >>> s.send_commands("df")
   >>> print next(s.logs)
   df
   Filesystem           1K-blocks      Used Available Use% Mounted on
   /dev/sda6             20161172   8084052  11052980  43% /
   none                   1505916       304   1505612   1% /dev
   none                   1512676       936   1511740   1% /dev/shm
   none                   1512676       380   1512296   1% /var/run
   none                   1512676         0   1512676   0% /var/lock
   none                   1512676         0   1512676   0% /lib/init/rw
   none                  20161172   8084052  11052980  43% /var/lib/ureadahead/debugfs
   /dev/sda7            403567768 196284216 186783420  52% /home
   popi@popi-laptop:~/Dev/github/screenutils$
   >>> s.disable_logs()
   >>> s = None
   >>> s = Screen("session1")
   >>> s.exists
   True
   >>> s2 = Screen("session2")
   >>> s2.exists
   False
   >>> s2.initialize()
   >>> s2.exists
   True
   >>> list_screens()
   [<Screen 'session2'>, <Screen 'session1'>]
   >>>


Installation
-------------

You could install screenutils from github, by doing the following::

    $ pip install git+http://github.com/Christophe31/screenutils.git

Or by just using the packages published on Pypi, for instance with pip::

    $ pip install screenutils

Features
---------

* screens listing
* screen session creation
* screen session closing
* screen code insertion
* screen monitoring/logging
* screen session sharing with unix users (see below)

Core Documentation
------------------

**Screen class**:

* ``Screen(name, initialize=False)`` Create a new screen.

  - ``name`` (required): The name associated with the screen.

  - ``initialize``: If True, creates a screen session if it does not exists.

* ``screen.id`` (property) the id of the screen as a string.
* ``screen.status`` (property) the status of the screen as a string.
* ``screen.exists`` (property) True if the screen exists (has been initialized)

  - NOTE: ``.id``, ``.status``, ``.exists`` are all based off of the output of ``screen -ls``

* ``screen.initialize`` Initialize a screen if does not exists yet. Equivalent to running ``screen -UR screen_name``
* ``screen.enable_logs()`` turns Screen's logging on. The Logfile's name is automatically set to that of the ``Screen`` object.
* ``screen.logs`` A generator that acts like ``tailF`` on the logfile.
* ``screen.disable_logs()`` turns logging off.
* ``screen.kill()`` Quit the screen. Equivalent to running ``screen -x screen_name -X quit``
* ``screen.detach()`` Detach from the screen.
* ``screen.send_commands(*commands)`` send bash commands to the screen.

  - ``*commands`` the command(s) to run (as a string).

* ``screen.add_user_access(unix_user_name)`` Allow another user to access the screen.

  - ``unix_user_name`` (required): the unix name of the user to add.

  - \*NOTE: to allow this feature, you will **need** to change some unix rights:

    + ``sudo chmod +s /usr/bin/screen``

    + ``sudo chmod 755 /var/run/screen``

**Functions** :

* ``list_screens()`` list screens. Returns a list of ``Screen`` instances.

**Exceptions** :

* ``ScreenNotFoundError``: Raised when a screen wasn't found.

Known issues
-------------

This may not work properly with bpython.

Roadmap
--------

* multi windows screen support
