summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--examples/plugin_ipc.py45
1 files changed, 45 insertions, 0 deletions
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.<PID> 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
s' href='/akspecs/ranger/commit/test/tc_direction.py?h=v1.8.0&id=76e9b89a9cb8ea1ecbdd194e62441e447ac958e8'>76e9b89a ^
447cbcd6 ^
76e9b89a ^
447cbcd6 ^
7a2665c2 ^


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88