nnn

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

commit 0556ac14ecd6ae028dafe9645ac3bcefa8c0faf4
parent 64c2c68bd0cb7c352228238d57a087005fe7dcb0
Author: Daniel Eklöf <daniel@ekloef.se>
Date:   Mon, 30 Aug 2021 16:21:04 +0200

[draft] signal CWD change to terminal via OSC-7 (#1148)

* Signal CWD change to terminal via OSC-7

Closes #1147

* Make OSC-7 emission gated by NOX11

* Use newpath variable in gethostname()

Use dynamic memory for hostname

Diffstat:
Msrc/nnn.c | 14++++++++++++++
1 file changed, 14 insertions(+), 0 deletions(-)

diff --git a/src/nnn.c b/src/nnn.c @@ -446,6 +446,7 @@ static char *listroot; static char *plgpath; static char *pnamebuf, *pselbuf, *findselpos; static char *mark; +static char *hostname; #ifndef NOFIFO static char *fifopath; #endif @@ -6503,6 +6504,9 @@ begin: #ifndef NOX11 if (cfg.x11 && !g_state.picker) { + /* Signal CWD change to terminal */ + printf("\033]7;file://%s%s\033\\", hostname, path); + /* Set terminal window title */ r = set_tilde_in_path(path); @@ -8113,6 +8117,8 @@ static void cleanup(void) if (cfg.x11 && !g_state.picker) { printf("\033[23;0t"); /* reset terminal window title */ fflush(stdout); + + free(hostname); } #endif free(selpath); @@ -8548,6 +8554,14 @@ int main(int argc, char *argv[]) /* Save terminal window title */ printf("\033[22;0t"); fflush(stdout); + + hostname = malloc(_POSIX_HOST_NAME_MAX + 1); + if (!hostname) { + xerror(); + return EXIT_FAILURE; + } + gethostname(hostname, _POSIX_HOST_NAME_MAX); + hostname[_POSIX_HOST_NAME_MAX] = '\0'; } #endif