summary refs log tree commit diff stats
path: root/ranger/defaults/apps.py
diff options
context:
space:
mode:
Diffstat (limited to 'ranger/defaults/apps.py')
-rw-r--r--ranger/defaults/apps.py61
1 files changed, 61 insertions, 0 deletions
diff --git a/ranger/defaults/apps.py b/ranger/defaults/apps.py
new file mode 100644
index 00000000..041b85c8
--- /dev/null
+++ b/ranger/defaults/apps.py
@@ -0,0 +1,61 @@
+from ranger.applications import Applications as SuperClass
+from ranger.helper import popen as run
+
+class CustomApplications(SuperClass):
+	# How to determine the default application? {{{
+	def app_default(self, **kw):
+		f = kw['mainfile']
+
+		if f.extension is not None and f.extension in ('pdf'):
+			return self.app_evince(**kw)
+
+		if f.container:
+			return self.app_aunpack(**kw)
+
+		if f.video or f.audio:
+			if f.video:
+				kw['flags'] += 'd'
+			return self.app_mplayer(**kw)
+		
+		if f.image:
+			return self.app_feh(**kw)
+
+		if f.document:
+			return self.app_editor(**kw)
+	# }}}
+
+	def app_pager(self, **kw):
+		return run('less', *kw['files'], **kw)
+
+	def app_vim(self, **kw):
+		return run('vim', *kw['files'], **kw)
+
+	app_editor = app_vim
+
+	def app_mplayer(self, **kw):
+		if kw['mode'] == 1:
+			return run('mplayer', *kw['files'], **kw)
+
+		elif kw['mode'] == 2:
+			return run('mplayer', '-fs',
+					'-sid', '0',
+					'-vfm', 'ffmpeg',
+					'-lavdopts', 'lowres=1:fast:skiploopfilter=all:threads=8',
+					*kw['files'], **kw)
+
+		else:
+			return run('mplayer', '-fs', *kw['files'], **kw)
+
+	def app_feh(self, **kw):
+		return run('feh', *kw['files'], **kw)
+
+	def app_aunpack(self, **kw):
+		m = kw['mode']
+		if m == 0:
+			kw['flags'] += 'p'
+			return run('aunpack', '-l', *kw['files'], **kw)
+		elif m == 1:
+			return run('aunpack', *kw['files'], **kw)
+	
+	def app_evince(self, **kw):
+		return run('evince', *kw['files'], **kw)