awesome: serenityos titlebar mode, title text drop shadow, cyclefocus stylings

This commit is contained in:
Cynthia Foxwell 2022-12-24 22:22:36 -07:00
parent 7e3c217495
commit d241e19413
5 changed files with 90 additions and 49 deletions

View file

@ -6,7 +6,10 @@ return {
editor = "nano", editor = "nano",
screenshot = HOME .. "/.local/bin/screenie", screenshot = HOME .. "/.local/bin/screenie",
modkey = "Mod4", modkey = "Mod4",
theme = "amora_focus", theme = {
scheme = "amora_focus",
serenity_titlebar = false,
},
font = "Terminus 8", font = "Terminus 8",
gap = 4, gap = 4,
border_width = 1, border_width = 1,

View file

@ -5,7 +5,7 @@ local gears = require("gears")
local vars = require("modules/vars") local vars = require("modules/vars")
local config = vars.config local config = vars.config
local theme = require("themes/".. config.theme) local theme = require("themes/".. config.theme.scheme)
require("icons")(vars.env.ICON_DIR, theme) require("icons")(vars.env.ICON_DIR, theme)

View file

@ -2,8 +2,10 @@
local awful = require("awful") local awful = require("awful")
local beautiful = require("beautiful") local beautiful = require("beautiful")
local gears = require("gears") local gears = require("gears")
local lain = require("lain")
local wibox = require("wibox") local wibox = require("wibox")
local vars = require("modules/vars")
local win9x = require("modules/win9x") local win9x = require("modules/win9x")
local function make_win9x_button(child) local function make_win9x_button(child)
@ -23,46 +25,27 @@ local function make_win9x_button(child)
} }
end end
-- serentiy uses 19px tall titlebars :( local function _serenity_lines(cr, width, height, focus)
--[[local _lines = {} local col = focus and beautiful.__colors.color0 or beautiful.win9x_outer
for i = 1, 8 do
_lines[#_lines + 1] = wibox.widget({
widget = wibox.widget.separator,
color = beautiful.win9x_dark,
orientation = "horizontal",
thickness = 1,
forced_height = 1,
border_width = 0,
})
_lines[#_lines + 1] = wibox.widget({
widget = wibox.widget.separator,
color = "#00000000",
orientation = "horizontal",
thickness = 1,
forced_height = 1,
border_width = 0,
})
end
_lines[#_lines + 1] = wibox.widget({
widget = wibox.widget.separator,
color = beautiful.win9x_dark,
orientation = "horizontal",
thickness = 1,
forced_height = 1,
border_width = 0,
})
_lines.layout = wibox.layout.fixed.vertical
local serenity_lines = { local y = 0
_lines, for i = 1, math.ceil(height / 2) do
top = 2, cr:set_source(gears.color(col))
left = 2, cr:rectangle(0, y, width, 1)
bottom = 2, cr:fill()
right = 0,
layout = wibox.container.margin, y = y + 2
}--]] end
end
local function _serenity_lines_focus(cr, width, height)
_serenity_lines(cr, width, height, true)
end
local function _serenity_lines_normal(cr, width, height)
_serenity_lines(cr, width, height, false)
end
-- Add a titlebar if titlebars_enabled is set to true in the rules. -- Add a titlebar if titlebars_enabled is set to true in the rules.
local serenity = vars.config.theme.serenity_titlebar or false
client.connect_signal("request::titlebars", function(c) client.connect_signal("request::titlebars", function(c)
-- buttons for the titlebar -- buttons for the titlebar
local buttons = gears.table.join( local buttons = gears.table.join(
@ -108,8 +91,34 @@ client.connect_signal("request::titlebars", function(c)
layout = wibox.container.background, layout = wibox.container.background,
}) })
local lines = wibox.widget({
wibox.widget({}),
shape = c.focus and _serenity_lines_focus or _serenity_lines_normal,
layout = wibox.container.background,
})
local function update_lines(focus)
lines:set_shape(focus and _serenity_lines_focus or _serenity_lines_normal)
end
local shadow_title = awful.titlebar.widget.titlewidget(c)
shadow_title:set_markup_silently(lain.util.markup(beautiful.win9x_outer, c.name or awful.titlebar.fallback_name))
c:connect_signal("focus", function()
shadow_title:set_markup_silently(lain.util.markup(beautiful.__colors.color0, c.name or awful.titlebar.fallback_name))
update_lines(true)
end)
c:connect_signal("unfocus", function()
shadow_title:set_markup_silently(lain.util.markup(beautiful.win9x_outer, c.name or awful.titlebar.fallback_name))
update_lines(false)
end)
c:connect_signal("property::name", function()
local focused = c == client.focus
local col = focused and beautiful.__colors.color0 or beautiful.win9x_outer
shadow_title:set_markup_silently(lain.util.markup(col, c.name or awful.titlebar.fallback_name))
end)
local titlebar = awful.titlebar(c, { local titlebar = awful.titlebar(c, {
size = 24, size = serenity and 25 or 24,
fg_normal = beautiful.win9x_unfocus, fg_normal = beautiful.win9x_unfocus,
fg_focus = beautiful.fg_focus, fg_focus = beautiful.fg_focus,
bg_normal = beautiful.win9x_dark, bg_normal = beautiful.win9x_dark,
@ -137,20 +146,32 @@ client.connect_signal("request::titlebars", function(c)
awful.titlebar.widget.iconwidget(c), awful.titlebar.widget.iconwidget(c),
left = 2, left = 2,
right = 2, right = 2,
top = 1, top = serenity and 2 or 1,
bottom = 1, bottom = 1,
layout = wibox.container.margin, layout = wibox.container.margin,
}, },
{ {
{
shadow_title,
top = serenity and 1 or 2,
left = 1,
layout = wibox.container.margin,
},
awful.titlebar.widget.titlewidget(c), awful.titlebar.widget.titlewidget(c),
left = 2, layout = wibox.layout.stack,
layout = wibox.container.margin,
}, },
buttons = buttons, buttons = buttons,
spacing = 2,
layout = wibox.layout.fixed.horizontal layout = wibox.layout.fixed.horizontal
}, },
{ -- Middle { -- Middle
--serenity_lines, serenity and {
lines,
top = 2,
bottom = 2,
left = 2,
layout = wibox.container.margin,
} or nil,
buttons = buttons, buttons = buttons,
layout = wibox.layout.flex.horizontal layout = wibox.layout.flex.horizontal
}, },
@ -174,10 +195,10 @@ client.connect_signal("request::titlebars", function(c)
left = 2, left = 2,
right = 2, right = 2,
top = 1, top = 1,
bottom = 1, bottom = serenity and 2 or 1,
layout = wibox.container.margin, layout = wibox.container.margin,
}, },
forced_height = 18, forced_height = serenity and 19 or 18,
layout = wibox.layout.align.horizontal, layout = wibox.layout.align.horizontal,
}, },
{ {

View file

@ -109,12 +109,12 @@ local function border_top(cr, width, height)
cr:fill() cr:fill()
cr:set_source(gears.color(beautiful.win9x_bright)) cr:set_source(gears.color(beautiful.win9x_bright))
cr:rectangle(1, 1, width - 2, 1) cr:rectangle(1, 1, width - 3, 1)
cr:rectangle(1, 2, 1, height - 2) cr:rectangle(1, 2, 1, height - 2)
cr:fill() cr:fill()
cr:set_source(gears.color(beautiful.win9x_dark)) cr:set_source(gears.color(beautiful.win9x_dark))
cr:rectangle(width - 2, 2, 1, height) cr:rectangle(width - 2, 1, 1, height)
cr:fill() cr:fill()
cr:set_source(gears.color(beautiful.win9x_outer)) cr:set_source(gears.color(beautiful.win9x_outer))
@ -163,4 +163,4 @@ return {
}, },
taskbar = taskbar, taskbar = taskbar,
divider = divider, divider = divider,
} }

