mirror of
https://github.com/DreamMaoMao/maomaowm.git
synced 2025-11-03 09:01:47 -05:00
feat: add dispatch enable_monitor,disable_monitr,toggle_monitor
This commit is contained in:
parent
2764b1103a
commit
15354898c8
4 changed files with 58 additions and 7 deletions
|
|
@ -1031,6 +1031,15 @@ FuncType parse_func_name(char *func_name, Arg *arg, char *arg_value,
|
||||||
(*arg).v = strdup(arg_value);
|
(*arg).v = strdup(arg_value);
|
||||||
(*arg).v2 = strdup(arg_value2);
|
(*arg).v2 = strdup(arg_value2);
|
||||||
(*arg).v3 = strdup(arg_value3);
|
(*arg).v3 = strdup(arg_value3);
|
||||||
|
} else if (strcmp(func_name, "disable_monitor") == 0) {
|
||||||
|
func = disable_monitor;
|
||||||
|
(*arg).v = strdup(arg_value);
|
||||||
|
} else if (strcmp(func_name, "enable_monitor") == 0) {
|
||||||
|
func = enable_monitor;
|
||||||
|
(*arg).v = strdup(arg_value);
|
||||||
|
} else if (strcmp(func_name, "toggle_monitor") == 0) {
|
||||||
|
func = toggle_monitor;
|
||||||
|
(*arg).v = strdup(arg_value);
|
||||||
} else {
|
} else {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -67,3 +67,6 @@ int destroy_all_virtual_output(const Arg *arg);
|
||||||
int focuslast(const Arg *arg);
|
int focuslast(const Arg *arg);
|
||||||
int toggle_trackpad_enable(const Arg *arg);
|
int toggle_trackpad_enable(const Arg *arg);
|
||||||
int setoption(const Arg *arg);
|
int setoption(const Arg *arg);
|
||||||
|
int disable_monitor(const Arg *arg);
|
||||||
|
int enable_monitor(const Arg *arg);
|
||||||
|
int toggle_monitor(const Arg *arg);
|
||||||
|
|
@ -1573,3 +1573,48 @@ int toggleoverview(const Arg *arg) {
|
||||||
refresh_monitors_workspaces_status(selmon);
|
refresh_monitors_workspaces_status(selmon);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int disable_monitor(const Arg *arg) {
|
||||||
|
Monitor *m = NULL;
|
||||||
|
struct wlr_output_state state = {0};
|
||||||
|
wl_list_for_each(m, &mons, link) {
|
||||||
|
if (regex_match(arg->v, m->wlr_output->name)) {
|
||||||
|
wlr_output_state_set_enabled(&state, false);
|
||||||
|
wlr_output_commit_state(m->wlr_output, &state);
|
||||||
|
m->asleep = 1;
|
||||||
|
updatemons(NULL, NULL);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int enable_monitor(const Arg *arg) {
|
||||||
|
Monitor *m = NULL;
|
||||||
|
struct wlr_output_state state = {0};
|
||||||
|
wl_list_for_each(m, &mons, link) {
|
||||||
|
if (regex_match(arg->v, m->wlr_output->name)) {
|
||||||
|
wlr_output_state_set_enabled(&state, true);
|
||||||
|
wlr_output_commit_state(m->wlr_output, &state);
|
||||||
|
m->asleep = 0;
|
||||||
|
updatemons(NULL, NULL);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int toggle_monitor(const Arg *arg) {
|
||||||
|
Monitor *m = NULL;
|
||||||
|
struct wlr_output_state state = {0};
|
||||||
|
wl_list_for_each(m, &mons, link) {
|
||||||
|
if (regex_match(arg->v, m->wlr_output->name)) {
|
||||||
|
wlr_output_state_set_enabled(&state, !m->wlr_output->enabled);
|
||||||
|
wlr_output_commit_state(m->wlr_output, &state);
|
||||||
|
m->asleep = !m->wlr_output->enabled;
|
||||||
|
updatemons(NULL, NULL);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
@ -436,7 +436,6 @@ struct Monitor {
|
||||||
Client *sel, *prevsel;
|
Client *sel, *prevsel;
|
||||||
int isoverview;
|
int isoverview;
|
||||||
int is_in_hotarea;
|
int is_in_hotarea;
|
||||||
int gamma_lut_changed;
|
|
||||||
int asleep;
|
int asleep;
|
||||||
unsigned int visible_clients;
|
unsigned int visible_clients;
|
||||||
unsigned int visible_tiling_clients;
|
unsigned int visible_tiling_clients;
|
||||||
|
|
@ -3988,7 +3987,6 @@ void powermgrsetmode(struct wl_listener *listener, void *data) {
|
||||||
if (!m)
|
if (!m)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
m->gamma_lut_changed = 1; /* Reapply gamma LUT when re-enabling the ouput */
|
|
||||||
wlr_output_state_set_enabled(&state, event->mode);
|
wlr_output_state_set_enabled(&state, event->mode);
|
||||||
wlr_output_commit_state(m->wlr_output, &state);
|
wlr_output_commit_state(m->wlr_output, &state);
|
||||||
|
|
||||||
|
|
@ -5371,10 +5369,6 @@ void updatemons(struct wl_listener *listener, void *data) {
|
||||||
if ((c = focustop(m)) && c->isfullscreen)
|
if ((c = focustop(m)) && c->isfullscreen)
|
||||||
resize(c, m->m, 0);
|
resize(c, m->m, 0);
|
||||||
|
|
||||||
/* Try to re-set the gamma LUT when updating monitors,
|
|
||||||
* it's only really needed when enabling a disabled output, but meh.
|
|
||||||
*/
|
|
||||||
m->gamma_lut_changed = 1;
|
|
||||||
|
|
||||||
config_head->state.x = m->m.x;
|
config_head->state.x = m->m.x;
|
||||||
config_head->state.y = m->m.y;
|
config_head->state.y = m->m.y;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue