From e53d6c685367f193173cca078b21bef592cab388 Mon Sep 17 00:00:00 2001 From: crater2150 Date: Thu, 1 Dec 2011 13:03:54 +0100 Subject: [PATCH] aweswt fix from https://github.com/funkotron/awesome/blob/master/aweswt.lua --- aweswt.lua | 114 ++++++++++++++++++++++++++++++----------------------- 1 file changed, 65 insertions(+), 49 deletions(-) diff --git a/aweswt.lua b/aweswt.lua index 4d8a0a4..c9c8120 100644 --- a/aweswt.lua +++ b/aweswt.lua @@ -1,50 +1,66 @@ - -- aweswt.lua - local io=io - local table=table - local pairs=pairs - local awful=awful - local client=client - local string=string - local USE_T=true - module("aweswt") - function get_out (a) - local f=io.popen (a) - t={} - for line in f:lines() do - table.insert(t, line ) - end - return t - end - function get_input (a) - s1='echo -e "'..a..'"|dmenu -i' - return get_out(s1) - end - - function switch() - local clients = client.get() - if table.getn(clients) == 0 then - return - end - local m1="" - local t2={} - local tmp - for i, c in pairs(clients) do - if USE_T then do - tmp=i..':'..string.sub(c['name'], 1, 20) - end - else do - tmp=i..':'..c['instance']..'.'..c['class'] - end - end - m1=m1..tmp..'\n' - t2[tmp]=c - end - local t6=t2[get_input(m1)[1]] - if t6 then - local ctags = t6:tags() - awful.tag.viewonly(ctags[1]) - client.focus = t6 - t6:raise() - end - end +-- aweswt.lua +-- Application switcher using dmenu +-- +local io = io +local table = table +local pairs = pairs +local awful = awful +local client = client +local string = string +local USE_NAME = true + +module("aweswt") + +function get_out (a) + local f = io.popen(a) + t = {} + for line in f:lines() do + table.insert(t, line) + end + return t +end + +function get_input (a) + local dmenu = "dmenu -nf '#888888' -nb '#222222' -sf '#ffffff' -sb '#285577' -p 'switch to application:' -fn 'Terminus 8' -i" + s1 = 'echo "' .. a .. '" | ' .. dmenu + return get_out(s1) +end + +function switch () + local clients = client.get() + + if table.getn(clients) == 0 then + return + end + + local client_list_table = {} + local apps = {} + + for key, client in pairs(clients) do + local app + + if USE_NAME then + --app = key .. ':' .. string.sub(client['name'], 1, 20) + app = client['name'] + else + app = key .. ':' .. client['instance'] .. '.' .. client['class'] + end + + table.insert(client_list_table, app) + apps[app] = client + end + + table.sort(client_list_table, function(a, b) + return string.lower(a) < string.lower(b) + end) + local client_list = table.concat(client_list_table, "\n") + + local client_selected = apps[get_input(client_list)[1]] + if client_selected then + local ctags = client_selected:tags() + awful.tag.viewonly(ctags[1]) + client.focus = client_selected + client_selected:raise() + end +end