From 76ea448b2d615c232ddd7615aadafc9e765de4c4 Mon Sep 17 00:00:00 2001 From: Emmanuel Lepage Vallee Date: Sat, 15 Mar 2014 01:22:09 -0400 Subject: [PATCH] Add and document more beautiful values for [tag,task]lists --- impl/taglist/README.md | 20 +++++++++++++- impl/taglist/init.lua | 17 ++++-------- impl/tasklist/README.md | 18 ++++++++++++- impl/tasklist/init.lua | 59 +++++++++++++++++++---------------------- 4 files changed, 68 insertions(+), 46 deletions(-) diff --git a/impl/taglist/README.md b/impl/taglist/README.md index 594d37c..0abcff4 100644 --- a/impl/taglist/README.md +++ b/impl/taglist/README.md @@ -16,4 +16,22 @@ between the taglist and the tags. This module aim to fix this. Plus, it inherit Radical style and layouts engines for both item and style, so this module could technically be used as a box menu or something like that -without modifications. \ No newline at end of file +without modifications. + +### Beautiful options + +taglist_bg_selected +taglist_fg_selected + +taglist_bg +taglist_fg +taglist_bg_hover +taglist_fg_hover +taglist_bg_used +taglist_fg_used +taglist_bg_urgent +taglist_fg_urgent +taglist_bg_cloned +taglist_fg_cloned +taglist_bg_changed +taglist_fg_changed \ No newline at end of file diff --git a/impl/taglist/init.lua b/impl/taglist/init.lua index 8d68332..386a9bc 100644 --- a/impl/taglist/init.lua +++ b/impl/taglist/init.lua @@ -168,7 +168,7 @@ local function init() capi.tag.connect_signal("property::icon", function(t) local item = cache[t] if item then - item.icon = tag.geticon(t) + item.icon = tag.geticon(t) or beautiful.taglist_default_icon end end) is_init = true @@ -180,22 +180,17 @@ local function new(s) item_style = radical.item.style.arrow_prefix, select_on = radical.base.event.NEVER, fg = beautiful.tasglist_fg or beautiful.fg_normal, + bg = beautiful.tasglist_bg or beautiful.bg_normal, bg_focus = beautiful.taglist_bg_selected, fg_focus = beautiful.taglist_fg_selected, -- fkeys_prefix = true, } for k,v in ipairs {"hover","used","urgent","cloned","changed"} do args["bg_"..v] = beautiful["taglist_bg_"..v] + args["fg_"..v] = beautiful["taglist_fg_"..v] end - instances[s] = radical.bar(args)-- { --- bg_hover = beautiful.menu_bg_focus, --- bg_used = beautiful.taglist_bg_image_used, --- bg_urgent = beautiful.taglist_bg_image_urgent, --- bg_changed = beautiful.taglist_bg_image_changed, --- bg_cloned = beautiful.taglist_bg_image_cloned, --- fg_cloned = "#00bb00", --- } + instances[s] = radical.bar(args) -- Load the innitial set of tags @@ -204,9 +199,7 @@ local function new(s) end -- Per screen signals --- tag.attached_connect_signal(s, "property::selected", tag_added) --- tag.attached_connect_signal(screen, "property::hide", ut) --- tag.attached_connect_signal(s, "property::index", tag_added) +-- tag.attached_connect_signal(screen, "property::hide", ut)! instances[s]:connect_signal("button::press",function(m,item,button_id,mod) if module.buttons and module.buttons[button_id] then diff --git a/impl/tasklist/README.md b/impl/tasklist/README.md index 56e61cd..df81b42 100644 --- a/impl/tasklist/README.md +++ b/impl/tasklist/README.md @@ -1,3 +1,19 @@ ### Beautiful options -tasklist_icon_transformation | function(image) | \ No newline at end of file +tasklist_bg_hover +tasklist_fg_hover +tasklist_underlay_bg_hover +tasklist_bg_urgent +tasklist_fg_urgent +tasklist_underlay_bg_urgent +tasklist_bg_minimized +tasklist_fg_minimized +tasklist_underlay_bg_minimized +tasklist_bg_focus +tasklist_fg_focus +tasklist_underlay_bg_focus +tasklist_fg +tasklist_bg +tasklist_underlay_style +tasklist_icon_transformation +tasklist_default_icon \ No newline at end of file diff --git a/impl/tasklist/init.lua b/impl/tasklist/init.lua index 4e13717..77b173f 100644 --- a/impl/tasklist/init.lua +++ b/impl/tasklist/init.lua @@ -14,8 +14,11 @@ local beautiful = require( "beautiful" ) local client = require( "awful.client" ) local wibox = require( "wibox" ) local client_menu = require("radical.impl.tasklist.client_menu") +local theme = require( "radical.theme") local sticky,urgent,instances,module = {},{},{},{} +local MINIMIZED = 101 +theme.register_color(MINIMIZED , "minimized" , "tasklist_minimized" , true ) -- Default button implementation module.buttons = { @@ -71,6 +74,14 @@ local function urgent_callback(c) end end +local function minimize_callback(c) + local item = instances[c.screen].cache[c] + if item then + local val = c.minimized + item.state[MINIMIZED] = val or nil + end +end + local function unmanage_callback(c) sticky[c] = nil urgent[c] = nil @@ -105,7 +116,7 @@ local function reload_content(c,b,a) local item = cache[c] if item then item.text = c.name or "N/A" - item.icon = c.icon + item.icon = c.icon or beautiful.tasklist_default_icon end end @@ -153,19 +164,24 @@ local function focus(c) end local function new(screen) - local cache,menu = setmetatable({}, { __mode = 'k' }),radical.flexbar { + local args = { select_on=radical.base.event.NEVER, - fg = beautiful.fg_normal, - bg_focus = beautiful.taglist_bg_image_selected2, - bg_urgent = beautiful.taglist_bg_image_urgent2, - bg_hover = beautiful.menu_bg_focus, disable_markup = true, - underlay_style = radical.widgets.underlay.draw_arrow, - overlay = function(data,item,cd,w,h) --- print("foo!") - end, + fg = beautiful.tasklist_fg or beautiful.fg_normal, + bg = beautiful.tasklist_bg or beautiful.fg_normal, + underlay_style = beautiful.tasklist_underlay_style or radical.widgets.underlay.draw_arrow, icon_transformation = beautiful.tasklist_icon_transformation } + for k,v in ipairs {"hover","urgent","minimized","focus"} do + args["bg_"..v] = beautiful["tasklist_bg_"..v] + args["fg_"..v] = beautiful["tasklist_fg_"..v] + args["underlay_bg_"..v] = beautiful["tasklist_underlay_bg_"..v] + end + local cache,menu = setmetatable({}, { __mode = 'k' }),radical.flexbar(args) +-- overlay = function(data,item,cd,w,h) +-- print("foo!") +-- end, +-- } -- Clear the menu and repopulate it local function load_clients(t) @@ -206,28 +222,6 @@ local function new(screen) load_clients(tag.selected(screen)) - -- Try to make awesome think radical.bar is a real widget - -- Use "menu._internal.layout" directly in :add to avoid - -- the proxy overhead, for now it doesn't event work on 3.5.2 --- rawset(menu,"fit",function(self,...) --- return menu._internal.layout.fit(menu._internal.layout,...) --- end) --- rawset(menu,"draw",function(self,...) --- return menu._internal.layout.draw(menu._internal.layout,...) --- end) --- rawset(menu,"add_signal",function(self,...) --- return menu._internal.layout.add_signal(menu._internal.layout,...) --- end) --- rawset(menu,"disconnect_signal",function(a,...) --- return menu._internal.layout.disconnect_signal(menu._internal.layout,...) --- end) --- rawset(menu,"connect_signal",function(a,...) --- return menu._internal.layout.disconnect_signal(menu._internal.layout,...) --- end) --- rawset(menu,"emit_signal",function(a,...) --- return menu._internal.layout.emit_signal(menu._internal.layout,...) --- end) - menu:connect_signal("button::press",function(menu,item,button_id,mod) if module.buttons and module.buttons[button_id] then module.buttons[button_id](item.client,menu,item,button_id,mod) @@ -248,6 +242,7 @@ capi.client.connect_signal("property::ontop" , reload_underlay ) capi.client.connect_signal("property::floating", reload_underlay ) capi.client.connect_signal("property::name" , reload_content ) capi.client.connect_signal("property::icon" , reload_content ) +capi.client.connect_signal("property::minimized", minimize_callback ) return setmetatable(module, { __call = function(_, ...) return new(...) end }) -- kate: space-indent on; indent-width 2; replace-tabs on;