diff --git a/helpers/client.lua b/helpers/client.lua
index d0eaf08..7c1cbb5 100644
--- a/helpers/client.lua
+++ b/helpers/client.lua
@@ -8,10 +8,14 @@ local _client = {}
--
-- @param c A client
function _client.turn_off(c, current_tag)
- if current_tag == nil then current_tag = c.screen.selected_tag end
+ if current_tag == nil then
+ current_tag = c.screen.selected_tag
+ end
local ctags = {}
for k, tag in pairs(c:tags()) do
- if tag ~= current_tag then table.insert(ctags, tag) end
+ if tag ~= current_tag then
+ table.insert(ctags, tag)
+ end
end
c:tags(ctags)
end
@@ -21,9 +25,11 @@ end
-- @param c A client
function _client.turn_on(c)
local current_tag = c.screen.selected_tag
- ctags = {current_tag}
+ ctags = { current_tag }
for k, tag in pairs(c:tags()) do
- if tag ~= current_tag then table.insert(ctags, tag) end
+ if tag ~= current_tag then
+ table.insert(ctags, tag)
+ end
end
c:tags(ctags)
c:raise()
@@ -35,9 +41,15 @@ end
-- @param to_c The client to which to write all properties
-- @param from_c The client from which to read all properties
function _client.sync(to_c, from_c)
- if not from_c or not to_c then return end
- if not from_c.valid or not to_c.valid then return end
- if from_c.modal then return end
+ if not from_c or not to_c then
+ return
+ end
+ if not from_c.valid or not to_c.valid then
+ return
+ end
+ if from_c.modal then
+ return
+ end
to_c.floating = from_c.floating
to_c.maximized = from_c.maximized
to_c.above = from_c.above
@@ -52,16 +64,21 @@ end
-- @param pid The process ID
-- @return True if the passed client is a childprocess of the given PID otherwise false
function _client.is_child_of(c, pid)
- -- io.popen is normally discouraged. Should probably be changed
- if not c or not c.valid then return false end
- if tostring(c.pid) == tostring(pid) then return true end
- local pid_cmd = [[pstree -T -p -a -s ]] .. tostring(c.pid) ..
- [[ | sed '2q;d' | grep -o '[0-9]*$' | tr -d '\n']]
+ -- io.popen is normally discouraged. Should probably be changed
+ if not c or not c.valid then
+ return false
+ end
+ if tostring(c.pid) == tostring(pid) then
+ return true
+ end
+ local pid_cmd = [[pstree -T -p -a -s ]]
+ .. tostring(c.pid)
+ .. [[ | sed '2q;d' | grep -o '[0-9]*$' | tr -d '\n']]
local handle = io.popen(pid_cmd)
local parent_pid = handle:read("*a")
handle:close()
- return tostring(parent_pid) == tostring(pid) or tostring(parent_pid) ==
- tostring(c.pid)
+ return tostring(parent_pid) == tostring(pid)
+ or tostring(parent_pid) == tostring(c.pid)
end
--- Finds all clients that satisfy the passed rule
@@ -69,7 +86,9 @@ end
-- @param rule The rule to be searched for
-- @retrun A list of clients that match the given rule
function _client.find(rule)
- local function matcher(c) return awful.rules.match(c, rule) end
+ local function matcher(c)
+ return awful.rules.match(c, rule)
+ end
local clients = client.get()
local findex = gears.table.hasitem(clients, client.focus) or 1
local start = gears.math.cycle(#clients, findex + 1)
@@ -82,22 +101,26 @@ function _client.find(rule)
return matches
end
-
--- Gets the next client by direction from the focused one
---
+--
-- @param direction it the direction as a string ("up", "down", "left" or "right")
-- @retrun the client in the given direction starting at the currently focused one, nil otherwise
function _client.get_by_direction(direction)
local sel = client.focus
- if not sel then return nil end
+ if not sel then
+ return nil
+ end
local cltbl = sel.screen:get_clients()
local geomtbl = {}
for i, cl in ipairs(cltbl) do
geomtbl[i] = cl:geometry()
end
- local target = gears.geometry.rectangle.get_in_direction(direction, geomtbl, sel:geometry())
+ local target = gears.geometry.rectangle.get_in_direction(
+ direction,
+ geomtbl,
+ sel:geometry()
+ )
return cltbl[target]
end
-
return _client
diff --git a/helpers/color.lua b/helpers/color.lua
index 09e003b..22d6501 100644
--- a/helpers/color.lua
+++ b/helpers/color.lua
@@ -1,23 +1,18 @@
-
-
local _color = {}
-
-
--- Try to guess if a color is dark or light.
--
-- @string color The color with hexadecimal HTML format `"#RRGGBB"`.
-- @treturn bool `true` if the color is dark, `false` if it is light.
function _color.is_dark(color)
-- Try to determine if the color is dark or light
- local numeric_value = 0;
+ local numeric_value = 0
for s in color:gmatch("[a-fA-F0-9][a-fA-F0-9]") do
- numeric_value = numeric_value + tonumber("0x"..s);
+ numeric_value = numeric_value + tonumber("0x" .. s)
end
return (numeric_value < 383)
end
-
--- Lighten a color.
--
-- @string color The color to lighten with hexadecimal HTML format `"#RRGGBB"`.
@@ -26,9 +21,9 @@ end
function _color.lighten(color, amount)
amount = amount or 26
local c = {
- r = tonumber("0x"..color:sub(2,3)),
- g = tonumber("0x"..color:sub(4,5)),
- b = tonumber("0x"..color:sub(6,7)),
+ r = tonumber("0x" .. color:sub(2, 3)),
+ g = tonumber("0x" .. color:sub(4, 5)),
+ b = tonumber("0x" .. color:sub(6, 7)),
}
c.r = c.r + amount
@@ -41,7 +36,7 @@ function _color.lighten(color, amount)
c.b = c.b < 0 and 0 or c.b
c.b = c.b > 255 and 255 or c.b
- return string.format('#%02x%02x%02x', c.r, c.g, c.b)
+ return string.format("#%02x%02x%02x", c.r, c.g, c.b)
end
--- Darken a color.
@@ -54,6 +49,4 @@ function _color.darken(color, amount)
return _color.lighten(color, -amount)
end
-
-
return _color
diff --git a/helpers/filesystem.lua b/helpers/filesystem.lua
index 0d8ed11..9f65d0e 100644
--- a/helpers/filesystem.lua
+++ b/helpers/filesystem.lua
@@ -13,21 +13,36 @@ function _filesystem.list_directory_files(path, exts, recursive)
local files, valid_exts = {}, {}
-- Transforms { "jpg", ... } into { [jpg] = #, ... }
- if exts then for i, j in ipairs(exts) do valid_exts[j:lower()] = i end end
+ if exts then
+ for i, j in ipairs(exts) do
+ valid_exts[j:lower()] = i
+ end
+ end
-- Build a table of files from the path with the required extensions
- local file_list = Gio.File.new_for_path(path):enumerate_children("standard::*", 0)
+ local file_list = Gio.File.new_for_path(path):enumerate_children(
+ "standard::*",
+ 0
+ )
if file_list then
- for file in function() return file_list:next_file() end do
+ for file in function()
+ return file_list:next_file()
+ end do
local file_type = file:get_file_type()
if file_type == "REGULAR" then
local file_name = file:get_display_name()
- if not exts or valid_exts[file_name:lower():match(".+%.(.*)$") or ""] then
+ if
+ not exts
+ or valid_exts[file_name:lower():match(".+%.(.*)$") or ""]
+ then
table.insert(files, file_name)
end
elseif recursive and file_type == "DIRECTORY" then
local file_name = file:get_display_name()
- files = gears.table.join(files, list_directory_files(file_name, exts, recursive))
+ files = gears.table.join(
+ files,
+ list_directory_files(file_name, exts, recursive)
+ )
end
end
end
@@ -35,5 +50,4 @@ function _filesystem.list_directory_files(path, exts, recursive)
return files
end
-
return _filesystem
diff --git a/helpers/init.lua b/helpers/init.lua
index 41ac702..f2c898e 100644
--- a/helpers/init.lua
+++ b/helpers/init.lua
@@ -3,5 +3,5 @@ return {
color = require(... .. ".color"),
filesystem = require(... .. ".filesystem"),
shape = require(... .. ".shape"),
- time = require(... .. ".time")
+ time = require(... .. ".time"),
}
diff --git a/helpers/shape.lua b/helpers/shape.lua
index 31883aa..9c96d83 100644
--- a/helpers/shape.lua
+++ b/helpers/shape.lua
@@ -14,10 +14,17 @@ end
function shape.prrect(radius, tl, tr, br, bl)
return function(cr, width, height)
- gears.shape.partially_rounded_rect(cr, width, height, tl, tr, br, bl,
- radius)
+ gears.shape.partially_rounded_rect(
+ cr,
+ width,
+ height,
+ tl,
+ tr,
+ br,
+ bl,
+ radius
+ )
end
end
-
return shape
diff --git a/helpers/time.lua b/helpers/time.lua
index dc2a9d4..5ab0f25 100644
--- a/helpers/time.lua
+++ b/helpers/time.lua
@@ -1,8 +1,5 @@
-
-
local time = {}
-
--- Parse a time string to seconds (from midnight)
--
-- @string time The time (`HH:MM:SS`)
@@ -14,7 +11,6 @@ function time.hhmmss_to_seconds(time)
return (hour_sec + min_sec + get_sec)
end
-
--- Get time difference in seconds.
--
-- @tparam string base The time to compare from (`HH:MM:SS`).
@@ -25,5 +21,4 @@ function time.time_diff(base, compare)
return diff
end
-
return time
diff --git a/init.lua b/init.lua
index b04983e..23c0acf 100644
--- a/init.lua
+++ b/init.lua
@@ -1,10 +1,11 @@
--[[
Bling
Layouts, widgets and utilities for Awesome WM
---]] return {
+--]]
+return {
layout = require(... .. ".layout"),
module = require(... .. ".module"),
helpers = require(... .. ".helpers"),
signal = require(... .. ".signal"),
- widget = require(... .. ".widget")
+ widget = require(... .. ".widget"),
}
diff --git a/layout/centered.lua b/layout/centered.lua
index e2203fd..c1f79c2 100644
--- a/layout/centered.lua
+++ b/layout/centered.lua
@@ -16,10 +16,10 @@ function mylayout.arrange(p)
local nslaves = #p.clients - nmaster
local master_area_width = area.width * mwfact
- local slave_area_width = area.width - master_area_width
- local master_area_x = area.x + 0.5*slave_area_width
+ local slave_area_width = area.width - master_area_width
+ local master_area_x = area.x + 0.5 * slave_area_width
- local number_of_left_sided_slaves =math.floor(nslaves/2)
+ local number_of_left_sided_slaves = math.floor(nslaves / 2)
local number_of_right_sided_slaves = nslaves - number_of_left_sided_slaves
local left_iterator = 0
local right_iterator = 0
@@ -30,69 +30,73 @@ function mylayout.arrange(p)
return
end
- -- Special case: one slave -> relapse into awesomes masterstack tile layout
+ -- Special case: one slave -> relapse into awesomes masterstack tile layout
if nslaves == 1 then
awful.layout.suit.tile.right.arrange(p)
return
- end
+ end
-- Special case: no slaves -> fullscreen master area
if nslaves < 1 then
- master_area_width = area.width
+ master_area_width = area.width
master_area_x = area.x
- end
-
+ end
+
-- iterate through masters
- for idx=1,nmaster do
- local c = p.clients[idx]
- local g
- g = {
- x = master_area_x,
- y = area.y + (nmaster-idx)*(area.height/nmaster),
- width = master_area_width,
- height = area.height/nmaster,
- }
- p.geometries[c] = g
+ for idx = 1, nmaster do
+ local c = p.clients[idx]
+ local g
+ g = {
+ x = master_area_x,
+ y = area.y + (nmaster - idx) * (area.height / nmaster),
+ width = master_area_width,
+ height = area.height / nmaster,
+ }
+ p.geometries[c] = g
end
-- iterate through slaves
- for idx=1,nslaves do -- idx=nmaster+1,#p.clients do
- local c = p.clients[idx+nmaster]
- if idx % 2 == 0 then
- g = {
- x = area.x,
- y = area.y + left_iterator * (area.height/number_of_left_sided_slaves),
- width = slave_area_width/2,
- height = area.height/number_of_left_sided_slaves,
- }
- left_iterator = left_iterator + 1
- else
- g = {
- x = area.x + master_area_width + slave_area_width/2,
- y = area.y + right_iterator * (area.height/number_of_right_sided_slaves),
- width = slave_area_width/2,
- height = area.height/number_of_right_sided_slaves,
- }
- right_iterator = right_iterator + 1
-
- end
- p.geometries[c] = g
+ for idx = 1, nslaves do -- idx=nmaster+1,#p.clients do
+ local c = p.clients[idx + nmaster]
+ if idx % 2 == 0 then
+ g = {
+ x = area.x,
+ y = area.y
+ + left_iterator
+ * (area.height / number_of_left_sided_slaves),
+ width = slave_area_width / 2,
+ height = area.height / number_of_left_sided_slaves,
+ }
+ left_iterator = left_iterator + 1
+ else
+ g = {
+ x = area.x + master_area_width + slave_area_width / 2,
+ y = area.y
+ + right_iterator
+ * (area.height / number_of_right_sided_slaves),
+ width = slave_area_width / 2,
+ height = area.height / number_of_right_sided_slaves,
+ }
+ right_iterator = right_iterator + 1
+ end
+ p.geometries[c] = g
end
end
-local icon_raw = gears.filesystem.get_configuration_dir() .. tostring(...):match("^.*bling"):gsub("%.", "/") .. "/icons/layouts/centered.png"
+local icon_raw = gears.filesystem.get_configuration_dir()
+ .. tostring(...):match("^.*bling"):gsub("%.", "/")
+ .. "/icons/layouts/centered.png"
local function get_icon()
- if icon_raw ~= nil then
- return gcolor.recolor_image(icon_raw, beautiful.fg_normal)
- else
- return nil
- end
+ if icon_raw ~= nil then
+ return gcolor.recolor_image(icon_raw, beautiful.fg_normal)
+ else
+ return nil
+ end
end
-
return {
- layout = mylayout,
- icon_raw = icon_raw,
- get_icon = get_icon,
+ layout = mylayout,
+ icon_raw = icon_raw,
+ get_icon = get_icon,
}
diff --git a/layout/deck.lua b/layout/deck.lua
index 3b70f7d..a1e7546 100644
--- a/layout/deck.lua
+++ b/layout/deck.lua
@@ -25,9 +25,9 @@ function mylayout.arrange(p)
end
local xoffset = area.width * 0.1 / (client_count - 1)
- local yoffset = area.height * 0.1 / (client_count - 1)
+ local yoffset = area.height * 0.1 / (client_count - 1)
- for idx=1,client_count do
+ for idx = 1, client_count do
local c = p.clients[idx]
local g = {
x = area.x + (idx - 1) * xoffset,
@@ -39,7 +39,9 @@ function mylayout.arrange(p)
end
end
-local icon_raw = gears.filesystem.get_configuration_dir() .. tostring(...):match("^.*bling"):gsub("%.", "/") .. "/icons/layouts/deck.png"
+local icon_raw = gears.filesystem.get_configuration_dir()
+ .. tostring(...):match("^.*bling"):gsub("%.", "/")
+ .. "/icons/layouts/deck.png"
local function get_icon()
if icon_raw ~= nil then
diff --git a/layout/equalarea.lua b/layout/equalarea.lua
index 9a89191..eab2acc 100644
--- a/layout/equalarea.lua
+++ b/layout/equalarea.lua
@@ -1,84 +1,96 @@
local gears = require("gears")
local gcolor = require("gears.color")
local beautiful = require("beautiful")
-local math = math
-local screen = screen
+local math = math
+local screen = screen
local mylayout = {}
mylayout.name = "equalarea"
-local function divide(p,g,low,high,cls,mwfact,mcount)
- if low == high then
- p.geometries[cls[low]] = g
- else
- local masters = math.max(0,math.min(mcount,high)-low+1)
- local numblock = high-low + 1
- local slaves = numblock - masters
- local smalldiv
- if numblock > 5 and (numblock % 5) == 0 then
- smalldiv = math.floor(numblock/5)
+local function divide(p, g, low, high, cls, mwfact, mcount)
+ if low == high then
+ p.geometries[cls[low]] = g
else
- if (numblock % 3) == 0 then
- smalldiv = math.floor(numblock/3)
- else
- smalldiv = math.floor(numblock/2)
- end
+ local masters = math.max(0, math.min(mcount, high) - low + 1)
+ local numblock = high - low + 1
+ local slaves = numblock - masters
+ local smalldiv
+ if numblock > 5 and (numblock % 5) == 0 then
+ smalldiv = math.floor(numblock / 5)
+ else
+ if (numblock % 3) == 0 then
+ smalldiv = math.floor(numblock / 3)
+ else
+ smalldiv = math.floor(numblock / 2)
+ end
+ end
+ local bigdiv = numblock - smalldiv
+ local smallmasters = math.min(masters, smalldiv)
+ local bigmasters = masters - smallmasters
+ local smallg = {}
+ local bigg = {}
+ smallg.x = g.x
+ smallg.y = g.y
+ if g.width > (g.height * 1.3) then
+ smallg.height = g.height
+ bigg.height = g.height
+ bigg.width = math.floor(
+ g.width
+ * (bigmasters * (mwfact - 1) + bigdiv)
+ / (slaves + mwfact * masters)
+ )
+ smallg.width = g.width - bigg.width
+ bigg.y = g.y
+ bigg.x = g.x + smallg.width
+ else
+ smallg.width = g.width
+ bigg.width = g.width
+ bigg.height = math.floor(
+ g.height
+ * (bigmasters * (mwfact - 1) + bigdiv)
+ / (slaves + mwfact * masters)
+ )
+ smallg.height = g.height - bigg.height
+ bigg.x = g.x
+ bigg.y = g.y + smallg.height
+ end
+ divide(p, smallg, low, high - bigdiv, cls, mwfact, mcount)
+ divide(p, bigg, low + smalldiv, high, cls, mwfact, mcount)
end
- local bigdiv = numblock - smalldiv
- local smallmasters = math.min(masters,smalldiv)
- local bigmasters = masters-smallmasters
- local smallg = {}
- local bigg = {}
- smallg.x = g.x
- smallg.y = g.y
- if g.width > (g.height*1.3) then
- smallg.height = g.height
- bigg.height = g.height
- bigg.width = math.floor(g.width*(bigmasters*(mwfact-1)+bigdiv)/(slaves+mwfact*masters))
- smallg.width = g.width-bigg.width
- bigg.y = g.y
- bigg.x = g.x + smallg.width
- else
- smallg.width = g.width
- bigg.width = g.width
- bigg.height = math.floor(g.height*(bigmasters*(mwfact-1)+bigdiv)/(slaves+mwfact*masters))
- smallg.height = g.height-bigg.height
- bigg.x = g.x
- bigg.y = g.y + smallg.height
- end
- divide(p,smallg,low,high-bigdiv,cls,mwfact,mcount)
- divide(p,bigg,low+smalldiv,high,cls,mwfact,mcount)
- end
- return
+ return
end
function mylayout.arrange(p)
- local t = p.tag or screen[p.screen].selected_tag
- local wa = p.workarea
- local cls = p.clients
+ local t = p.tag or screen[p.screen].selected_tag
+ local wa = p.workarea
+ local cls = p.clients
- if #cls == 0 then return end
- local mwfact = t.master_width_factor*2
- local mcount = t.master_count
- local g = {}
- g.height = wa.height
- g.width = wa.width
- g.x = wa.x
- g.y = wa.y
- divide(p,g,1,#cls,cls,mwfact,mcount)
+ if #cls == 0 then
+ return
+ end
+ local mwfact = t.master_width_factor * 2
+ local mcount = t.master_count
+ local g = {}
+ g.height = wa.height
+ g.width = wa.width
+ g.x = wa.x
+ g.y = wa.y
+ divide(p, g, 1, #cls, cls, mwfact, mcount)
end
-local icon_raw = gears.filesystem.get_configuration_dir() .. tostring(...):match("^.*bling"):gsub("%.", "/") .. "/icons/layouts/equalarea.png"
+local icon_raw = gears.filesystem.get_configuration_dir()
+ .. tostring(...):match("^.*bling"):gsub("%.", "/")
+ .. "/icons/layouts/equalarea.png"
local function get_icon()
- if icon_raw ~= nil then
- return gcolor.recolor_image(icon_raw, beautiful.fg_normal)
- else
- return nil
- end
+ if icon_raw ~= nil then
+ return gcolor.recolor_image(icon_raw, beautiful.fg_normal)
+ else
+ return nil
+ end
end
return {
- layout = mylayout,
- icon_raw = icon_raw,
- get_icon = get_icon,
+ layout = mylayout,
+ icon_raw = icon_raw,
+ get_icon = get_icon,
}
diff --git a/layout/horizontal.lua b/layout/horizontal.lua
index ff768e7..353b4a8 100644
--- a/layout/horizontal.lua
+++ b/layout/horizontal.lua
@@ -19,43 +19,47 @@ function mylayout.arrange(p)
local slave_area_height = area.height - master_area_height
-- Special case: no slaves
- if nslaves == 0 then
+ if nslaves == 0 then
master_area_height = area.height
slave_area_height = 0
- end
+ end
-- Special case: no masters
- if nmaster == 0 then
- master_area_height = 0
+ if nmaster == 0 then
+ master_area_height = 0
slave_area_height = area.height
- end
+ end
-- itearte through masters
- for idx=1,nmaster do
+ for idx = 1, nmaster do
local c = p.clients[idx]
local g = {
- x = area.x + (idx-1)*(area.width/nmaster),
+ x = area.x + (idx - 1) * (area.width / nmaster),
y = area.y,
- width = area.width/nmaster,
+ width = area.width / nmaster,
height = master_area_height,
}
p.geometries[c] = g
end
-- iterate through slaves
- for idx=1,nslaves do
- local c = p.clients[idx+nmaster]
+ for idx = 1, nslaves do
+ local c = p.clients[idx + nmaster]
local g = {
x = area.x,
- y = area.y + master_area_height + (idx-1)*(slave_area_height/nslaves),
+ y = area.y
+ + master_area_height
+ + (idx - 1) * (slave_area_height / nslaves),
width = area.width,
- height = slave_area_height/nslaves,
+ height = slave_area_height / nslaves,
}
p.geometries[c] = g
end
end
-local icon_raw = gears.filesystem.get_configuration_dir() .. tostring(...):match("^.*bling"):gsub("%.", "/") .. "/icons/layouts/horizontal.png"
+local icon_raw = gears.filesystem.get_configuration_dir()
+ .. tostring(...):match("^.*bling"):gsub("%.", "/")
+ .. "/icons/layouts/horizontal.png"
local function get_icon()
if icon_raw ~= nil then
diff --git a/layout/init.lua b/layout/init.lua
index 62db578..f7ed971 100644
--- a/layout/init.lua
+++ b/layout/init.lua
@@ -24,7 +24,7 @@ local layout = {
vertical = vertical.layout,
horizontal = horizontal.layout,
equalarea = equalarea.layout,
- deck = deck.layout
+ deck = deck.layout,
}
return layout
diff --git a/layout/mstab.lua b/layout/mstab.lua
index 1ba0985..6cbdb84 100644
--- a/layout/mstab.lua
+++ b/layout/mstab.lua
@@ -10,33 +10,50 @@ mylayout.name = "mstab"
local tabbar_ontop = beautiful.mstab_bar_ontop or false
local tabbar_padding = beautiful.mstab_bar_padding or "default"
-local border_radius = beautiful.mstab_border_radius or
- beautiful.border_radius or 0
-local tabbar_position = beautiful.mstab_tabbar_position or
- beautiful.tabbar_position or "top"
+local border_radius = beautiful.mstab_border_radius
+ or beautiful.border_radius
+ or 0
+local tabbar_position = beautiful.mstab_tabbar_position
+ or beautiful.tabbar_position
+ or "top"
-local bar_style = beautiful.mstab_tabbar_style or beautiful.tabbar_style or
- "default"
-local bar = require(tostring(...):match(".*bling") .. ".widget.tabbar." ..
- bar_style)
-local tabbar_size = bar.size or beautiful.mstab_bar_height or beautiful.tabbar_size or 40
+local bar_style = beautiful.mstab_tabbar_style
+ or beautiful.tabbar_style
+ or "default"
+local bar = require(
+ tostring(...):match(".*bling") .. ".widget.tabbar." .. bar_style
+)
+local tabbar_size = bar.size
+ or beautiful.mstab_bar_height
+ or beautiful.tabbar_size
+ or 40
local dont_resize_slaves = beautiful.mstab_dont_resize_slaves or false
--- The top_idx is the idx of the slave clients (excluding all master clients)
+-- The top_idx is the idx of the slave clients (excluding all master clients)
-- that should be on top of all other slave clients ("the focused slave")
-- by creating a variable outside of the arrange function, this layout can "remember" that client
--- by creating it as a new property of every tag, this layout can be active on different tags and
+-- by creating it as a new property of every tag, this layout can be active on different tags and
-- still have different "focused slave clients"
-for idx, tag in ipairs(root.tags()) do tag.top_idx = 1 end
+for idx, tag in ipairs(root.tags()) do
+ tag.top_idx = 1
+end
-- Haven't found a signal that is emitted when a new tag is added. That should work though
-- since you can't use a layout on a tag that you haven't selected previously
-tag.connect_signal("property::selected",
- function(t) if not t.top_idx then t.top_idx = 1 end end)
-
-function update_tabbar(clients, t, top_idx, area, master_area_width,
- slave_area_width)
+tag.connect_signal("property::selected", function(t)
+ if not t.top_idx then
+ t.top_idx = 1
+ end
+end)
+function update_tabbar(
+ clients,
+ t,
+ top_idx,
+ area,
+ master_area_width,
+ slave_area_width
+)
local s = t.screen
-- create the list of clients for the tabbar
@@ -47,42 +64,50 @@ function update_tabbar(clients, t, top_idx, area, master_area_width,
awful.button({}, 1, function()
c:raise()
client.focus = c
- end),
- awful.button({}, 2, function()
- c:kill()
+ end),
+ awful.button({}, 2, function()
+ c:kill()
end),
awful.button({}, 3, function()
c.minimized = true
- end))
+ end)
+ )
local client_box = bar.create(c, (idx == top_idx), buttons)
clientlist:add(client_box)
end
-- if no tabbar exists, create one
if not s.tabbar then
- s.tabbar = wibox {
+ s.tabbar = wibox({
ontop = tabbar_ontop,
shape = function(cr, width, height)
gears.shape.rounded_rect(cr, width, height, border_radius)
end,
bg = bar.bg_normal,
- visible = true
- }
+ visible = true,
+ })
-- Change visibility of the tab bar when layout, selected tag or number of clients (visible, master, slave) changes
local function adjust_visiblity(t)
- s.tabbar.visible = (#t:clients() - t.master_count > 1) and
- (t.layout.name == mylayout.name)
+ s.tabbar.visible = (#t:clients() - t.master_count > 1)
+ and (t.layout.name == mylayout.name)
end
- tag.connect_signal("property::selected",
- function(t) adjust_visiblity(t) end)
- tag.connect_signal("property::layout",
- function(t, layout) adjust_visiblity(t) end)
- tag.connect_signal("tagged", function(t, c) adjust_visiblity(t) end)
- tag.connect_signal("untagged", function(t, c) adjust_visiblity(t) end)
- tag.connect_signal("property::master_count",
- function(t) adjust_visiblity(t) end)
+ tag.connect_signal("property::selected", function(t)
+ adjust_visiblity(t)
+ end)
+ tag.connect_signal("property::layout", function(t, layout)
+ adjust_visiblity(t)
+ end)
+ tag.connect_signal("tagged", function(t, c)
+ adjust_visiblity(t)
+ end)
+ tag.connect_signal("untagged", function(t, c)
+ adjust_visiblity(t)
+ end)
+ tag.connect_signal("property::master_count", function(t)
+ adjust_visiblity(t)
+ end)
client.connect_signal("property::minimized", function(c)
local t = c.first_tag
adjust_visiblity(t)
@@ -100,21 +125,24 @@ function update_tabbar(clients, t, top_idx, area, master_area_width,
s.tabbar.y = area.y + area.height - tabbar_size - t.gap
s.tabbar.width = slave_area_width - 2 * t.gap
s.tabbar.height = tabbar_size
- elseif tabbar_position == "left" then
+ elseif tabbar_position == "left" then
s.tabbar.x = area.x + master_area_width + t.gap
s.tabbar.y = area.y + t.gap
- s.tabbar.width = tabbar_size
+ s.tabbar.width = tabbar_size
s.tabbar.height = area.height - 2 * t.gap
- elseif tabbar_position == "right" then
- s.tabbar.x = area.x + master_area_width + slave_area_width - tabbar_size - t.gap
+ elseif tabbar_position == "right" then
+ s.tabbar.x = area.x
+ + master_area_width
+ + slave_area_width
+ - tabbar_size
+ - t.gap
s.tabbar.y = area.y + t.gap
s.tabbar.width = tabbar_size
s.tabbar.height = area.height - 2 * t.gap
end
- -- update clientlist
- s.tabbar:setup{layout = wibox.layout.flex.horizontal, clientlist}
-
+ -- update clientlist
+ s.tabbar:setup({ layout = wibox.layout.flex.horizontal, clientlist })
end
function mylayout.arrange(p)
@@ -129,7 +157,9 @@ function mylayout.arrange(p)
local slave_area_width = area.width - master_area_width
-- "default" means that it uses standard useless gap size
- if tabbar_padding == "default" then tabbar_padding = 2 * t.gap end
+ if tabbar_padding == "default" then
+ tabbar_padding = 2 * t.gap
+ end
-- Special case: No masters -> full screen slave width
if nmaster == 0 then
@@ -140,8 +170,10 @@ function mylayout.arrange(p)
-- Special case: One or zero slaves -> no tabbar (essentially tile right)
if nslaves <= 1 then
-- since update_tabbar isnt called that way we have to hide it manually
- if s.tabbar then s.tabbar.visible = false end
- -- otherwise just do tile right
+ if s.tabbar then
+ s.tabbar.visible = false
+ end
+ -- otherwise just do tile right
awful.layout.suit.tile.right.arrange(p)
return
end
@@ -153,25 +185,25 @@ function mylayout.arrange(p)
x = area.x,
y = area.y + (idx - 1) * (area.height / nmaster),
width = master_area_width,
- height = area.height / nmaster
+ height = area.height / nmaster,
}
p.geometries[c] = g
end
- local tabbar_size_change = 0
- local tabbar_width_change = 0
- local tabbar_y_change = 0
- local tabbar_x_change = 0
- if tabbar_position == "top" then
+ local tabbar_size_change = 0
+ local tabbar_width_change = 0
+ local tabbar_y_change = 0
+ local tabbar_x_change = 0
+ if tabbar_position == "top" then
tabbar_size_change = tabbar_size + tabbar_padding
- tabbar_y_change = tabbar_size + tabbar_padding
- elseif tabbar_position == "bottom" then
+ tabbar_y_change = tabbar_size + tabbar_padding
+ elseif tabbar_position == "bottom" then
tabbar_size_change = tabbar_size + tabbar_padding
- elseif tabbar_position == "left" then
- tabbar_width_change = tabbar_size + tabbar_padding
- tabbar_x_change = tabbar_size + tabbar_padding
- elseif tabbar_position == "right" then
- tabbar_width_change = tabbar_size + tabbar_padding
+ elseif tabbar_position == "left" then
+ tabbar_width_change = tabbar_size + tabbar_padding
+ tabbar_x_change = tabbar_size + tabbar_padding
+ elseif tabbar_position == "right" then
+ tabbar_width_change = tabbar_size + tabbar_padding
end
-- Iterate through slaves
@@ -180,31 +212,39 @@ function mylayout.arrange(p)
for idx = 1, nslaves do
local c = p.clients[idx + nmaster]
slave_clients[#slave_clients + 1] = c
- if c == client.focus then t.top_idx = #slave_clients end
+ if c == client.focus then
+ t.top_idx = #slave_clients
+ end
local g = {
- x = area.x + master_area_width + tabbar_x_change,
- y = area.y + tabbar_y_change,
- width = slave_area_width - tabbar_width_change,
- height = area.height - tabbar_size_change
+ x = area.x + master_area_width + tabbar_x_change,
+ y = area.y + tabbar_y_change,
+ width = slave_area_width - tabbar_width_change,
+ height = area.height - tabbar_size_change,
}
- if not dont_resize_slaves and idx ~= t.top_idx then
+ if not dont_resize_slaves and idx ~= t.top_idx then
g = {
x = area.x + master_area_width + slave_area_width / 4,
y = area.y + tabbar_size + area.height / 4,
width = slave_area_width / 2,
- height = area.height / 4 - tabbar_size
+ height = area.height / 4 - tabbar_size,
}
end
p.geometries[c] = g
end
- update_tabbar(slave_clients, t, t.top_idx, area, master_area_width,
- slave_area_width)
+ update_tabbar(
+ slave_clients,
+ t,
+ t.top_idx,
+ area,
+ master_area_width,
+ slave_area_width
+ )
end
-local icon_raw = gears.filesystem.get_configuration_dir() ..
- tostring(...):match("^.*bling"):gsub("%.", "/") ..
- "/icons/layouts/mstab.png"
+local icon_raw = gears.filesystem.get_configuration_dir()
+ .. tostring(...):match("^.*bling"):gsub("%.", "/")
+ .. "/icons/layouts/mstab.png"
local function get_icon()
if icon_raw ~= nil then
@@ -214,4 +254,4 @@ local function get_icon()
end
end
-return {layout = mylayout, icon_raw = icon_raw, get_icon = get_icon}
+return { layout = mylayout, icon_raw = icon_raw, get_icon = get_icon }
diff --git a/layout/vertical.lua b/layout/vertical.lua
index 8789cb3..f0eb8aa 100644
--- a/layout/vertical.lua
+++ b/layout/vertical.lua
@@ -18,44 +18,48 @@ function mylayout.arrange(p)
local master_area_width = area.width * mwfact
local slave_area_width = area.width - master_area_width
- -- Special case: no slaves
- if nslaves == 0 then
+ -- Special case: no slaves
+ if nslaves == 0 then
master_area_width = area.width
slave_area_width = 0
- end
+ end
- -- Special case: no masters
- if nmaster == 0 then
+ -- Special case: no masters
+ if nmaster == 0 then
master_area_width = 0
slave_area_width = area.width
- end
+ end
-- iterate through masters
- for idx=1,nmaster do
+ for idx = 1, nmaster do
local c = p.clients[idx]
local g = {
x = area.x,
- y = area.y + (idx-1)*(area.height/nmaster),
+ y = area.y + (idx - 1) * (area.height / nmaster),
width = master_area_width,
- height = area.height/nmaster,
+ height = area.height / nmaster,
}
p.geometries[c] = g
end
-- itearte through slaves
- for idx=1,nslaves do
- local c = p.clients[idx+nmaster]
+ for idx = 1, nslaves do
+ local c = p.clients[idx + nmaster]
local g = {
- x = area.x + master_area_width + (idx-1)*(slave_area_width/nslaves),
+ x = area.x
+ + master_area_width
+ + (idx - 1) * (slave_area_width / nslaves),
y = area.y,
- width = slave_area_width/nslaves,
+ width = slave_area_width / nslaves,
height = area.height,
}
p.geometries[c] = g
end
end
-local icon_raw = gears.filesystem.get_configuration_dir() .. tostring(...):match("^.*bling"):gsub("%.", "/") .. "/icons/layouts/vertical.png"
+local icon_raw = gears.filesystem.get_configuration_dir()
+ .. tostring(...):match("^.*bling"):gsub("%.", "/")
+ .. "/icons/layouts/vertical.png"
local function get_icon()
if icon_raw ~= nil then
diff --git a/module/flash_focus.lua b/module/flash_focus.lua
index 7c6ae2f..2fe3f47 100644
--- a/module/flash_focus.lua
+++ b/module/flash_focus.lua
@@ -8,14 +8,16 @@ local flashfocus = function(c)
if c then
c.opacity = op
local q = op
- local g = gears.timer {
+ local g = gears.timer({
timeout = stp,
call_now = false,
- autostart = true
- }
+ autostart = true,
+ })
g:connect_signal("timeout", function()
- if not c.valid then return end
+ if not c.valid then
+ return
+ end
if q >= 1 then
c.opacity = 1
g:stop()
@@ -27,10 +29,16 @@ local flashfocus = function(c)
end
-- Bring the focused client to the top
- if c then c:raise() end
+ if c then
+ c:raise()
+ end
end
-local enable = function() client.connect_signal("focus", flashfocus) end
-local disable = function() client.disconnect_signal("focus", flashfocus) end
+local enable = function()
+ client.connect_signal("focus", flashfocus)
+end
+local disable = function()
+ client.disconnect_signal("focus", flashfocus)
+end
-return {enable = enable, disable = disable, flashfocus = flashfocus}
+return { enable = enable, disable = disable, flashfocus = flashfocus }
diff --git a/module/init.lua b/module/init.lua
index 2954a0f..ed127f6 100644
--- a/module/init.lua
+++ b/module/init.lua
@@ -4,5 +4,5 @@ return {
wallpaper = require(... .. ".wallpaper"),
flash_focus = require(... .. ".flash_focus"),
tabbed = require(... .. ".tabbed"),
- scratchpad = require(... .. ".scratchpad")
+ scratchpad = require(... .. ".scratchpad"),
}
diff --git a/module/scratchpad.lua b/module/scratchpad.lua
index 301ca2d..bea4db7 100644
--- a/module/scratchpad.lua
+++ b/module/scratchpad.lua
@@ -3,7 +3,9 @@ local gears = require("gears")
local naughty = require("naughty")
local ruled
-if awesome.version ~= "v4.3" then ruled = require("ruled") end
+if awesome.version ~= "v4.3" then
+ ruled = require("ruled")
+end
local helpers = require(tostring(...):match(".*bling") .. ".helpers")
@@ -16,12 +18,15 @@ local Scratchpad = { mt = {} }
function Scratchpad:new(args)
args = args or {}
if args.awestore then
- naughty.notify({title = "Bling Error", text = "Awestore is no longer supported! Please take a look at the scratchpad documentation and use rubato for animations instead."})
+ naughty.notify({
+ title = "Bling Error",
+ text = "Awestore is no longer supported! Please take a look at the scratchpad documentation and use rubato for animations instead.",
+ })
end
args.rubato = args.rubato or {}
args.in_anim = false
- local ret = gears.object {}
+ local ret = gears.object({})
gears.table.crush(ret, Scratchpad)
gears.table.crush(ret, args)
return ret
@@ -30,13 +35,17 @@ end
--- Find all clients that satisfy the the rule
--
-- @return A list of all clients that satisfy the rule
-function Scratchpad:find() return helpers.client.find(self.rule) end
+function Scratchpad:find()
+ return helpers.client.find(self.rule)
+end
--- Applies the objects scratchpad properties to a given client
--
-- @param c A client to which to apply the properties
function Scratchpad:apply(c)
- if not c or not c.valid then return end
+ if not c or not c.valid then
+ return
+ end
c.floating = self.floating
c.sticky = self.sticky
c.fullscreen = false
@@ -45,7 +54,7 @@ function Scratchpad:apply(c)
x = self.geometry.x + awful.screen.focused().geometry.x,
y = self.geometry.y + awful.screen.focused().geometry.y,
width = self.geometry.width,
- height = self.geometry.height
+ height = self.geometry.height,
})
if self.autoclose then
c:connect_signal("unfocus", function(c1)
@@ -67,19 +76,27 @@ function Scratchpad:turn_on()
if axis == "x" and anim.pos == self.geometry.x then
anim.pos = anim:initial()
else
- if anim.pos == self.geometry.y then anim.pos = anim:initial() end
+ if anim.pos == self.geometry.y then
+ anim.pos = anim:initial()
+ end
end
anim:subscribe(function(pos)
if c and c.valid then
- if axis == "x" then c.x = pos
- else c.y = pos end
+ if axis == "x" then
+ c.x = pos
+ else
+ c.y = pos
+ end
end
self.in_anim = true
end)
- if axis == "x" then anim:set(self.geometry.x)
- else anim:set(self.geometry.y) end
+ if axis == "x" then
+ anim:set(self.geometry.x)
+ else
+ anim:set(self.geometry.y)
+ end
anim.ended:subscribe(function()
self.in_anim = false
@@ -100,12 +117,18 @@ function Scratchpad:turn_on()
end
if c and not self.in_anim then
-- if a client was found, turn it on
- if self.reapply then self:apply(c) end
+ if self.reapply then
+ self:apply(c)
+ end
-- c.sticky was set to false in turn_off so it has to be reapplied anyway
c.sticky = self.sticky
- if anim_x then animate(c, anim_x, "x") end
- if anim_y then animate(c, anim_y, "y") end
+ if anim_x then
+ animate(c, anim_x, "x")
+ end
+ if anim_y then
+ animate(c, anim_y, "y")
+ end
helpers.client.turn_on(c)
self:emit_signal("turn_on", c)
@@ -117,49 +140,64 @@ function Scratchpad:turn_on()
-- apply the properties only once (until the next closing)
local pid = awful.spawn.with_shell(self.command)
if awesome.version ~= "v4.3" then
- ruled.client.append_rule
- {
+ ruled.client.append_rule({
id = "scratchpad",
rule = self.rule,
- properties =
- {
+ properties = {
-- If a scratchpad is opened it should spawn at the current tag
-- the same way it will behave if the client was already open
tag = awful.screen.focused().selected_tag,
switch_to_tags = false,
-- Hide the client until the gemoetry rules are applied
hidden = true,
- minimized = true
+ minimized = true,
},
callback = function(c)
-- For a reason I can't quite get the gemotery rules will fail to apply unless we use this timer
- gears.timer{timeout = 0.15, autostart = true, single_shot = true, callback = function()
- self:apply(c)
- c.hidden = false
- c.minimized = false
- -- Some clients fail to gain focus
- c:activate{}
+ gears.timer({
+ timeout = 0.15,
+ autostart = true,
+ single_shot = true,
+ callback = function()
+ self:apply(c)
+ c.hidden = false
+ c.minimized = false
+ -- Some clients fail to gain focus
+ c:activate({})
- if anim_x then animate(c, anim_x, "x") end
- if anim_y then animate(c, anim_y, "y") end
+ if anim_x then
+ animate(c, anim_x, "x")
+ end
+ if anim_y then
+ animate(c, anim_y, "y")
+ end
- self:emit_signal("inital_apply", c)
+ self:emit_signal("inital_apply", c)
- -- Discord spawns 2 windows, so keep the rule until the 2nd window shows
- if c.name ~= "Discord Updater" then ruled.client.remove_rule("scratchpad") end
- -- In a case Discord is killed before the second window spawns
- c:connect_signal("request::unmanage", function() ruled.client.remove_rule("scratchpad") end)
- end}
- end
- }
+ -- Discord spawns 2 windows, so keep the rule until the 2nd window shows
+ if c.name ~= "Discord Updater" then
+ ruled.client.remove_rule("scratchpad")
+ end
+ -- In a case Discord is killed before the second window spawns
+ c:connect_signal("request::unmanage", function()
+ ruled.client.remove_rule("scratchpad")
+ end)
+ end,
+ })
+ end,
+ })
else
local function inital_apply(c1)
if helpers.client.is_child_of(c1, pid) then
self:apply(c1)
- if anim_x then animate(c1, anim_x, "x") end
- if anim_y then animate(c1, anim_y, "y") end
+ if anim_x then
+ animate(c1, anim_x, "x")
+ end
+ if anim_y then
+ animate(c1, anim_y, "y")
+ end
self:emit_signal("inital_apply", c1)
- client.disconnect_signal("manage", inital_apply)
+ client.disconnect_signal("manage", inital_apply)
end
end
client.connect_signal("manage", inital_apply)
@@ -177,13 +215,19 @@ function Scratchpad:turn_off()
-- Can't animate non floating clients
c.floating = true
- if axis == "x" then anim.pos = c.x
- else anim.pos = c.y end
+ if axis == "x" then
+ anim.pos = c.x
+ else
+ anim.pos = c.y
+ end
anim:subscribe(function(pos)
if c and c.valid then
- if axis == "x" then c.x = pos
- else c.y = pos end
+ if axis == "x" then
+ c.x = pos
+ else
+ c.y = pos
+ end
end
self.in_anim = true
@@ -195,15 +239,23 @@ function Scratchpad:turn_off()
-- Switch to tag 2
-- The client will remain on tag 1
-- The client will be removed from tag 2
- if c.screen.selected_tag ~= current_tag_on_toggled_scratchpad then
+ if
+ c.screen.selected_tag ~= current_tag_on_toggled_scratchpad
+ then
self.in_anim = false
anim:abort()
anim:reset()
anim:unsubscribe()
anim.ended:unsubscribe()
- if axis == "x" then anim.pos = self.geometry.x
- else anim.pos = self.geometry.y end
- helpers.client.turn_off(c, current_tag_on_toggled_scratchpad)
+ if axis == "x" then
+ anim.pos = self.geometry.x
+ else
+ anim.pos = self.geometry.y
+ end
+ helpers.client.turn_off(
+ c,
+ current_tag_on_toggled_scratchpad
+ )
self:apply(c)
self:emit_signal("turn_off", c)
end
@@ -233,8 +285,12 @@ function Scratchpad:turn_off()
local anim_x = self.rubato.x
local anim_y = self.rubato.y
- if anim_x then animate(anim_x, self.geometry.x, "x") end
- if anim_y then animate(anim_y, self.geometry.y, "y") end
+ if anim_x then
+ animate(anim_x, self.geometry.x, "x")
+ end
+ if anim_y then
+ animate(anim_y, self.geometry.y, "y")
+ end
if not anim_x and not anim_y then
helpers.client.turn_off(c)
@@ -260,8 +316,8 @@ function Scratchpad:toggle()
end
end
else
- is_turn_off = client.focus and
- awful.rules.match(client.focus, self.rule)
+ is_turn_off = client.focus
+ and awful.rules.match(client.focus, self.rule)
end
if is_turn_off then
diff --git a/module/tabbed.lua b/module/tabbed.lua
index 5989da5..b7ae67d 100644
--- a/module/tabbed.lua
+++ b/module/tabbed.lua
@@ -17,24 +17,33 @@ local beautiful = require("beautiful")
local helpers = require(tostring(...):match(".*bling") .. ".helpers")
local bar_style = beautiful.tabbar_style or "default"
-local bar = require(tostring(...):match(".*bling") .. ".widget.tabbar." ..
- bar_style)
+local bar = require(
+ tostring(...):match(".*bling") .. ".widget.tabbar." .. bar_style
+)
tabbed = {}
--- used to change focused tab relative to the currently focused one
+-- used to change focused tab relative to the currently focused one
tabbed.iter = function(idx)
- if not idx then idx = 1 end
- if not client.focus or not client.focus.bling_tabbed then return end
+ if not idx then
+ idx = 1
+ end
+ if not client.focus or not client.focus.bling_tabbed then
+ return
+ end
local tabobj = client.focus.bling_tabbed
local new_idx = (tabobj.focused_idx + idx) % #tabobj.clients
- if new_idx == 0 then new_idx = #tabobj.clients end
+ if new_idx == 0 then
+ new_idx = #tabobj.clients
+ end
tabbed.switch_to(tabobj, new_idx)
end
-- removes a given client from its tab object
tabbed.remove = function(c)
- if not c or not c.bling_tabbed then return end
+ if not c or not c.bling_tabbed then
+ return
+ end
local tabobj = c.bling_tabbed
table.remove(tabobj.clients, tabobj.focused_idx)
if not beautiful.tabbar_disable then
@@ -47,7 +56,9 @@ end
-- removes the currently focused client from the tab object
tabbed.pop = function()
- if not client.focus or not client.focus.bling_tabbed then return end
+ if not client.focus or not client.focus.bling_tabbed then
+ return
+ end
tabbed.remove(client.focus)
end
@@ -60,7 +71,7 @@ tabbed.add = function(c, tabobj)
tabobj.clients[#tabobj.clients + 1] = c
tabobj.focused_idx = #tabobj.clients
-- calls update even though switch_to calls update again
- -- but the new client needs to have the tabobj property
+ -- but the new client needs to have the tabobj property
-- before a clean switch can happen
tabbed.update(tabobj)
awesome.emit_signal("bling::tabbed::client_added", tabobj, c)
@@ -69,11 +80,14 @@ end
-- use xwininfo to select one client and make it tab in the currently focused tab
tabbed.pick = function()
- if not client.focus then return end
+ if not client.focus then
+ return
+ end
-- this function uses xwininfo to grab a client window id which is then
-- compared to all other clients window ids
- local xwininfo_cmd = [[ xwininfo | grep 'xwininfo: Window id:' | cut -d " " -f 4 ]]
+ local xwininfo_cmd =
+ [[ xwininfo | grep 'xwininfo: Window id:' | cut -d " " -f 4 ]]
awful.spawn.easy_async_with_shell(xwininfo_cmd, function(output)
for _, c in ipairs(client.get()) do
if tonumber(c.window) == tonumber(output) then
@@ -95,20 +109,30 @@ tabbed.pick = function()
end
-- select a client by direction and make it tab in the currently focused tab
-tabbed.pick_by_direction = function(direction)
+tabbed.pick_by_direction = function(direction)
local sel = client.focus
- if not sel then return end
- if not sel.bling_tabbed then tabbed.init(sel) end
+ if not sel then
+ return
+ end
+ if not sel.bling_tabbed then
+ tabbed.init(sel)
+ end
local c = helpers.client.get_by_direction(direction)
- if not c then return end
+ if not c then
+ return
+ end
tabbed.add(c, sel.bling_tabbed)
end
--- use dmenu to select a client and make it tab in the currently focused tab
+-- use dmenu to select a client and make it tab in the currently focused tab
tabbed.pick_with_dmenu = function(dmenu_command)
- if not client.focus then return end
+ if not client.focus then
+ return
+ end
- if not dmenu_command then dmenu_command = "rofi -dmenu -i" end
+ if not dmenu_command then
+ dmenu_command = "rofi -dmenu -i"
+ end
-- get all clients from the current tag
-- ignores the case where multiple tags are selected
@@ -121,17 +145,28 @@ tabbed.pick_with_dmenu = function(dmenu_command)
if #list_clients ~= 1 then
list_clients_string = list_clients_string .. "\\n"
end
- list_clients_string = list_clients_string .. tostring(c.window) .. " " .. c.name
+ list_clients_string = list_clients_string
+ .. tostring(c.window)
+ .. " "
+ .. c.name
end
end
- if #list_clients == 0 then return end
+ if #list_clients == 0 then
+ return
+ end
-- calls the actual dmenu
- local xprop_cmd = [[ echo -e "]] .. list_clients_string .. [[" | ]] .. dmenu_command .. [[ | awk '{ print $1 }' ]]
+ local xprop_cmd = [[ echo -e "]]
+ .. list_clients_string
+ .. [[" | ]]
+ .. dmenu_command
+ .. [[ | awk '{ print $1 }' ]]
awful.spawn.easy_async_with_shell(xprop_cmd, function(output)
for _, c in ipairs(list_clients) do
if tonumber(c.window) == tonumber(output) then
- if not client.focus.bling_tabbed then tabbed.init(client.focus) end
+ if not client.focus.bling_tabbed then
+ tabbed.init(client.focus)
+ end
local tabobj = client.focus.bling_tabbed
tabbed.add(c, tabobj)
end
@@ -148,13 +183,15 @@ tabbed.update = function(tabobj)
c.bling_tabbed = tabobj
helpers.client.sync(c, currently_focused_c)
-- the following handles killing a client while the client is tabbed
- c:connect_signal("unmanage", function(c) tabbed.remove(c) end)
+ c:connect_signal("unmanage", function(c)
+ tabbed.remove(c)
+ end)
end
end
-- Maybe remove if I'm the only one using it?
awesome.emit_signal("bling::tabbed::update", tabobj)
- if not beautiful.tabbar_disable then
+ if not beautiful.tabbar_disable then
tabbed.update_tabbar(tabobj)
end
end
@@ -183,10 +220,9 @@ tabbed.update_tabbar = function(tabobj)
local flexlist = bar.layout()
-- itearte over all tabbed clients to create the widget tabbed list
for idx, c in ipairs(tabobj.clients) do
- local buttons = gears.table.join(
- awful.button({}, 1, function()
- tabbed.switch_to(tabobj, idx)
- end))
+ local buttons = gears.table.join(awful.button({}, 1, function()
+ tabbed.switch_to(tabobj, idx)
+ end))
wid_temp = bar.create(c, (idx == tabobj.focused_idx), buttons)
flexlist:add(wid_temp)
end
@@ -195,15 +231,15 @@ tabbed.update_tabbar = function(tabobj)
local titlebar = awful.titlebar(c, {
bg = bar.bg_normal,
size = bar.size,
- position = bar.position
+ position = bar.position,
})
- titlebar:setup{layout = wibox.layout.flex.horizontal, flexlist}
+ titlebar:setup({ layout = wibox.layout.flex.horizontal, flexlist })
end
end
tabbed.init = function(c)
local tabobj = {}
- tabobj.clients = {c}
+ tabobj.clients = { c }
tabobj.focused_idx = 1
tabbed.update(tabobj)
end
diff --git a/module/tiled_wallpaper.lua b/module/tiled_wallpaper.lua
index 9594fe6..75014cf 100644
--- a/module/tiled_wallpaper.lua
+++ b/module/tiled_wallpaper.lua
@@ -16,7 +16,6 @@ local cairo = require("lgi").cairo
local gears = require("gears")
function create_tiled_wallpaper(str, s, args_table)
-
-- user input
args_table = args_table or {}
local fg = args_table.fg or "#ff0000"
@@ -27,7 +26,7 @@ function create_tiled_wallpaper(str, s, args_table)
local font_size = tonumber(args_table.font_size) or 16
local zickzack_bool = args_table.zickzack or false
local padding = args_table.padding or 100
-
+
-- create cairo image wallpaper
local img = cairo.ImageSurface(cairo.Format.RGB24, padding, padding)
cr = cairo.Context(img)
@@ -40,19 +39,18 @@ function create_tiled_wallpaper(str, s, args_table)
cr:set_font_size(font_size)
cr:select_font_face(font)
- if zickzack_bool then
+ if zickzack_bool then
cr:set_source(gears.color(fg))
- cr:move_to(padding/2 + font_size, padding/2 + font_size)
+ cr:move_to(padding / 2 + font_size, padding / 2 + font_size)
cr:show_text(str)
- end
-
+ end
+
cr:set_source(gears.color(fg))
cr:move_to(font_size, font_size)
cr:show_text(str)
-
+
-- tile cairo image
- gears.wallpaper.tiled(img, s, {x=offset_x, y=offset_y})
-end
+ gears.wallpaper.tiled(img, s, { x = offset_x, y = offset_y })
+end
return create_tiled_wallpaper
-
diff --git a/module/wallpaper.lua b/module/wallpaper.lua
index 1ad95c5..2adeb8a 100644
--- a/module/wallpaper.lua
+++ b/module/wallpaper.lua
@@ -23,7 +23,6 @@
--
---------------------------------------------------------------------------
-
local awful = require("awful")
local beautiful = require("beautiful")
local gears = require("gears")
@@ -50,23 +49,47 @@ local setters = {}
-- @int[opt=1] args.scale See `gears.wallpaper`.
function apply(wallpaper_object, args)
args.background = args.background or beautiful.bg_normal or "black"
- args.ignore_aspect = args.ignore_aspect or false -- false = keep aspect ratio
- args.offset = args.offset or {x = 0, y = 0}
+ args.ignore_aspect = args.ignore_aspect or false -- false = keep aspect ratio
+ args.offset = args.offset or { x = 0, y = 0 }
args.scale = args.scale or 1
local positions = {
- ["centered"] = function() gears.wallpaper.centered(wallpaper_object, args.screen, args.background, args.scale) end,
- ["tiled"] = function() gears.wallpaper.tiled(wallpaper_object, args.screen, args.offset) end,
- ["maximized"] = function() gears.wallpaper.maximized(wallpaper_object, args.screen, args.ignore_aspect, args.offset) end,
- ["fit"] = function() gears.wallpaper.fit(wallpaper_object, args.screen, args.background) end,
+ ["centered"] = function()
+ gears.wallpaper.centered(
+ wallpaper_object,
+ args.screen,
+ args.background,
+ args.scale
+ )
+ end,
+ ["tiled"] = function()
+ gears.wallpaper.tiled(wallpaper_object, args.screen, args.offset)
+ end,
+ ["maximized"] = function()
+ gears.wallpaper.maximized(
+ wallpaper_object,
+ args.screen,
+ args.ignore_aspect,
+ args.offset
+ )
+ end,
+ ["fit"] = function()
+ gears.wallpaper.fit(wallpaper_object, args.screen, args.background)
+ end,
}
- if type(wallpaper_object) == "string" and gears.filesystem.file_readable(wallpaper_object) then
+ if
+ type(wallpaper_object) == "string"
+ and gears.filesystem.file_readable(wallpaper_object)
+ then
-- path of an image file, we use a position function
local p = args.position or "centered"
positions[p]()
elseif type(wallpaper_object) == "function" then
-- function
wallpaper_object(args)
- elseif (not gears.color.ensure_pango_color(wallpaper_object, nil)) and args.position then
+ elseif
+ (not gears.color.ensure_pango_color(wallpaper_object, nil))
+ and args.position
+ then
-- if the user sets a position function, wallpaper_object should be a cairo surface
positions[args.position]()
else
@@ -92,15 +115,13 @@ end
-- @treturn table A list of `wallpaper_objects` (what `apply` can read).
-- @see apply
function prepare_list(args)
- args.image_formats = args.image_formats or {"jpg", "jpeg", "png", "bmp"}
+ args.image_formats = args.image_formats or { "jpg", "jpeg", "png", "bmp" }
args.recursive = args.recursive or true
- local wallpapers = (args.wallpaper
- or beautiful.wallpaper_path
- or "black")
+ local wallpapers = (args.wallpaper or beautiful.wallpaper_path or "black")
local res = {}
if type(wallpapers) ~= "table" then
- wallpapers = {wallpapers}
+ wallpapers = { wallpapers }
end
for _, w in ipairs(wallpapers) do
-- w is either:
@@ -109,7 +130,11 @@ function prepare_list(args)
-- - a cairo surface or a cairo pattern
-- - a function for setting the wallpaper
if type(w) == "string" and gears.filesystem.dir_readable(w) then
- local file_list = helpers.filesystem.list_directory_files(w, args.image_formats, args.recursive)
+ local file_list = helpers.filesystem.list_directory_files(
+ w,
+ args.image_formats,
+ args.recursive
+ )
for _, f in ipairs(file_list) do
res[#res + 1] = w .. "/" .. f
end
@@ -142,7 +167,6 @@ function setters.random(args)
apply(wallpapers[math.random(#wallpapers)], args)
end
-
local simple_schedule_object = nil
--- A schedule setter.
--
@@ -158,22 +182,31 @@ local simple_schedule_object = nil
-- @tparam[opt=`setters.simple`] function args.wallpaper_set_function The set_function used by default
function setters.simple_schedule(args)
local function update_wallpaper()
- local fake_args = gears.table.join(args, {wallpaper = args.wallpaper[simple_schedule_object.closest_lower_time]})
+ local fake_args = gears.table.join(
+ args,
+ {
+ wallpaper = args.wallpaper[simple_schedule_object.closest_lower_time],
+ }
+ )
simple_schedule_object.schedule_set_function(fake_args)
end
if not simple_schedule_object then
simple_schedule_object = {}
-- initialize the schedule object, so we don't do it for every call
- simple_schedule_object.schedule_set_function = args.schedule_set_function or setters.simple
+ simple_schedule_object.schedule_set_function = args.schedule_set_function
+ or setters.simple
-- we get the sorted time keys
simple_schedule_object.times = {}
- for k in pairs(args.wallpaper) do table.insert(simple_schedule_object.times, k) end
+ for k in pairs(args.wallpaper) do
+ table.insert(simple_schedule_object.times, k)
+ end
table.sort(simple_schedule_object.times)
-- now we get the closest time which is below current time (the current applicable period)
local function update_timer()
local current_time = os.date("%H:%M:%S")
local next_time = simple_schedule_object.times[1]
- simple_schedule_object.closest_lower_time = simple_schedule_object.times[#(simple_schedule_object.times)]
+ simple_schedule_object.closest_lower_time =
+ simple_schedule_object.times[#simple_schedule_object.times]
for _, k in ipairs(simple_schedule_object.times) do
if k > current_time then
next_time = k
@@ -181,17 +214,21 @@ function setters.simple_schedule(args)
end
simple_schedule_object.closest_lower_time = k
end
- simple_schedule_object.timer.timeout = helpers.time.time_diff(next_time, current_time)
+ simple_schedule_object.timer.timeout = helpers.time.time_diff(
+ next_time,
+ current_time
+ )
if simple_schedule_object.timer.timeout < 0 then
-- the next_time is the day after, so we add 24 hours to the timer
- simple_schedule_object.timer.timeout = simple_schedule_object.timer.timeout + 86400
+ simple_schedule_object.timer.timeout = simple_schedule_object.timer.timeout
+ + 86400
end
simple_schedule_object.timer:again()
update_wallpaper()
end
- simple_schedule_object.timer = gears.timer {
+ simple_schedule_object.timer = gears.timer({
callback = update_timer,
- }
+ })
update_timer()
else
-- if called again (usually when the change_timer is set), we just change the wallpaper depending on current parameters
@@ -199,10 +236,6 @@ function setters.simple_schedule(args)
end
end
-
-
-
-
--- Set the AWESOME wallpaper.
--
-- @tparam table args The argument table containing the argument below.
@@ -214,31 +247,43 @@ end
--
-- see beautiful.theme_assets.wallpaper
function setters.awesome_wallpaper(args)
- local colors = {bg = beautiful.bg_normal, fg = beautiful.fg_normal, alt_fg = beautiful.bg_focus }
+ local colors = {
+ bg = beautiful.bg_normal,
+ fg = beautiful.fg_normal,
+ alt_fg = beautiful.bg_focus,
+ }
colors.bg = helpers.color.is_dark(beautiful.bg_normal)
- and helpers.color.lighten(colors.bg)
+ and helpers.color.lighten(colors.bg)
or helpers.color.darken(colors.bg)
- if (type(args.colors) == "table") then
- colors.bg = args.colors.bg or colors.bg
- colors.fg = args.colors.fg or colors.fg
+ if type(args.colors) == "table" then
+ colors.bg = args.colors.bg or colors.bg
+ colors.fg = args.colors.fg or colors.fg
colors.alt_fg = args.colors.alt_fg or colors.alt_fg
end
-- Generate wallpaper:
if not args.screen then
for s in screen do
gears.wallpaper.set(
- beautiful.theme_assets.wallpaper(colors.bg, colors.fg, colors.alt_fg, s)
+ beautiful.theme_assets.wallpaper(
+ colors.bg,
+ colors.fg,
+ colors.alt_fg,
+ s
+ )
)
end
else
gears.wallpaper.set(
- beautiful.theme_assets.wallpaper(colors.bg, colors.fg, colors.alt_fg, args.screen)
+ beautiful.theme_assets.wallpaper(
+ colors.bg,
+ colors.fg,
+ colors.alt_fg,
+ args.screen
+ )
)
end
end
-
-
--- Setup a wallpaper.
--
-- @tparam table args Parameters for the wallpaper. It may also contain all parameters your `args.set_function` needs
@@ -265,30 +310,30 @@ end
-- @see setters.simple
function setup(args)
local config = args or {}
- config.set_function = config.set_function or (config.wallpaper and setters.simple or setters.awesome_wallpaper)
+ config.set_function = config.set_function
+ or (config.wallpaper and setters.simple or setters.awesome_wallpaper)
local function set_wallpaper(s)
config.screen = s or config.screen
config.set_function(config)
end
if config.change_timer and config.change_timer > 0 then
- gears.timer {
+ gears.timer({
timeout = config.change_timer,
call_now = false,
autostart = true,
- callback = function() set_wallpaper() end
- }
+ callback = function()
+ set_wallpaper()
+ end,
+ })
end
- if awesome.version == "v4.3" then
+ if awesome.version == "v4.3" then
awful.screen.connect_for_each_screen(set_wallpaper)
else
screen.connect_signal("request::wallpaper", set_wallpaper)
end
end
-
-
-
return {
setup = setup,
setters = setters,
diff --git a/module/window_swallowing.lua b/module/window_swallowing.lua
index dd3ff9c..368541b 100644
--- a/module/window_swallowing.lua
+++ b/module/window_swallowing.lua
@@ -5,15 +5,16 @@ local beautiful = require("beautiful")
local helpers = require(tostring(...):match(".*bling") .. ".helpers")
-- It might actually swallow too much, that's why there is a filter option by classname
--- without the don't-swallow-list it would also swallow for example
+-- without the don't-swallow-list it would also swallow for example
-- file pickers or new firefox windows spawned by an already existing one
local window_swallowing_activated = false
-- you might want to add or remove applications here
-local dont_swallow_classname_list = beautiful.dont_swallow_classname_list or {"firefox", "Gimp", "Google-chrome"}
-local activate_dont_swallow_filter = beautiful.dont_swallow_filter_activated or true
-
+local dont_swallow_classname_list = beautiful.dont_swallow_classname_list
+ or { "firefox", "Gimp", "Google-chrome" }
+local activate_dont_swallow_filter = beautiful.dont_swallow_filter_activated
+ or true
-- checks if client classname matches with any entry of the dont-swallow-list
local function check_if_swallow(c)
@@ -31,16 +32,24 @@ end
-- the function that will be connected to / disconnected from the spawn client signal
local function manage_clientspawn(c)
-- get the last focused window to check if it is a parent window
- local parent_client=awful.client.focus.history.get(c.screen, 1)
- if not parent_client then return end
+ local parent_client = awful.client.focus.history.get(c.screen, 1)
+ if not parent_client then
+ return
+ end
-- io.popen is normally discouraged. Should probably be changed
- local handle = io.popen([[pstree -T -p -a -s ]] .. tostring(c.pid) .. [[ | sed '2q;d' | grep -o '[0-9]*$' | tr -d '\n']])
+ local handle = io.popen(
+ [[pstree -T -p -a -s ]]
+ .. tostring(c.pid)
+ .. [[ | sed '2q;d' | grep -o '[0-9]*$' | tr -d '\n']]
+ )
local parent_pid = handle:read("*a")
handle:close()
- if (tostring(parent_pid) == tostring(parent_client.pid)) and check_if_swallow(c) then
-
+ if
+ (tostring(parent_pid) == tostring(parent_client.pid))
+ and check_if_swallow(c)
+ then
c:connect_signal("unmanage", function()
helpers.client.turn_on(parent_client)
helpers.client.sync(parent_client, c)
@@ -48,7 +57,6 @@ local function manage_clientspawn(c)
helpers.client.sync(c, parent_client)
helpers.client.turn_off(parent_client)
-
end
end
@@ -58,12 +66,12 @@ end
local function start()
client.connect_signal("manage", manage_clientspawn)
window_swallowing_activated = true
-end
+end
local function stop()
client.disconnect_signal("manage", manage_clientspawn)
window_swallowing_activated = false
-end
+end
local function toggle()
if window_swallowing_activated then
@@ -76,6 +84,5 @@ end
return {
start = start,
stop = stop,
- toggle = toggle
+ toggle = toggle,
}
-
diff --git a/signal/init.lua b/signal/init.lua
index a4a2ad7..a953d59 100644
--- a/signal/init.lua
+++ b/signal/init.lua
@@ -1 +1 @@
-return {playerctl = require(... .. ".playerctl")}
+return { playerctl = require(... .. ".playerctl") }
diff --git a/signal/playerctl/init.lua b/signal/playerctl/init.lua
index 005724c..1d586ed 100644
--- a/signal/playerctl/init.lua
+++ b/signal/playerctl/init.lua
@@ -4,7 +4,7 @@ local beautiful = require("beautiful")
local backend_config = beautiful.playerctl_backend or "playerctl_cli"
local backends = {
playerctl_cli = require(... .. ".playerctl_cli"),
- playerctl_lib = require(... .. ".playerctl_lib")
+ playerctl_lib = require(... .. ".playerctl_lib"),
}
local function enable_wrapper(args)
@@ -16,4 +16,4 @@ local function disable_wrapper()
backends[backend_config].disable()
end
-return {enable = enable_wrapper, disable = disable_wrapper}
+return { enable = enable_wrapper, disable = disable_wrapper }
diff --git a/signal/playerctl/playerctl_cli.lua b/signal/playerctl/playerctl_cli.lua
index 82ba3b6..93959f7 100644
--- a/signal/playerctl/playerctl_cli.lua
+++ b/signal/playerctl/playerctl_cli.lua
@@ -21,7 +21,11 @@ local function emit_player_status()
-- Follow status
awful.spawn.easy_async({
- "pkill", "--full", "--uid", os.getenv("USER"), "^playerctl status"
+ "pkill",
+ "--full",
+ "--uid",
+ os.getenv("USER"),
+ "^playerctl status",
}, function()
awful.spawn.with_line_callback(status_cmd, {
stdout = function(line)
@@ -32,7 +36,7 @@ local function emit_player_status()
playing = false
end
awesome.emit_signal("bling::playerctl::status", playing)
- end
+ end,
})
collectgarbage("collect")
end)
@@ -75,8 +79,11 @@ echo "$tmp_cover_path"
local interval_sec = tonumber(interval) -- in seconds
if length_sec and interval_sec then
if interval_sec >= 0 and length_sec > 0 then
- awesome.emit_signal("bling::playerctl::position",
- interval_sec, length_sec / 1000000)
+ awesome.emit_signal(
+ "bling::playerctl::position",
+ interval_sec,
+ length_sec / 1000000
+ )
end
end
end)
@@ -85,28 +92,35 @@ echo "$tmp_cover_path"
-- Follow title
awful.spawn.easy_async({
- "pkill", "--full", "--uid", os.getenv("USER"), "^playerctl metadata"
+ "pkill",
+ "--full",
+ "--uid",
+ os.getenv("USER"),
+ "^playerctl metadata",
}, function()
awful.spawn.with_line_callback(song_follow_cmd, {
stdout = function(line)
local album_path = ""
awful.spawn.easy_async_with_shell(art_script, function(out)
-- Get album path
- album_path = out:gsub('%\n', '')
+ album_path = out:gsub("%\n", "")
-- Get title and artist
- local artist = line:match('artist_(.*)title_')
- local title = line:match('title_(.*)')
+ local artist = line:match("artist_(.*)title_")
+ local title = line:match("title_(.*)")
-- If the title is nil or empty then the players stopped
if title and title ~= "" then
awesome.emit_signal(
- "bling::playerctl::title_artist_album", title,
- artist, album_path)
+ "bling::playerctl::title_artist_album",
+ title,
+ artist,
+ album_path
+ )
else
awesome.emit_signal("bling::playerctl::no_players")
end
end)
collectgarbage("collect")
- end
+ end,
})
collectgarbage("collect")
end)
@@ -123,11 +137,15 @@ local enable = function(args)
end
local disable = function()
- awful.spawn.with_shell("pkill --full --uid " .. os.getenv("USER") ..
- " '^playerctl status -F'")
+ awful.spawn.with_shell(
+ "pkill --full --uid " .. os.getenv("USER") .. " '^playerctl status -F'"
+ )
- awful.spawn.with_shell("pkill --full --uid " .. os.getenv("USER") ..
- " '^playerctl metadata --format'")
+ awful.spawn.with_shell(
+ "pkill --full --uid "
+ .. os.getenv("USER")
+ .. " '^playerctl metadata --format'"
+ )
end
-return {enable = enable, disable = disable}
+return { enable = enable, disable = disable }
diff --git a/signal/playerctl/playerctl_lib.lua b/signal/playerctl/playerctl_lib.lua
index b6a5d10..5e67f1f 100644
--- a/signal/playerctl/playerctl_lib.lua
+++ b/signal/playerctl/playerctl_lib.lua
@@ -39,10 +39,12 @@ local function position_cb()
local position = player:get_position() / 1000000
local length = (player.metadata.value["mpris:length"] or 0) / 1000000
if position ~= last_position or length ~= last_length then
- awesome.emit_signal("bling::playerctl::position",
- position,
- length,
- player.player_name)
+ awesome.emit_signal(
+ "bling::playerctl::position",
+ position,
+ length,
+ player.player_name
+ )
last_position = position
last_length = length
end
@@ -50,7 +52,8 @@ local function position_cb()
end
local function get_album_art(url)
- return awful.util.shell .. [[ -c '
+ return awful.util.shell
+ .. [[ -c '
tmp_dir="$XDG_CACHE_HOME/awesome/"
@@ -64,7 +67,9 @@ if [ ! -d "$tmp_dir" ]; then
mkdir -p $tmp_dir
fi
-curl -s ']] .. url .. [[' --output $tmp_cover_path
+curl -s ']]
+ .. url
+ .. [[' --output $tmp_cover_path
echo "$tmp_cover_path"
']]
@@ -96,10 +101,15 @@ local function metadata_cb(player, metadata)
if player == manager.players[1] then
-- Callback can be called even though values we care about haven't
-- changed, so check to see if they have
- if player ~= last_player or title ~= last_title or
- artist ~= last_artist or artUrl ~= last_artUrl
+ if
+ player ~= last_player
+ or title ~= last_title
+ or artist ~= last_artist
+ or artUrl ~= last_artUrl
then
- if (title == "" and artist == "" and artUrl == "") then return end
+ if title == "" and artist == "" and artUrl == "" then
+ return
+ end
if metadata_timer ~= nil then
if metadata_timer.started then
@@ -107,7 +117,7 @@ local function metadata_cb(player, metadata)
end
end
- metadata_timer = gears.timer {
+ metadata_timer = gears.timer({
timeout = 0.3,
autostart = true,
single_shot = true,
@@ -122,7 +132,7 @@ local function metadata_cb(player, metadata)
line,
player.player_name
)
- end
+ end,
})
else
awesome.emit_signal(
@@ -133,8 +143,8 @@ local function metadata_cb(player, metadata)
player.player_name
)
end
- end
- }
+ end,
+ })
-- Re-sync with position timer when track changes
position_timer:again()
@@ -155,9 +165,17 @@ local function playback_status_cb(player, status)
if player == manager.players[1] then
if status == "PLAYING" then
- awesome.emit_signal("bling::playerctl::status", true, player.player_name)
+ awesome.emit_signal(
+ "bling::playerctl::status",
+ true,
+ player.player_name
+ )
else
- awesome.emit_signal("bling::playerctl::status", false, player.player_name)
+ awesome.emit_signal(
+ "bling::playerctl::status",
+ false,
+ player.player_name
+ )
end
end
end
@@ -243,10 +261,10 @@ local function start_manager()
end
-- Timer to update track position at specified interval
- position_timer = gears.timer {
+ position_timer = gears.timer({
timeout = interval,
- callback = position_cb
- }
+ callback = position_cb,
+ })
-- Manage existing players on startup
for _, name in ipairs(manager.player_names) do
@@ -295,9 +313,10 @@ local function playerctl_enable(args)
-- Grab settings from beautiful variables if not set explicitly
args.ignore = args.ignore or beautiful.playerctl_ignore
args.player = args.player or beautiful.playerctl_player
- args.update_on_activity = args.update_on_activity or
- beautiful.playerctl_update_on_activity
- args.interval = args.interval or beautiful.playerctl_position_update_interval
+ args.update_on_activity = args.update_on_activity
+ or beautiful.playerctl_update_on_activity
+ args.interval = args.interval
+ or beautiful.playerctl_position_update_interval
parse_args(args)
-- Grab playerctl library
@@ -328,4 +347,4 @@ local function playerctl_disable()
last_artUrl = ""
end
-return {enable = playerctl_enable, disable = playerctl_disable}
+return { enable = playerctl_enable, disable = playerctl_disable }
diff --git a/theme-var-template.lua b/theme-var-template.lua
index 38a3dd5..ad65463 100644
--- a/theme-var-template.lua
+++ b/theme-var-template.lua
@@ -4,10 +4,11 @@ This file has all theme variables of the bling module.
Every variable has a small comment on what it does.
You might just want to copy that whole part into your theme.lua and start adjusting from there.
---]] -- LuaFormatter off
+--]]
+-- LuaFormatter off
-- window swallowing
-theme.dont_swallow_classname_list = {"firefox", "Gimp"} -- list of class names that should not be swallowed
-theme.dont_swallow_filter_activated = true -- whether the filter above should be active
+theme.dont_swallow_classname_list = { "firefox", "Gimp" } -- list of class names that should not be swallowed
+theme.dont_swallow_filter_activated = true -- whether the filter above should be active
-- flash focus
theme.flash_focus_start_opacity = 0.6 -- the starting opacity
@@ -21,7 +22,7 @@ theme.playerctl_update_on_activity = true -- whether to prioritize the most rece
theme.playerctl_position_update_interval = 1 -- the update interval for fetching the position from playerctl
-- tabbed
-theme.tabbed_spawn_in_tab = false -- whether a new client should spawn into the focused tabbing container
+theme.tabbed_spawn_in_tab = false -- whether a new client should spawn into the focused tabbing container
-- tabbar general
theme.tabbar_disable = false -- disable the tab bar entirely
@@ -42,7 +43,7 @@ theme.mstab_dont_resize_slaves = false -- whether the tabbed stack windows shoul
-- currently focused stack window (set it to true if you use
-- transparent terminals. False if you use shadows on solid ones
theme.mstab_bar_padding = "default" -- how much padding there should be between clients and your tabbar
--- by default it will adjust based on your useless gaps.
+-- by default it will adjust based on your useless gaps.
-- If you want a custom value. Set it to the number of pixels (int)
theme.mstab_border_radius = 0 -- border radius of the tabbar
theme.mstab_bar_height = 40 -- height of the tabbar
@@ -51,7 +52,7 @@ theme.mstab_tabbar_style = "default" -- style of the tabbar ("default", "boxes"
-- defaults to the tabbar_style so only change if you want a
-- different style for mstab and tabbed
--- the following variables are currently only for the "modern" tabbar style
+-- the following variables are currently only for the "modern" tabbar style
theme.tabbar_color_close = "#f9929b" -- changes the color of the close button
theme.tabbar_color_min = "#fbdf90" -- changes the color of the minimize button
theme.tabbar_color_float = "#ccaced" -- changes the color of the float button
diff --git a/widget/init.lua b/widget/init.lua
index 0044a13..1b76ed3 100644
--- a/widget/init.lua
+++ b/widget/init.lua
@@ -1,5 +1,5 @@
return {
tag_preview = require(... .. ".tag_preview"),
task_preview = require(... .. ".task_preview"),
- tabbed_misc = require(... .. ".tabbed_misc")
+ tabbed_misc = require(... .. ".tabbed_misc"),
}
diff --git a/widget/tabbar/boxes.lua b/widget/tabbar/boxes.lua
index 8491dc8..d0619da 100644
--- a/widget/tabbar/boxes.lua
+++ b/widget/tabbar/boxes.lua
@@ -6,16 +6,16 @@ local beautiful = require("beautiful")
local bg_normal = beautiful.tabbar_bg_normal or beautiful.bg_normal or "#ffffff"
local fg_normal = beautiful.tabbar_fg_normal or beautiful.fg_normal or "#000000"
-local bg_focus = beautiful.tabbar_bg_focus or beautiful.bg_focus or "#000000"
-local fg_focus = beautiful.tabbar_fg_focus or beautiful.fg_focus or "#ffffff"
-local font = beautiful.tabbar_font or beautiful.font or "Hack 15"
-local size = beautiful.tabbar_size or 40
-local position = beautiful.tabbar_position or "bottom"
+local bg_focus = beautiful.tabbar_bg_focus or beautiful.bg_focus or "#000000"
+local fg_focus = beautiful.tabbar_fg_focus or beautiful.fg_focus or "#ffffff"
+local font = beautiful.tabbar_font or beautiful.font or "Hack 15"
+local size = beautiful.tabbar_size or 40
+local position = beautiful.tabbar_position or "bottom"
local function create(c, focused_bool, buttons)
local bg_temp = bg_normal
local fg_temp = fg_normal
- if focused_bool then
+ if focused_bool then
bg_temp = bg_focus
fg_temp = fg_focus
end
@@ -25,21 +25,21 @@ local function create(c, focused_bool, buttons)
awful.widget.clienticon(c),
left = 10,
right = 10,
- bottom= 10,
- top= 10,
- widget = wibox.container.margin()
+ bottom = 10,
+ top = 10,
+ widget = wibox.container.margin(),
},
- widget = wibox.container.place()
+ widget = wibox.container.place(),
},
buttons = buttons,
bg = bg_temp,
- widget = wibox.container.background()
+ widget = wibox.container.background(),
})
return wid_temp
-end
+end
local layout = wibox.layout.fixed.horizontal
-if position == "left" or position == "right" then
+if position == "left" or position == "right" then
layout = wibox.layout.fixed.vertical
end
@@ -49,6 +49,5 @@ return {
position = position,
size = size,
bg_normal = bg_normal,
- bg_focus = bg_normal
+ bg_focus = bg_normal,
}
-
diff --git a/widget/tabbar/default.lua b/widget/tabbar/default.lua
index 1d25274..2774d6f 100644
--- a/widget/tabbar/default.lua
+++ b/widget/tabbar/default.lua
@@ -5,10 +5,10 @@ local beautiful = require("beautiful")
local bg_normal = beautiful.tabbar_bg_normal or beautiful.bg_normal or "#ffffff"
local fg_normal = beautiful.tabbar_fg_normal or beautiful.fg_normal or "#000000"
-local bg_focus = beautiful.tabbar_bg_focus or beautiful.bg_focus or "#000000"
-local fg_focus = beautiful.tabbar_fg_focus or beautiful.fg_focus or "#ffffff"
-local font = beautiful.tabbar_font or beautiful.font or "Hack 15"
-local size = beautiful.tabbar_size or 20
+local bg_focus = beautiful.tabbar_bg_focus or beautiful.bg_focus or "#000000"
+local fg_focus = beautiful.tabbar_fg_focus or beautiful.fg_focus or "#ffffff"
+local font = beautiful.tabbar_font or beautiful.font or "Hack 15"
+local size = beautiful.tabbar_size or 20
local position = beautiful.tabbar_position or "top"
local function create(c, focused_bool, buttons)
@@ -16,7 +16,7 @@ local function create(c, focused_bool, buttons)
local title_temp = c.name or c.class or "-"
local bg_temp = bg_normal
local fg_temp = fg_normal
- if focused_bool then
+ if focused_bool then
bg_temp = bg_focus
fg_temp = fg_focus
end
@@ -24,20 +24,27 @@ local function create(c, focused_bool, buttons)
text_temp.align = "center"
text_temp.valign = "center"
text_temp.font = font
- text_temp.markup = "" .. title_temp.. ""
+ text_temp.markup = ""
+ .. title_temp
+ .. ""
c:connect_signal("property::name", function(_)
local title_temp = c.name or c.class or "-"
- text_temp.markup = "" .. title_temp.. ""
+ text_temp.markup = ""
+ .. title_temp
+ .. ""
end)
local wid_temp = wibox.widget({
text_temp,
buttons = buttons,
bg = bg_temp,
- widget = wibox.container.background()
+ widget = wibox.container.background(),
})
return wid_temp
-end
-
+end
return {
layout = wibox.layout.flex.horizontal,
@@ -45,5 +52,5 @@ return {
position = position,
size = size,
bg_normal = bg_normal,
- bg_focus = bg_focus
+ bg_focus = bg_focus,
}
diff --git a/widget/tabbar/modern.lua b/widget/tabbar/modern.lua
index b055d94..11f5e44 100644
--- a/widget/tabbar/modern.lua
+++ b/widget/tabbar/modern.lua
@@ -12,33 +12,36 @@ local bg_focus = beautiful.tabbar_bg_focus or beautiful.bg_focus or "#000000"
local fg_focus = beautiful.tabbar_fg_focus or beautiful.fg_focus or "#ffffff"
local font = beautiful.tabbar_font or beautiful.font or "Hack 15"
local size = beautiful.tabbar_size or dpi(40)
-local border_radius =
- beautiful.mstab_border_radius or beautiful.border_radius or 6
+local border_radius = beautiful.mstab_border_radius
+ or beautiful.border_radius
+ or 6
local position = beautiful.tabbar_position or "top"
-local close_color = beautiful.tabbar_color_close or beautiful.xcolor1 or
- "#f9929b"
+local close_color = beautiful.tabbar_color_close
+ or beautiful.xcolor1
+ or "#f9929b"
local min_color = beautiful.tabbar_color_min or beautiful.xcolor3 or "#fbdf90"
-local float_color = beautiful.tabbar_color_float or beautiful.xcolor5 or
- "#ccaced"
+local float_color = beautiful.tabbar_color_float
+ or beautiful.xcolor5
+ or "#ccaced"
-- Helper to create buttons
local function create_title_button(c, color_focus, color_unfocus)
- local tb_color = wibox.widget {
+ local tb_color = wibox.widget({
wibox.widget.textbox(),
forced_width = dpi(8),
forced_height = dpi(8),
bg = color_focus,
shape = gears.shape.circle,
- widget = wibox.container.background
- }
+ widget = wibox.container.background,
+ })
- local tb = wibox.widget {
+ local tb = wibox.widget({
tb_color,
width = dpi(25),
height = dpi(25),
strategy = "min",
- layout = wibox.layout.constraint
- }
+ layout = wibox.layout.constraint,
+ })
local function update()
if client.focus == c then
@@ -51,10 +54,13 @@ local function create_title_button(c, color_focus, color_unfocus)
c:connect_signal("focus", update)
c:connect_signal("unfocus", update)
- tb:connect_signal("mouse::enter",
- function() tb_color.bg = color_focus .. "70" end)
+ tb:connect_signal("mouse::enter", function()
+ tb_color.bg = color_focus .. "70"
+ end)
- tb:connect_signal("mouse::leave", function() tb_color.bg = color_focus end)
+ tb:connect_signal("mouse::leave", function()
+ tb_color.bg = color_focus
+ end)
tb.visible = true
return tb
@@ -73,58 +79,69 @@ local function create(c, focused_bool, buttons)
text_temp.align = "center"
text_temp.valign = "center"
text_temp.font = font
- text_temp.markup = "" .. title_temp ..
- ""
+ text_temp.markup = ""
+ .. title_temp
+ .. ""
c:connect_signal("property::name", function(_)
local title_temp = c.name or c.class or "-"
- text_temp.markup =
- "" .. title_temp .. ""
+ text_temp.markup = ""
+ .. title_temp
+ .. ""
end)
- local tab_content = wibox.widget {
+ local tab_content = wibox.widget({
{
awful.widget.clienticon(c),
top = dpi(6),
left = dpi(15),
bottom = dpi(6),
- widget = wibox.container.margin
+ widget = wibox.container.margin,
},
text_temp,
nill,
expand = "none",
- layout = wibox.layout.align.horizontal
- }
+ layout = wibox.layout.align.horizontal,
+ })
local close = create_title_button(c, close_color, bg_normal)
- close:connect_signal("button::press", function() c:kill() end)
+ close:connect_signal("button::press", function()
+ c:kill()
+ end)
local floating = create_title_button(c, float_color, bg_normal)
- floating:connect_signal("button::press",
- function() c.floating = not c.floating end)
+ floating:connect_signal("button::press", function()
+ c.floating = not c.floating
+ end)
local min = create_title_button(c, min_color, bg_normal)
- min:connect_signal("button::press", function() c.minimized = true end)
+ min:connect_signal("button::press", function()
+ c.minimized = true
+ end)
if focused_bool then
- tab_content = wibox.widget {
+ tab_content = wibox.widget({
{
awful.widget.clienticon(c),
top = dpi(10),
left = dpi(15),
bottom = dpi(10),
- widget = wibox.container.margin
+ widget = wibox.container.margin,
},
text_temp,
{
- {min, floating, close, layout = wibox.layout.fixed.horizontal},
+ { min, floating, close, layout = wibox.layout.fixed.horizontal },
top = dpi(10),
right = dpi(10),
bottom = dpi(10),
- widget = wibox.container.margin
+ widget = wibox.container.margin,
},
expand = "none",
- layout = wibox.layout.align.horizontal
- }
+ layout = wibox.layout.align.horizontal,
+ })
end
local main_content = nil
@@ -132,39 +149,69 @@ local function create(c, focused_bool, buttons)
local right_shape = nil
if position == "top" then
- main_content = wibox.widget {
+ main_content = wibox.widget({
{
tab_content,
bg = bg_temp,
- shape = helpers.shape.prrect(border_radius, true, true, false,
- false),
- widget = wibox.container.background
+ shape = helpers.shape.prrect(
+ border_radius,
+ true,
+ true,
+ false,
+ false
+ ),
+ widget = wibox.container.background,
},
top = dpi(8),
- widget = wibox.container.margin
- }
+ widget = wibox.container.margin,
+ })
- left_shape = helpers.shape.prrect(border_radius, false, false, true,
- false)
- right_shape = helpers.shape.prrect(border_radius, false, false, false,
- true)
+ left_shape = helpers.shape.prrect(
+ border_radius,
+ false,
+ false,
+ true,
+ false
+ )
+ right_shape = helpers.shape.prrect(
+ border_radius,
+ false,
+ false,
+ false,
+ true
+ )
else
- main_content = wibox.widget {
+ main_content = wibox.widget({
{
tab_content,
bg = bg_temp,
- shape = helpers.shape.prrect(border_radius, false, false, true,
- true),
- widget = wibox.container.background
+ shape = helpers.shape.prrect(
+ border_radius,
+ false,
+ false,
+ true,
+ true
+ ),
+ widget = wibox.container.background,
},
bottom = dpi(8),
- widget = wibox.container.margin
- }
+ widget = wibox.container.margin,
+ })
- left_shape = helpers.shape.prrect(border_radius, false, true, false,
- false)
- right_shape = helpers.shape.prrect(border_radius, true, false, false,
- false)
+ left_shape = helpers.shape.prrect(
+ border_radius,
+ false,
+ true,
+ false,
+ false
+ )
+ right_shape = helpers.shape.prrect(
+ border_radius,
+ true,
+ false,
+ false,
+ false
+ )
end
local wid_temp = wibox.widget({
@@ -175,16 +222,16 @@ local function create(c, focused_bool, buttons)
wibox.widget.textbox(),
bg = bg_normal,
shape = left_shape,
- widget = wibox.container.background
+ widget = wibox.container.background,
},
bg = bg_temp,
shape = gears.rectangle,
- widget = wibox.container.background
+ widget = wibox.container.background,
},
width = border_radius + (border_radius / 2),
height = size,
strategy = "exact",
- layout = wibox.layout.constraint
+ layout = wibox.layout.constraint,
},
main_content,
{
@@ -193,19 +240,19 @@ local function create(c, focused_bool, buttons)
wibox.widget.textbox(),
bg = bg_normal,
shape = right_shape,
- widget = wibox.container.background
+ widget = wibox.container.background,
},
bg = bg_temp,
shape = gears.rectangle,
- widget = wibox.container.background
+ widget = wibox.container.background,
},
width = border_radius + (border_radius / 2),
height = size,
strategy = "exact",
- layout = wibox.layout.constraint
+ layout = wibox.layout.constraint,
},
- layout = wibox.layout.align.horizontal
+ layout = wibox.layout.align.horizontal,
})
return wid_temp
end
@@ -216,5 +263,5 @@ return {
position = position,
size = size,
bg_normal = bg_normal,
- bg_focus = bg_focus
+ bg_focus = bg_focus,
}
diff --git a/widget/tabbar/pure.lua b/widget/tabbar/pure.lua
index 5581a8b..588e59f 100644
--- a/widget/tabbar/pure.lua
+++ b/widget/tabbar/pure.lua
@@ -6,11 +6,11 @@ local beautiful = require("beautiful")
local bg_normal = beautiful.tabbar_bg_normal or beautiful.bg_normal or "#ffffff"
local fg_normal = beautiful.tabbar_fg_normal or beautiful.fg_normal or "#000000"
-local bg_focus = beautiful.tabbar_bg_focus or beautiful.bg_focus or "#000000"
-local fg_focus = beautiful.tabbar_fg_focus or beautiful.fg_focus or "#ffffff"
-local font = beautiful.tabbar_font or beautiful.font or "Hack 15"
-local size = beautiful.tabbar_size or 20
-local position = beautiful.tabbar_position or "top"
+local bg_focus = beautiful.tabbar_bg_focus or beautiful.bg_focus or "#000000"
+local fg_focus = beautiful.tabbar_fg_focus or beautiful.fg_focus or "#ffffff"
+local font = beautiful.tabbar_font or beautiful.font or "Hack 15"
+local size = beautiful.tabbar_size or 20
+local position = beautiful.tabbar_position or "top"
local function create(c, focused_bool, buttons)
local bg_temp = focused_bool and bg_focus or bg_normal
@@ -19,40 +19,55 @@ local function create(c, focused_bool, buttons)
local wid_temp = wibox.widget({
{
{ -- Left
- wibox.widget.base.make_widget(awful.titlebar.widget.iconwidget(c)),
+ wibox.widget.base.make_widget(
+ awful.titlebar.widget.iconwidget(c)
+ ),
buttons = buttons,
- layout = wibox.layout.fixed.horizontal,
+ layout = wibox.layout.fixed.horizontal,
},
{ -- Title
- wibox.widget.base.make_widget(awful.titlebar.widget.titlewidget(c)),
+ wibox.widget.base.make_widget(
+ awful.titlebar.widget.titlewidget(c)
+ ),
buttons = buttons,
- widget = wibox.container.place,
+ widget = wibox.container.place,
},
{ -- Right
- focused_bool and wibox.widget.base.make_widget(awful.titlebar.widget.floatingbutton(c)) or nil,
- focused_bool and wibox.widget.base.make_widget(awful.titlebar.widget.stickybutton(c)) or nil,
- focused_bool and wibox.widget.base.make_widget(awful.titlebar.widget.ontopbutton(c)) or nil,
- focused_bool and wibox.widget.base.make_widget(awful.titlebar.widget.maximizedbutton(c)) or nil,
- focused_bool and wibox.widget.base.make_widget(awful.titlebar.widget.minimizebutton(c)) or nil,
- focused_bool and wibox.widget.base.make_widget(awful.titlebar.widget.closebutton(c)) or nil,
+ focused_bool and wibox.widget.base.make_widget(
+ awful.titlebar.widget.floatingbutton(c)
+ ) or nil,
+ focused_bool and wibox.widget.base.make_widget(
+ awful.titlebar.widget.stickybutton(c)
+ ) or nil,
+ focused_bool and wibox.widget.base.make_widget(
+ awful.titlebar.widget.ontopbutton(c)
+ ) or nil,
+ focused_bool and wibox.widget.base.make_widget(
+ awful.titlebar.widget.maximizedbutton(c)
+ ) or nil,
+ focused_bool and wibox.widget.base.make_widget(
+ awful.titlebar.widget.minimizebutton(c)
+ ) or nil,
+ focused_bool and wibox.widget.base.make_widget(
+ awful.titlebar.widget.closebutton(c)
+ ) or nil,
layout = wibox.layout.fixed.horizontal,
},
layout = wibox.layout.align.horizontal,
},
- bg = bg_temp,
- fg = fg_temp,
- widget = wibox.container.background,
+ bg = bg_temp,
+ fg = fg_temp,
+ widget = wibox.container.background,
})
return wid_temp
end
-
return {
- layout = wibox.layout.flex.horizontal,
- create = create,
- position = position,
- size = size,
+ layout = wibox.layout.flex.horizontal,
+ create = create,
+ position = position,
+ size = size,
bg_normal = bg_normal,
- bg_focus = bg_focus,
+ bg_focus = bg_focus,
}
diff --git a/widget/tabbed_misc/custom_tasklist.lua b/widget/tabbed_misc/custom_tasklist.lua
index e77e5b5..2e105c6 100644
--- a/widget/tabbed_misc/custom_tasklist.lua
+++ b/widget/tabbed_misc/custom_tasklist.lua
@@ -1,7 +1,7 @@
-local wibox = require('wibox')
-local awful = require('awful')
-local gears = require('gears')
-local beautiful = require('beautiful')
+local wibox = require("wibox")
+local awful = require("awful")
+local gears = require("gears")
+local beautiful = require("beautiful")
local dpi = require("beautiful.xresources").apply_dpi
local function tabobj_support(self, c, index, clients)
@@ -10,11 +10,10 @@ local function tabobj_support(self, c, index, clients)
return
end
- local group = c.bling_tabbed
+ local group = c.bling_tabbed
-- Single item tabbed group's dont get special rendering
if #group.clients > 1 then
-
local wrapper = wibox.widget({
{
-- This is so dumb... but it works so meh
@@ -29,24 +28,27 @@ local function tabobj_support(self, c, index, clients)
spacing = dpi(2),
layout = wibox.layout.fixed.vertical,
},
- id = 'click_role',
+ id = "click_role",
widget = wibox.container.margin,
- margins = dpi(5)
+ margins = dpi(5),
})
for idx, c in ipairs(group.clients) do
if c and c.icon then
-- TODO: Don't do this in a -1iq way
if idx <= 2 then
- wrapper:get_children_by_id("row1")[1]:add(awful.widget.clienticon(c))
+ wrapper
+ :get_children_by_id("row1")[1]
+ :add(awful.widget.clienticon(c))
else
- wrapper:get_children_by_id("row2")[1]:add(awful.widget.clienticon(c))
+ wrapper
+ :get_children_by_id("row2")[1]
+ :add(awful.widget.clienticon(c))
end
end
end
self.widget = wrapper
-
end
end
diff --git a/widget/tabbed_misc/init.lua b/widget/tabbed_misc/init.lua
index f0f1002..1de3fbb 100644
--- a/widget/tabbed_misc/init.lua
+++ b/widget/tabbed_misc/init.lua
@@ -1,4 +1,9 @@
return {
- titlebar_indicator = require(tostring(...):match(".*bling") .. ".widget.tabbed_misc.titlebar_indicator"),
- custom_tasklist = require(tostring(...):match(".*bling") .. ".widget.tabbed_misc.custom_tasklist")
+ titlebar_indicator = require(
+ tostring(...):match(".*bling")
+ .. ".widget.tabbed_misc.titlebar_indicator"
+ ),
+ custom_tasklist = require(
+ tostring(...):match(".*bling") .. ".widget.tabbed_misc.custom_tasklist"
+ ),
}
diff --git a/widget/tabbed_misc/titlebar_indicator.lua b/widget/tabbed_misc/titlebar_indicator.lua
index 243a722..af86ad2 100644
--- a/widget/tabbed_misc/titlebar_indicator.lua
+++ b/widget/tabbed_misc/titlebar_indicator.lua
@@ -1,9 +1,11 @@
-local wibox = require('wibox')
-local awful = require('awful')
-local gears = require('gears')
-local beautiful = require('beautiful')
+local wibox = require("wibox")
+local awful = require("awful")
+local gears = require("gears")
+local beautiful = require("beautiful")
local dpi = require("beautiful.xresources").apply_dpi
-local tabbed_module = require(tostring(...):match(".*bling") .. ".module.tabbed")
+local tabbed_module = require(
+ tostring(...):match(".*bling") .. ".module.tabbed"
+)
-- Just check if a table contains a value.
local function tbl_contains(tbl, item)
@@ -17,7 +19,6 @@ end
-- Needs to be run, every time a new titlbear is created
return function(c, opts)
-
-- Args & Fallback -- Widget templates are in their original loactions
opts = gears.table.crush({
layout_spacing = dpi(4),
@@ -25,8 +26,13 @@ return function(c, opts)
icon_margin = dpi(4),
bg_color_focus = "#ff0000",
bg_color = "#00000000",
- icon_shape = function(cr,w,h) gears.shape.rounded_rect(cr,w,h,0) end
- }, gears.table.join(opts, beautiful.bling_tabbed_misc_titlebar_indicator))
+ icon_shape = function(cr, w, h)
+ gears.shape.rounded_rect(cr, w, h, 0)
+ end,
+ }, gears.table.join(
+ opts,
+ beautiful.bling_tabbed_misc_titlebar_indicator
+ ))
-- Container to store icons
local tabbed_icons = wibox.widget({
@@ -34,25 +40,30 @@ return function(c, opts)
spacing = opts.layout_spacing,
})
- awesome.connect_signal("bling::tabbed::client_removed", function(_, removed_c)
- -- Remove from list
- for idx, icon in ipairs(tabbed_icons.children) do
- if icon:get_children_by_id("icon_role")[1].client == removed_c then
- tabbed_icons:remove(idx)
+ awesome.connect_signal(
+ "bling::tabbed::client_removed",
+ function(_, removed_c)
+ -- Remove from list
+ for idx, icon in ipairs(tabbed_icons.children) do
+ if
+ icon:get_children_by_id("icon_role")[1].client == removed_c
+ then
+ tabbed_icons:remove(idx)
+ end
+ end
+
+ -- Empty list
+ if removed_c == c then
+ tabbed_icons:reset()
end
end
-
- -- Empty list
- if removed_c == c then
- tabbed_icons:reset()
- end
- end)
+ )
local function recreate(group)
if tbl_contains(group.clients, c) then
tabbed_icons:reset()
local focused = group.clients[group.focused_idx]
-
+
-- Autohide?
if #group.clients == 1 then
return
@@ -63,7 +74,7 @@ return function(c, opts)
{
{
{
- id = 'icon_role',
+ id = "icon_role",
forced_width = opts.icon_size,
forced_height = opts.icon_size,
widget = awful.widget.clienticon,
@@ -71,9 +82,10 @@ return function(c, opts)
margins = opts.icon_margin,
widget = wibox.container.margin,
},
- bg = (client == focused) and (opts.bg_color_focus) or (opts.bg_color),
+ bg = (client == focused) and opts.bg_color_focus
+ or opts.bg_color,
shape = opts.icon_shape,
- id = 'click_role',
+ id = "click_role",
widget = wibox.container.background,
},
halign = "center",
@@ -90,7 +102,7 @@ return function(c, opts)
for _, w in ipairs(widget:get_children_by_id("click_role")) do
w:add_button(awful.button({}, 1, function()
- tabbed_module.switch_to(group,idx)
+ tabbed_module.switch_to(group, idx)
end))
end
@@ -101,7 +113,6 @@ return function(c, opts)
awesome.connect_signal("bling::tabbed::client_added", recreate)
awesome.connect_signal("bling::tabbed::changed_focus", recreate)
-
+
return tabbed_icons
end
-
diff --git a/widget/tag_preview.lua b/widget/tag_preview.lua
index 1e19240..f2ef42b 100644
--- a/widget/tag_preview.lua
+++ b/widget/tag_preview.lua
@@ -3,7 +3,7 @@
-- bling::tag_preview::update -- first line is the signal
-- t (tag) -- indented lines are function parameters
-- bling::tag_preview::visibility
--- s (screen)
+-- s (screen)
-- v (boolean)
--
local awful = require("awful")
@@ -14,26 +14,35 @@ local beautiful = require("beautiful")
local dpi = beautiful.xresources.apply_dpi
local cairo = require("lgi").cairo
-local function draw_widget(t, tag_preview_image, scale, screen_radius,
- client_radius, client_opacity, client_bg,
- client_border_color, client_border_width, widget_bg,
- widget_border_color, widget_border_width, geo, margin)
-
+local function draw_widget(
+ t,
+ tag_preview_image,
+ scale,
+ screen_radius,
+ client_radius,
+ client_opacity,
+ client_bg,
+ client_border_color,
+ client_border_width,
+ widget_bg,
+ widget_border_color,
+ widget_border_width,
+ geo,
+ margin
+)
local client_list = wibox.layout.manual()
client_list.forced_height = geo.height
client_list.forced_width = geo.width
local tag_screen = t.screen
for i, c in ipairs(t:clients()) do
-
if not c.hidden and not c.minimized then
-
- local img_box = wibox.widget {
+ local img_box = wibox.widget({
image = gears.surface.load(c.icon),
resize = true,
forced_height = 100 * scale,
forced_width = 100 * scale,
- widget = wibox.widget.imagebox
- }
+ widget = wibox.widget.imagebox,
+ })
if tag_preview_image then
if c.prev_content or t.selected then
@@ -45,25 +54,28 @@ local function draw_widget(t, tag_preview_image, scale, screen_radius,
end
local cr = cairo.Context(content)
local x, y, w, h = cr:clip_extents()
- local img = cairo.ImageSurface.create(cairo.Format.ARGB32,
- w - x, h - y)
+ local img = cairo.ImageSurface.create(
+ cairo.Format.ARGB32,
+ w - x,
+ h - y
+ )
cr = cairo.Context(img)
cr:set_source_surface(content, 0, 0)
cr.operator = cairo.Operator.SOURCE
cr:paint()
- img_box = wibox.widget {
+ img_box = wibox.widget({
image = gears.surface.load(img),
resize = true,
opacity = client_opacity,
forced_height = math.floor(c.height * scale),
forced_width = math.floor(c.width * scale),
- widget = wibox.widget.imagebox
- }
+ widget = wibox.widget.imagebox,
+ })
end
end
- local client_box = wibox.widget {
+ local client_box = wibox.widget({
{
nil,
{
@@ -71,11 +83,11 @@ local function draw_widget(t, tag_preview_image, scale, screen_radius,
img_box,
nil,
expand = "outside",
- layout = wibox.layout.align.horizontal
+ layout = wibox.layout.align.horizontal,
},
nil,
expand = "outside",
- widget = wibox.layout.align.vertical
+ widget = wibox.layout.align.vertical,
},
forced_height = math.floor(c.height * scale),
forced_width = math.floor(c.width * scale),
@@ -83,12 +95,12 @@ local function draw_widget(t, tag_preview_image, scale, screen_radius,
shape_border_color = client_border_color,
shape_border_width = client_border_width,
shape = helpers.shape.rrect(client_radius),
- widget = wibox.container.background
- }
+ widget = wibox.container.background,
+ })
client_box.point = {
x = math.floor((c.x - geo.x) * scale),
- y = math.floor((c.y - geo.y) * scale)
+ y = math.floor((c.y - geo.y) * scale),
}
client_list:add(client_box)
@@ -103,22 +115,20 @@ local function draw_widget(t, tag_preview_image, scale, screen_radius,
client_list,
forced_height = geo.height,
forced_width = geo.width,
- widget = wibox.container.place
+ widget = wibox.container.place,
},
- layout = wibox.layout.align.horizontal
+ layout = wibox.layout.align.horizontal,
},
- layout = wibox.layout.align.vertical
-
+ layout = wibox.layout.align.vertical,
},
margins = margin,
- widget = wibox.container.margin
-
+ widget = wibox.container.margin,
},
bg = widget_bg,
shape_border_width = widget_border_width,
shape_border_color = widget_border_color,
shape = helpers.shape.rrect(screen_radius),
- widget = wibox.container.background
+ widget = wibox.container.background,
}
end
@@ -138,15 +148,15 @@ local enable = function(opts)
local client_radius = beautiful.tag_preview_client_border_radius or dpi(0)
local client_opacity = beautiful.tag_preview_client_opacity or 0.5
local client_bg = beautiful.tag_preview_client_bg or "#000000"
- local client_border_color = beautiful.tag_preview_client_border_color or
- "#ffffff"
- local client_border_width = beautiful.tag_preview_client_border_width or
- dpi(3)
+ local client_border_color = beautiful.tag_preview_client_border_color
+ or "#ffffff"
+ local client_border_width = beautiful.tag_preview_client_border_width
+ or dpi(3)
local widget_bg = beautiful.tag_preview_widget_bg or "#000000"
- local widget_border_color = beautiful.tag_preview_widget_border_color or
- "#ffffff"
- local widget_border_width = beautiful.tag_preview_widget_border_width or
- dpi(3)
+ local widget_border_color = beautiful.tag_preview_widget_border_color
+ or "#ffffff"
+ local widget_border_width = beautiful.tag_preview_widget_border_width
+ or dpi(3)
local tag_preview_box = awful.popup({
type = "dropdown_menu",
@@ -155,7 +165,7 @@ local enable = function(opts)
placement = placement_fn,
widget = wibox.container.background,
input_passthrough = true,
- bg = "#00000000"
+ bg = "#00000000",
})
tag.connect_signal("property::selected", function(t)
@@ -165,20 +175,31 @@ local enable = function(opts)
end)
awesome.connect_signal("bling::tag_preview::update", function(t)
- local geo = t.screen:get_bounding_geometry{
+ local geo = t.screen:get_bounding_geometry({
honor_padding = padding,
- honor_workarea = work_area
- }
+ honor_workarea = work_area,
+ })
tag_preview_box.maximum_width = scale * geo.width + margin * 2
tag_preview_box.maximum_height = scale * geo.height + margin * 2
- tag_preview_box:setup(draw_widget(t, tag_preview_image, scale,
- screen_radius, client_radius,
- client_opacity, client_bg,
- client_border_color,
- client_border_width, widget_bg,
- widget_border_color,
- widget_border_width, geo, margin))
+ tag_preview_box:setup(
+ draw_widget(
+ t,
+ tag_preview_image,
+ scale,
+ screen_radius,
+ client_radius,
+ client_opacity,
+ client_bg,
+ client_border_color,
+ client_border_width,
+ widget_bg,
+ widget_border_color,
+ widget_border_width,
+ geo,
+ margin
+ )
+ )
end)
awesome.connect_signal("bling::tag_preview::visibility", function(s, v)
@@ -191,4 +212,4 @@ local enable = function(opts)
end)
end
-return {enable = enable}
+return { enable = enable }
diff --git a/widget/task_preview.lua b/widget/task_preview.lua
index d104fca..4712ebd 100644
--- a/widget/task_preview.lua
+++ b/widget/task_preview.lua
@@ -14,11 +14,22 @@ local dpi = beautiful.xresources.apply_dpi
local cairo = require("lgi").cairo
-- TODO: rename structure to something better?
-local function draw_widget(c, widget_template, screen_radius, widget_bg,
- widget_border_color, widget_border_width, margin,
- widget_width, widget_height)
-
- if not pcall(function() return type(c.content) end) then return end
+local function draw_widget(
+ c,
+ widget_template,
+ screen_radius,
+ widget_bg,
+ widget_border_color,
+ widget_border_width,
+ margin,
+ widget_width,
+ widget_height
+)
+ if not pcall(function()
+ return type(c.content)
+ end) then
+ return
+ end
local content = gears.surface(c.content)
local cr = cairo.Context(content)
local x, y, w, h = cr:clip_extents()
@@ -28,61 +39,61 @@ local function draw_widget(c, widget_template, screen_radius, widget_bg,
cr.operator = cairo.Operator.SOURCE
cr:paint()
- local widget = wibox.widget {
+ local widget = wibox.widget({
(widget_template or {
{
{
{
{
- id = 'icon_role',
+ id = "icon_role",
resize = true,
forced_height = dpi(20),
forced_width = dpi(20),
- widget = wibox.widget.imagebox
+ widget = wibox.widget.imagebox,
},
{
{
- id = 'name_role',
+ id = "name_role",
align = "center",
- widget = wibox.widget.textbox
+ widget = wibox.widget.textbox,
},
left = dpi(4),
right = dpi(4),
- widget = wibox.container.margin
+ widget = wibox.container.margin,
},
- layout = wibox.layout.align.horizontal
+ layout = wibox.layout.align.horizontal,
},
{
{
{
- id = 'image_role',
+ id = "image_role",
resize = true,
clip_shape = helpers.shape.rrect(screen_radius),
- widget = wibox.widget.imagebox
+ widget = wibox.widget.imagebox,
},
valign = "center",
halign = "center",
- widget = wibox.container.place
+ widget = wibox.container.place,
},
top = margin * 0.25,
- widget = wibox.container.margin
+ widget = wibox.container.margin,
},
fill_space = true,
- layout = wibox.layout.fixed.vertical
+ layout = wibox.layout.fixed.vertical,
},
margins = margin,
- widget = wibox.container.margin
+ widget = wibox.container.margin,
},
bg = widget_bg,
shape_border_width = widget_border_width,
shape_border_color = widget_border_color,
shape = helpers.shape.rrect(screen_radius),
- widget = wibox.container.background
+ widget = wibox.container.background,
}),
width = widget_width,
height = widget_height,
- widget = wibox.container.constraint
- }
+ widget = wibox.container.constraint,
+ })
-- TODO: have something like a create callback here?
@@ -102,7 +113,6 @@ local function draw_widget(c, widget_template, screen_radius, widget_bg,
end
local enable = function(opts)
-
local opts = opts or {}
local widget_x = opts.x or dpi(20)
@@ -114,30 +124,35 @@ local enable = function(opts)
local margin = beautiful.task_preview_widget_margin or dpi(0)
local screen_radius = beautiful.task_preview_widget_border_radius or dpi(0)
local widget_bg = beautiful.task_preview_widget_bg or "#000000"
- local widget_border_color = beautiful.task_preview_widget_border_color or
- "#ffffff"
- local widget_border_width = beautiful.task_preview_widget_border_width or
- dpi(3)
+ local widget_border_color = beautiful.task_preview_widget_border_color
+ or "#ffffff"
+ local widget_border_width = beautiful.task_preview_widget_border_width
+ or dpi(3)
- local task_preview_box = awful.popup(
- {
- type = "dropdown_menu",
- visible = false,
- ontop = true,
- placement = placement_fn,
- widget = wibox.container.background, -- A dummy widget to make awful.popup not scream
- input_passthrough = true,
- bg = "#00000000"
- })
+ local task_preview_box = awful.popup({
+ type = "dropdown_menu",
+ visible = false,
+ ontop = true,
+ placement = placement_fn,
+ widget = wibox.container.background, -- A dummy widget to make awful.popup not scream
+ input_passthrough = true,
+ bg = "#00000000",
+ })
awesome.connect_signal("bling::task_preview::visibility", function(s, v, c)
if v then
-- Update task preview contents
- task_preview_box.widget = draw_widget(c, opts.structure,
- screen_radius, widget_bg,
- widget_border_color,
- widget_border_width, margin,
- widget_width, widget_height)
+ task_preview_box.widget = draw_widget(
+ c,
+ opts.structure,
+ screen_radius,
+ widget_bg,
+ widget_border_color,
+ widget_border_width,
+ margin,
+ widget_width,
+ widget_height
+ )
end
if not placement_fn then
@@ -149,4 +164,4 @@ local enable = function(opts)
end)
end
-return {enable = enable}
+return { enable = enable }