i3
Data Structures | Macros | Typedefs | Functions
commands.c File Reference
#include "all.h"
#include <stdint.h>
#include <float.h>
#include <stdarg.h>
#include "shmlog.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...
 

Typedefs

typedef struct owindow owindow
 

Functions

static bool definitelyGreaterThan (float a, float b, float epsilon)
 
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...
 
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 void cmd_resize_floating (I3_CMD, const char *way, const char *direction, Con *floating_con, int px)
 
static bool cmd_resize_tiling_direction (I3_CMD, Con *current, const char *way, const char *direction, int ppt)
 
static bool cmd_resize_tiling_width_height (I3_CMD, Con *current, const char *way, const char *direction, int 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...
 
void cmd_resize_set (I3_CMD, long cwidth, long cheight)
 Implementation of 'resize set <px> [px] <px> [px]'. More...
 
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)
 Implementation of 'focus left|right|up|down'. 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, long move_px)
 Implementation of 'move <direction> [<pixels> [px]]'. 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, const char *method, long x, long y)
 Implementation of 'move [window|container] [to] [absolute] position <px> [px] <px> [px]. 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...
 
bool cmd_bar_mode (const char *bar_mode, const char *bar_id)
 
bool cmd_bar_hidden_state (const char *bar_hidden_state, const char *bar_id)
 
void cmd_bar (I3_CMD, const char *bar_type, const char *bar_value, const char *bar_id)
 Implementation of 'bar (hidden_state hide|show|toggle)|(mode dock|hide|invisible|toggle) [<bar_id>]'. More...
 
void cmd_shmlog (I3_CMD, const char *argument)
 
void cmd_debuglog (I3_CMD, const char *argument)
 

Macro Definition Documentation

◆ 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)
Con * focused
Definition: tree.c:13
#define TAILQ_EMPTY(head)
Definition: queue.h:344
#define TAILQ_FIRST(head)
Definition: queue.h:336
bool match_is_empty(Match *match)
Check if a match is empty.
Definition: match.c:39
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

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

Referenced by cmd_border(), cmd_floating(), cmd_focus_output(), cmd_fullscreen(), cmd_kill(), cmd_layout(), cmd_mark(), cmd_move_con_to_mark(), cmd_move_con_to_output(), cmd_move_con_to_workspace(), cmd_move_con_to_workspace_back_and_forth(), cmd_move_con_to_workspace_name(), cmd_move_con_to_workspace_number(), cmd_move_direction(), cmd_move_scratchpad(), cmd_move_window_to_center(), cmd_move_window_to_mouse(), cmd_move_window_to_position(), cmd_move_workspace_to_output(), cmd_resize(), cmd_resize_set(), cmd_split(), cmd_sticky(), cmd_swap(), and cmd_title_format().

◆ 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:485
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 51 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 23 of file commands.c.

Referenced by cmd_move_window_to_position(), and cmd_open().

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

Referenced by cmd_append_layout(), cmd_focus(), cmd_mark(), cmd_move_con_to_workspace_back_and_forth(), cmd_move_con_to_workspace_number(), cmd_move_window_to_center(), cmd_move_window_to_position(), cmd_rename_workspace(), cmd_swap(), and cmd_workspace_number().

◆ 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

◆ owindow

typedef struct owindow owindow

Function Documentation

◆ cmd_append_layout()

void cmd_append_layout ( I3_CMD  ,
const char *  cpath 
)

◆ cmd_bar()

void cmd_bar ( I3_CMD  ,
const char *  bar_type,
const char *  bar_value,
const char *  bar_id 
)

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

Definition at line 2113 of file commands.c.

References cmd_bar_hidden_state(), cmd_bar_mode(), ELOG, update_barconfig(), and ysuccess.

Here is the call graph for this function:

◆ cmd_bar_hidden_state()

bool cmd_bar_hidden_state ( const char *  bar_hidden_state,
const char *  bar_id 
)

Definition at line 2070 of file commands.c.

References barconfigs, DLOG, ELOG, Barconfig::hidden_state, Barconfig::id, and TAILQ_FOREACH.

Referenced by cmd_bar().

◆ cmd_bar_mode()

bool cmd_bar_mode ( const char *  bar_mode,
const char *  bar_id 
)

Definition at line 2025 of file commands.c.

References barconfigs, DLOG, ELOG, Barconfig::id, Barconfig::mode, and TAILQ_FOREACH.

Referenced by cmd_bar().

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

References Con::border_style, BS_NONE, BS_NORMAL, BS_PIXEL, owindow::con, con_set_border_style(), DLOG, ELOG, HANDLE_EMPTY_MATCH, logical_px(), Con::name, owindow::owindows, TAILQ_FOREACH, 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 268 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 185 of file commands.c.

References owindow::con, Match::con_id, current_match, DLOG, FREE, Match::mark, marks, Con::marks_head, match_matches_window(), mark_t::name, Con::name, owindow::owindows, 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 
)

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

References DLOG, start_application(), and ysuccess.

Here is the call graph for this function:

◆ cmd_exit()

void cmd_exit ( I3_CMD  )

