diff --git a/src/dwm.c b/src/dwm.c index 5914811..2b51d65 100644 --- a/src/dwm.c +++ b/src/dwm.c @@ -741,9 +741,11 @@ drawbar(Monitor *m) stw = getsystraywidth(); /* draw status first so it can be overdrawn by tags later */ - drw_setscheme(drw, scheme[SchemeNorm]); - tw = TEXTW(stext) - lrpad / 2 + 2; /* 2px extra right padding */ - drw_text(drw, m->ww - tw - stw, 0, tw, bh, lrpad / 2 - 2, stext, 0); + if (m == selmon || settings_get_status_on_all_monitors()) { + drw_setscheme(drw, scheme[SchemeNorm]); + tw = TEXTW(stext) - lrpad / 2 + 2; /* 2px extra right padding */ + drw_text(drw, m->ww - tw - stw, 0, tw, bh, lrpad / 2 - 2, stext, 0); + } resizebarwin(m); for (c = m->clients; c; c = c->next) { @@ -783,10 +785,9 @@ drawbar(Monitor *m) void drawbars(void) { - Monitor *m; - - for (m = mons; m; m = m->next) + for (Monitor *m = mons; m; m = m->next) { drawbar(m); + } } void @@ -2186,8 +2187,10 @@ updatestatus(void) strcpy(stext, "polytreewm-"VERSION); } - for (Monitor *m = mons; m; m = m->next) { - drawbar(m); + if (settings_get_status_on_all_monitors()) { + drawbars(); + } else { + drawbar(selmon); } updatesystray(); diff --git a/src/settings.c b/src/settings.c index bc808be..1d3b53b 100644 --- a/src/settings.c +++ b/src/settings.c @@ -23,6 +23,7 @@ static bool respect_resize_hints_in_floating_layout = false; static bool show_bar_by_default = true; static bool show_bar_per_tag = false; static unsigned int snap_distance = 32; +static bool status_on_all_monitors = false; static bool swallow_floating = false; int settings_get_border_width() @@ -162,6 +163,17 @@ void settings_set_snap_distance(unsigned int new_snap_distance) snap_distance = new_snap_distance; } +bool settings_get_status_on_all_monitors() +{ + return status_on_all_monitors; +} + +void settings_set_status_on_all_monitors(bool new_status_on_all_monitors) +{ + status_on_all_monitors = new_status_on_all_monitors; + // TODO: notify WM to rearrange clients +} + bool settings_get_swallow_floating() { return swallow_floating; diff --git a/src/settings.h b/src/settings.h index 3668c24..11353a4 100644 --- a/src/settings.h +++ b/src/settings.h @@ -46,6 +46,9 @@ void settings_set_show_bar_per_tag(bool new_show_bar_per_tag); unsigned int settings_get_snap_distance(); void settings_set_snap_distance(unsigned int new_snap_distance); +bool settings_get_status_on_all_monitors(); +void settings_set_status_on_all_monitors(bool new_status_on_all_monitors); + bool settings_get_swallow_floating(); void settings_set_swallow_floating(bool new_swallow_floating);