From 82f6fbff77b7329498076acaa6fe66056c93965e Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Fri, 22 Jun 2018 13:51:42 +0530 Subject: [PATCH] Add a --hold command line option to stay open after the child process exits Fixes #667 --- __main__.py | 8 ++++++++ kitty/cli.py | 10 ++++++++++ kitty/session.py | 2 ++ 3 files changed, 20 insertions(+) diff --git a/__main__.py b/__main__.py index 1ad027db5..1ebdcbf16 100644 --- a/__main__.py +++ b/__main__.py @@ -26,6 +26,13 @@ def runpy(args): exec(args[1]) +def hold(args): + import subprocess + ret = subprocess.Popen(args[1:]).wait() + sys.stdin.read() + raise SystemExit(ret) + + def launch(args): import runpy sys.argv = args[1:] @@ -61,6 +68,7 @@ entry_points = { '+': namespaced, } namespaced_entry_points = {k: v for k, v in entry_points.items() if k[0] not in '+@'} +namespaced_entry_points['hold'] = hold def setup_openssl_environment(): diff --git a/kitty/cli.py b/kitty/cli.py index 2ba24c652..bb2631642 100644 --- a/kitty/cli.py +++ b/kitty/cli.py @@ -76,6 +76,12 @@ Path to a file containing the startup :italic:`session` (tabs, windows, layout, See the README file for details and an example. +--hold +type=bool-set +Remain open after child process exits. Note that this only affects the first +window. You can quit by either using the close window shortcut or :kbd:`Ctrl+d`. + + --single-instance -1 type=bool-set If specified only a single instance of :italic:`{appname}` will run. New invocations will @@ -213,6 +219,10 @@ def code(x): return x +def kbd(x): + return x + + def env(x): return italic(x) diff --git a/kitty/session.py b/kitty/session.py index 4ed9656c6..f0ae2cb03 100644 --- a/kitty/session.py +++ b/kitty/session.py @@ -124,6 +124,8 @@ def create_session(opts, args=None, special_window=None, cwd_from=None, respect_ ans.tabs[-1].layout = current_layout if special_window is None: cmd = args.args if args and args.args else resolved_shell(opts) + if args.hold: + cmd = ['kitty', '+hold'] + cmd from kitty.tabs import SpecialWindow k = {'cwd_from': cwd_from} if respect_cwd: