X-Git-Url: https://git.madduck.net/etc/awesome.git/blobdiff_plain/206f4d0e804d12549ef06ebbe6ba979e57621f6d..0828bfa394c12520db723c23d7e1490d7775b068:/util/init.lua

diff --git a/util/init.lua b/util/init.lua
index 4e82cd7..1dfff65 100644
--- a/util/init.lua
+++ b/util/init.lua
@@ -38,10 +38,7 @@ function util.menu_clients_current_tags(menu, args)
     -- Final list of menu items.
     local cls_t = {}
 
-    if cls_tags == nil
-    then
-        return nil
-    end
+    if cls_tags == nil then return nil end
 
     -- For each selected tag get all clients of that tag and add them to
     -- the menu. A click on a menu item will raise that client.
@@ -63,17 +60,11 @@ function util.menu_clients_current_tags(menu, args)
     end
 
     -- No clients? Then quit.
-    if #cls_t <= 0
-    then
-        return nil
-    end
+    if #cls_t <= 0 then return nil end
 
     -- menu may contain some predefined values, otherwise start with a
     -- fresh menu.
-    if not menu
-    then
-        menu = {}
-    end
+    if not menu then menu = {} end
 
     -- Set the list of items and show the menu.
     menu.items = cls_t
@@ -163,8 +154,24 @@ function util.tag_view_nonempty(direction, sc)
    end
 end
 
--- Dynamically rename the current tag you have focused.
-function util.prompt_rename_tag(mypromptbox)
+-- {{{ Dynamic tagging
+--
+-- Add a new tag
+function util.add_tag(mypromptbox)
+    awful.prompt.run({prompt="New tag name: "}, mypromptbox[mouse.screen].widget,
+    function(text)
+        if text:len() > 0 then
+            props = { selected = true }
+            tag = awful.tag.add(new_name, props)
+            tag.name = text
+            tag:emit_signal("property::name")
+        end
+    end)
+end
+
+-- Rename current tag
+-- @author: minism
+function util.rename_tag(mypromptbox)
     local tag = awful.tag.selected(mouse.screen)
     awful.prompt.run({prompt="Rename tag: "}, mypromptbox[mouse.screen].widget,
     function(text)
@@ -175,12 +182,32 @@ function util.prompt_rename_tag(mypromptbox)
     end)
 end
 
+-- Move current tag
+-- pos in {-1, 1} <-> {previous, next} tag position
+function util.move_tag(pos)
+    local tag = awful.tag.selected(mouse.screen)
+    local idx = awful.tag.getidx(tag)
+    if tonumber(pos) <= -1 then
+        awful.tag.move(idx - 1, tag)
+    else
+        awful.tag.move(idx + 1, tag)
+    end
+end
+
+-- Remove current tag (if empty)
+-- Any rule set on the tag shall be broken
+function util.remove_tag()
+    local tag = awful.tag.selected(mouse.screen)
+    local prevtag = awful.tag.gettags(mouse.screen)[awful.tag.getidx(tag) - 1]
+    awful.tag.delete(tag, prevtag)
+end
+--
+-- }}}
+
 -- On the fly useless gaps change
 function util.useless_gaps_resize(thatmuch)
-    if beautiful.useless_gap_width then
-        beautiful.useless_gap_width = tonumber(beautiful.useless_gap_width) + thatmuch
-        awful.layout.arrange(mouse.screen)
-    end
+    beautiful.useless_gap_width = tonumber(beautiful.useless_gap_width) + thatmuch
+    awful.layout.arrange(mouse.screen)
 end
 
 return setmetatable(util, { __index = wrequire })