i3
Data Structures | Macros | Typedefs | Functions
commands.c File Reference
#include "all.h"
#include "shmlog.h"
#include <fcntl.h>
#include <stdint.h>
#include <unistd.h>
Include dependency graph for commands.c:

Go to the source code of this file.

Data Structures

struct  owindow
 

Macros

#define y(x, ...)   (cmd_output->json_gen != NULL ? yajl_gen_##x(cmd_output->json_gen, ##__VA_ARGS__) : 0)
 
#define ystr(str)   (cmd_output->json_gen != NULL ? yajl_gen_string(cmd_output->json_gen, (unsigned char *)str, strlen(str)) : 0)
 
#define ysuccess(success)
 
#define yerror(format, ...)
 
#define HANDLE_INVALID_MATCH
 If an error occurred during parsing of the criteria, we want to exit instead of relying on fallback behavior. More...
 
#define HANDLE_EMPTY_MATCH
 When the command did not include match criteria (!), we use the currently focused container. More...
 
#define CHECK_MOVE_CON_TO_WORKSPACE
 
#define CMD_FOCUS_WARN_CHILDREN
 

Typedefs

typedef struct owindow owindow
 

Functions

static bool maybe_back_and_forth (struct CommandResultIR *cmd_output, const char *name)
 
static Conmaybe_auto_back_and_forth_workspace (Con *workspace)
 
typedef TAILQ_HEAD (owindows_head, owindow)
 
void cmd_criteria_match_windows (I3_CMD)
 A match specification just finished (the closing square bracket was found), so we filter the list of owindows. More...
 
void cmd_criteria_add (I3_CMD, const char *ctype, const char *cvalue)
 Interprets a ctype=cvalue pair and adds it to the current match specification. More...
 
static void move_matches_to_workspace (Con *ws)
 
void cmd_move_con_to_workspace (I3_CMD, const char *which)
 Implementation of 'move [window|container] [to] workspace next|prev|next_on_output|prev_on_output'. More...
 
void cmd_move_con_to_workspace_back_and_forth (I3_CMD)
 Implementation of 'move [window|container] [to] workspace back_and_forth'. More...
 
void cmd_move_con_to_workspace_name (I3_CMD, const char *name, const char *no_auto_back_and_forth)
 Implementation of 'move [–no-auto-back-and-forth] [window|container] [to] workspace <name>'. More...
 
void cmd_move_con_to_workspace_number (I3_CMD, const char *which, const char *no_auto_back_and_forth)
 Implementation of 'move [–no-auto-back-and-forth] [window|container] [to] workspace number <number>'. More...
 
static direction_t parse_direction (const char *str)
 
static void cmd_resize_floating (I3_CMD, const char *direction_str, Con *floating_con, int px)
 
static bool cmd_resize_tiling_direction (I3_CMD, Con *current, const char *direction, int px, int ppt)
 
static bool cmd_resize_tiling_width_height (I3_CMD, Con *current, const char *direction, int px, double ppt)
 
void cmd_resize (I3_CMD, const char *way, const char *direction, long resize_px, long resize_ppt)
 Implementation of 'resize grow|shrink <direction> [<px> px] [or <ppt> ppt]'. More...
 
static bool resize_set_tiling (I3_CMD, Con *target, orientation_t resize_orientation, bool is_ppt, long target_size)
 
void cmd_resize_set (I3_CMD, long cwidth, const char *mode_width, long cheight, const char *mode_height)
 Implementation of 'resize set <width> [px | ppt] <height> [px | ppt]'. More...
 
static int border_width_from_style (border_style_t border_style, long border_width, Con *con)
 
void cmd_border (I3_CMD, const char *border_style_str, long border_width)
 Implementation of 'border normal|pixel [<n>]', 'border none|1pixel|toggle'. More...
 
void cmd_nop (I3_CMD, const char *comment)
 Implementation of 'nop <comment>'. More...
 
void cmd_append_layout (I3_CMD, const char *cpath)
 Implementation of 'append_layout <path>'. More...
 
void cmd_workspace (I3_CMD, const char *which)
 Implementation of 'workspace next|prev|next_on_output|prev_on_output'. More...
 
void cmd_workspace_number (I3_CMD, const char *which, const char *_no_auto_back_and_forth)
 Implementation of 'workspace [–no-auto-back-and-forth] number <number>'. More...
 
void cmd_workspace_back_and_forth (I3_CMD)
 Implementation of 'workspace back_and_forth'. More...
 
void cmd_workspace_name (I3_CMD, const char *name, const char *_no_auto_back_and_forth)
 Implementation of 'workspace [–no-auto-back-and-forth] <name>'. More...
 
void cmd_mark (I3_CMD, const char *mark, const char *mode, const char *toggle)
 Implementation of 'mark [–add|–replace] [–toggle] <mark>'. More...
 
void cmd_unmark (I3_CMD, const char *mark)
 Implementation of 'unmark [mark]'. More...
 
