mirror of
https://github.com/DreamMaoMao/maomaowm.git
synced 2025-10-31 22:25:29 -04:00
feat: add dispatch toggleoverlay
This commit is contained in:
parent
d5ba4e1c87
commit
fc5e88b337
5 changed files with 39 additions and 2 deletions
|
|
@ -85,6 +85,7 @@ maxmizescreencolor=0x89aa61ff
|
|||
urgentcolor=0xad401fff
|
||||
scratchpadcolor=0x516c93ff
|
||||
globalcolor=0xb153a7ff
|
||||
overlaycolor=0x14a57cff
|
||||
|
||||
# layout circle limit
|
||||
# if not set, it will circle all layout
|
||||
|
|
@ -196,6 +197,7 @@ bind=ALT,a,togglemaxmizescreen,
|
|||
bind=ALT,f,togglefullscreen,
|
||||
bind=ALT+SHIFT,f,togglefakefullscreen,
|
||||
bind=SUPER,i,minized,
|
||||
bind=SUPER,o,toggleoverlay,
|
||||
bind=SUPER+SHIFT,I,restore_minized
|
||||
bind=ALT,z,toggle_scratchpad
|
||||
|
||||
|
|
|
|||
|
|
@ -162,6 +162,7 @@ typedef struct {
|
|||
float urgentcolor[4];
|
||||
float scratchpadcolor[4];
|
||||
float globalcolor[4];
|
||||
float overlaycolor[4];
|
||||
|
||||
char autostart[3][256];
|
||||
|
||||
|
|
@ -460,6 +461,8 @@ FuncType parse_func_name(char *func_name, Arg *arg, char *arg_value) {
|
|||
func = togglefullscreen;
|
||||
} else if (strcmp(func_name, "togglefakefullscreen") == 0) {
|
||||
func = togglefakefullscreen;
|
||||
} else if (strcmp(func_name, "toggleoverlay") == 0) {
|
||||
func = toggleoverlay;
|
||||
} else if (strcmp(func_name, "minized") == 0) {
|
||||
func = minized;
|
||||
} else if (strcmp(func_name, "restore_minized") == 0) {
|
||||
|
|
@ -834,6 +837,13 @@ void parse_config_line(Config *config, const char *line) {
|
|||
} else {
|
||||
convert_hex_to_rgba(config->globalcolor, color);
|
||||
}
|
||||
} else if (strcmp(key, "overlaycolor") == 0) {
|
||||
long int color = parse_color(value);
|
||||
if (color == -1) {
|
||||
fprintf(stderr, "Error: Invalid overlaycolor format: %s\n", value);
|
||||
} else {
|
||||
convert_hex_to_rgba(config->overlaycolor, color);
|
||||
}
|
||||
} else if (strcmp(key, "autostart") == 0) {
|
||||
if (sscanf(value, "%[^,],%[^,],%[^,]", config->autostart[0],
|
||||
config->autostart[1], config->autostart[2]) != 3) {
|
||||
|
|
@ -1272,6 +1282,7 @@ void override_config(void) {
|
|||
memcpy(urgentcolor, config.urgentcolor, sizeof(urgentcolor));
|
||||
memcpy(scratchpadcolor, config.scratchpadcolor, sizeof(scratchpadcolor));
|
||||
memcpy(globalcolor, config.globalcolor, sizeof(globalcolor));
|
||||
memcpy(overlaycolor, config.overlaycolor, sizeof(overlaycolor));
|
||||
}
|
||||
|
||||
void set_value_default() {
|
||||
|
|
@ -1367,6 +1378,7 @@ void set_value_default() {
|
|||
memcpy(config.urgentcolor, urgentcolor, sizeof(urgentcolor));
|
||||
memcpy(config.scratchpadcolor, scratchpadcolor, sizeof(scratchpadcolor));
|
||||
memcpy(config.globalcolor, globalcolor, sizeof(globalcolor));
|
||||
memcpy(config.overlaycolor, overlaycolor, sizeof(overlaycolor));
|
||||
}
|
||||
|
||||
void set_default_key_bindings(Config *config) {
|
||||
|
|
|
|||
|
|
@ -67,6 +67,7 @@ float maxmizescreencolor[] = COLOR(0x89aa61ff);
|
|||
float urgentcolor[] = COLOR(0xad401fff);
|
||||
float scratchpadcolor[] = COLOR(0x516c93ff);
|
||||
float globalcolor[] = COLOR(0xb153a7ff);
|
||||
float overlaycolor[] = COLOR(0x14a57cff);
|
||||
// char *cursor_theme = "Bibata-Modern-Ice";
|
||||
|
||||
int overviewgappi = 5; /* overview时 窗口与边缘 缝隙大小 */
|
||||
|
|
|
|||
|
|
@ -50,3 +50,4 @@ void incovgaps(const Arg *arg);
|
|||
void incigaps(const Arg *arg);
|
||||
void defaultgaps(const Arg *arg);
|
||||
void togglefakefullscreen(const Arg *arg);
|
||||
void toggleoverlay(const Arg *arg);
|
||||
|
|
|
|||
25
src/maomao.c
25
src/maomao.c
|
|
@ -231,7 +231,7 @@ struct Client {
|
|||
bool dirty;
|
||||
uint32_t configure_serial;
|
||||
struct wlr_foreign_toplevel_handle_v1 *foreign_toplevel;
|
||||
int isfloating, isurgent, isfullscreen, isfakefullscreen, need_float_size_reduce, isminied;
|
||||
int isfloating, isurgent, isfullscreen, isfakefullscreen, need_float_size_reduce, isminied, isoverlay;
|
||||
int ismaxmizescreen;
|
||||
int overview_backup_bw;
|
||||
int fullscreen_backup_x, fullscreen_backup_y, fullscreen_backup_w,
|
||||
|
|
@ -1244,6 +1244,24 @@ void clear_fullscreen_flag(Client *c) {
|
|||
}
|
||||
}
|
||||
|
||||
void toggleoverlay(const Arg *arg) {
|
||||
if (!selmon->sel || !selmon->sel->mon || selmon->sel->isfullscreen) {
|
||||
return;
|
||||
}
|
||||
|
||||
selmon->sel->isoverlay ^= 1;
|
||||
|
||||
if (selmon->sel->isoverlay) {
|
||||
wlr_scene_node_reparent(&selmon->sel->scene->node,
|
||||
layers[LyrFS]);
|
||||
wlr_scene_node_raise_to_top(&selmon->sel->scene->node);
|
||||
} else {
|
||||
wlr_scene_node_reparent(&selmon->sel->scene->node,
|
||||
layers[selmon->sel->isfloating ? LyrFloat : LyrTile]);
|
||||
}
|
||||
setborder_color(selmon->sel);
|
||||
}
|
||||
|
||||
void minized(const Arg *arg) {
|
||||
if (selmon->sel && !selmon->sel->isminied) {
|
||||
set_minized(selmon->sel);
|
||||
|
|
@ -4094,6 +4112,7 @@ mapnotify(struct wl_listener *listener, void *data) {
|
|||
c->iskilling = 0;
|
||||
c->isglobal = 0;
|
||||
c->isminied = 0;
|
||||
c->isoverlay = 0;
|
||||
c->is_in_scratchpad = 0;
|
||||
c->is_scratchpad_show = 0;
|
||||
c->need_float_size_reduce = 0;
|
||||
|
|
@ -4695,7 +4714,9 @@ void setborder_color(Client *c) {
|
|||
client_set_border_color(c, scratchpadcolor);
|
||||
} else if (c->isglobal && selmon && c == selmon->sel) {
|
||||
client_set_border_color(c, globalcolor);
|
||||
} else if (c->ismaxmizescreen && selmon && c == selmon->sel) {
|
||||
} else if (c->isoverlay && selmon && c == selmon->sel) {
|
||||
client_set_border_color(c, overlaycolor);
|
||||
} else if (c->ismaxmizescreen && selmon && c == selmon->sel) {
|
||||
client_set_border_color(c, maxmizescreencolor);
|
||||
} else if (selmon && c == selmon->sel) {
|
||||
client_set_border_color(c, focuscolor);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue