diff --git a/clib/style.c b/clib/style.c index 0e32e51..49b15b6 100644 --- a/clib/style.c +++ b/clib/style.c @@ -24,7 +24,8 @@ void style_set(const gchar *font, gint x, gint y, gint off_x, gint off_y, gint width, gint height, gdouble r, gdouble g, gdouble b, - gdouble a) { + gdouble a, const gchar *bg, const gchar *border, + gdouble border_width) { if (font) { pango_font_description_free(lualock.style.font_desc); lualock.style.font_desc = pango_font_description_from_string(font); @@ -41,6 +42,18 @@ void style_set(const gchar *font, gint x, gint y, gint off_x, gint off_y, lualock.style.b = b; lualock.style.a = a; + GdkRGBA bg_color, border_color; + + gdk_rgba_parse(&bg_color, bg ? bg : "white"); + + lualock.style.bg_color = bg_color; + + gdk_rgba_parse(&border_color, border ? border : "rgba(0, 0, 0, 0.6)"); + + lualock.style.border_color = border_color; + + lualock.style.border_width = border_width; + cairo_surface_t *old_pw_surface = lualock.pw_surface; lualock.pw_surface = create_surface(width, height); cairo_surface_destroy(old_pw_surface); @@ -58,6 +71,9 @@ int lualock_lua_style_set(lua_State *L) { lua_getfield(L, 1, "off_y"); lua_getfield(L, 1, "width"); lua_getfield(L, 1, "height"); + lua_getfield(L, 1, "bg_color"); + lua_getfield(L, 1, "border_color"); + lua_getfield(L, 1, "border_width"); style_set(luaL_optstring(L, 2, DEFAULT_FONT), luaL_optnumber(L, 3, lualock.style.x), @@ -66,7 +82,10 @@ int lualock_lua_style_set(lua_State *L) { luaL_optnumber(L, 6, lualock.style.off_y), luaL_optnumber(L, 7, lualock.style.width), luaL_optnumber(L, 8, lualock.style.height), - r, g, b, a); + r, g, b, a, + lua_tostring(L, 9), + lua_tostring(L, 10), + luaL_optnumber(L, 11, lualock.style.border_width)); return 0; } diff --git a/config/rc.lua b/config/rc.lua index 45acbd5..49bdaa4 100644 --- a/config/rc.lua +++ b/config/rc.lua @@ -3,7 +3,8 @@ local oocairo = require "oocairo" -- {{{ lualock settings style{ color = "#333333", font = "Sans 12", x = 500, y = 400, off_x = 5, - off_y = 6, width = 150, height = 24 } + off_y = 6, width = 150, height = 24, bg_color = 'rgba(255, 255, 255, 1)', + border_color = 'rgba(0, 0, 0, 0.6)', border_width = 2 } prefs{ timeout = 10 * 60 } -- }}} diff --git a/drawing.c b/drawing.c index 8804298..7102216 100644 --- a/drawing.c +++ b/drawing.c @@ -29,10 +29,10 @@ void draw_password_field(cairo_t *cr) { cairo_rectangle(cr, 0, 0, lualock.style.width, lualock.style.height); cairo_clip_preserve(cr); - cairo_set_source_rgb(cr, 1, 1, 1); + gdk_cairo_set_source_rgba(cr, &lualock.style.bg_color); cairo_fill_preserve(cr); - cairo_set_source_rgba(cr, 0, 0, 0, .6); - cairo_set_line_width(cr, 2.0); + gdk_cairo_set_source_rgba(cr, &lualock.style.border_color); + cairo_set_line_width(cr, lualock.style.border_width); cairo_stroke(cr); } diff --git a/lualock.c b/lualock.c index d90c15b..941f7f5 100644 --- a/lualock.c +++ b/lualock.c @@ -98,6 +98,7 @@ static void init_style(void) { lualock.style.g = 0; lualock.style.b = 0; lualock.style.a = 1; + lualock.style.border_width = 2; } static void init_cairo(void) { diff --git a/lualock.h b/lualock.h index c6aea89..11fe1af 100644 --- a/lualock.h +++ b/lualock.h @@ -40,6 +40,10 @@ typedef struct { gdouble g; gdouble b; gdouble a; + + GdkRGBA bg_color; + GdkRGBA border_color; + gdouble border_width; } style_t; typedef struct {