diff options
author | Juhani Krekelä | 2021-10-23 16:25:59 +0300 |
---|---|---|
committer | Wolfgang Müller | 2021-11-27 14:05:19 +0100 |
commit | 6f0399481b215817960b5cf36ee03a658a2d9b89 (patch) | |
tree | 5349991479bf495a9ecbe45723b08bc4d67bab61 | |
parent | 1b111d590d527d39f169ffcdb5c9f6a0488458f5 (diff) | |
download | weltschmerz-6f0399481b215817960b5cf36ee03a658a2d9b89.tar.gz |
Allow user to turn OSC 7 off
Currently weltschmerz prefers working directory information obtained
from OSC 7 to that from procfs. If a user has not configured their shell
to emit OSC 7 escapes, the OSC 7 path may be out of date. Additionally
some users want only their shell to change the terminal's conception of
working directory, which is a behaviour better matched by the procfs
based working directory detection.
This change allows OSC 7 based working directory detection to be turned
off. The default remains to check OSC 7 first and then fall back to
procfs if there is not valid local path set with OSC 7.
The reason for turning OSC 7 off entirely instead of inverting the order
procfs and OSC 7 are checked in is that procfs based detection should
never fail under normal usage on systems that support it.
-rw-r--r-- | config.vala | 2 | ||||
-rw-r--r-- | terminal.vala | 9 | ||||
-rw-r--r-- | weltschmerz.1 | 24 |
3 files changed, 27 insertions, 8 deletions
diff --git a/config.vala b/config.vala index c0a084f..d972bac 100644 --- a/config.vala +++ b/config.vala @@ -12,6 +12,7 @@ class Config { public int scrollback; public bool scrollbar; public bool allow_hyperlinks; + public bool prefer_osc7; public Gdk.RGBA? foreground; public Gdk.RGBA? background; @@ -57,6 +58,7 @@ class Config { scrollback = reader.read_integer("misc", "scrollback", 10000); scrollbar = reader.read_boolean("misc", "scrollbar", true); allow_hyperlinks = reader.read_boolean("misc", "allow-hyperlinks", false); + prefer_osc7 = reader.read_boolean("misc", "prefer-osc7", true); foreground = reader.read_colour("colours", "foreground", null); background = reader.read_colour("colours", "background", null); diff --git a/terminal.vala b/terminal.vala index bb66715..da013a5 100644 --- a/terminal.vala +++ b/terminal.vala @@ -396,9 +396,12 @@ class Terminal : Gtk.Overlay { } string? get_cwd() { - string? osc7_path = get_osc7_path(); - if (osc7_path != null) - return osc7_path; + if (conf.prefer_osc7) { + string? osc7_path = get_osc7_path(); + if (osc7_path != null) + return osc7_path; + } + return Posix.realpath("/proc/%i/cwd".printf(child_pid)); } diff --git a/weltschmerz.1 b/weltschmerz.1 index 2e0a2fb..aaad053 100644 --- a/weltschmerz.1 +++ b/weltschmerz.1 @@ -49,11 +49,9 @@ The default file manager can be opened in the current directory with .Sy CTRL + Shift + O and a new terminal window with .Sy CTRL + Shift + T . -By default OSC 7 path is used as the current directory, but if OSC 7 path is not -set to a valid local path and the platform provides a Linux-style procfs at -.Pa /proc , -.Nm -will use the child process's working directory instead. +These features require the terminal application to send OSC 7 escape sequences +or for the platform to provide a Linux-style procfs at +.Pa /proc . .Sh SEARCH OVERLAY The search overlay can be opened by pressing .Sy CTRL + Shift + F . @@ -161,6 +159,22 @@ Specifies how many lines of scrollback to keep. A value of -1 means infinite scrollback. The default is .Sy 10000 . +.It Sy prefer-osc7 +When set to +.Sy true , +.Nm +attempts to use OSC 7 to obtain the current directory. +If this does not produce a valid local path, +.Nm +obtains the child process's working directory from +.Pa /proc . +When set to +.Sy false , +only +.Pa /proc +is used. +The default is +.Sy true . .It Sy scrollbar When set to .Sy true , |