Implementation of 'exit'.

Definition at line 1561 of file commands.c.

References config, conn, ipc_shutdown(), Config::ipc_socket_path, LOG, and SHUTDOWN_REASON_EXIT.

Here is the call graph for this function:

◆ cmd_floating()

void cmd_floating ( I3_CMD  ,
const char *  floating_mode 
)

Implementation of 'floating enable|disable|toggle'.

Definition at line 1096 of file commands.c.

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

Here is the call graph for this function:

◆ cmd_focus()

void cmd_focus ( I3_CMD  )

◆ cmd_focus_direction()

void cmd_focus_direction ( I3_CMD  ,
const char *  direction 
)

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

Definition at line 1238 of file commands.c.

References DLOG, ELOG, HORIZ, tree_next(), VERT, 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 1295 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 1634 of file commands.c.

References owindow::con, xoutput::con, DLOG, get_output_for_con(), get_output_from_string(), GREP_FIRST, HANDLE_EMPTY_MATCH, LOG, output_get_content(), owindow::owindows, TAILQ_FOREACH, workspace_is_visible(), 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 1264 of file commands.c.

References con_descend_focused(), con_focus(), con_get_workspace(), con_inside_floating(), DLOG, Con::focus_head, focused, TAILQ_FOREACH, Con::type, 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 1399 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, owindow::owindows, 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 1191 of file commands.c.

References owindow::con, con_close(), DLOG, ELOG, HANDLE_EMPTY_MATCH, KILL_CLIENT, KILL_WINDOW, owindow::owindows, TAILQ_FOREACH, 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 1503 of file commands.c.

References owindow::con, con_is_docked(), con_set_layout(), DLOG, ELOG, HANDLE_EMPTY_MATCH, layout_from_name(), Con::name, owindow::owindows, TAILQ_FOREACH, 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 1534 of file commands.c.

References owindow::con, con_toggle_layout(), current_match, DLOG, focused, match_is_empty(), Con::name, owindow::owindows, 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 974 of file commands.c.

References owindow::con, con_mark(), con_mark_toggle(), DLOG, HANDLE_EMPTY_MATCH, MM_ADD, MM_REPLACE, Con::name, owindow::owindows, 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 1026 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 1076 of file commands.c.

References owindow::con, con_move_to_mark(), DLOG, HANDLE_EMPTY_MATCH, Con::name, owindow::owindows, 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 1038 of file commands.c.

References owindow::con, xoutput::con, con_move_to_workspace(), DLOG, ELOG, get_output_for_con(), get_output_from_string(), GREP_FIRST, HANDLE_EMPTY_MATCH, Con::name, output_get_content(), owindow::owindows, TAILQ_FOREACH, workspace_is_visible(), 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 277 of file commands.c.

References owindow::con, con_get_workspace(), con_has_children(), con_move_to_workspace(), current_match, DLOG, ELOG, focused, HANDLE_EMPTY_MATCH, match_is_empty(), Con::name, owindow::owindows, TAILQ_EMPTY, TAILQ_FOREACH, Con::type, workspace_next(), workspace_next_on_output(), workspace_prev(), workspace_prev_on_output(), 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 326 of file commands.c.

References owindow::con, con_move_to_workspace(), DLOG, HANDLE_EMPTY_MATCH, Con::name, owindow::owindows, TAILQ_FOREACH, 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 353 of file commands.c.

References owindow::con, con_has_children(), con_move_to_workspace(), current_match, DLOG, ELOG, focused, HANDLE_EMPTY_MATCH, LOG, match_is_empty(), maybe_auto_back_and_forth_workspace(), Con::name, owindow::owindows, TAILQ_EMPTY, TAILQ_FOREACH, Con::type, workspace_get(), 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 399 of file commands.c.

References owindow::con, con_has_children(), con_move_to_workspace(), croot, current_match, DLOG, focused, GREP_FIRST, HANDLE_EMPTY_MATCH, LOG, match_is_empty(), maybe_auto_back_and_forth_workspace(), Con::name, Con::nodes_head, Con::num, output_get_content(), owindow::owindows, TAILQ_EMPTY, TAILQ_FOREACH, Con::type, 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,
long  move_px 
)

Implementation of 'move <direction> [<pixels> [px]]'.

Definition at line 1464 of file commands.c.

References owindow::con, con_focus(), con_is_floating(), D_DOWN, D_LEFT, D_RIGHT, D_UP, DLOG, floating_reposition(), focused, HANDLE_EMPTY_MATCH, owindow::owindows, Con::parent, Con::rect, TAILQ_FOREACH, tree_move(), 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 1791 of file commands.c.

References owindow::con, DLOG, HANDLE_EMPTY_MATCH, Con::name, owindow::owindows, 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 1723 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, owindow::owindows, 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 1767 of file commands.c.

References owindow::con, con_inside_floating(), DLOG, floating_move_to_pointer(), HANDLE_EMPTY_MATCH, Con::name, owindow::owindows, 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  ,
const char *  method,
long  x,
long  y 
)

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

Definition at line 1676 of file commands.c.

