From f28d60e0c79902349ead61d450c760d0804feaff Mon Sep 17 00:00:00 2001 From: Andrzej Rybczak Date: Sat, 12 Sep 2015 22:55:50 +0200 Subject: [PATCH] settings: check if terminal supports window title once --- src/settings.cpp | 20 +++++++++++++++++--- src/title.cpp | 2 +- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/src/settings.cpp b/src/settings.cpp index 41fccb7c..d6fcc494 100644 --- a/src/settings.cpp +++ b/src/settings.cpp @@ -616,9 +616,23 @@ bool Configuration::read(const std::vector &config_paths, bool igno p.add("media_library_sort_by_mtime", yes_no( media_library_sort_by_mtime, false )); - p.add("enable_window_title", yes_no( - set_window_title, true - )); + p.add("enable_window_title", [this]() { + // Consider this variable only if TERM variable is available + // and we're not in emacs terminal nor tty (through any wrapper + // like screen). + auto term = getenv("TERM"); + if (term != nullptr + && strstr(term, "linux") == nullptr + && strncmp(term, "eterm", const_strlen("eterm"))) + return yes_no(set_window_title, true); + else + { + set_window_title = false; + return option_parser::worker([](std::string) {}, [] { + std::clog << "Terminal doesn't support window title, skipping 'enable_window_title'.\n"; + }); + } + }()); p.add("search_engine_default_search_mode", assign_default( search_engine_default_search_mode, 1, [](unsigned v) { boundsCheck(v, 1u, 3u); diff --git a/src/title.cpp b/src/title.cpp index c2f16726..5ec52312 100644 --- a/src/title.cpp +++ b/src/title.cpp @@ -28,7 +28,7 @@ void windowTitle(const std::string &status) { - if (strcmp(getenv("TERM"), "linux") && Config.set_window_title) + if (Config.set_window_title) std::cout << "\033]0;" << status << "\7" << std::flush; }