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
 
struct  user_output_name
 

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
 
typedef struct user_output_name user_output_name
 
typedef int *(* gap_accessor) (gaps_t *)
 

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...
 
typedef TAILQ_HEAD (user_output_names_head, user_output_name)
 
static Outputuser_output_names_find_next (user_output_names_head *names, Output *current_output)
 
static void user_output_names_free (user_output_names_head *names)
 
void cmd_move_con_to_output (I3_CMD, const char *name, bool move_workspace)
 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_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_title_window_icon (I3_CMD, const char *enable, int padding)
 Implementation of 'title_window_icon <yes|no|toggle>' and 'title_window_icon <padding|toggle> <px>'. 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...
 
static int * gaps_inner (gaps_t *gaps)
 
static int * gaps_top (gaps_t *gaps)
 
static int * gaps_left (gaps_t *gaps)
 
static int * gaps_bottom (gaps_t *gaps)
 
static int * gaps_right (gaps_t *gaps)
 
static bool gaps_update (gap_accessor get, const char *scope, const char *mode, int pixels)
 
void cmd_gaps (I3_CMD, const char *type, const char *scope, const char *mode, const char *value)
 Implementation of 'gaps inner|outer|top|right|bottom|left|horizontal|vertical current|all set|plus|minus|toggle <px>'. 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)
#define TAILQ_FIRST(head)
Definition: queue.h:336
#define TAILQ_EMPTY(head)
Definition: queue.h:344
#define TAILQ_NEXT(elm, field)
Definition: queue.h:338
bool con_has_children(Con *con)
Returns true if this node has regular or floating children.
Definition: con.c:377

Definition at line 265 of file commands.c.

Referenced by cmd_move_con_to_workspace(), cmd_move_con_to_workspace_name(), and cmd_move_con_to_workspace_number().

◆ 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 1289 of file commands.c.

Referenced by cmd_focus(), cmd_focus_direction(), and cmd_focus_sibling().

◆ 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)
#define TAILQ_FIRST(head)
Definition: queue.h:336
bool match_is_empty(Match *match)
Check if a match is empty.
Definition: match.c:39
#define TAILQ_EMPTY(head)
Definition: queue.h:344
void * smalloc(size_t size)
Safe-wrapper around malloc which exits if malloc returns NULL (meaning that there is no more memory a...
static Match current_match
struct Con * focused
Definition: tree.c:13

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.

Referenced by cmd_border(), cmd_exec(), cmd_floating(), cmd_focus_direction(), cmd_focus_output(), cmd_focus_sibling(), cmd_fullscreen(), cmd_kill(), cmd_layout(), cmd_mark(), cmd_move_con_to_mark(), cmd_move_con_to_output(), cmd_move_con_to_workspace_back_and_forth(), cmd_move_direction(), cmd_move_scratchpad(), cmd_move_window_to_center(), cmd_move_window_to_mouse(), cmd_move_window_to_position(), cmd_resize(), cmd_resize_set(), cmd_split(), cmd_sticky(), cmd_swap(), cmd_title_format(), and cmd_title_window_icon().

◆ HANDLE_INVALID_MATCH

#define HANDLE_INVALID_MATCH
Value:
do { \
if (current_match->error != NULL) { \
yerror("Invalid match: %s", current_match->error); \
return; \
} \
} while (0)
char * error
Definition: data.h:559
static Match current_match

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)

◆ yerror

#define yerror (   format,
  ... 
)

◆ ystr

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

◆ ysuccess

#define ysuccess (   success)

Typedef Documentation

◆ gap_accessor

typedef int*(* gap_accessor) (gaps_t *)

Definition at line 2387 of file commands.c.

◆ owindow

typedef struct owindow owindow

◆ user_output_name

Function Documentation

◆ border_width_from_style()

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

Definition at line 703 of file commands.c.

Referenced by cmd_border().

◆ 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 2262 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 2203 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 711 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::max_user_border_style, 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 2351 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 1264 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 1668 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 1162 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 1446 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 1308 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 1418 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 
)

◆ cmd_focus_sibling()

void cmd_focus_sibling ( I3_CMD  ,
const char *  direction 
)

Implementation of 'focus next|prev sibling'.

Definition at line 1346 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 1381 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 1493 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_gaps()

void cmd_gaps ( I3_CMD  ,
const char *  type,
const char *  scope,
const char *  mode,
const char *  value 
)

Implementation of 'gaps inner|outer|top|right|bottom|left|horizontal|vertical current|all set|plus|minus|toggle <px>'.

