diff --git a/src/config.c b/src/config.c index 6739f77..1e2b38e 100644 --- a/src/config.c +++ b/src/config.c @@ -472,11 +472,11 @@ conf_tag_section(void) conf.colors.tagurfg = fetch_opt_first(sec, "#000000", "urgent_fg").str; conf.colors.tagurbg = getcolor(fetch_opt_first(sec, "#DD1111", "urgent_bg").str); conf.colors.tag_occupied_bg = getcolor(fetch_opt_first(sec, "#222222", "occupied_bg").str); + conf.colors.tag_occupied_fg = fetch_opt_first(sec, conf.colors.text, "occupied_fg").str; conf.border.tag = fetch_opt_first(sec, "false", "border").bool; conf.tagautohide = fetch_opt_first(sec, "false", "autohide").bool; conf.tagnamecount = fetch_opt_first(sec, "false", "name_count").bool; - def_tag = fetch_section_first(sec, "default_tag"); position = fetch_opt_first(def_tag, "top", "infobar_position").str; diff --git a/src/ewmh.c b/src/ewmh.c index 8e655e8..eae2d50 100644 --- a/src/ewmh.c +++ b/src/ewmh.c @@ -368,6 +368,8 @@ ewmh_manage_net_wm_state(long data_l[], Client *c) XResizeWindow(dpy, c->win, spgeo[c->screen].width, spgeo[c->screen].height); + XChangeProperty(dpy, c->win, net_atom[net_wm_state], XA_ATOM, 32, + PropModeReplace, (uchar *)&net_atom[net_wm_state_fullscreen], 1); c->tmp_geo = c->geo; @@ -382,6 +384,7 @@ ewmh_manage_net_wm_state(long data_l[], Client *c) } else if(data_l[0] == _NET_WM_STATE_REMOVE && (c->flags & FSSFlag)) { + XChangeProperty(dpy, c->win, net_atom[net_wm_state], XA_ATOM, 32, PropModeReplace, (uchar *)0, 0); c->flags &= ~(FSSFlag | MaxFlag); client_map(c); XReparentWindow(dpy, c->win, c->frame, BORDH, TBARH); diff --git a/src/infobar.c b/src/infobar.c index eeda99d..42678da 100644 --- a/src/infobar.c +++ b/src/infobar.c @@ -268,7 +268,9 @@ infobar_draw_taglist(int sc) ? conf.colors.tagurfg : ((i == seltag[sc] || tags[sc][seltag[sc]].tagad & TagFlag(i)) ? conf.colors.tagselfg - : conf.colors.text); + : (is_occupied[i] + ? conf.colors.tag_occupied_fg + : conf.colors.text)); barwin_refresh_color(infobar[sc].tags[i]); diff --git a/src/screen.c b/src/screen.c index a767909..2798208 100644 --- a/src/screen.c +++ b/src/screen.c @@ -123,7 +123,8 @@ screen_set_sel(int screen) if(screen < 0 || screen > screen_count() - 1) screen = 0; - prevselscreen = selscreen; + if(selscreen != screen) + prevselscreen = selscreen; client_focus(NULL); XWarpPointer(dpy, None, ROOT, 0, 0, 0, 0, @@ -162,7 +163,7 @@ screen_get_sel(void) XChangeProperty(dpy, ROOT, net_atom[wmfs_current_screen], XA_CARDINAL, 32, PropModeReplace, (uchar*)&selscreen, 1); - if(os != selscreen) + if(os != selscreen && os != prevselscreen) prevselscreen = os; return selscreen; diff --git a/src/structs.h b/src/structs.h index 2e78232..64eeab8 100644 --- a/src/structs.h +++ b/src/structs.h @@ -399,6 +399,7 @@ typedef struct uint tagurbg; uint tagselbg; uint tag_occupied_bg; + char *tag_occupied_fg; uint tagbord; char *layout_fg; uint layout_bg; diff --git a/src/tag.c b/src/tag.c index 30fd5d6..f509368 100644 --- a/src/tag.c +++ b/src/tag.c @@ -47,7 +47,8 @@ tag_set(int tag) screen_get_sel(); - prevseltag[selscreen] = seltag[selscreen]; + if(seltag[selscreen] != tag) + prevseltag[selscreen] = seltag[selscreen]; if(conf.tag_round) { diff --git a/wmfsrc.in b/wmfsrc.in index a1170c3..be084ee 100644 --- a/wmfsrc.in +++ b/wmfsrc.in @@ -99,6 +99,7 @@ tag_round = false occupied_bg = "#003366" + occupied_fg = "#D4D4D4" sel_fg = "#191919" sel_bg = "#7E89A2" urgent_bg = "#DD1111"