This repository has been archived on 2025-07-31. You can view files and clone it, but cannot push or open issues or pull requests.
Files
dotfiles/.config/awesome/signals/init.lua

119 lines
2.8 KiB
Lua
Executable File

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
)