diff --git a/awesomerc.5.txt b/awesomerc.5.txt
index d448f81c..c4efa93c 100644
--- a/awesomerc.5.txt
+++ b/awesomerc.5.txt
@@ -45,7 +45,6 @@ http://library.gnome.org/devel/pango/stable/PangoMarkupFormat.html.
List of *awesome* markup elements and their attributes:
* bg
- - color: background color
- image: path to a background image
- align: background image alignment
- resize: resize background image to text size
diff --git a/draw.c b/draw.c
index e9469006..f0600f23 100644
--- a/draw.c
+++ b/draw.c
@@ -158,9 +158,6 @@ draw_markup_on_element(markup_parser_data_t *p, const char *elem,
{
draw_parser_data_t *data = p->priv;
- xcolor_init_request_t reqs[3];
- int8_t i, bg_color_nbr = -1, reqs_nbr = -1;
-
/* hack: markup.c validates tags so we can avoid strcmps here */
switch (*elem) {
case 'b':
@@ -180,13 +177,6 @@ draw_markup_on_element(markup_parser_data_t *p, const char *elem,
for(; *names; names++, values++)
switch(a_tokenize(*names, -1))
{
- case A_TK_COLOR:
- reqs[++reqs_nbr] = xcolor_init_unchecked(&data->bg_color,
- *values,
- a_strlen(*values));
-
- bg_color_nbr = reqs_nbr;
- break;
case A_TK_IMAGE:
if(data->bg_image)
image_delete(&data->bg_image);
@@ -202,12 +192,6 @@ draw_markup_on_element(markup_parser_data_t *p, const char *elem,
}
break;
}
-
- for(i = 0; i <= reqs_nbr; i++)
- if(i == bg_color_nbr)
- data->has_bg_color = xcolor_init_reply(reqs[i]);
- else
- xcolor_init_reply(reqs[i]);
}
static bool
@@ -311,9 +295,6 @@ draw_text(draw_context_t *ctx, font_t *font, PangoEllipsizeMode ellip, PangoWrap
len = pdata->len;
}
- if(pdata->has_bg_color)
- draw_rectangle(ctx, area, 1.0, true, &pdata->bg_color);
-
if(pdata->bg_image)
{
x = area.x;
diff --git a/draw.h b/draw.h
index 967b3c22..8cad5023 100644
--- a/draw.h
+++ b/draw.h
@@ -165,8 +165,6 @@ typedef struct
{
int top, left;
} bg_margin;
- bool has_bg_color;
- xcolor_t bg_color;
image_t *bg_image;
alignment_t bg_align;
bool bg_resize;
diff --git a/lib/awful/widget.lua.in b/lib/awful/widget.lua.in
index a9006e23..8d82e847 100644
--- a/lib/awful/widget.lua.in
+++ b/lib/awful/widget.lua.in
@@ -51,7 +51,7 @@ local function taglist_update (screen, w, label, buttons, data)
end
-- Update widgets text
for k, tag in ipairs(tags) do
- w[k].text = label(tag)
+ w[k].text, w[k].bg = label(tag)
if buttons then
if not data[tag] then
-- Replace press function by a new one calling with tags as
@@ -112,7 +112,7 @@ end
-- squares_sel Optional: a user provided image for selected squares.
-- squares_unsel Optional: a user provided image for unselected squares.
-- squares_resize Optional: true or false to resize squares.
--- @return A string to print.
+-- @return A string to print and a background color.
function taglist.label.all(t, args)
if not args then args = {} end
local theme = beautiful.get()
@@ -150,13 +150,13 @@ function taglist.label.all(t, args)
end
end
end
- if bg_color and fg_color then
- text = text .. " "..util.escape(t.name).." "
+ if fg_color then
+ text = text .. " "..util.escape(t.name).." "
else
text = text .. " "..util.escape(t.name).." "
end
text = text .. ""
- return text
+ return text, bg_color
end
--- Return labels for a taglist widget with all *non empty* tags from screen.
@@ -220,7 +220,8 @@ local function tasklist_update(w, buttons, label, data)
w[k]:buttons(data[c])
w[k + 1]:buttons(data[c])
end
- w[k + 1].text, w[k].bg = label(clients[(k + 1) / 2])
+ w[k + 1].text, w[k + 1].bg = label(clients[(k + 1) / 2])
+ w[k].bg = w[k + 1].bg
if w[k + 1].text then
-- Set icon
w[k].image = clients[(k + 1) / 2].icon
@@ -288,15 +289,15 @@ local function widget_tasklist_label_common(c, args)
name = util.escape(c.name) or ""
end
if capi.client.focus == c then
- if bg_focus and fg_focus then
- bg = bg_focus
- text = text .. ""..name..""
+ bg = bg_focus
+ if fg_focus then
+ text = text .. ""..name..""
else
text = text .. name
end
- elseif c.urgent and bg_urgent and fg_urgent then
+ elseif c.urgent and fg_urgent then
bg = bg_urgent
- text = text .. ""..name..""
+ text = text .. ""..name..""
else
text = text .. name
end
@@ -315,7 +316,7 @@ end
-- fg_focus The foreground color for focused client.
-- bg_urgent The background color for urgent clients.
-- fg_urgent The foreground color for urgent clients.
--- @return A string to print.
+-- @return A string to print and a background color.
function tasklist.label.allscreen(c, screen, args)
return widget_tasklist_label_common(c, args)
end
@@ -331,7 +332,7 @@ end
-- fg_focus The foreground color for focused client.
-- bg_urgent The background color for urgent clients.
-- fg_urgent The foreground color for urgent clients.
--- @return A string to print.
+-- @return A string to print and a background color.
function tasklist.label.alltags(c, screen, args)
-- Only print client on the same screen as this widget
if c.screen ~= screen then return end
@@ -349,7 +350,7 @@ end
-- fg_focus The foreground color for focused client.
-- bg_urgent The background color for urgent clients.
-- fg_urgent The foreground color for urgent clients.
--- @return A string to print.
+-- @return A string to print and a background color.
function tasklist.label.currenttags(c, screen, args)
-- Only print client on the same screen as this widget
if c.screen ~= screen then return end
diff --git a/widgets/textbox.c b/widgets/textbox.c
index 5f8c9249..f5483a31 100644
--- a/widgets/textbox.c
+++ b/widgets/textbox.c
@@ -49,6 +49,8 @@ typedef struct
alignment_t align;
/** Margin */
padding_t margin;
+ /** Background color */
+ xcolor_t bg;
} textbox_data_t;
static area_t
@@ -87,6 +89,9 @@ textbox_draw(widget_t *widget, draw_context_t *ctx, area_t geometry,
{
textbox_data_t *d = widget->data;
+ if(d->bg.initialized)
+ draw_rectangle(ctx, geometry, 1.0, true, &d->bg);
+
if(d->border.width > 0)
draw_rectangle(ctx, geometry, d->border.width, false, &d->border.color);
@@ -134,6 +139,7 @@ luaA_textbox_margin(lua_State *L)
* \lfield border_color The border color.
* \lfield align Text alignment, left, center or right.
* \lfield margin Method to pass text margin: a table with top, left, right and bottom keys.
+ * \lfield bg Background color.
*/
static int
luaA_textbox_index(lua_State *L, awesome_token_t token)
@@ -143,6 +149,8 @@ luaA_textbox_index(lua_State *L, awesome_token_t token)
switch(token)
{
+ case A_TK_BG:
+ return luaA_pushcolor(L, &d->bg);
case A_TK_MARGIN:
lua_pushcfunction(L, luaA_textbox_margin);
return 1;
@@ -209,6 +217,12 @@ luaA_textbox_newindex(lua_State *L, awesome_token_t token)
switch(token)
{
+ case A_TK_BG:
+ if(lua_isnil(L, 3))
+ p_clear(&d->bg, 1);
+ else if((buf = luaL_checklstring(L, 3, &len)))
+ xcolor_init_reply(xcolor_init_unchecked(&d->bg, buf, len));
+ break;
case A_TK_ALIGN:
if((buf = luaL_checklstring(L, 3, &len)))
d->align = draw_align_fromstr(buf, len);