void cmd_mode (I3_CMD, const char *mode)
 Implementation of 'mode <string>'. More...
 
void cmd_move_con_to_output (I3_CMD, const char *name)
 Implementation of 'move [window|container] [to] output <str>'. More...
 
void cmd_move_con_to_mark (I3_CMD, const char *mark)
 Implementation of 'move [window|container] [to] mark <str>'. More...
 
void cmd_floating (I3_CMD, const char *floating_mode)
 Implementation of 'floating enable|disable|toggle'. More...
 
void cmd_move_workspace_to_output (I3_CMD, const char *name)
 Implementation of 'move workspace to [output] <str>'. More...
 
void cmd_split (I3_CMD, const char *direction)
 Implementation of 'split v|h|t|vertical|horizontal|toggle'. More...
 
void cmd_kill (I3_CMD, const char *kill_mode_str)
 Implementation of 'kill [window|client]'. More...
 
void cmd_exec (I3_CMD, const char *nosn, const char *command)
 Implementation of 'exec [–no-startup-id] <command>'. More...
 
void cmd_focus_direction (I3_CMD, const char *direction_str)
 Implementation of 'focus left|right|up|down'. More...
 
void cmd_focus_sibling (I3_CMD, const char *direction_str)
 Implementation of 'focus next|prev sibling'. More...
 
void cmd_focus_window_mode (I3_CMD, const char *window_mode)
 Implementation of 'focus tiling|floating|mode_toggle'. More...
 
void cmd_focus_level (I3_CMD, const char *level)
 Implementation of 'focus parent|child'. More...
 
void cmd_focus (I3_CMD)
 Implementation of 'focus'. More...
 
void cmd_fullscreen (I3_CMD, const char *action, const char *fullscreen_mode)
 Implementation of 'fullscreen [enable|disable|toggle] [global]'. More...
 
void cmd_sticky (I3_CMD, const char *action)
 Implementation of 'sticky enable|disable|toggle'. More...
 
void cmd_move_direction (I3_CMD, const char *direction_str, long amount, const char *mode)
 Implementation of 'move <direction> [<amount> [px|ppt]]'. More...
 
void cmd_layout (I3_CMD, const char *layout_str)
 Implementation of 'layout default|stacked|stacking|tabbed|splitv|splith'. More...
 
void cmd_layout_toggle (I3_CMD, const char *toggle_mode)
 Implementation of 'layout toggle [all|split]'. More...
 
void cmd_exit (I3_CMD)
 Implementation of 'exit'. More...
 
void cmd_reload (I3_CMD)
 Implementation of 'reload'. More...
 
void cmd_restart (I3_CMD)
 Implementation of 'restart'. More...
 
void cmd_open (I3_CMD)
 Implementation of 'open'. More...
 
void cmd_focus_output (I3_CMD, const char *name)
 Implementation of 'focus output <output>'. More...
 
void cmd_move_window_to_position (I3_CMD, long x, const char *mode_x, long y, const char *mode_y)
 Implementation of 'move [window|container] [to] [absolute] position [<pos_x> [px|ppt] <pos_y> [px|ppt]]. More...
 
void cmd_move_window_to_center (I3_CMD, const char *method)
 Implementation of 'move [window|container] [to] [absolute] position center. More...
 
void cmd_move_window_to_mouse (I3_CMD)
 Implementation of 'move [window|container] [to] position mouse'. More...
 
void cmd_move_scratchpad (I3_CMD)
 Implementation of 'move scratchpad'. More...
 
void cmd_scratchpad_show (I3_CMD)
 Implementation of 'scratchpad show'. More...
 
void cmd_swap (I3_CMD, const char *mode, const char *arg)
 Implementation of 'swap [container] [with] id|con_id|mark <arg>'. More...
 
void cmd_title_format (I3_CMD, const char *format)
 Implementation of 'title_format <format>'. More...
 
void cmd_rename_workspace (I3_CMD, const char *old_name, const char *new_name)
 Implementation of 'rename workspace <name> to <name>'. More...
 
void cmd_bar_mode (I3_CMD, const char *bar_mode, const char *bar_id)
 Implementation of 'bar mode dock|hide|invisible|toggle [<bar_id>]'. More...
 
void cmd_bar_hidden_state (I3_CMD, const char *bar_hidden_state, const char *bar_id)
 Implementation of 'bar hidden_state hide|show|toggle [<bar_id>]'. More...
 
void cmd_shmlog (I3_CMD, const char *argument)
 Implementation of 'shmlog <size>|toggle|on|off'. More...
 
void cmd_debuglog (I3_CMD, const char *argument)
 Implementation of 'debuglog toggle|on|off'. More...
 

Macro Definition Documentation

◆ CHECK_MOVE_CON_TO_WORKSPACE