Definition at line 2473 of file commands.c.

References ELOG, gaps_bottom(), gaps_inner(), gaps_left(), gaps_right(), gaps_top(), gaps_update(), logical_px(), 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 1232 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 1610 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 1641 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 952 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 1004 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 1142 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,
bool  move_workspace 
)

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

Definition at line 1091 of file commands.c.

References owindow::con, con_get_workspace(), con_is_internal(), con_move_to_output(), get_output_for_con(), HANDLE_EMPTY_MATCH, TAILQ_EMPTY, TAILQ_FOREACH, TAILQ_HEAD_INITIALIZER, user_output_names_find_next(), user_output_names_free(), workspace_move_to_output(), yerror, 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 1558 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 1917 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 1849 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 1893 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 1810 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, y, Rect::y, 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 748 of file commands.c.

References LOG, and ysuccess.

◆ cmd_open()

void cmd_open ( I3_CMD  )

Implementation of 'open'.

Definition at line 1741 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 1709 of file commands.c.

References config, current_log_stream_socket_path, 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 1937 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 2319 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 1193 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 1520 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 1960 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_title_window_icon()

void cmd_title_window_icon ( I3_CMD  ,
const char *  enable,
int  padding 
)

Implementation of 'title_window_icon <yes|no|toggle>' and 'title_window_icon <padding|toggle> <px>'.

Definition at line 2061 of file commands.c.

References boolstr(), owindow::con, Con::deco_render_params, DLOG, FREE, HANDLE_EMPTY_MATCH, Con::name, Window::name_x_changed, TAILQ_FOREACH, Con::window, Con::window_icon_padding, and ysuccess.

Here is the call graph for this function:

◆ cmd_unmark()

void cmd_unmark ( I3_CMD  ,
const char *  mark 
)

Implementation of 'unmark [mark]'.

Definition at line 985 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 835 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 906 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 923 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 869 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:

◆ gaps_bottom()

static int* gaps_bottom ( gaps_t gaps)
static

Definition at line 2379 of file commands.c.

References gaps_t::bottom.

Referenced by cmd_gaps().

◆ gaps_inner()

static int* gaps_inner ( gaps_t gaps)
static

Definition at line 2367 of file commands.c.

References gaps_t::inner.

Referenced by cmd_gaps(), and gaps_update().

◆ gaps_left()

static int* gaps_left ( gaps_t gaps)
static

Definition at line 2375 of file commands.c.

References gaps_t::left.

Referenced by cmd_gaps().

◆ gaps_right()

static int* gaps_right ( gaps_t gaps)
static

Definition at line 2383 of file commands.c.

References gaps_t::right.

Referenced by cmd_gaps().

◆ gaps_top()

static int* gaps_top ( gaps_t gaps)
static

Definition at line 2371 of file commands.c.

References gaps_t::top.

Referenced by cmd_gaps().

◆ gaps_update()

static bool gaps_update ( gap_accessor  get,
const char *  scope,
const char *  mode,
int  pixels 
)
static

Definition at line 2389 of file commands.c.

References con_get_workspace(), config, croot, DLOG, ELOG, focused, Config::gaps, Con::gaps, gaps_inner(), gaps_t::inner, output_get_content(), and TAILQ_FOREACH.

Referenced by cmd_gaps().

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() [1/2]

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_HEAD() [2/2]

typedef TAILQ_HEAD (   user_output_names_head,
user_output_name   
)

Definition at line 1016 of file commands.c.

References user_output_name::name, output_primary_name(), outputs, xoutput::primary, scalloc(), sstrdup(), TAILQ_FOREACH, and TAILQ_INSERT_TAIL.

Here is the call graph for this function:

◆ user_output_names_find_next()

static Output* user_output_names_find_next ( user_output_names_head *  names,
Output current_output 
)
static

Definition at line 1042 of file commands.c.

References get_output_from_string(), user_output_name::name, output_primary_name(), TAILQ_FOREACH, and TAILQ_NEXT.

Referenced by cmd_focus_output(), and cmd_move_con_to_output().

Here is the call graph for this function:

◆ user_output_names_free()

static void user_output_names_free ( user_output_names_head *  names)
static

Definition at line 1077 of file commands.c.

References user_output_name::name, TAILQ_EMPTY, TAILQ_FIRST, and TAILQ_REMOVE.

Referenced by cmd_focus_output(), and cmd_move_con_to_output().