View file

@ -2,9 +2,11 @@
pcall(require, "luarocks.loader") pcall(require, "luarocks.loader")
local awful = require("awful") local awful = require("awful")
local beautiful = require("beautiful")
local cyclefocus = require("cyclefocus") local cyclefocus = require("cyclefocus")
local lain = require("lain") local lain = require("lain")
local naughty = require("naughty") local naughty = require("naughty")
local wibox = require("wibox")
require("awful.autofocus") require("awful.autofocus")
require("awful.hotkeys_popup.keys") require("awful.hotkeys_popup.keys")
@ -84,6 +86,21 @@ cyclefocus.move_mouse_pointer = false
cyclefocus.cycle_filters = { cyclefocus.cycle_filters = {
function() return true end, function() return true end,
} }
cyclefocus.preset_for_offset = {
default = function(preset, args)
preset.font = vars.config.font
preset.icon_size = 16
local title = cyclefocus.get_client_title(args.client, false)
local col = args.client.minimized and beautiful.fg_minimize or beautiful.fg_normal
preset.text = lain.util.markup(col, title)
end,
["0"] = function(preset, args)
preset.font = vars.config.font
preset.icon_size = 16
preset.text = lain.util.markup(beautiful.tasklist_fg_focus, cyclefocus.get_client_title(args.client, false))
end,
}
cyclefocus.icon_col_width = 2
-- Re-set wallpaper when a screen's geometry changes (e.g. different resolution) -- Re-set wallpaper when a screen's geometry changes (e.g. different resolution)
screen.connect_signal("property::geometry", utils.set_wallpaper) screen.connect_signal("property::geometry", utils.set_wallpaper)