mirror of
https://github.com/tmux/tmux.git
synced 2026-03-31 08:46:27 +00:00
Add new tile-pane and float-pane commands.
This commit is contained in:
@@ -147,6 +147,7 @@ dist_tmux_SOURCES = \
|
|||||||
cmd-source-file.c \
|
cmd-source-file.c \
|
||||||
cmd-split-window.c \
|
cmd-split-window.c \
|
||||||
cmd-swap-pane.c \
|
cmd-swap-pane.c \
|
||||||
|
cmd-tile-float-pane.c \
|
||||||
cmd-swap-window.c \
|
cmd-swap-window.c \
|
||||||
cmd-switch-client.c \
|
cmd-switch-client.c \
|
||||||
cmd-unbind-key.c \
|
cmd-unbind-key.c \
|
||||||
|
|||||||
4
cmd.c
4
cmd.c
@@ -69,6 +69,7 @@ extern const struct cmd_entry cmd_load_buffer_entry;
|
|||||||
extern const struct cmd_entry cmd_lock_client_entry;
|
extern const struct cmd_entry cmd_lock_client_entry;
|
||||||
extern const struct cmd_entry cmd_lock_server_entry;
|
extern const struct cmd_entry cmd_lock_server_entry;
|
||||||
extern const struct cmd_entry cmd_lock_session_entry;
|
extern const struct cmd_entry cmd_lock_session_entry;
|
||||||
|
extern const struct cmd_entry cmd_float_pane_entry;
|
||||||
extern const struct cmd_entry cmd_minimise_pane_entry;
|
extern const struct cmd_entry cmd_minimise_pane_entry;
|
||||||
extern const struct cmd_entry cmd_move_pane_entry;
|
extern const struct cmd_entry cmd_move_pane_entry;
|
||||||
extern const struct cmd_entry cmd_move_window_entry;
|
extern const struct cmd_entry cmd_move_window_entry;
|
||||||
@@ -118,6 +119,7 @@ extern const struct cmd_entry cmd_swap_window_entry;
|
|||||||
extern const struct cmd_entry cmd_switch_client_entry;
|
extern const struct cmd_entry cmd_switch_client_entry;
|
||||||
extern const struct cmd_entry cmd_unbind_key_entry;
|
extern const struct cmd_entry cmd_unbind_key_entry;
|
||||||
extern const struct cmd_entry cmd_unlink_window_entry;
|
extern const struct cmd_entry cmd_unlink_window_entry;
|
||||||
|
extern const struct cmd_entry cmd_tile_pane_entry;
|
||||||
extern const struct cmd_entry cmd_unminimise_pane_entry;
|
extern const struct cmd_entry cmd_unminimise_pane_entry;
|
||||||
extern const struct cmd_entry cmd_wait_for_entry;
|
extern const struct cmd_entry cmd_wait_for_entry;
|
||||||
|
|
||||||
@@ -164,6 +166,7 @@ const struct cmd_entry *cmd_table[] = {
|
|||||||
&cmd_lock_client_entry,
|
&cmd_lock_client_entry,
|
||||||
&cmd_lock_server_entry,
|
&cmd_lock_server_entry,
|
||||||
&cmd_lock_session_entry,
|
&cmd_lock_session_entry,
|
||||||
|
&cmd_float_pane_entry,
|
||||||
&cmd_minimise_pane_entry,
|
&cmd_minimise_pane_entry,
|
||||||
&cmd_move_pane_entry,
|
&cmd_move_pane_entry,
|
||||||
&cmd_move_window_entry,
|
&cmd_move_window_entry,
|
||||||
@@ -213,6 +216,7 @@ const struct cmd_entry *cmd_table[] = {
|
|||||||
&cmd_switch_client_entry,
|
&cmd_switch_client_entry,
|
||||||
&cmd_unbind_key_entry,
|
&cmd_unbind_key_entry,
|
||||||
&cmd_unlink_window_entry,
|
&cmd_unlink_window_entry,
|
||||||
|
&cmd_tile_pane_entry,
|
||||||
&cmd_unminimise_pane_entry,
|
&cmd_unminimise_pane_entry,
|
||||||
&cmd_wait_for_entry,
|
&cmd_wait_for_entry,
|
||||||
NULL
|
NULL
|
||||||
|
|||||||
@@ -364,6 +364,7 @@ key_bindings_init(void)
|
|||||||
"bind -N 'Kill current window' & { confirm-before -p\"kill-window #W? (y/n)\" kill-window }",
|
"bind -N 'Kill current window' & { confirm-before -p\"kill-window #W? (y/n)\" kill-window }",
|
||||||
"bind -N 'Prompt for window index to select' \"'\" { command-prompt -T window-target -pindex { select-window -t ':%%' } }",
|
"bind -N 'Prompt for window index to select' \"'\" { command-prompt -T window-target -pindex { select-window -t ':%%' } }",
|
||||||
"bind -N 'New floating pane' * { new-pane }",
|
"bind -N 'New floating pane' * { new-pane }",
|
||||||
|
"bind -N 'Toggle pane between floating and tiled' @ { if -F '#{pane_floating_flag}' { tile-pane } { float-pane } }",
|
||||||
"bind -N 'Switch to previous client' ( { switch-client -p }",
|
"bind -N 'Switch to previous client' ( { switch-client -p }",
|
||||||
"bind -N 'Switch to next client' ) { switch-client -n }",
|
"bind -N 'Switch to next client' ) { switch-client -n }",
|
||||||
"bind -N 'Rename current window' , { command-prompt -I'#W' { rename-window -- '%%' } }",
|
"bind -N 'Rename current window' , { command-prompt -I'#W' { rename-window -- '%%' } }",
|
||||||
|
|||||||
@@ -730,8 +730,7 @@ screen_redraw_draw_pane_status(struct screen_redraw_ctx *ctx)
|
|||||||
width = size - x;
|
width = size - x;
|
||||||
}
|
}
|
||||||
|
|
||||||
r = tty_check_overlay_range(&c->tty, x, yoff, width);
|
r = screen_redraw_get_visible_ranges(wp, x, yoff, width, NULL);
|
||||||
r = screen_redraw_get_visible_ranges(wp, x, yoff, width, r);
|
|
||||||
|
|
||||||
if (ctx->statustop)
|
if (ctx->statustop)
|
||||||
yoff += ctx->statuslines;
|
yoff += ctx->statuslines;
|
||||||
|
|||||||
51
tmux.1
51
tmux.1
@@ -292,6 +292,8 @@ Rename the current session.
|
|||||||
Split the current pane into two, left and right.
|
Split the current pane into two, left and right.
|
||||||
.It &
|
.It &
|
||||||
Kill the current window.
|
Kill the current window.
|
||||||
|
.It @
|
||||||
|
Toggle the current pane between floating and tiled.
|
||||||
.It \[aq]
|
.It \[aq]
|
||||||
Prompt for a window index to select.
|
Prompt for a window index to select.
|
||||||
.It \&(
|
.It \&(
|
||||||
@@ -2971,6 +2973,41 @@ The default is
|
|||||||
zooms the pane.
|
zooms the pane.
|
||||||
.Pp
|
.Pp
|
||||||
This command works only if at least one client is attached.
|
This command works only if at least one client is attached.
|
||||||
|
.Tg floatp
|
||||||
|
.It Xo Ic float\-pane
|
||||||
|
.Op Fl h Ar height
|
||||||
|
.Op Fl w Ar width
|
||||||
|
.Op Fl x Ar x
|
||||||
|
.Op Fl y Ar y
|
||||||
|
.Op Fl t Ar target\-pane
|
||||||
|
.Xc
|
||||||
|
Lift
|
||||||
|
.Ar target\-pane
|
||||||
|
out of the tiled layout and make it a floating pane.
|
||||||
|
The
|
||||||
|
.Fl w
|
||||||
|
and
|
||||||
|
.Fl h
|
||||||
|
options set the width and height of the floating pane in columns and lines
|
||||||
|
respectively; the default is half the window width and height.
|
||||||
|
The
|
||||||
|
.Fl x
|
||||||
|
and
|
||||||
|
.Fl y
|
||||||
|
options set the position of the upper-left corner of the pane;
|
||||||
|
if omitted, new floating panes are cascaded from the top-left of the window.
|
||||||
|
If
|
||||||
|
.Fl x ,
|
||||||
|
.Fl y ,
|
||||||
|
.Fl w ,
|
||||||
|
and
|
||||||
|
.Fl h
|
||||||
|
are all omitted and the pane was previously returned to the tiled layout
|
||||||
|
with
|
||||||
|
.Ic tile\-pane ,
|
||||||
|
its last floating position and size are restored.
|
||||||
|
The pane must not already be floating or minimised, and the window must not
|
||||||
|
be zoomed.
|
||||||
.Tg joinp
|
.Tg joinp
|
||||||
.It Xo Ic join\-pane
|
.It Xo Ic join\-pane
|
||||||
.Op Fl bdfhv
|
.Op Fl bdfhv
|
||||||
@@ -3782,6 +3819,20 @@ is omitted and a marked pane is present (see
|
|||||||
.Ic select\-pane
|
.Ic select\-pane
|
||||||
.Fl m ) ,
|
.Fl m ) ,
|
||||||
the window containing the marked pane is used rather than the current window.
|
the window containing the marked pane is used rather than the current window.
|
||||||
|
.Tg tilep
|
||||||
|
.It Xo Ic tile\-pane
|
||||||
|
.Op Fl t Ar target\-pane
|
||||||
|
.Xc
|
||||||
|
Insert a floating
|
||||||
|
.Ar target\-pane
|
||||||
|
back into the tiled layout.
|
||||||
|
The pane is placed by splitting the active tiled pane (or the most recently
|
||||||
|
active tiled pane, or any visible tiled pane if none is active).
|
||||||
|
The current floating position and size are saved so they can be restored by
|
||||||
|
a subsequent
|
||||||
|
.Ic float\-pane
|
||||||
|
command with no geometry options.
|
||||||
|
The pane must be floating and the window must not be zoomed.
|
||||||
.Tg unlinkw
|
.Tg unlinkw
|
||||||
.It Xo Ic unlink\-window
|
.It Xo Ic unlink\-window
|
||||||
.Op Fl k
|
.Op Fl k
|
||||||
|
|||||||
7
tmux.h
7
tmux.h
@@ -1231,6 +1231,13 @@ struct window_pane {
|
|||||||
#define PANE_FLOATING 0x10000
|
#define PANE_FLOATING 0x10000
|
||||||
#define PANE_MINIMISED 0x20000
|
#define PANE_MINIMISED 0x20000
|
||||||
#define PANE_ZOOMED 0x40000
|
#define PANE_ZOOMED 0x40000
|
||||||
|
#define PANE_SAVED_FLOAT 0x80000 /* saved_float_* fields are valid */
|
||||||
|
|
||||||
|
/* Last floating position/size, saved when the pane is tiled. */
|
||||||
|
int saved_float_xoff;
|
||||||
|
int saved_float_yoff;
|
||||||
|
u_int saved_float_sx;
|
||||||
|
u_int saved_float_sy;
|
||||||
|
|
||||||
u_int sb_slider_y;
|
u_int sb_slider_y;
|
||||||
u_int sb_slider_h;
|
u_int sb_slider_h;
|
||||||
|
|||||||
Reference in New Issue
Block a user