References owindow::con, con_is_floating(), DLOG, ELOG, floating_maybe_reassign_ws(), floating_reposition(), HANDLE_EMPTY_MATCH, owindow::owindows, Con::parent, Con::rect, TAILQ_FOREACH, x, Rect::x, y, Rect::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 1127 of file commands.c.

References owindow::con, con_get_workspace(), DLOG, ELOG, HANDLE_EMPTY_MATCH, owindow::owindows, TAILQ_FOREACH, workspace_move_to_output(), 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 759 of file commands.c.

References LOG.

◆ cmd_open()

void cmd_open ( I3_CMD  )

Implementation of 'open'.

Definition at line 1614 of file commands.c.

References con_focus(), 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  )

Implementation of 'reload'.

Definition at line 1578 of file commands.c.

References command_error_nagbar_pid, config_error_nagbar_pid, conn, ipc_send_workspace_event(), kill_nagbar(), load_configuration(), LOG, update_barconfig(), x_set_i3_atoms(), and ysuccess.

Here is the call graph for this function:

◆ 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 639 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, owindow::owindows, TAILQ_FOREACH, Con::window, and ysuccess.

Here is the call graph for this function:

◆ cmd_resize_floating()

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

◆ cmd_resize_set()

void cmd_resize_set ( I3_CMD  ,
long  cwidth,
long  cheight 
)

Implementation of 'resize set <px> [px] <px> [px]'.

Definition at line 682 of file commands.c.

References owindow::con, con_inside_floating(), DLOG, ELOG, floating_resize(), HANDLE_EMPTY_MATCH, owindow::owindows, TAILQ_FOREACH, 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 *  way,
const char *  direction,
int  ppt 
)
static

Definition at line 500 of file commands.c.

References con_num_children(), D_DOWN, D_LEFT, D_RIGHT, D_UP, definitelyGreaterThan(), LOG, Con::parent, Con::percent, resize_find_tiling_participants(), and ysuccess.

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 *  way,
const char *  direction,
int  ppt 
)
static

Definition at line 553 of file commands.c.

References con_num_children(), con_orientation(), definitelyGreaterThan(), HORIZ, L_STACKED, L_TABBED, Con::layout, LOG, Con::nodes_head, Con::parent, Con::percent, TAILQ_FOREACH, Con::type, VERT, and ysuccess.

Referenced by cmd_resize().

Here is the call graph for this function:

◆ cmd_restart()

void cmd_restart ( I3_CMD  )

Implementation of 'restart'.

Definition at line 1597 of file commands.c.

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

Here is the call graph for this function:

◆ cmd_scratchpad_show()

void cmd_scratchpad_show ( I3_CMD  )

Implementation of 'scratchpad show'.

Definition at line 1811 of file commands.c.

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

Here is the call graph for this function:

◆ cmd_shmlog()

void cmd_shmlog ( I3_CMD  ,
const char *  argument 
)

Definition at line 2135 of file commands.c.

References default_shmlog_size, init_logging(), LOG, shmlog_size, update_shmlog_atom(), 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 1152 of file commands.c.

References owindow::con, con_is_docked(), DLOG, ELOG, HANDLE_EMPTY_MATCH, HORIZ, L_SPLITH, Con::layout, LOG, Con::name, owindow::owindows, 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 1426 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(), owindow::owindows, 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 1833 of file commands.c.

References owindow::con, con_by_con_id(), con_by_mark(), con_by_window_id(), con_swap(), DLOG, HANDLE_EMPTY_MATCH, owindow::owindows, 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 1007 of file commands.c.

References owindow::con, con_unmark(), current_match, match_is_empty(), owindow::owindows, 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 845 of file commands.c.

References CF_GLOBAL, con_get_fullscreen_con(), croot, DLOG, ELOG, LOG, workspace_next(), workspace_next_on_output(), workspace_prev(), workspace_prev_on_output(), workspace_show(), 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 925 of file commands.c.

References CF_GLOBAL, con_get_fullscreen_con(), croot, LOG, workspace_back_and_forth(), 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 943 of file commands.c.

References CF_GLOBAL, con_get_fullscreen_con(), croot, DLOG, LOG, maybe_back_and_forth(), workspace_show_by_name(), 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 881 of file commands.c.

References CF_GLOBAL, con_get_fullscreen_con(), croot, GREP_FIRST, LOG, maybe_back_and_forth(), Con::name, Con::nodes_head, Con::num, output_get_content(), TAILQ_FOREACH, workspace_show(), workspace_show_by_name(), ws_name_to_number(), yerror, and ysuccess.

Here is the call graph for this function:

◆ definitelyGreaterThan()

static bool definitelyGreaterThan ( float  a,
float  b,
float  epsilon 
)
static

Definition at line 85 of file commands.c.

Referenced by cmd_resize_tiling_direction(), and cmd_resize_tiling_width_height().

◆ maybe_auto_back_and_forth_workspace()

static Con* maybe_auto_back_and_forth_workspace ( Con workspace)
static

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

◆ TAILQ_HEAD()

typedef TAILQ_HEAD (   owindows_head,
owindow   
)

Definition at line 150 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: