Skip to content

Commit ff2e0bf

Browse files
committed
feat(Session.kill): Add Session.kill(), deprecate kill_session()
1 parent 274113f commit ff2e0bf

File tree

1 file changed

+79
-3
lines changed

1 file changed

+79
-3
lines changed

src/libtmux/session.py

Lines changed: 79 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -379,13 +379,70 @@ def attach_session(self) -> "Session":
379379

380380
return self
381381

382-
def kill_session(self) -> None:
383-
"""Destroy session."""
384-
proc = self.cmd("kill-session", "-t%s" % self.session_id)
382+
def kill(
383+
self,
384+
all_except: t.Optional[bool] = None,
385+
clear: t.Optional[bool] = None,
386+
) -> None:
387+
"""Kill :class:`Session`, closes linked windows and detach all clients.
388+
389+
``$ tmux kill-session``.
390+
391+
Parameters
392+
----------
393+
all_except : bool, optional
394+
Kill all sessions in server except this one.
395+
clear : bool, optional
396+
Clear alerts (bell, activity, or silence) in all windows.
397+
398+
Examples
399+
--------
400+
Kill a session:
401+
>>> session_1 = server.new_session()
402+
403+
>>> session_1 in server.sessions
404+
True
405+
406+
>>> session_1.kill()
407+
408+
>>> session_1 not in server.sessions
409+
True
410+
411+
Kill all sessions except the current one:
412+
>>> one_session_to_rule_them_all = server.new_session()
413+
414+
>>> other_sessions = server.new_session(
415+
... ), server.new_session()
416+
417+
>>> all([w in server.sessions for w in other_sessions])
418+
True
419+
420+
>>> one_session_to_rule_them_all.kill(all_except=True)
421+
422+
>>> all([w not in server.sessions for w in other_sessions])
423+
True
424+
425+
>>> one_session_to_rule_them_all in server.sessions
426+
True
427+
"""
428+
flags: t.Tuple[str, ...] = ()
429+
430+
if all_except:
431+
flags += ("-a",)
432+
433+
if clear: # Clear alerts (bell, activity, or silence) in all windows
434+
flags += ("-C",)
435+
436+
proc = self.cmd(
437+
"kill-session",
438+
*flags,
439+
)
385440

386441
if proc.stderr:
387442
raise exc.LibTmuxException(proc.stderr)
388443

444+
return None
445+
389446
def switch_client(self) -> "Session":
390447
"""Switch client to session.
391448
@@ -595,6 +652,25 @@ def name(self) -> t.Optional[str]:
595652
#
596653
# Legacy: Redundant stuff we want to remove
597654
#
655+
def kill_session(self) -> None:
656+
"""Destroy session.
657+
658+
Notes
659+
-----
660+
.. deprecated:: 0.30
661+
662+
Deprecated in favor of :meth:`.kill()`.
663+
"""
664+
warnings.warn(
665+
"Session.kill_session() is deprecated in favor of Session.kill()",
666+
category=DeprecationWarning,
667+
stacklevel=2,
668+
)
669+
proc = self.cmd("kill-session", "-t%s" % self.session_id)
670+
671+
if proc.stderr:
672+
raise exc.LibTmuxException(proc.stderr)
673+
598674
def get(self, key: str, default: t.Optional[t.Any] = None) -> t.Any:
599675
"""Return key-based lookup. Deprecated by attributes.
600676

0 commit comments

Comments
 (0)