From eed176768789208537b6bb8e97f08ef3d4b148fe Mon Sep 17 00:00:00 2001 From: Wojciech Siewierski Date: Sun, 21 Jun 2015 10:46:43 +0200 Subject: added examples/plugin_ipc.py --- examples/plugin_ipc.py | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 examples/plugin_ipc.py (limited to 'examples') diff --git a/examples/plugin_ipc.py b/examples/plugin_ipc.py new file mode 100644 index 00000000..a9e79205 --- /dev/null +++ b/examples/plugin_ipc.py @@ -0,0 +1,45 @@ +# Tested with ranger 1.7.0 through ranger 1.7.* +# +# This plugin creates a FIFO in /tmp/ranger-ipc. to which any +# other program may write. Lines written to this file are evaluated by +# ranger as the ranger :commands. +# +# Example: +# $ echo tab_new ~/images > /tmp/ranger-ipc.1234 + +import ranger.api + +old_hook_init = ranger.api.hook_init +def hook_init(fm): + try: + # Create a FIFO. + import os + IPC_FIFO = "/tmp/ranger-ipc." + str(os.getpid()) + os.mkfifo(IPC_FIFO) + + # Start the reader thread. + try: + import thread + except ImportError: + import _thread as thread + def ipc_reader(filepath): + while True: + with open(filepath, 'r') as fifo: + line = fifo.read() + fm.execute_console(line.strip()) + thread.start_new_thread(ipc_reader, (IPC_FIFO,)) + + # Remove the FIFO on ranger exit. + def ipc_cleanup(filepath): + try: + os.unlink(filepath) + except IOError: + pass + import atexit + atexit.register(ipc_cleanup, IPC_FIFO) + except IOError: + # IPC support disabled + pass + finally: + old_hook_init(fm) +ranger.api.hook_init = hook_init -- cgit 1.4.1-2-gfad0