1
0
Fork 0
mirror of https://github.com/lcpz/awesome-copycats.git synced 2024-12-23 03:32:30 +00:00

fix: change module loading

This commit is contained in:
Akim Glushkov 2015-05-19 09:55:08 +06:00
parent 926a63f282
commit 8dc867833c
2 changed files with 113 additions and 15 deletions

View file

@ -1,37 +1,63 @@
------------------------------------------ ----------------------------------------------------------------
-- Effortless wmii-style dynamic tagging. -- Effortless wmii-style dynamic tagging.
------------------------------------------ ----------------------------------------------------------------
-- Lucas de Vries <lucas@glacicle.org> -- Lucas de Vries <lucas@glacicle.org>
-- Licensed under the WTFPL version 2 -- Licensed under the WTFPL version 2
-- * http://sam.zoy.org/wtfpl/COPYING -- * http://sam.zoy.org/wtfpl/COPYING
----------------------------------------- ----------------------------------------------------------------
-- Cut version -- To use this module add:
----------------------------------------- -- require("eminent")
-- to the top of your rc.lua.
--
-- That's it. Through magical monkey-patching, all you need to
-- do to start dynamic tagging is loading it.
--
-- Use awesome like you normally would, you don't need to
-- change a thing.
----------------------------------------------------------------
-- Grab environment -- Grab environment
local ipairs = ipairs local ipairs = ipairs
local pairs = pairs
local awful = require("awful") local awful = require("awful")
local table = table local table = table
local capi = { local capi = {
tag = tag,
mouse = mouse,
client = client,
screen = screen, screen = screen,
wibox = wibox,
timer = timer,
keygrabber = keygrabber,
} }
local getscreen = capi.tag.getscreen
-- Eminent: Effortless wmii-style dynamic tagging -- Eminent: Effortless wmii-style dynamic tagging
module("eminent") local eminent = {}
--- Create new tag when scrolling right from the last tag
eminent.create_new_tag = true
-- Grab the original functions we're replacing -- Grab the original functions we're replacing
local deflayout = nil local deflayout = nil
local orig = { local orig = {
new = awful.tag.new, new = awful.tag.new,
viewidx = awful.tag.viewidx,
taglist = awful.widget.taglist.new, taglist = awful.widget.taglist.new,
filter = awful.widget.taglist.filter.all, --label = awful.widget.taglist.label.all,
label = awful.widget.taglist.filter.all,
} }
-- Return tags with stuff on them, mark others hidden -- Return tags with stuff on them, mark others hidden
function gettags(screen) function gettags(screen)
local tags = {} local tags = {}
for k, t in ipairs(capi.screen[screen]:tags()) do --for k, t in ipairs(capi.screen[screen]:tags()) do
for k, t in ipairs(awful.tag.gettags(screen)) do
if t.selected or #t:clients() > 0 then if t.selected or #t:clients() > 0 then
awful.tag.setproperty(t, "hide", false) awful.tag.setproperty(t, "hide", false)
table.insert(tags, t) table.insert(tags, t)
@ -49,9 +75,80 @@ awful.tag.new = function (names, screen, layout)
return orig.new(names, screen, layout) return orig.new(names, screen, layout)
end end
-- View tag by relative index
awful.tag.viewidx = function (i, screen)
-- Hide tags
local s = screen or capi.mouse.screen
--local ctags = capi.screen[s]:tags()
local ctags = awful.tag.gettags(s)
local tags = gettags(s)
local sel = awful.tag.selected()
-- Check if we should "create" a new tag
local selidx = awful.util.table.hasitem(tags, sel)
local tagidx = awful.util.table.hasitem(ctags, sel)
-- Create a new tag if needed
if eminent.create_new_tag and
selidx == #tags and i == 1 and #sel:clients() > 0
then
-- Deselect all
awful.tag.viewnone(s)
if #ctags >= tagidx+1 then
-- Focus next
ctags[tagidx+1].selected = true
awful.tag.setproperty(ctags[tagidx+1], "hide", false)
else
-- Create new
local tag = capi.tag { name = ""..(tagidx+1) }
tag.screen = s
tag.selected = true
awful.tag.setproperty(tag, "layout", deflayout)
end
else
-- Call original
orig.viewidx(i, screen)
end
end
-- Taglist label functions -- Taglist label functions
--awful.widget.taglist.label.all = function (t, args)
awful.widget.taglist.filter.all = function (t, args) awful.widget.taglist.filter.all = function (t, args)
if t.selected or #t:clients() > 0 then if t.selected or #t:clients() > 0 then
return orig.filter(t, args) return orig.label(t, args)
end end
end end
-- Update hidden status
local function uc(c) gettags(c.screen) end
--local function ut(t) gettags(t.screen) end
local function ut(s,t) gettags(s.index) end
capi.client.connect_signal("unmanage", uc)
capi.client.connect_signal("new", function(c)
c:connect_signal("property::screen", uc)
c:connect_signal("property::urgent", uc)
c:connect_signal("tagged", uc)
c:connect_signal("untagged", uc)
c:connect_signal("focus", uc)
c:connect_signal("unfocus", uc)
end)
for screen=1, capi.screen.count() do
awful.tag.attached_connect_signal(screen, "property::selected", ut)
awful.tag.attached_connect_signal(screen, "property::icon", ut)
awful.tag.attached_connect_signal(screen, "property::hide", ut)
awful.tag.attached_connect_signal(screen, "property::name", ut)
awful.tag.attached_connect_signal(screen, "property::activated", ut)
awful.tag.attached_connect_signal(screen, "property::screen", ut)
awful.tag.attached_connect_signal(screen, "property::index", ut)
--awful.tag.attached_connect_signal(screen, "tag::history::update",uc)
capi.screen[screen]:connect_signal("tag::history::update", ut)
--capi.screen[screen]:connect_signal("tag::detach", ut)
end
return eminent

View file

@ -13,7 +13,8 @@ local table = table
local string = string local string = string
local next = next local next = next
module("menugen") --module("menugen")
local menugen = {}
--Built in menubar should be checking local applications directory --Built in menubar should be checking local applications directory
menu_gen.all_menu_dirs = { '/usr/share/applications/', '/usr/local/share/applications/', '~/.local/share/applications' } menu_gen.all_menu_dirs = { '/usr/share/applications/', '/usr/local/share/applications/', '~/.local/share/applications' }
@ -23,7 +24,7 @@ menu_utils.wm_name = ""
-- Use MenuBar Parsing Utils to build StartMenu for Awesome -- Use MenuBar Parsing Utils to build StartMenu for Awesome
-- @return awful.menu compliant menu items tree -- @return awful.menu compliant menu items tree
function build_menu() function menugen.build_menu()
local result = {} local result = {}
local menulist = menu_gen.generate() local menulist = menu_gen.generate()
@ -59,4 +60,4 @@ function build_menu()
return result return result
end end
return menugen