return;
}
+ if (strcmp(ctype, "workspace") == 0) {
+ current_match->workspace = regex_new(cvalue);
+ return;
+ }
+
ELOG("Unknown criterion: %s\n", ctype);
}
}
/*
- * Implementation of 'border normal|none|1pixel|toggle|pixel'.
+ * Implementation of 'border normal|pixel [<n>]', 'border none|1pixel|toggle'.
*
*/
void cmd_border(I3_CMD, char *border_style_str, char *border_width) {
FREE(con->mark);
con->mark_changed = true;
}
- DLOG("removed all window marks");
+ DLOG("Removed all window marks.\n");
} else {
Con *con = con_by_mark(mark);
if (con != NULL) {
FREE(con->mark);
con->mark_changed = true;
}
- DLOG("removed window mark %s\n", mark);
+ DLOG("Removed window mark \"%s\".\n", mark);
}
cmd_output->needs_tree_render = true;
ysuccess(true);
}
+/*
+ * Implementation of 'move [window|container] [to] position mouse'
+ *
+ */
+void cmd_move_window_to_mouse(I3_CMD) {
+ HANDLE_EMPTY_MATCH;
+
+ owindow *current;
+ TAILQ_FOREACH(current, &owindows, owindows) {
+ Con *floating_con = con_inside_floating(current->con);
+ if (floating_con == NULL) {
+ DLOG("con %p / %s is not floating, cannot move it to the mouse position.\n",
+ current->con, current->con->name);
+ continue;
+ }
+
+ DLOG("moving floating container %p / %s to cursor position\n", floating_con, floating_con->name);
+ floating_move_to_pointer(floating_con);
+ }
+
+ cmd_output->needs_tree_render = true;
+ ysuccess(true);
+}
+
/*
* Implementation of 'move scratchpad'.
*
ysuccess(true);
}
+/*
+ * Implementation of 'title_format <format>'
+ *
+ */
+void cmd_title_format(I3_CMD, char *format) {
+ DLOG("setting title_format to \"%s\"\n", format);
+ HANDLE_EMPTY_MATCH;
+
+ owindow *current;
+ TAILQ_FOREACH(current, &owindows, owindows) {
+ if (current->con->window == NULL)
+ continue;
+
+ DLOG("setting title_format for %p / %s\n", current->con, current->con->name);
+ FREE(current->con->window->title_format);
+
+ /* If we only display the title without anything else, we can skip the parsing step,
+ * so we remove the title format altogether. */
+ if (strcasecmp(format, "%title") != 0) {
+ current->con->window->title_format = sstrdup(format);
+
+ i3String *formatted_title = window_parse_title_format(current->con->window);
+ ewmh_update_visible_name(current->con->window->id, i3string_as_utf8(formatted_title));
+ I3STRING_FREE(formatted_title);
+ } else {
+ /* We can remove _NET_WM_VISIBLE_NAME since we don't display a custom title. */
+ ewmh_update_visible_name(current->con->window->id, NULL);
+ }
+
+ /* Make sure the window title is redrawn immediately. */
+ current->con->window->name_x_changed = true;
+ }
+
+ cmd_output->needs_tree_render = true;
+ ysuccess(true);
+}
+
/*
* Implementation of 'rename workspace [<name>] to <name>'
*
*/
void cmd_rename_workspace(I3_CMD, char *old_name, char *new_name) {
if (strncasecmp(new_name, "__", strlen("__")) == 0) {
- LOG("Cannot rename workspace to \"%s\": names starting with __ are i3-internal.", new_name);
+ LOG("Cannot rename workspace to \"%s\": names starting with __ are i3-internal.\n", new_name);
ysuccess(false);
return;
}