summaryrefslogtreecommitdiff
path: root/func
diff options
context:
space:
mode:
Diffstat (limited to 'func')
-rw-r--r--func/noborders.lua20
-rw-r--r--func/sloppyfocus.lua4
-rw-r--r--func/tagnames.lua51
-rw-r--r--func/warpcursor.lua22
4 files changed, 97 insertions, 0 deletions
diff --git a/func/noborders.lua b/func/noborders.lua
new file mode 100644
index 0000000..fe67024
--- /dev/null
+++ b/func/noborders.lua
@@ -0,0 +1,20 @@
+local beautiful = require("beautiful")
+
+-- TODO this function will call arrange multiple times. once per each change of c.border_width
+local function update_borders(s)
+ local max = s.selected_tag.layout.name == "max"
+ local only_one = #s.tiled_clients == 1 -- use tiled_clients so that other floating windows don't affect the count
+
+ -- but iterate over clients instead of tiled_clients as tiled_clients doesn't include maximized windows
+ for _, c in pairs(s.clients) do
+ if c.prevent_kill then
+ c.border_width = beautiful.border_width * 3
+ elseif (max or only_one or c.maximized) and not c.floating then
+ c.border_width = 0
+ else
+ c.border_width = beautiful.border_width
+ end
+ end
+end
+
+screen.connect_signal("arrange", update_borders) -- NOTE this signal may eventually be deprecated. see issue #2581 and the v5 milestone on github
diff --git a/func/sloppyfocus.lua b/func/sloppyfocus.lua
new file mode 100644
index 0000000..a616286
--- /dev/null
+++ b/func/sloppyfocus.lua
@@ -0,0 +1,4 @@
+-- Enable sloppy focus, so that focus follows mouse.
+client.connect_signal("mouse::enter", function(c)
+ c:emit_signal("request::activate", "mouse_enter", { raise = false })
+end)
diff --git a/func/tagnames.lua b/func/tagnames.lua
new file mode 100644
index 0000000..fcd01a4
--- /dev/null
+++ b/func/tagnames.lua
@@ -0,0 +1,51 @@
+--TODO find out why it doesnt work at start
+--local awful = require("awful")
+
+function nametags(s)
+ local tags = s.tags
+ for _, tag in ipairs(tags) do
+ -- set tag basename
+ if tag.basename == nil then
+ tag.basename = tag.name
+ end
+
+ -- check if tag has any clients. if not, use basename
+ if next(tag:clients()) == nil then
+ tag.name = tag.basename
+ else
+ -- loop over all screen clients (ordered top to bottom)
+ local hastag = nil
+ for _, c in ipairs(s.clients) do
+ -- test if client in on the tag
+ for _, ctag in ipairs(c:tags()) do
+ if ctag == tag then
+ hastag = c
+ break
+ end
+ end
+ -- if it does, this will be the tag name. so break
+ if hastag ~= nil then
+ break
+ end
+ end
+ -- set tag name
+ -- there should always be a tag since we checked above so if there isnt then there is clearly a problem
+ --TODO remove this if statement
+ if hastag then
+ tag.name = tag.basename .. ": " .. hastag.class
+ end
+ end
+ end
+end
+
+function nametagsc(c)
+ nametags(c.screen)
+end
+
+client.connect_signal("manage", nametagsc)
+client.connect_signal("swapped", nametagsc)
+client.connect_signal("tagged", nametagsc)
+client.connect_signal("unmanage", nametagsc)
+client.connect_signal("untagged", nametagsc)
+
+--awful.screen.connect_for_each_screen(nametags)
diff --git a/func/warpcursor.lua b/func/warpcursor.lua
new file mode 100644
index 0000000..f1a46bd
--- /dev/null
+++ b/func/warpcursor.lua
@@ -0,0 +1,22 @@
+function warp_cursor(c)
+-- if c ~= client.focus or not c.warp_cursor then
+ if not c.warp_cursor then
+ return
+ end
+
+ -- dont allow moving mouse unless it is over another client or over nothing
+ local canmovemouse = mouse.current_client or (mouse.current_wibox or mouse.current_widget) == nil
+
+ if canmovemouse and mouse.current_client ~= c then
+ mouse.coords {
+ x = c.x + (c.width / 2),
+ y = c.y + (c.height / 2),
+ }
+ end
+end
+
+client.connect_signal("focus", warp_cursor)
+--client.connect_signal("property::size", warp_cursor)
+--client.connect_signal("property::position", warp_cursor)
+
+return warp_cursor