添加 raise or run 功能并添加对应快捷键
This commit is contained in:
25
src/main.c
25
src/main.c
@@ -101,7 +101,7 @@ void quit(const user_action_arg_t *arg) {
|
||||
|
||||
void select_tag(const user_action_arg_t *arg) {
|
||||
uint32_t tags_mask = get_tags_mask_of_monitor(current_monitor);
|
||||
uint32_t target_tag = (1 << arg->ui) & tags_mask;
|
||||
uint32_t target_tag = arg->ui & tags_mask;
|
||||
if (!target_tag || current_monitor->selected_tags == target_tag) return;
|
||||
|
||||
current_monitor->selected_tags = target_tag;
|
||||
@@ -161,6 +161,29 @@ void focus_monitor(const user_action_arg_t *arg) {
|
||||
/* TODO: 调整鼠标光标 */
|
||||
}
|
||||
|
||||
void raise_or_run(const user_action_arg_t *arg) {
|
||||
const char *class = ((const char **)arg->ptr)[0];
|
||||
const char *command = ((const char **)arg->ptr)[1];
|
||||
user_action_arg_t argument;
|
||||
for (monitor_t *m = monitors; m; m = m->next) {
|
||||
for (client_t *c = m->clients; c; c = c->next) {
|
||||
window_class_instance_t class_instance;
|
||||
get_window_class_instance(c->window, &class_instance);
|
||||
if (!strncmp(class, class_instance.class, sizeof(class_instance.class))) {
|
||||
current_monitor = m;
|
||||
argument.ui = c->tags;
|
||||
select_tag(&argument);
|
||||
focus(c);
|
||||
raise_window(c->window);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
argument.ptr = command;
|
||||
spawn(&argument);
|
||||
}
|
||||
|
||||
/* 调试函数,开发完成后删除 */
|
||||
static void print_monitor_list_info(monitor_t *monitor_list) {
|
||||
logger("========================= monitor info =========================\n");
|
||||
|
||||
Reference in New Issue
Block a user