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.
 
#define HANDLE_EMPTY_MATCH
 When the command did not include match criteria (!), we use the currently focused container.
 
#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.
 
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.
 
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'.
 
void cmd_move_con_to_workspace_back_and_forth (I3_CMD)
 Implementation of 'move [window|container] [to] workspace back_and_forth'.
 
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>'.
 
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>'.
 
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]'.
 
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]'.
 
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'.
 
void cmd_nop (I3_CMD, const char *comment)
 Implementation of 'nop <comment>'.
 
void cmd_append_layout (I3_CMD, const char *cpath)
 Implementation of 'append_layout <path>'.
 
void cmd_workspace (I3_CMD, const char *which)
 Implementation of 'workspace next|prev|next_on_output|prev_on_output'.
 
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>'.
 
void cmd_workspace_back_and_forth (I3_CMD)
 Implementation of 'workspace back_and_forth'.
 
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>'.
 
void cmd_mark (I3_CMD, const char *mark, const char *mode, const char *toggle)
 Implementation of 'mark [–add|–replace] [–toggle] <mark>'.
 
void cmd_unmark (I3_CMD, const char *mark)
 Implementation of 'unmark [mark]'.
 
void cmd_mode (I3_CMD, const char *mode)
 Implementation of 'mode <string>'.
 
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>'.
 
void cmd_move_con_to_mark (I3_CMD, const char *mark)
 Implementation of 'move [window|container] [to] mark <str>'.
 
void cmd_floating (I3_CMD, const char *floating_mode)
 Implementation of 'floating enable|disable|toggle'.
 
void cmd_split (I3_CMD, const char *direction)
 Implementation of 'split v|h|t|vertical|horizontal|toggle'.
 
void cmd_kill (I3_CMD, const char *kill_mode_str)
 Implementation of 'kill [window|client]'.
 
void cmd_exec (I3_CMD, const char *nosn, const char *command)
 Implementation of 'exec [–no-startup-id] <command>'.
 
void cmd_focus_direction (I3_CMD, const char *direction_str)
 Implementation of 'focus left|right|up|down'.
 
void cmd_focus_sibling (I3_CMD, const char *direction_str)
 Implementation of 'focus next|prev sibling'.
 
void cmd_focus_window_mode (I3_CMD, const char *window_mode)
 Implementation of 'focus tiling|floating|mode_toggle'.
 
void cmd_focus_level (I3_CMD, const char *level)
 Implementation of 'focus parent|child'.
 
void cmd_focus (I3_CMD)
 Implementation of 'focus'.
 
void cmd_fullscreen (I3_CMD, const char *action, const char *fullscreen_mode)
 Implementation of 'fullscreen [enable|disable|toggle] [global]'.
 
void cmd_sticky (I3_CMD, const char *action)
 Implementation of 'sticky enable|disable|toggle'.
 
void cmd_move_direction (I3_CMD, const char *direction_str, long amount, const char *mode)
 Implementation of 'move <direction> [<amount> [px|ppt]]'.
 
void cmd_layout (I3_CMD, const char *layout_str)
 Implementation of 'layout default|stacked|stacking|tabbed|splitv|splith'.
 
void cmd_layout_toggle (I3_CMD, const char *toggle_mode)
 Implementation of 'layout toggle [all|split]'.
 
void cmd_exit (I3_CMD)
 Implementation of 'exit'.
 
void cmd_reload (I3_CMD)
 Implementation of 'reload'.
 
void cmd_restart (I3_CMD)
 Implementation of 'restart'.
 
void cmd_open (I3_CMD)
 Implementation of 'open'.
 
void cmd_focus_output (I3_CMD, const char *name)
 Implementation of 'focus output <output>'.
 
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]].
 
void cmd_move_window_to_center (I3_CMD, const char *method)
 Implementation of 'move [window|container] [to] [absolute] position center.
 
void cmd_move_window_to_mouse (I3_CMD)
 Implementation of 'move [window|container] [to] position mouse'.
 
void cmd_move_scratchpad (I3_CMD)
 Implementation of 'move scratchpad'.
 
void cmd_scratchpad_show (I3_CMD)
 Implementation of 'scratchpad show'.
 
void cmd_swap (I3_CMD, const char *mode, const char *arg)
 Implementation of 'swap [container] [with] id|con_id|mark <arg>'.
 
void cmd_title_format (I3_CMD, const char *format)
 Implementation of 'title_format <format>'.
 
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>'.
 
void cmd_rename_workspace (I3_CMD, const char *old_name, const char *new_name)
 Implementation of 'rename workspace <name> to <name>'.
 
void cmd_bar_mode (I3_CMD, const char *bar_mode, const char *bar_id)
 Implementation of 'bar mode dock|hide|invisible|toggle [<bar_id>]'.
 
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>]'.
 
void cmd_shmlog (I3_CMD, const char *argument)
 Implementation of 'shmlog <size>|toggle|on|off'.
 
void cmd_debuglog (I3_CMD, const char *argument)
 Implementation of 'debuglog toggle|on|off'.
 
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>'.
 

Macro Definition Documentation

◆ CHECK_MOVE_CON_TO_WORKSPACE

#define CHECK_MOVE_CON_TO_WORKSPACE
Value:
do { \
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)
bool con_has_children(Con *con)
Returns true if this node has regular or floating children.
Definition: con.c:377
#define HANDLE_EMPTY_MATCH
When the command did not include match criteria (!), we use the currently focused container.
Definition: commands.c:59
#define TAILQ_FIRST(head)
Definition: queue.h:336
#define TAILQ_NEXT(elm, field)
Definition: queue.h:338
#define TAILQ_EMPTY(head)
Definition: queue.h:344
Con * con
Definition: commands.c:131
enum Con::@18 type

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

◆ HANDLE_EMPTY_MATCH

#define HANDLE_EMPTY_MATCH
Value:
do { \
\
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)
static Match current_match
struct Con * focused
Definition: tree.c:13
bool match_is_empty(Match *match)
Check if a match is empty.
Definition: match.c:39
#define HANDLE_INVALID_MATCH
If an error occurred during parsing of the criteria, we want to exit instead of relying on fallback b...
Definition: commands.c:46
void * smalloc(size_t size)
Safe-wrapper around malloc which exits if malloc returns NULL (meaning that there is no more memory a...

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)
char * error
Definition: data.h:535

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

◆ gap_accessor

typedef int *(* gap_accessor) (gaps_t *)

Definition at line 2403 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

◆ 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 2278 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 2219 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::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 2367 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 1280 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 1684 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 1178 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 1462 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 1324 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 1434 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 1362 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 1397 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 1509 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 2489 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 1248 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 1626 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 1657 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 968 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 1020 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 1158 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 1107 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 1574 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 1933 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 1865 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 1909 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 1826 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_nop()

void cmd_nop ( I3_CMD  ,
const char *  comment 
)

Implementation of 'nop <comment>'.

Definition at line 764 of file commands.c.

References LOG, and ysuccess.

◆ cmd_open()

void cmd_open ( I3_CMD  )

Implementation of 'open'.

Definition at line 1757 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 1725 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 1953 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 2335 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 1209 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 1536 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 1976 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 2077 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 1001 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 851 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 922 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 939 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 885 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 2395 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 2383 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 2391 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 2399 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 2387 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 2405 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 1032 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 1058 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 1093 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().