#define CHECK_MOVE_CON_TO_WORKSPACE
Value:
do { \
HANDLE_EMPTY_MATCH; \
if (TAILQ_EMPTY(&owindows)) { \
yerror("Nothing to move: specified criteria don't match any window"); \
return; \
} else { \
bool found = false; \
owindow *current = TAILQ_FIRST(&owindows); \
while (current) { \
owindow *next = TAILQ_NEXT(current, owindows); \
\
if (current->con->type == CT_WORKSPACE && !con_has_children(current->con)) { \
TAILQ_REMOVE(&owindows, current, owindows); \
} else { \
found = true; \
} \
\
current = next; \
} \
if (!found) { \
yerror("Nothing to move: workspace empty"); \
return; \
} \
} \
} while (0)

Definition at line 265 of file commands.c.

◆ CMD_FOCUS_WARN_CHILDREN

#define CMD_FOCUS_WARN_CHILDREN
Value:
do { \
int count = 0; \
owindow *current; \
TAILQ_FOREACH (current, &owindows, owindows) { \
count++; \
} \
\
if (count > 1) { \
LOG("WARNING: Your criteria for the focus command matches %d containers, " \
"while only exactly one container can be focused at a time.\n", \
count); \
} \
} while (0)

Definition at line 1227 of file commands.c.

◆ HANDLE_EMPTY_MATCH

#define HANDLE_EMPTY_MATCH
Value:
do { \
HANDLE_INVALID_MATCH; \
\
while (!TAILQ_EMPTY(&owindows)) { \
owindow *ow = TAILQ_FIRST(&owindows); \
TAILQ_REMOVE(&owindows, ow, owindows); \
free(ow); \
} \
owindow *ow = smalloc(sizeof(owindow)); \
ow->con = focused; \
TAILQ_INIT(&owindows); \
TAILQ_INSERT_TAIL(&owindows, ow, owindows); \
} \
} while (0)

When the command did not include match criteria (!), we use the currently focused container.

Do not confuse this case with a command which included criteria but which did not match any windows. This macro has to be called in every command.

Definition at line 59 of file commands.c.

◆ HANDLE_INVALID_MATCH

#define HANDLE_INVALID_MATCH
Value:
do { \
if (current_match->error != NULL) { \
yerror("Invalid match: %s", current_match->error); \
return; \
} \
} while (0)

If an error occurred during parsing of the criteria, we want to exit instead of relying on fallback behavior.

See #2091.

Definition at line 46 of file commands.c.

◆ y

