From 23851e31bf7d2145cb4c8a60eedcb07bd9469448 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Wed, 25 Apr 2018 08:30:12 +0530 Subject: [PATCH] When calling pass_selection_to_program use the current directory of the child process as the cwd of the program. Fixes #491 --- kitty/utils.py | 8 ++++---- kitty/window.py | 7 +++++-- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/kitty/utils.py b/kitty/utils.py index b5985593a..723dacc3e 100644 --- a/kitty/utils.py +++ b/kitty/utils.py @@ -120,15 +120,15 @@ def command_for_open(program='default'): return cmd -def open_cmd(cmd, arg=None): +def open_cmd(cmd, arg=None, cwd=None): if arg is not None: cmd = list(cmd) cmd.append(arg) - return subprocess.Popen(cmd, stdin=subprocess.DEVNULL, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL) + return subprocess.Popen(cmd, stdin=subprocess.DEVNULL, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL, cwd=cwd or None) -def open_url(url, program='default'): - return open_cmd(command_for_open(program), url) +def open_url(url, program='default', cwd=None): + return open_cmd(command_for_open(program), url, cwd=cwd) def detach(fork=True, setsid=True, redirect=True): diff --git a/kitty/window.py b/kitty/window.py index 3a5d009d3..d3d6532df 100644 --- a/kitty/window.py +++ b/kitty/window.py @@ -8,6 +8,7 @@ import weakref from collections import deque from enum import Enum +from .child import cwd_of_process from .config import build_ansi_color_table, parse_send_text_bytes from .constants import ( ScreenGeometry, WindowGeometry, appname, get_boss, wakeup @@ -348,12 +349,14 @@ class Window: set_clipboard_string(text) def pass_selection_to_program(self, *args): + pid = self.child.pid + cwd = cwd_of_process(pid) text = self.text_for_selection() if text: if args: - open_cmd(args, text) + open_cmd(args, text, cwd=cwd) else: - open_url(text) + open_url(text, cwd=cwd) def scroll_line_up(self): if self.screen.is_main_linebuf():