279 lines
7.2 KiB
Lua
279 lines
7.2 KiB
Lua
local awful = require('awful')
|
|
local gears = require('gears')
|
|
local beautiful = require('beautiful')
|
|
local wibox = require('wibox')
|
|
local dpi = beautiful.xresources.apply_dpi
|
|
awful.titlebar.enable_tooltip = true
|
|
awful.titlebar.fallback_name = 'Client'
|
|
|
|
local double_click_event_handler = function(double_click_event)
|
|
if double_click_timer then
|
|
double_click_timer:stop()
|
|
double_click_timer = nil
|
|
double_click_event()
|
|
return
|
|
end
|
|
double_click_timer = gears.timer.start_new(
|
|
0.20,
|
|
function()
|
|
double_click_timer = nil
|
|
return false
|
|
end
|
|
)
|
|
end
|
|
|
|
local create_click_events = function(c)
|
|
-- Titlebar button/click events
|
|
local buttons = gears.table.join(
|
|
awful.button(
|
|
{},
|
|
1,
|
|
function()
|
|
double_click_event_handler(function()
|
|
if c.floating then
|
|
c.floating = false
|
|
return
|
|
end
|
|
c.maximized = not c.maximized
|
|
c:raise()
|
|
return
|
|
end)
|
|
c:activate {context = 'titlebar', action = 'mouse_move'}
|
|
end
|
|
),
|
|
awful.button(
|
|
{},
|
|
3,
|
|
function()
|
|
c:activate {context = 'titlebar', action = 'mouse_resize'}
|
|
end
|
|
)
|
|
)
|
|
return buttons
|
|
end
|
|
|
|
local create_vertical_bar = function(c, pos, bg, size)
|
|
|
|
-- Check if passed position is valid
|
|
if (pos == 'top' or pos == 'bottom') then
|
|
pos = 'left'
|
|
bg = '#FF00FF'
|
|
end
|
|
|
|
awful.titlebar(c, {position = pos, bg = bg, size = size}) : setup {
|
|
{
|
|
{
|
|
awful.titlebar.widget.closebutton(c),
|
|
awful.titlebar.widget.maximizedbutton(c),
|
|
awful.titlebar.widget.minimizebutton(c),
|
|
spacing = dpi(7),
|
|
layout = wibox.layout.fixed.vertical
|
|
},
|
|
margins = dpi(10),
|
|
widget = wibox.container.margin
|
|
},
|
|
{
|
|
buttons = create_click_events(c),
|
|
layout = wibox.layout.flex.vertical
|
|
},
|
|
{
|
|
{
|
|
awful.titlebar.widget.ontopbutton(c),
|
|
awful.titlebar.widget.floatingbutton(c),
|
|
spacing = dpi(7),
|
|
layout = wibox.layout.fixed.vertical
|
|
},
|
|
margins = dpi(10),
|
|
widget = wibox.container.margin
|
|
},
|
|
layout = wibox.layout.align.vertical
|
|
}
|
|
end
|
|
|
|
local create_horizontal_bar = function(c, pos, bg, size)
|
|
|
|
-- Check if passed position is valid
|
|
if (pos == 'left' or pos == 'right') then
|
|
pos = 'top'
|
|
bg = '#FF00FF'
|
|
end
|
|
|
|
awful.titlebar(c, {position = pos, bg = bg, size = size}) : setup {
|
|
{
|
|
{
|
|
awful.titlebar.widget.closebutton(c),
|
|
awful.titlebar.widget.maximizedbutton(c),
|
|
awful.titlebar.widget.minimizebutton(c),
|
|
spacing = dpi(7),
|
|
layout = wibox.layout.fixed.horizontal
|
|
},
|
|
margins = dpi(10),
|
|
widget = wibox.container.margin
|
|
},
|
|
{
|
|
buttons = create_click_events(c),
|
|
layout = wibox.layout.flex.horizontal
|
|
},
|
|
{
|
|
{
|
|
awful.titlebar.widget.ontopbutton(c),
|
|
awful.titlebar.widget.floatingbutton(c),
|
|
spacing = dpi(7),
|
|
layout = wibox.layout.fixed.horizontal
|
|
},
|
|
margins = dpi(10),
|
|
widget = wibox.container.margin
|
|
},
|
|
layout = wibox.layout.align.horizontal
|
|
}
|
|
end
|
|
|
|
local create_vertical_bar_dialog = function(c, pos, bg, size)
|
|
|
|
-- Check if passed position is valid
|
|
if (pos == 'top' or pos == 'bottom') then
|
|
pos = 'left'
|
|
bg = '#FF00FF'
|
|
end
|
|
|
|
awful.titlebar(c, {position = pos, bg = bg, size = size}) : setup {
|
|
{
|
|
{
|
|
awful.titlebar.widget.closebutton(c),
|
|
awful.titlebar.widget.minimizebutton(c),
|
|
awful.titlebar.widget.ontopbutton(c),
|
|
spacing = dpi(7),
|
|
layout = wibox.layout.fixed.vertical
|
|
},
|
|
margins = dpi(10),
|
|
widget = wibox.container.margin
|
|
},
|
|
{
|
|
buttons = create_click_events(c),
|
|
layout = wibox.layout.flex.vertical
|
|
},
|
|
nil,
|
|
layout = wibox.layout.align.vertical
|
|
}
|
|
end
|
|
|
|
local create_horizontal_bar_dialog = function(c, pos, bg, size)
|
|
|
|
-- Check if passed position is valid
|
|
if (pos == 'left' or pos == 'right') then
|
|
pos = 'top'
|
|
bg = '#FF00FF'
|
|
end
|
|
|
|
awful.titlebar(c, {position = pos, bg = bg, size = size}) : setup {
|
|
{
|
|
{
|
|
awful.titlebar.widget.closebutton(c),
|
|
awful.titlebar.widget.ontopbutton(c),
|
|
awful.titlebar.widget.minimizebutton(c),
|
|
spacing = dpi(7),
|
|
layout = wibox.layout.fixed.horizontal
|
|
},
|
|
margins = dpi(10),
|
|
widget = wibox.container.margin
|
|
},
|
|
{
|
|
buttons = create_click_events(c),
|
|
layout = wibox.layout.flex.horizontal
|
|
},
|
|
nil,
|
|
layout = wibox.layout.align.horizontal
|
|
}
|
|
end
|
|
|
|
client.connect_signal(
|
|
'request::titlebars',
|
|
function(c)
|
|
|
|
-- Customize here
|
|
if c.type == 'normal' then
|
|
|
|
if c.class == 'kitty' then
|
|
create_vertical_bar(c, 'left', '#00000099', beautiful.titlebar_size)
|
|
|
|
elseif c.class == 'firefox' then
|
|
create_vertical_bar(c, 'left', beautiful.background, beautiful.titlebar_size)
|
|
|
|
elseif c.class == 'XTerm' or c.class == 'UXTerm' then
|
|
create_horizontal_bar(c, 'top',
|
|
beautiful.xresources.get_current_theme().background, beautiful.titlebar_size)
|
|
|
|
elseif c.class == 'ark' or c.class == 'dolphin' then
|
|
create_vertical_bar(c, 'left', '#00000099', beautiful.titlebar_size)
|
|
|
|
elseif c.instance == 'transmission-qt' then
|
|
create_vertical_bar(c, 'left', '#00000099', beautiful.titlebar_size)
|
|
|
|
elseif c.class == 'Gimp-2.10' or c.class == 'Inkscape' then
|
|
create_vertical_bar(c, 'left',
|
|
beautiful.gtk.get_theme_variables().bg_color, beautiful.titlebar_size)
|
|
|
|
elseif c.class == 'Com.github.johnfactotum.Foliate' then
|
|
create_vertical_bar(c, 'left',
|
|
beautiful.gtk.get_theme_variables().bg_color, beautiful.titlebar_size)
|
|
|
|
elseif c.class == 'Arandr' then
|
|
create_vertical_bar(c, 'left',
|
|
beautiful.gtk.get_theme_variables().bg_color, beautiful.titlebar_size)
|
|
|
|
elseif c.class == 'Ettercap' then
|
|
create_vertical_bar(c, 'left',
|
|
beautiful.gtk.get_theme_variables().base_color, beautiful.titlebar_size)
|
|
|
|
elseif c.class == 'Google-chrome' or c.class == 'Chromium' then
|
|
create_vertical_bar(c, 'left',
|
|
beautiful.gtk.get_theme_variables().base_color, beautiful.titlebar_size)
|
|
|
|
elseif c.class == 'TelegramDesktop' then
|
|
create_vertical_bar(c, 'left', '#17212b', beautiful.titlebar_size)
|
|
|
|
elseif c.class == 'Kvantum Manager' then
|
|
create_vertical_bar(c, 'left', '#00000099', beautiful.titlebar_size)
|
|
|
|
elseif c.class == 'qt5ct' then
|
|
create_vertical_bar(c, 'left', '#00000099', beautiful.titlebar_size)
|
|
|
|
elseif c.class == 'Nemo' then
|
|
create_horizontal_bar(c, 'top',
|
|
beautiful.gtk.get_theme_variables().base_color, beautiful.titlebar_size)
|
|
|
|
else
|
|
create_vertical_bar(c, 'left', beautiful.background, beautiful.titlebar_size)
|
|
end
|
|
|
|
elseif c.type == 'dialog' then
|
|
|
|
if c.role == 'GtkFileChooserDialog' then
|
|
create_vertical_bar_dialog(c, 'left',
|
|
beautiful.gtk.get_theme_variables().bg_color, beautiful.titlebar_size)
|
|
|
|
elseif c.class == 'firefox' then
|
|
create_vertical_bar_dialog(c, 'left',
|
|
beautiful.gtk.get_theme_variables().bg_color, beautiful.titlebar_size)
|
|
|
|
elseif c.class == 'Gimp-2.10' then
|
|
create_vertical_bar_dialog(c, 'left',
|
|
beautiful.gtk.get_theme_variables().bg_color, beautiful.titlebar_size)
|
|
|
|
elseif c.class == 'Arandr' then
|
|
create_vertical_bar(c, 'left',
|
|
beautiful.gtk.get_theme_variables().bg_color, beautiful.titlebar_size)
|
|
|
|
else
|
|
create_vertical_bar_dialog(c, 'left', '#00000099', beautiful.titlebar_size)
|
|
end
|
|
|
|
elseif c.type == 'modal' then
|
|
create_vertical_bar(c, 'left', '#00000099', beautiful.titlebar_size)
|
|
|
|
else
|
|
create_vertical_bar(c, 'left', beautiful.background, beautiful.titlebar_size)
|
|
end
|
|
end
|
|
)
|