#define y (   x,
  ... 
)    (cmd_output->json_gen != NULL ? yajl_gen_##x(cmd_output->json_gen, ##__VA_ARGS__) : 0)

Definition at line 18 of file commands.c.

◆ yerror

#define yerror (   format,
  ... 
)
Value:
do { \
if (cmd_output->json_gen != NULL) { \
char *message; \
sasprintf(&message, format, ##__VA_ARGS__); \
y(map_open); \
ystr("success"); \
y(bool, false); \
ystr("error"); \
ystr(message); \
y(map_close); \
free(message); \
} \
} while (0)

Definition at line 29 of file commands.c.

◆ ystr

#define ystr (   str)    (cmd_output->json_gen != NULL ? yajl_gen_string(cmd_output->json_gen, (unsigned char *)str, strlen(str)) : 0)

Definition at line 19 of file commands.c.

◆ ysuccess

#define ysuccess (   success)
Value:
do { \
if (cmd_output->json_gen != NULL) { \
y(map_open); \
ystr("success"); \
y(bool, success); \
y(map_close); \
} \
} while (0)

Definition at line 20 of file commands.c.

Typedef Documentation

◆ owindow

typedef struct owindow owindow

Function Documentation

◆ border_width_from_style()

static int border_width_from_style ( border_style_t  border_style,
long  border_width,
Con con 
)
static

◆ cmd_append_layout()

void cmd_append_layout ( I3_CMD  ,
const char *  cpath 
)

◆ cmd_bar_hidden_state()

void cmd_bar_hidden_state ( I3_CMD  ,
const char *  bar_hidden_state,
const char *  bar_id 
)

Implementation of 'bar hidden_state hide|show|toggle [<bar_id>]'.

Definition at line 2133 of file commands.c.

References barconfigs, DLOG, ELOG, Barconfig::hidden_state, Barconfig::id, ipc_send_barconfig_update_event(), TAILQ_EMPTY, TAILQ_FOREACH, yerror, and ysuccess.

Here is the call graph for this function:

◆ cmd_bar_mode()

void cmd_bar_mode ( I3_CMD  ,
const char *  bar_mode,
const char *  bar_id 
)

Implementation of 'bar mode dock|hide|invisible|toggle [<bar_id>]'.

Definition at line 2074 of file commands.c.

References barconfigs, DLOG, ELOG, Barconfig::id, ipc_send_barconfig_update_event(), Barconfig::mode, TAILQ_EMPTY, TAILQ_FOREACH, yerror, and ysuccess.

Here is the call graph for this function:

◆ cmd_border()

void cmd_border ( I3_CMD  ,
const char *  border_style_str,
long  border_width 
)

Implementation of 'border normal|pixel [<n>]', 'border none|1pixel|toggle'.

Definition at line 727 of file commands.c.

References Con::border_style, border_width_from_style(), BS_NONE, BS_NORMAL, BS_PIXEL, owindow::con, con_set_border_style(), DLOG, HANDLE_EMPTY_MATCH, Con::name, TAILQ_FOREACH, yerror, and ysuccess.

Here is the call graph for this function:

◆ cmd_criteria_add()

void cmd_criteria_add ( I3_CMD  ,
const char *  ctype,
const char *  cvalue 
)

Interprets a ctype=cvalue pair and adds it to the current match specification.

Definition at line 253 of file commands.c.

References current_match, and match_parse_property().

Here is the call graph for this function:

◆ cmd_criteria_match_windows()

void cmd_criteria_match_windows ( I3_CMD  )

A match specification just finished (the closing square bracket was found), so we filter the list of owindows.

Definition at line 170 of file commands.c.

References owindow::con, Match::con_id, current_match, DLOG, FREE, Match::mark, marks, match_matches_window(), mark_t::name, Con::name, regex_matches(), TAILQ_EMPTY, TAILQ_END, TAILQ_FIRST, TAILQ_FOREACH, TAILQ_INIT, TAILQ_INSERT_TAIL, TAILQ_NEXT, and Con::window.

Here is the call graph for this function:

◆ cmd_debuglog()

void cmd_debuglog ( I3_CMD  ,
const char *  argument 
)

Implementation of 'debuglog toggle|on|off'.

Definition at line 2222 of file commands.c.

References get_debug_logging(), LOG, set_debug_logging(), and ysuccess.

Here is the call graph for this function:

◆ cmd_exec()

void cmd_exec ( I3_CMD  ,
const char *  nosn,
const char *  command 
)

Implementation of 'exec [–no-startup-id] <command>'.

Definition at line 1202 of file commands.c.

References DLOG, HANDLE_EMPTY_MATCH, LOG, start_application(), TAILQ_FOREACH, and ysuccess.

Here is the call graph for this function:

◆ cmd_exit()

void cmd_exit ( I3_CMD  )

Implementation of 'exit'.

Definition at line 1606 of file commands.c.

References LOG.

◆ cmd_floating()

void cmd_floating ( I3_CMD  ,
const char *  floating_mode 
)

Implementation of 'floating enable|disable|toggle'.

Definition at line 1070 of file commands.c.

References owindow::con, DLOG, floating_disable(), floating_enable(), HANDLE_EMPTY_MATCH, Con::name, TAILQ_FOREACH, toggle_floating_mode(), and ysuccess.

Here is the call graph for this function:

◆ cmd_focus()

void cmd_focus ( I3_CMD  )

Implementation of 'focus'.

Definition at line 1384 of file commands.c.

References CMD_FOCUS_WARN_CHILDREN, owindow::con, con_activate_unblock(), con_get_workspace(), current_match, DLOG, ELOG, LOG, match_is_empty(), Con::name, scratchpad_show(), TAILQ_EMPTY, TAILQ_FOREACH, workspace_get(), yerror, and ysuccess.

Here is the call graph for this function:

◆ cmd_focus_direction()

void cmd_focus_direction ( I3_CMD  ,
const char *  direction_str 
)

Implementation of 'focus left|right|up|down'.

Definition at line 1246 of file commands.c.

References AFTER, BEFORE, CMD_FOCUS_WARN_CHILDREN, owindow::con, con_get_workspace(), con_is_internal(), con_orientation(), direction_from_orientation_position(), HANDLE_EMPTY_MATCH, Con::parent, parse_direction(), TAILQ_FOREACH, tree_next(), and ysuccess.

Here is the call graph for this function:

◆ cmd_focus_level()

void cmd_focus_level ( I3_CMD  ,
const char *  level 
)

Implementation of 'focus parent|child'.

Definition at line 1356 of file commands.c.

References con_fullscreen_permits_focusing(), DLOG, ELOG, focused, level_down(), level_up(), Con::parent, and ysuccess.

Here is the call graph for this function:

◆ cmd_focus_output()

void cmd_focus_output ( I3_CMD  ,
const char *  name 
)

Implementation of 'focus output <output>'.

Definition at line 1696 of file commands.c.

References xoutput::con, get_output_for_con(), get_output_from_string(), GREP_FIRST, HANDLE_EMPTY_MATCH, output_get_content(), TAILQ_EMPTY, TAILQ_FIRST, workspace_is_visible(), workspace_show(), yerror, and ysuccess.

Here is the call graph for this function:

◆ cmd_focus_sibling()

void cmd_focus_sibling ( I3_CMD  ,
const char *  direction_str 
)

Implementation of 'focus next|prev sibling'.

Definition at line 1284 of file commands.c.

References AFTER, BEFORE, CMD_FOCUS_WARN_CHILDREN, owindow::con, con_activate(), con_focus(), con_get_workspace(), con_is_internal(), get_tree_next_sibling(), HANDLE_EMPTY_MATCH, STARTS_WITH, TAILQ_FOREACH, Con::type, workspace_show(), and ysuccess.

Here is the call graph for this function:

◆ cmd_focus_window_mode()

void cmd_focus_window_mode ( I3_CMD  ,
const char *  window_mode 
)

Implementation of 'focus tiling|floating|mode_toggle'.

Definition at line 1319 of file commands.c.

References con_activate_unblock(), con_descend_focused(), con_get_workspace(), con_inside_floating(), DLOG, focused, TAILQ_FOREACH, Con::type, yerror, and ysuccess.

Here is the call graph for this function:

◆ cmd_fullscreen()

void cmd_fullscreen ( I3_CMD  ,
const char *  action,
const char *  fullscreen_mode 
)

Implementation of 'fullscreen [enable|disable|toggle] [global]'.

Definition at line 1431 of file commands.c.

References CF_GLOBAL, CF_OUTPUT, owindow::con, con_disable_fullscreen(), con_enable_fullscreen(), con_toggle_fullscreen(), DLOG, HANDLE_EMPTY_MATCH, Con::name, TAILQ_FOREACH, and ysuccess.

Here is the call graph for this function:

◆ cmd_kill()

void cmd_kill ( I3_CMD  ,
const char *  kill_mode_str 
)

Implementation of 'kill [window|client]'.

Definition at line 1170 of file commands.c.

References owindow::con, con_close(), DLOG, HANDLE_EMPTY_MATCH, KILL_CLIENT, KILL_WINDOW, TAILQ_FOREACH, yerror, and ysuccess.

Here is the call graph for this function:

◆ cmd_layout()

void cmd_layout ( I3_CMD  ,
const char *  layout_str 
)

Implementation of 'layout default|stacked|stacking|tabbed|splitv|splith'.

Definition at line 1548 of file commands.c.

References owindow::con, con_is_docked(), con_set_layout(), DLOG, ELOG, HANDLE_EMPTY_MATCH, layout_from_name(), Con::name, TAILQ_FOREACH, yerror, and ysuccess.

Here is the call graph for this function:

◆ cmd_layout_toggle()

void cmd_layout_toggle ( I3_CMD  ,
const char *  toggle_mode 
)

Implementation of 'layout toggle [all|split]'.

Definition at line 1579 of file commands.c.

References owindow::con, con_toggle_layout(), current_match, DLOG, focused, match_is_empty(), Con::name, TAILQ_FOREACH, and ysuccess.

Here is the call graph for this function:

◆ cmd_mark()

void cmd_mark ( I3_CMD  ,
const char *  mark,
const char *  mode,
const char *  toggle 
)

Implementation of 'mark [–add|–replace] [–toggle] <mark>'.

Definition at line 966 of file commands.c.

References owindow::con, con_mark(), con_mark_toggle(), DLOG, HANDLE_EMPTY_MATCH, MM_ADD, MM_REPLACE, Con::name, TAILQ_FIRST, TAILQ_LAST, yerror, and ysuccess.

Here is the call graph for this function:

◆ cmd_mode()

void cmd_mode ( I3_CMD  ,
const char *  mode 
)

Implementation of 'mode <string>'.

Definition at line 1018 of file commands.c.

References DLOG, switch_mode(), and ysuccess.

Here is the call graph for this function:

◆ cmd_move_con_to_mark()

void cmd_move_con_to_mark ( I3_CMD  ,
const char *  mark 
)

Implementation of 'move [window|container] [to] mark <str>'.

Definition at line 1050 of file commands.c.

References owindow::con, con_move_to_mark(), DLOG, HANDLE_EMPTY_MATCH, Con::name, TAILQ_FOREACH, and ysuccess.

Here is the call graph for this function:

◆ cmd_move_con_to_output()

void cmd_move_con_to_output ( I3_CMD  ,
const char *  name 
)

Implementation of 'move [window|container] [to] output <str>'.

Definition at line 1030 of file commands.c.

References owindow::con, con_move_to_output_name(), DLOG, HANDLE_EMPTY_MATCH, Con::name, TAILQ_FOREACH, and ysuccess.

Here is the call graph for this function:

◆ cmd_move_con_to_workspace()

void cmd_move_con_to_workspace ( I3_CMD  ,
const char *  which 
)

Implementation of 'move [window|container] [to] workspace next|prev|next_on_output|prev_on_output'.

Definition at line 297 of file commands.c.

References CHECK_MOVE_CON_TO_WORKSPACE, con_get_workspace(), DLOG, focused, move_matches_to_workspace(), workspace_next(), workspace_next_on_output(), workspace_prev(), workspace_prev_on_output(), yerror, and ysuccess.

Here is the call graph for this function:

◆ cmd_move_con_to_workspace_back_and_forth()

void cmd_move_con_to_workspace_back_and_forth ( I3_CMD  )

Implementation of 'move [window|container] [to] workspace back_and_forth'.

Definition at line 330 of file commands.c.

References HANDLE_EMPTY_MATCH, move_matches_to_workspace(), workspace_back_and_forth_get(), yerror, and ysuccess.

Here is the call graph for this function:

◆ cmd_move_con_to_workspace_name()

void cmd_move_con_to_workspace_name ( I3_CMD  ,
const char *  name,
const char *  no_auto_back_and_forth 
)

Implementation of 'move [–no-auto-back-and-forth] [window|container] [to] workspace <name>'.

Definition at line 350 of file commands.c.

References CHECK_MOVE_CON_TO_WORKSPACE, LOG, maybe_auto_back_and_forth_workspace(), move_matches_to_workspace(), workspace_get(), yerror, and ysuccess.

Here is the call graph for this function:

◆ cmd_move_con_to_workspace_number()

void cmd_move_con_to_workspace_number ( I3_CMD  ,
const char *  which,
const char *  no_auto_back_and_forth 
)

Implementation of 'move [–no-auto-back-and-forth] [window|container] [to] workspace number <number>'.

Definition at line 377 of file commands.c.

References CHECK_MOVE_CON_TO_WORKSPACE, get_existing_workspace_by_num(), LOG, maybe_auto_back_and_forth_workspace(), move_matches_to_workspace(), workspace_get(), ws_name_to_number(), yerror, and ysuccess.

Here is the call graph for this function:

◆ cmd_move_direction()

void cmd_move_direction ( I3_CMD  ,
const char *  direction_str,
long  amount,
const char *  mode 
)

Implementation of 'move <direction> [<amount> [px|ppt]]'.

Definition at line 1496 of file commands.c.

References owindow::con, con_activate(), con_exists(), con_get_output(), con_is_floating(), D_DOWN, D_LEFT, D_RIGHT, D_UP, DLOG, floating_reposition(), focused, HANDLE_EMPTY_MATCH, Rect::height, Con::parent, parse_direction(), Con::rect, TAILQ_FOREACH, tree_move(), Rect::width, Rect::x, Rect::y, and ysuccess.

Here is the call graph for this function:

◆ cmd_move_scratchpad()

void cmd_move_scratchpad ( I3_CMD  )

Implementation of 'move scratchpad'.

Definition at line 1837 of file commands.c.

References owindow::con, DLOG, HANDLE_EMPTY_MATCH, Con::name, scratchpad_move(), TAILQ_FOREACH, and ysuccess.

Here is the call graph for this function:

◆ cmd_move_window_to_center()

void cmd_move_window_to_center ( I3_CMD  ,
const char *  method 
)

Implementation of 'move [window|container] [to] [absolute] position center.

Definition at line 1769 of file commands.c.

References owindow::con, con_get_workspace(), con_inside_floating(), croot, DLOG, ELOG, floating_center(), floating_maybe_reassign_ws(), HANDLE_EMPTY_MATCH, Con::name, Con::rect, TAILQ_FOREACH, yerror, and ysuccess.

Here is the call graph for this function:

◆ cmd_move_window_to_mouse()

void cmd_move_window_to_mouse ( I3_CMD  )

Implementation of 'move [window|container] [to] position mouse'.

Definition at line 1813 of file commands.c.

References owindow::con, con_inside_floating(), DLOG, floating_move_to_pointer(), HANDLE_EMPTY_MATCH, Con::name, TAILQ_FOREACH, and ysuccess.

Here is the call graph for this function:

◆ cmd_move_window_to_position()

void cmd_move_window_to_position ( I3_CMD  ,
long  x,
const char *  mode_x,
long  y,
const char *  mode_y 
)

Implementation of 'move [window|container] [to] [absolute] position [<pos_x> [px|ppt] <pos_y> [px|ppt]].

Definition at line 1730 of file commands.c.

References owindow::con, con_get_output(), con_is_floating(), DLOG, ELOG, floating_reposition(), HANDLE_EMPTY_MATCH, Rect::height, Con::parent, Con::rect, TAILQ_FOREACH, Rect::width, Rect::x, Rect::y, y, yerror, and ysuccess.

Here is the call graph for this function:

◆ cmd_move_workspace_to_output()

void cmd_move_workspace_to_output ( I3_CMD  ,
const char *  name 
)

Implementation of 'move workspace to [output] <str>'.

Definition at line 1101 of file commands.c.

References owindow::con, con_get_workspace(), con_is_internal(), DLOG, get_output_for_con(), get_output_from_string(), HANDLE_EMPTY_MATCH, TAILQ_FOREACH, workspace_move_to_output(), yerror, and ysuccess.

Here is the call graph for this function:

◆ cmd_nop()

void cmd_nop ( I3_CMD  ,
const char *  comment 
)

Implementation of 'nop <comment>'.

Definition at line 762 of file commands.c.

References LOG, and ysuccess.

◆ cmd_open()

void cmd_open ( I3_CMD  )

Implementation of 'open'.

Definition at line 1676 of file commands.c.

References con_activate(), L_SPLITH, Con::layout, LOG, tree_open_con(), y, and ystr.

Here is the call graph for this function:

◆ cmd_reload()

void cmd_reload ( I3_CMD  )

◆ cmd_rename_workspace()

void cmd_rename_workspace ( I3_CMD  ,
const char *  old_name,
const char *  new_name 
)

◆ cmd_resize()

void cmd_resize ( I3_CMD  ,
const char *  way,
const char *  direction,
long  resize_px,
long  resize_ppt 
)

Implementation of 'resize grow|shrink <direction> [<px> px] [or <ppt> ppt]'.

Definition at line 575 of file commands.c.

References cmd_resize_floating(), cmd_resize_tiling_direction(), cmd_resize_tiling_width_height(), owindow::con, con_inside_floating(), current_match, DLOG, Window::dock, HANDLE_EMPTY_MATCH, TAILQ_FOREACH, Con::window, yerror, and ysuccess.

Here is the call graph for this function:

◆ cmd_resize_floating()

static void cmd_resize_floating ( I3_CMD  ,
const char *  direction_str,
Con floating_con,
int  px 
)
static

◆ cmd_resize_set()

void cmd_resize_set ( I3_CMD  ,
long  cwidth,
const char *  mode_width,
long  cheight,
const char *  mode_height 
)

Implementation of 'resize set <width> [px | ppt] <height> [px | ppt]'.

Definition at line 654 of file commands.c.

References owindow::con, con_get_output(), con_inside_floating(), current_match, DLOG, Window::dock, floating_resize(), HANDLE_EMPTY_MATCH, Rect::height, HORIZ, Con::rect, resize_set_tiling(), TAILQ_FOREACH, VERT, Rect::width, Con::window, yerror, and ysuccess.

Here is the call graph for this function:

◆ cmd_resize_tiling_direction()

static bool cmd_resize_tiling_direction ( I3_CMD  ,
Con current,
const char *  direction,
int  px,
int  ppt 
)
static

Definition at line 483 of file commands.c.

References parse_direction(), resize_find_tiling_participants(), resize_neighboring_cons(), and yerror.

Referenced by cmd_resize().

Here is the call graph for this function:

◆ cmd_resize_tiling_width_height()

static bool cmd_resize_tiling_width_height ( I3_CMD  ,
Con current,
const char *  direction,
int  px,
double  ppt 
)
static

◆ cmd_restart()

void cmd_restart ( I3_CMD  )

Implementation of 'restart'.

Definition at line 1647 of file commands.c.

References config, ELOG, i3_restart(), ipc_shutdown(), Config::ipc_socket_path, LOG, purge_zerobyte_logfile(), sasprintf(), and SHUTDOWN_REASON_RESTART.

Here is the call graph for this function:

◆ cmd_scratchpad_show()

void cmd_scratchpad_show ( I3_CMD  )

Implementation of 'scratchpad show'.

Definition at line 1857 of file commands.c.

References owindow::con, current_match, DLOG, match_is_empty(), Con::name, scratchpad_show(), TAILQ_FOREACH, and ysuccess.

Here is the call graph for this function:

◆ cmd_shmlog()

void cmd_shmlog ( I3_CMD  ,
const char *  argument 
)

Implementation of 'shmlog <size>|toggle|on|off'.

Definition at line 2190 of file commands.c.

References default_shmlog_size, init_logging(), LOG, parse_long(), shmlog_size, update_shmlog_atom(), yerror, and ysuccess.

Here is the call graph for this function:

◆ cmd_split()

void cmd_split ( I3_CMD  ,
const char *  direction 
)

Implementation of 'split v|h|t|vertical|horizontal|toggle'.

Definition at line 1131 of file commands.c.

References owindow::con, con_is_docked(), DLOG, ELOG, HANDLE_EMPTY_MATCH, HORIZ, L_SPLITH, Con::layout, LOG, Con::name, Con::parent, TAILQ_FOREACH, tree_split(), Con::type, VERT, and ysuccess.

Here is the call graph for this function:

◆ cmd_sticky()

void cmd_sticky ( I3_CMD  ,
const char *  action 
)

Implementation of 'sticky enable|disable|toggle'.

Definition at line 1458 of file commands.c.

References owindow::con, DLOG, ELOG, ewmh_update_sticky(), ewmh_update_wm_desktop(), focused, HANDLE_EMPTY_MATCH, Window::id, Con::name, output_push_sticky_windows(), Con::sticky, TAILQ_FOREACH, Con::window, and ysuccess.

Here is the call graph for this function:

◆ cmd_swap()

void cmd_swap ( I3_CMD  ,
const char *  mode,
const char *  arg 
)

Implementation of 'swap [container] [with] id|con_id|mark <arg>'.

Definition at line 1880 of file commands.c.

References owindow::con, con_by_con_id(), con_by_mark(), con_by_window_id(), con_swap(), DLOG, HANDLE_EMPTY_MATCH, LOG, parse_long(), TAILQ_FIRST, TAILQ_LAST, yerror, and ysuccess.

Here is the call graph for this function:

◆ cmd_title_format()

void cmd_title_format ( I3_CMD  ,
const char *  format 
)

◆ cmd_unmark()

void cmd_unmark ( I3_CMD  ,
const char *  mark 
)

Implementation of 'unmark [mark]'.

Definition at line 999 of file commands.c.

References owindow::con, con_unmark(), current_match, match_is_empty(), TAILQ_FOREACH, and ysuccess.

Here is the call graph for this function:

◆ cmd_workspace()

void cmd_workspace ( I3_CMD  ,
const char *  which 
)

Implementation of 'workspace next|prev|next_on_output|prev_on_output'.

Definition at line 849 of file commands.c.

References CF_GLOBAL, con_get_fullscreen_con(), croot, DLOG, workspace_next(), workspace_next_on_output(), workspace_prev(), workspace_prev_on_output(), workspace_show(), yerror, and ysuccess.

Here is the call graph for this function:

◆ cmd_workspace_back_and_forth()

void cmd_workspace_back_and_forth ( I3_CMD  )

Implementation of 'workspace back_and_forth'.

Definition at line 920 of file commands.c.

References CF_GLOBAL, con_get_fullscreen_con(), croot, workspace_back_and_forth(), yerror, and ysuccess.

Here is the call graph for this function:

◆ cmd_workspace_name()

void cmd_workspace_name ( I3_CMD  ,
const char *  name,
const char *  _no_auto_back_and_forth 
)

Implementation of 'workspace [–no-auto-back-and-forth] <name>'.

Definition at line 937 of file commands.c.

References CF_GLOBAL, con_get_fullscreen_con(), croot, DLOG, maybe_back_and_forth(), workspace_show_by_name(), yerror, and ysuccess.

Here is the call graph for this function:

◆ cmd_workspace_number()

void cmd_workspace_number ( I3_CMD  ,
const char *  which,
const char *  _no_auto_back_and_forth 
)

Implementation of 'workspace [–no-auto-back-and-forth] number <number>'.

Definition at line 883 of file commands.c.

References CF_GLOBAL, con_get_fullscreen_con(), croot, get_existing_workspace_by_num(), LOG, maybe_back_and_forth(), Con::name, workspace_show(), workspace_show_by_name(), ws_name_to_number(), yerror, and ysuccess.

Here is the call graph for this function:

◆ maybe_auto_back_and_forth_workspace()

static Con* maybe_auto_back_and_forth_workspace ( Con workspace)
static

Definition at line 102 of file commands.c.

References con_get_workspace(), config, DLOG, focused, Config::workspace_auto_back_and_forth, and workspace_back_and_forth_get().

Referenced by cmd_move_con_to_workspace_name(), and cmd_move_con_to_workspace_number().

Here is the call graph for this function:

◆ maybe_back_and_forth()

static bool maybe_back_and_forth ( struct CommandResultIR cmd_output,
const char *  name 
)
static

◆ move_matches_to_workspace()

static void move_matches_to_workspace ( Con ws)
static

◆ parse_direction()

static direction_t parse_direction ( const char *  str)
static

◆ resize_set_tiling()

static bool resize_set_tiling ( I3_CMD  ,
Con target,
orientation_t  resize_orientation,
bool  is_ppt,
long  target_size 
)
static

Definition at line 621 of file commands.c.

References cmd_resize_tiling_width_height(), current_match, D_DOWN, D_LEFT, Rect::height, HORIZ, Con::percent, Con::rect, resize_find_tiling_participants(), and Rect::width.

Referenced by cmd_resize_set().

Here is the call graph for this function:

◆ TAILQ_HEAD()

typedef TAILQ_HEAD (   owindows_head,
owindow   
)

Definition at line 135 of file commands.c.

References all_cons, owindow::con, current_match, DLOG, match_free(), match_init(), smalloc(), TAILQ_EMPTY, TAILQ_FIRST, TAILQ_FOREACH, TAILQ_INIT, TAILQ_INSERT_TAIL, and TAILQ_REMOVE.

Here is the call graph for this function:
TAILQ_FIRST
#define TAILQ_FIRST(head)
Definition: queue.h:336
TAILQ_NEXT
#define TAILQ_NEXT(elm, field)
Definition: queue.h:338
match_is_empty
bool match_is_empty(Match *match)
Check if a match is empty.
Definition: match.c:39
TAILQ_EMPTY
#define TAILQ_EMPTY(head)
Definition: queue.h:344
current_match
static Match current_match
Definition: commands_parser.c:167
smalloc
void * smalloc(size_t size)
Safe-wrapper around malloc which exits if malloc returns NULL (meaning that there is no more memory a...
focused
struct Con * focused
Definition: tree.c:13
Match::error
char * error
Definition: data.h:494
owindow
Definition: commands.c:130
con_has_children
bool con_has_children(Con *con)
Returns true if this node has regular or floating children.
Definition: con.c:376