Skip to content

Commit fdda3d7

Browse files
committed
cli(load): Remove set_layout_hook()
1 parent 498e6fa commit fdda3d7

File tree

1 file changed

+0
-77
lines changed

1 file changed

+0
-77
lines changed

src/tmuxp/cli/load.py

-77
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
import sys
1010
import typing as t
1111

12-
from libtmux.common import has_gte_version
1312
from libtmux.server import Server
1413
from libtmux.session import Session
1514

@@ -48,65 +47,6 @@ class CLILoadNamespace(argparse.Namespace):
4847
log_file: t.Optional[str]
4948

5049

51-
def set_layout_hook(session: Session, hook_name: str) -> None:
52-
"""Set layout hooks to normalize layout.
53-
54-
References
55-
----------
56-
- tmuxp issue: https://github.com/tmux-python/tmuxp/issues/309
57-
- tmux issue: https://github.com/tmux/tmux/issues/1106
58-
59-
tmux 2.6+ requires that the window be viewed with the client before
60-
select-layout adjustments can take effect.
61-
62-
To handle this, this function creates temporary hook for this session to
63-
iterate through all windows and select the layout.
64-
65-
In order for layout changes to take effect, a client must at the very
66-
least be attached to the window (not just the session).
67-
68-
hook_name is provided to allow this to set to multiple scenarios, such
69-
as 'client-attached' (which the user attaches the session). You may
70-
also want 'after-switch-client' for cases where the user loads tmuxp
71-
sessions inside tmux since tmuxp offers to switch for them.
72-
73-
Also, the hooks are set immediately unbind after they're invoked via -u.
74-
75-
Parameters
76-
----------
77-
session : :class:`libtmux.session.Session`
78-
session to bind hook to
79-
hook_name : str
80-
hook name to bind to, e.g. 'client-attached'
81-
"""
82-
assert session.id is not None
83-
cmd: t.List[str] = ["set-hook", hook_name]
84-
hook_cmd = []
85-
active_window = session.active_window
86-
for window in session.windows:
87-
# unfortunately, select-layout won't work unless
88-
# we've literally selected the window at least once
89-
# with the client
90-
hook_cmd.append(f"selectw -t {window.id}")
91-
# edit: removed -t, or else it won't respect main-pane-w/h
92-
hook_cmd.append("selectl")
93-
hook_cmd.append("selectw -p")
94-
95-
# unset the hook immediately after executing
96-
hook_cmd.extend(
97-
(f"set-hook -u -t {session.id} {hook_name}", f"selectw -t {active_window.id}")
98-
)
99-
100-
# join the hook's commands with semicolons
101-
_hook_cmd = "{}".format("; ".join(hook_cmd))
102-
103-
# append the hook command
104-
cmd.append(_hook_cmd)
105-
106-
# create the hook
107-
session.cmd(*cmd, target=session.id)
108-
109-
11050
def load_plugins(session_config: t.Dict[str, t.Any]) -> t.List[t.Any]:
11151
"""Load and return plugins in workspace."""
11252
plugins = []
@@ -200,20 +140,10 @@ def _load_attached(builder: WorkspaceBuilder, detached: bool) -> None:
200140
# unset TMUX, save it, e.g. '/tmp/tmux-1000/default,30668,0'
201141
tmux_env = os.environ.pop("TMUX")
202142

203-
if has_gte_version("2.6"):
204-
set_layout_hook(builder.session, "client-session-changed")
205-
206143
builder.session.switch_client() # switch client to new session
207144

208145
os.environ["TMUX"] = tmux_env # set TMUX back again
209146
else:
210-
if has_gte_version("2.6"):
211-
# if attaching for first time
212-
set_layout_hook(builder.session, "client-attached")
213-
214-
# for cases where user switches client for first time
215-
set_layout_hook(builder.session, "client-session-changed")
216-
217147
if not detached:
218148
builder.session.attach_session()
219149

@@ -230,10 +160,6 @@ def _load_detached(builder: WorkspaceBuilder) -> None:
230160

231161
assert builder.session is not None
232162

233-
if has_gte_version("2.6"): # prepare for both cases
234-
set_layout_hook(builder.session, "client-attached")
235-
set_layout_hook(builder.session, "client-session-changed")
236-
237163
print("Session created in detached state.")
238164

239165

@@ -248,9 +174,6 @@ def _load_append_windows_to_current_session(builder: WorkspaceBuilder) -> None:
248174
current_attached_session = builder.find_current_attached_session()
249175
builder.build(current_attached_session, append=True)
250176
assert builder.session is not None
251-
if has_gte_version("2.6"): # prepare for both cases
252-
set_layout_hook(builder.session, "client-attached")
253-
set_layout_hook(builder.session, "client-session-changed")
254177

255178

256179
def _setup_plugins(builder: WorkspaceBuilder) -> Session:

0 commit comments

Comments
 (0)