diff --git a/main/init.lua b/main/init.lua index d9b3a45..04dbf0c 100644 --- a/main/init.lua +++ b/main/init.lua @@ -3,6 +3,7 @@ local _M = { rules = require("main.rules"), layouts = require("main.layouts"), taglist = require("main.taglist"), + signals = require("main.signals"), user_vars = require("main.user_vars"), } diff --git a/main/rules.lua b/main/rules.lua index a4a7b3b..a4344b1 100644 --- a/main/rules.lua +++ b/main/rules.lua @@ -12,7 +12,6 @@ function _M.get(clientkeys, clientbuttons) border_color = beautiful.border_normal, focus = awful.client.focus.filter, raise = true, - titlebars_enabled = false, keys = clientkeys, buttons = clientbuttons, screen = awful.screen.preferred, @@ -65,7 +64,7 @@ function _M.get(clientkeys, clientbuttons) }, { - rule = { class = "Firefox" }, + rule = { instance = "Firefox" }, properties = { screen = 1, tag = RC.tags[2], @@ -74,7 +73,7 @@ function _M.get(clientkeys, clientbuttons) }, { - rule = { class = "Discord" }, + rule = { instance = "Discord" }, properties = { screen = 1, tag = RC.tags[6], diff --git a/main/signals.lua b/main/signals.lua index e69de29..3f2bd7e 100644 --- a/main/signals.lua +++ b/main/signals.lua @@ -0,0 +1,68 @@ +local gears = require("gears") +local awful = require("awful") +local wibox = require("wibox") +local beautiful = require("beautiful") + +-- Signal function to execute when a new client appears. +client.connect_signal("manage", function(c) + -- Set the windows at the slave, + -- i.e. put it at the end of others instead of setting it master. + -- if not awesome.startup then awful.client.setslave(c) end + + if awesome.startup and not c.size_hints.user_position and not c.size_hints.program_position then + -- Prevent clients from being unreachable after screen count changes. + awful.placement.no_offscreen(c) + end +end) + +-- Add a titlebar if titlebars_enabled is set to true in the rules. +client.connect_signal("request::titlebars", function(c) + -- buttons for the titlebar + local buttons = gears.table.join( + awful.button({}, 1, function() + c:emit_signal("request::activate", "titlebar", { raise = true }) + awful.mouse.client.move(c) + end), + awful.button({}, 3, function() + c:emit_signal("request::activate", "titlebar", { raise = true }) + awful.mouse.client.resize(c) + end) + ) + + awful.titlebar(c):setup({ + { -- Left + awful.titlebar.widget.iconwidget(c), + buttons = buttons, + layout = wibox.layout.fixed.horizontal, + }, + { -- Middle + { -- Title + align = "center", + widget = awful.titlebar.widget.titlewidget(c), + }, + buttons = buttons, + layout = wibox.layout.flex.horizontal, + }, + { -- Right + awful.titlebar.widget.floatingbutton(c), + awful.titlebar.widget.maximizedbutton(c), + awful.titlebar.widget.stickybutton(c), + awful.titlebar.widget.ontopbutton(c), + awful.titlebar.widget.closebutton(c), + layout = wibox.layout.fixed.horizontal(), + }, + layout = wibox.layout.align.horizontal, + }) +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) diff --git a/rc.lua b/rc.lua index 63343d4..e918dd2 100644 --- a/rc.lua +++ b/rc.lua @@ -10,7 +10,6 @@ local menubar = require("menubar") local hotkeys_popup = require("awful.hotkeys_popup") local main = require("main") require("awful.autofocus") -require("main.error_handling") beautiful.init(require("theme")) @@ -19,6 +18,8 @@ RC.vars = main.user_vars() RC.layouts = main.layouts() RC.tags = main.taglist() +awful.spawn.with_shell("picom -b") + -- Table of layouts to cover with awful.layout.inc, order matters. awful.layout.layouts = RC.layouts @@ -353,69 +354,3 @@ root.keys(globalkeys) -- }}} awful.rules.rules = main.rules(clientkeys, clientbuttons) - --- {{{ Signals --- Signal function to execute when a new client appears. -client.connect_signal("manage", function(c) - -- Set the windows at the slave, - -- i.e. put it at the end of others instead of setting it master. - -- if not awesome.startup then awful.client.setslave(c) end - - if awesome.startup and not c.size_hints.user_position and not c.size_hints.program_position then - -- Prevent clients from being unreachable after screen count changes. - awful.placement.no_offscreen(c) - end -end) - --- Add a titlebar if titlebars_enabled is set to true in the rules. -client.connect_signal("request::titlebars", function(c) - -- buttons for the titlebar - local buttons = gears.table.join( - awful.button({}, 1, function() - c:emit_signal("request::activate", "titlebar", { raise = true }) - awful.mouse.client.move(c) - end), - awful.button({}, 3, function() - c:emit_signal("request::activate", "titlebar", { raise = true }) - awful.mouse.client.resize(c) - end) - ) - - awful.titlebar(c):setup({ - { -- Left - awful.titlebar.widget.iconwidget(c), - buttons = buttons, - layout = wibox.layout.fixed.horizontal, - }, - { -- Middle - { -- Title - align = "center", - widget = awful.titlebar.widget.titlewidget(c), - }, - buttons = buttons, - layout = wibox.layout.flex.horizontal, - }, - { -- Right - awful.titlebar.widget.floatingbutton(c), - awful.titlebar.widget.maximizedbutton(c), - awful.titlebar.widget.stickybutton(c), - awful.titlebar.widget.ontopbutton(c), - awful.titlebar.widget.closebutton(c), - layout = wibox.layout.fixed.horizontal(), - }, - layout = wibox.layout.align.horizontal, - }) -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) --- }}}