about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorhut <hut@lavabit.com>2011-12-17 22:40:46 +0100
committerhut <hut@lavabit.com>2011-12-17 22:40:46 +0100
commitfcc47bf5261f328fb38c2df03f62c0847e562552 (patch)
treea5ab37a59cfd6c1729d84b6f2221de50ca2fdcf9
parentd99291d8395042ade1337d025a69eaccd191bb54 (diff)
downloadranger-fcc47bf5261f328fb38c2df03f62c0847e562552.tar.gz
gui.ui: Only display printable chars in the window title
-rw-r--r--ranger/fsobject/fsobject.py9
-rw-r--r--ranger/gui/ui.py6
2 files changed, 8 insertions, 7 deletions
diff --git a/ranger/fsobject/fsobject.py b/ranger/fsobject/fsobject.py
index 1d1f202d..943c8aa4 100644
--- a/ranger/fsobject/fsobject.py
+++ b/ranger/fsobject/fsobject.py
@@ -30,10 +30,13 @@ if hasattr(str, 'maketrans'):
 	maketrans = str.maketrans
 else:
 	from string import maketrans
-unsafe_chars = '\n' + ''.join(map(chr, range(32))) + ''.join(map(chr, range(128, 256)))
-safe_string_table = maketrans(unsafe_chars, '?' * len(unsafe_chars))
+_unsafe_chars = '\n' + ''.join(map(chr, range(32))) + ''.join(map(chr, range(128, 256)))
+_safe_string_table = maketrans(_unsafe_chars, '?' * len(_unsafe_chars))
 _extract_number_re = re.compile(r'([^0-9]?)(\d*)')
 
+def safe_path(path):
+	return path.translate(_safe_string_table)
+
 class FileSystemObject(FileManagerAware):
 	(basename,
 	basename_lower,
@@ -114,7 +117,7 @@ class FileSystemObject(FileManagerAware):
 
 	@lazy_property
 	def safe_basename(self):
-		return self.basename.translate(safe_string_table)
+		return self.basename.translate(_safe_string_table)
 
 
 	for attr in ('video', 'audio', 'image', 'media', 'document', 'container'):
diff --git a/ranger/gui/ui.py b/ranger/gui/ui.py
index 91d0d774..064d4a16 100644
--- a/ranger/gui/ui.py
+++ b/ranger/gui/ui.py
@@ -21,6 +21,7 @@ import _curses
 from .displayable import DisplayableContainer
 from .mouse_event import MouseEvent
 from ranger.ext.keybinding_parser import ALT_KEY
+from ranger.fsobject.fsobject import safe_path
 
 TERMINALS_WITH_TITLE = ("xterm", "xterm-256color", "rxvt",
 		"rxvt-256color", "rxvt-unicode", "aterm", "Eterm",
@@ -293,10 +294,7 @@ class UI(DisplayableContainer):
 				split = cwd.rsplit(os.sep, self.settings.shorten_title)
 				if os.sep in split[0]:
 					cwd = os.sep.join(split[1:])
-			try:
-				sys.stdout.write("\033]2;ranger:" + cwd + "\007")
-			except UnicodeEncodeError:
-				sys.stdout.write("\033]2;ranger:" + ascii_only(cwd) + "\007")
+			sys.stdout.write("\033]2;ranger:" + safe_path(cwd) + "\007")
 		self.win.refresh()
 
 	def finalize(self):