Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
if window_shell:
window_args += (window_shell,)
proc = self.cmd('new-window', *window_args)
if proc.stderr:
raise exc.LibTmuxException(proc.stderr)
window = proc.stdout[0]
window = dict(zip(wformats, window.split('\t')))
# clear up empty dict
window = dict((k, v) for k, v in window.items() if v)
window = Window(session=self, **window)
self.server._update_windows()
return window
Run ``shell_command`` with ``$ tmux send-keys``.
Parameters
----------
w : :class:`libtmux.Window`
window to create panes for
wconf : dict
config section for window
Returns
-------
tuple of (:class:`libtmux.Pane`, ``pconf``)
Newly created pane, and the section from the tmuxp configuration
that was used to create the pane.
"""
assert isinstance(w, Window)
pane_base_index = int(w.show_window_option('pane-base-index', g=True))
p = None
for pindex, pconf in enumerate(wconf['panes'], start=pane_base_index):
if pindex == int(pane_base_index):
p = w.attached_pane
else:
def get_pane_start_directory():
if 'start_directory' in pconf:
return pconf['start_directory']
elif 'start_directory' in wconf:
return wconf['start_directory']
def list_windows(self):
"""Return a list of :class:`Window` from the ``tmux(1)`` session.
Returns
-------
:class:`Window`
"""
windows = [w for w in self._windows if w['session_id'] == self._session_id]
return [Window(session=self, **window) for window in windows]
run_before_script(self.sconf['before_script'], cwd=cwd)
except Exception as e:
self.session.kill_session()
raise e
if 'options' in self.sconf:
for option, value in self.sconf['options'].items():
self.session.set_option(option, value)
if 'global_options' in self.sconf:
for option, value in self.sconf['global_options'].items():
self.session.set_option(option, value, _global=True)
if 'environment' in self.sconf:
for option, value in self.sconf['environment'].items():
self.session.set_environment(option, value)
for w, wconf in self.iter_create_windows(session):
assert isinstance(w, Window)
focus_pane = None
for p, pconf in self.iter_create_panes(w, wconf):
assert isinstance(p, Pane)
p = p
if 'layout' in wconf:
w.select_layout(wconf['layout'])
if 'focus' in pconf and pconf['focus']:
focus_pane = p
if 'focus' in wconf and wconf['focus']:
focus = w
self.config_after_window(w, wconf)
if 'window_shell' in wconf:
ws = wconf['window_shell']
else:
ws = None
w = s.new_window(
window_name=window_name,
start_directory=sd,
attach=False, # do not move to the new window
window_index=wconf.get('window_index', ''),
window_shell=ws,
)
if i == int(1) and w1: # if first window, use window 1
w1.kill_window()
assert isinstance(w, Window)
s.server._update_windows()
if 'options' in wconf and isinstance(wconf['options'], dict):
for key, val in wconf['options'].items():
w.set_window_option(key, val)
if 'focus' in wconf and wconf['focus']:
w.select_window()
s.server._update_windows()
yield w, wconf
def attached_window(self):
"""
Return active :class:`Window` object.
Returns
-------
:class:`Window`
"""
active_windows = []
for window in self._windows:
if 'window_active' in window:
# for now window_active is a unicode
if window.get('window_active') == '1':
active_windows.append(Window(session=self, **window))
else:
continue
if len(active_windows) == int(1):
return active_windows[0]
else:
raise exc.LibTmuxException(
'multiple active windows found. %s' % active_windows
)
if len(self._windows) == int(0):
raise exc.LibTmuxException('No Windows')