Skip to content

Commit 942ac7a

Browse files
compat: split on a special wildcard instead of tab to ensure compatibility with tmux 3.1 (#298)
See also: #343
1 parent 22cf044 commit 942ac7a

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
@@ -142,7 +142,7 @@ def _list_sessions(self):
142142
sformats = formats.SESSION_FORMATS
143143
tmux_formats = ['#{%s}' % f for f in sformats]
144144

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

147147
proc = self.cmd('list-sessions', *tmux_args)
148148

@@ -154,7 +154,7 @@ def _list_sessions(self):
154154
sessions = proc.stdout
155155

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

159159
# clear up empty dict
160160
sessions = [
@@ -203,11 +203,12 @@ def _list_windows(self):
203203

204204
wformats = ['session_name', 'session_id'] + formats.WINDOW_FORMATS
205205
tmux_formats = ['#{%s}' % format for format in wformats]
206+
print()
206207

207208
proc = self.cmd(
208209
'list-windows', # ``tmux list-windows``
209210
'-a',
210-
'-F%s' % '\t'.join(tmux_formats), # output
211+
'-F%s' % '$@$'.join(tmux_formats), # output
211212
)
212213

213214
if proc.stderr:
@@ -218,7 +219,7 @@ def _list_windows(self):
218219
wformats = ['session_name', 'session_id'] + formats.WINDOW_FORMATS
219220

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

223224
# clear up empty dict
224225
windows = [dict((k, v) for k, v in window.items() if v) for window in windows]
@@ -267,7 +268,7 @@ def _list_panes(self):
267268
'window_id',
268269
'window_name',
269270
] + formats.PANE_FORMATS
270-
tmux_formats = ['#{%s}\t' % f for f in pformats]
271+
tmux_formats = ['#{%s}$@$' % f for f in pformats]
271272

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

@@ -285,7 +286,7 @@ def _list_panes(self):
285286
] + formats.PANE_FORMATS
286287

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

290291
# clear up empty dict
291292
panes = [
@@ -526,7 +527,7 @@ def new_session(
526527
tmux_args = (
527528
'-s%s' % session_name,
528529
'-P',
529-
'-F%s' % '\t'.join(tmux_formats), # output
530+
'-F%s' % '$@$'.join(tmux_formats), # output
530531
)
531532

532533
if not attach:
@@ -557,7 +558,7 @@ def new_session(
557558
os.environ['TMUX'] = env
558559

559560
# combine format keys with values returned from ``tmux list-windows``
560-
session = dict(zip(sformats, session.split('\t')))
561+
session = dict(zip(sformats, session.split('$@$')))
561562

562563
# clear up empty dict
563564
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
@@ -217,7 +217,7 @@ def new_window(
217217
start_directory = os.path.expanduser(start_directory)
218218
window_args += ('-c%s' % start_directory,)
219219

220-
window_args += ('-F"%s"' % '\t'.join(tmux_formats),) # output
220+
window_args += ('-F"%s"' % '$@$'.join(tmux_formats),) # output
221221
if window_name:
222222
window_args += ('-n%s' % window_name,)
223223

@@ -237,7 +237,7 @@ def new_window(
237237

238238
window = proc.stdout[0]
239239

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

242242
# clear up empty dict
243243
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
@@ -434,7 +434,7 @@ def split_window(
434434
'window_index',
435435
'window_id',
436436
] + formats.PANE_FORMATS
437-
tmux_formats = ['#{%s}\t' % f for f in pformats]
437+
tmux_formats = ['#{%s}$@$' % f for f in pformats]
438438

439439
# '-t%s' % self.attached_pane.get('pane_id'),
440440
# 2013-10-18 LOOK AT THIS, rm'd it..
@@ -478,7 +478,7 @@ def split_window(
478478
else:
479479
pane = pane.stdout[0]
480480

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

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

0 commit comments

Comments
 (0)