Skip to content

Commit e3bc9d4

Browse files
split on a special wildcard instead of tab to ensure compatibility with tmux 3.1
1 parent 16d51b3 commit e3bc9d4

File tree

3 files changed

+13
-12
lines changed

3 files changed

+13
-12
lines changed

libtmux/server.py

+9-8
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ def _list_sessions(self):
145145
sformats = formats.SESSION_FORMATS
146146
tmux_formats = ['#{%s}' % f for f in sformats]
147147

148-
tmux_args = ('-F%s' % '\t'.join(tmux_formats),) # output
148+
tmux_args = ('-F%s' % '$@$'.join(tmux_formats),) # output
149149

150150
proc = self.cmd('list-sessions', *tmux_args)
151151

@@ -157,7 +157,7 @@ def _list_sessions(self):
157157
sessions = proc.stdout
158158

159159
# combine format keys with values returned from ``tmux list-sessions``
160-
sessions = [dict(zip(sformats, session.split('\t'))) for session in sessions]
160+
sessions = [dict(zip(sformats, session.split('$@$'))) for session in sessions]
161161

162162
# clear up empty dict
163163
sessions = [
@@ -206,11 +206,12 @@ def _list_windows(self):
206206

207207
wformats = ['session_name', 'session_id'] + formats.WINDOW_FORMATS
208208
tmux_formats = ['#{%s}' % format for format in wformats]
209+
print()
209210

210211
proc = self.cmd(
211212
'list-windows', # ``tmux list-windows``
212213
'-a',
213-
'-F%s' % '\t'.join(tmux_formats), # output
214+
'-F%s' % '$@$'.join(tmux_formats), # output
214215
)
215216

216217
if proc.stderr:
@@ -221,7 +222,7 @@ def _list_windows(self):
221222
wformats = ['session_name', 'session_id'] + formats.WINDOW_FORMATS
222223

223224
# combine format keys with values returned from ``tmux list-windows``
224-
windows = [dict(zip(wformats, window.split('\t'))) for window in windows]
225+
windows = [dict(zip(wformats, window.split('$@$'))) for window in windows]
225226

226227
# clear up empty dict
227228
windows = [dict((k, v) for k, v in window.items() if v) for window in windows]
@@ -270,7 +271,7 @@ def _list_panes(self):
270271
'window_id',
271272
'window_name',
272273
] + formats.PANE_FORMATS
273-
tmux_formats = ['#{%s}\t' % f for f in pformats]
274+
tmux_formats = ['#{%s}$@$' % f for f in pformats]
274275

275276
proc = self.cmd('list-panes', '-a', '-F%s' % ''.join(tmux_formats)) # output
276277

@@ -288,7 +289,7 @@ def _list_panes(self):
288289
] + formats.PANE_FORMATS
289290

290291
# combine format keys with values returned from ``tmux list-panes``
291-
panes = [dict(zip(pformats, window.split('\t'))) for window in panes]
292+
panes = [dict(zip(pformats, window.split('$@$'))) for window in panes]
292293

293294
# clear up empty dict
294295
panes = [
@@ -531,7 +532,7 @@ def new_session(
531532
tmux_args = (
532533
'-s%s' % session_name,
533534
'-P',
534-
'-F%s' % '\t'.join(tmux_formats), # output
535+
'-F%s' % '$@$'.join(tmux_formats), # output
535536
)
536537

537538
if not attach:
@@ -562,7 +563,7 @@ def new_session(
562563
os.environ['TMUX'] = env
563564

564565
# combine format keys with values returned from ``tmux list-windows``
565-
session = dict(zip(sformats, session.split('\t')))
566+
session = dict(zip(sformats, session.split('$@$')))
566567

567568
# clear up empty dict
568569
session = dict((k, v) for k, v in session.items() if v)

libtmux/session.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -221,7 +221,7 @@ def new_window(
221221
start_directory = os.path.expanduser(start_directory)
222222
window_args += ('-c%s' % start_directory,)
223223

224-
window_args += ('-F"%s"' % '\t'.join(tmux_formats),) # output
224+
window_args += ('-F"%s"' % '$@$'.join(tmux_formats),) # output
225225
if window_name:
226226
window_args += ('-n%s' % window_name,)
227227

@@ -241,7 +241,7 @@ def new_window(
241241

242242
window = proc.stdout[0]
243243

244-
window = dict(zip(wformats, window.split('\t')))
244+
window = dict(zip(wformats, window.split('$@$')))
245245

246246
# clear up empty dict
247247
window = dict((k, v) for k, v in window.items() if v)

libtmux/window.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -430,7 +430,7 @@ def split_window(
430430
'window_index',
431431
'window_id',
432432
] + formats.PANE_FORMATS
433-
tmux_formats = ['#{%s}\t' % f for f in pformats]
433+
tmux_formats = ['#{%s}$@$' % f for f in pformats]
434434

435435
# '-t%s' % self.attached_pane.get('pane_id'),
436436
# 2013-10-18 LOOK AT THIS, rm'd it..
@@ -471,7 +471,7 @@ def split_window(
471471
else:
472472
pane = pane.stdout[0]
473473

474-
pane = dict(zip(pformats, pane.split('\t')))
474+
pane = dict(zip(pformats, pane.split('$@$')))
475475

476476
# clear up empty dict
477477
pane = dict((k, v) for k, v in pane.items() if v)

0 commit comments

Comments
 (0)