119 lines
2.8 KiB
Lua
119 lines
2.8 KiB
Lua
local beautiful = require("beautiful")
|
|
local awful = require("awful")
|
|
require "functions"
|
|
|
|
-- Signal function to execute when a new client appears.
|
|
client.connect_signal(
|
|
"manage",
|
|
function(c)
|
|
-- Set the windows at the slave
|
|
if not awesome.startup then awful.client.setslave(c) end
|
|
|
|
-- Prevent clients from being unreachable after screen count changes.
|
|
if awesome.startup and not c.size_hints.user_position and not c.size_hints.program_position then
|
|
awful.placement.no_offscreen(c)
|
|
end
|
|
|
|
update_titlebars(c)
|
|
|
|
if not c.below then
|
|
c:raise()
|
|
end
|
|
end
|
|
)
|
|
|
|
-- 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
|
|
)
|
|
|
|
client.connect_signal(
|
|
"focus",
|
|
function(c)
|
|
c.border_color = beautiful.border_focus
|
|
end
|
|
)
|
|
|
|
client.connect_signal(
|
|
"unfocus",
|
|
function(c)
|
|
c.border_color = beautiful.border_normal
|
|
end
|
|
)
|
|
|
|
-- Disable PiP Snapping
|
|
client.connect_signal(
|
|
"property::struts",
|
|
function(c)
|
|
if c:struts().left ~= 0 or c:struts().right ~= 0 or c:struts().top ~= 0 or c:struts().bottom ~= 0 then
|
|
c:struts({ left = 0, right = 0, top = 0, bottom = 0 })
|
|
end
|
|
end
|
|
)
|
|
|
|
client.connect_signal(
|
|
"property::floating",
|
|
function(c)
|
|
if c.floating and not c.maximized and not c.fullscreen then
|
|
c.placement = awful.placement.centered
|
|
end
|
|
|
|
update_titlebars(c)
|
|
end
|
|
)
|
|
|
|
client.connect_signal(
|
|
"property::maximized",
|
|
update_titlebars
|
|
)
|
|
|
|
client.connect_signal(
|
|
"property::fullscreen",
|
|
update_titlebars
|
|
)
|
|
|
|
-- Automatically unminimize windows
|
|
client.connect_signal(
|
|
"property::minimized",
|
|
function(c)
|
|
if c.minimized then
|
|
c.minimized = false
|
|
end
|
|
end
|
|
)
|
|
|
|
-- Re-set wallpaper when a screen's geometry changes (e.g. different resolution)
|
|
screen.connect_signal("property::geometry", set_wallpaper)
|
|
|
|
tag.connect_signal(
|
|
"property::selected",
|
|
function (t)
|
|
local selected = tostring(t.selected) == "false"
|
|
if selected then
|
|
local focus_timer = timer({ timeout = 0.05 })
|
|
focus_timer:connect_signal(
|
|
"timeout",
|
|
function()
|
|
local c = awful.mouse.client_under_pointer()
|
|
if c ~= nil and not c.below then
|
|
client.focus = c
|
|
c:raise()
|
|
end
|
|
focus_timer:stop()
|
|
end)
|
|
focus_timer:start()
|
|
end
|
|
end
|
|
)
|
|
|
|
tag.connect_signal(
|
|
"property::layout",
|
|
function (t)
|
|
for _, c in pairs(t.clients(t)) do
|
|
update_titlebars(c)
|
|
end
|
|
end
|
|
) |