mirror of
https://github.com/DreamMaoMao/maomaowm.git
synced 2025-11-02 09:01:43 -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).v2 = strdup(arg_value2);
|
||||
(*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 {
|
||||
return NULL;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -66,4 +66,7 @@ int create_virtual_output(const Arg *arg);
|
|||
int destroy_all_virtual_output(const Arg *arg);
|
||||
int focuslast(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);
|
||||
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;
|
||||
int isoverview;
|
||||
int is_in_hotarea;
|
||||
int gamma_lut_changed;
|
||||
int asleep;
|
||||
unsigned int visible_clients;
|
||||
unsigned int visible_tiling_clients;
|
||||
|
|
@ -3988,7 +3987,6 @@ void powermgrsetmode(struct wl_listener *listener, void *data) {
|
|||
if (!m)
|
||||
return;
|
||||
|
||||
m->gamma_lut_changed = 1; /* Reapply gamma LUT when re-enabling the ouput */
|
||||
wlr_output_state_set_enabled(&state, event->mode);
|
||||
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)
|
||||
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.y = m->m.y;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue