From fd8794e6c8e026e8896c3b5c8cbe456948ea89ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=80=9A=E6=B4=B2?= Date: Mon, 31 Jul 2023 20:29:33 +0800 Subject: [PATCH] Disk (Linux): support hyperlink in WSL --- src/modules/disk/disk.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/modules/disk/disk.c b/src/modules/disk/disk.c index be61a902c..151596c27 100644 --- a/src/modules/disk/disk.c +++ b/src/modules/disk/disk.c @@ -18,7 +18,19 @@ static void printDisk(FFDiskOptions* options, const FFDisk* disk) if(instance.config.pipe) ffStrbufAppendF(&key, "%s (%s)", FF_DISK_MODULE_NAME, disk->mountpoint.chars); else + { + #ifdef __linux__ + if (getenv("WSL_DISTRO_NAME") != NULL && getenv("WT_SESSION") != NULL) + { + if (ffStrbufEqualS(&disk->filesystem, "9p") && ffStrbufStartsWithS(&disk->mountpoint, "/mnt/")) + ffStrbufAppendF(&key, "%s (\e]8;;file:///%c:/\e\\%s\e]8;;\e\\)", FF_DISK_MODULE_NAME, disk->mountpoint.chars[5], disk->mountpoint.chars); + else + ffStrbufAppendF(&key, "%s (\e]8;;file:////wsl.localhost/%s%s\e\\%s\e]8;;\e\\)", FF_DISK_MODULE_NAME, getenv("WSL_DISTRO_NAME"), disk->mountpoint.chars, disk->mountpoint.chars); + } + else + #endif ffStrbufAppendF(&key, "%s (\e]8;;file://%s\e\\%s\e]8;;\e\\)", FF_DISK_MODULE_NAME, disk->mountpoint.chars, disk->mountpoint.chars); + } } else {