init dots
2
.config/awesome/.gitignore
vendored
Normal file
|
@ -0,0 +1,2 @@
|
|||
libs
|
||||
.luarc.json
|
8
.config/awesome/components/info_center/init.lua
Normal file
|
@ -0,0 +1,8 @@
|
|||
local awful = require "awful"
|
||||
local vars = require "themes.prismite.vars"
|
||||
local wibox = require "wibox"
|
||||
local obj = require "gears.object"
|
||||
local debug = require "gears.debug"
|
||||
local naughty = require "naughty"
|
||||
local xresources = require "beautiful.xresources"
|
||||
local dpi = xresources.apply_dpi
|
15
.config/awesome/components/keybinds/client.lua
Normal file
|
@ -0,0 +1,15 @@
|
|||
local awful = require "awful"
|
||||
|
||||
client.connect_signal("request::default_mousebindings", function()
|
||||
awful.mouse.append_client_mousebindings({
|
||||
awful.button({ }, 1, function (c)
|
||||
c:activate { context = "mouse_click" }
|
||||
end),
|
||||
awful.button({ modkey }, 1, function (c)
|
||||
c:activate { context = "mouse_click", action = "mouse_move" }
|
||||
end),
|
||||
awful.button({ modkey }, 3, function (c)
|
||||
c:activate { context = "mouse_click", action = "mouse_resize" }
|
||||
end)
|
||||
})
|
||||
end)
|
149
.config/awesome/components/keybinds/global.lua
Normal file
|
@ -0,0 +1,149 @@
|
|||
local awful = require "awful"
|
||||
local gears = require "gears"
|
||||
local naughty = require "naughty"
|
||||
local hkp = require "awful.hotkeys_popup.widget"
|
||||
local vars = require "themes.prismite.vars"
|
||||
|
||||
local labels = {
|
||||
Control = "Ctrl",
|
||||
Mod1 = "Alt",
|
||||
ISO_Level3_Shift = "Alt Gr",
|
||||
Mod4 = "Super",
|
||||
Insert = "Ins",
|
||||
Delete = "Del",
|
||||
Next = "PgDn",
|
||||
Prior = "PgUp",
|
||||
Left = "",
|
||||
Up = "",
|
||||
Right = "",
|
||||
Down = "",
|
||||
KP_End = "Num1",
|
||||
KP_Down = "Num2",
|
||||
KP_Next = "Num3",
|
||||
KP_Left = "Num4",
|
||||
KP_Begin = "Num5",
|
||||
KP_Right = "Num6",
|
||||
KP_Home = "Num7",
|
||||
KP_Up = "Num8",
|
||||
KP_Prior = "Num9",
|
||||
KP_Insert = "Num0",
|
||||
KP_Delete = "Num.",
|
||||
KP_Divide = "Num/",
|
||||
KP_Multiply = "Num*",
|
||||
KP_Subtract = "Num-",
|
||||
KP_Add = "Num+",
|
||||
KP_Enter = "NumEnter",
|
||||
-- Some "obvious" entries are necessary for the Escape sequence
|
||||
-- and whitespace characters:
|
||||
Escape = "Esc",
|
||||
Tab = "Tab",
|
||||
space = "Space",
|
||||
Return = "Enter",
|
||||
-- Dead keys aren't distinct from non-dead keys because no sane
|
||||
-- layout should have both of the same kind:
|
||||
dead_acute = "´",
|
||||
dead_circumflex = "^",
|
||||
dead_grave = "`",
|
||||
-- Basic multimedia keys:
|
||||
XF86MonBrightnessUp = "🔆+",
|
||||
XF86MonBrightnessDown = "🔅-",
|
||||
XF86AudioRaiseVolume = "ﱛ",
|
||||
XF86AudioLowerVolume = "ﱜ",
|
||||
XF86AudioMute = "ﱝ",
|
||||
XF86AudioPlay = "⏯",
|
||||
XF86AudioPrev = "⏮",
|
||||
XF86AudioNext = "⏭",
|
||||
XF86AudioStop = "⏹",
|
||||
}
|
||||
|
||||
local globalkeys = gears.table.join(
|
||||
-- awesome
|
||||
awful.key {
|
||||
modifiers = { modkey, "Control" },
|
||||
key = "r",
|
||||
on_press = awesome.restart,
|
||||
group = "awesome",
|
||||
description = "restart awesome"
|
||||
},
|
||||
awful.key {
|
||||
modifiers = { modkey, "Control" },
|
||||
key = "s",
|
||||
on_press = function()
|
||||
hkp.new {
|
||||
shape = vars.shape,
|
||||
modifiers_fg = "#8893a5",
|
||||
labels = labels
|
||||
}:show_help()
|
||||
end,
|
||||
group = "awesome",
|
||||
description = "toggle help"
|
||||
},
|
||||
|
||||
-- general
|
||||
awful.key {
|
||||
modifiers = {},
|
||||
key = "XF86AudioMute",
|
||||
on_press = function()
|
||||
naughty.notification {
|
||||
message = "mute"
|
||||
}
|
||||
end,
|
||||
group = "general",
|
||||
description = "mute audio"
|
||||
},
|
||||
|
||||
-- launcher
|
||||
awful.key {
|
||||
modifiers = { modkey },
|
||||
key = "Return",
|
||||
on_press = function ()
|
||||
awful.spawn("kitty")
|
||||
end,
|
||||
group = "launcher",
|
||||
description = "launch kitty"
|
||||
},
|
||||
|
||||
-- client
|
||||
awful.key {
|
||||
modifiers = { modkey, "Control" },
|
||||
key = "q",
|
||||
on_press = function()
|
||||
local c = client.focus
|
||||
if c then
|
||||
c:kill()
|
||||
end
|
||||
end,
|
||||
group = "client",
|
||||
description = "kill client"
|
||||
},
|
||||
awful.key {
|
||||
modifiers = { modkey, "Control" },
|
||||
key = "f",
|
||||
on_press = function()
|
||||
local c = client.focus
|
||||
if c then
|
||||
c.fullscreen = not c.fullscreen
|
||||
end
|
||||
end,
|
||||
group = "client",
|
||||
description = "toggle fullscreen"
|
||||
},
|
||||
|
||||
-- tag
|
||||
awful.key {
|
||||
modifiers = { modkey },
|
||||
key = "Up",
|
||||
on_press = awful.tag.viewprev,
|
||||
group = "tag",
|
||||
description = "switch to previous tag"
|
||||
},
|
||||
awful.key {
|
||||
modifiers = { modkey },
|
||||
key = "Down",
|
||||
on_press = awful.tag.viewnext,
|
||||
group = "tag",
|
||||
description = "switch to next tag"
|
||||
}
|
||||
)
|
||||
|
||||
root.keys(globalkeys)
|
4
.config/awesome/components/keybinds/init.lua
Normal file
|
@ -0,0 +1,4 @@
|
|||
modkey = "Mod4"
|
||||
|
||||
require "components.keybinds.global"
|
||||
require "components.keybinds.client"
|
32
.config/awesome/components/signals/awesome.lua
Normal file
|
@ -0,0 +1,32 @@
|
|||
-- Taken from https://www.reddit.com/r/awesomewm/comments/syjolb/comment/hy0xy35/
|
||||
|
||||
awesome.connect_signal('exit', function(reason_restart)
|
||||
if not reason_restart then return end
|
||||
|
||||
local file = io.open('/tmp/awesomewm-last-selected-tags', 'w+')
|
||||
|
||||
for s in screen do
|
||||
file:write(s.selected_tag.index, '\n')
|
||||
end
|
||||
|
||||
file:close()
|
||||
end)
|
||||
|
||||
awesome.connect_signal('startup', function()
|
||||
local file = io.open('/tmp/awesomewm-last-selected-tags', 'r')
|
||||
if not file then return end
|
||||
|
||||
local selected_tags = {}
|
||||
|
||||
for line in file:lines() do
|
||||
table.insert(selected_tags, tonumber(line))
|
||||
end
|
||||
|
||||
for s in screen do
|
||||
local i = selected_tags[s.index]
|
||||
local t = s.tags[i]
|
||||
t:view_only()
|
||||
end
|
||||
|
||||
file:close()
|
||||
end)
|
104
.config/awesome/components/signals/client.lua
Normal file
|
@ -0,0 +1,104 @@
|
|||
local awful = require "awful"
|
||||
local beautiful = require "beautiful"
|
||||
-- local cairo = require "lgi".cairo
|
||||
local gears = require "gears"
|
||||
local xresources = require "beautiful.xresources"
|
||||
local dpi = xresources.apply_dpi
|
||||
local wibox = require "wibox"
|
||||
|
||||
client.connect_signal("property::name", function(c)
|
||||
if not c then return end -- Sometimes c is nil for some reason
|
||||
if not c.pid then return end
|
||||
|
||||
local out = io.popen("readlink /proc/" .. c.pid .. "/exe")
|
||||
local name = c.name
|
||||
if out ~= nil then
|
||||
name = out:read("*a"):sub(0, -2):match("[^\\/]+$") or name
|
||||
end
|
||||
c.name = string.lower(name)
|
||||
end)
|
||||
|
||||
client.connect_signal("property::urgent", function(c)
|
||||
if c.class ~= "kitty" then
|
||||
c:activate({
|
||||
switch_to_tag = true
|
||||
})
|
||||
c.urgent = false
|
||||
end
|
||||
end)
|
||||
|
||||
client.connect_signal("request::manage", function (c)
|
||||
local parent = c.transient_for
|
||||
if parent then
|
||||
c:move_to_tag(parent.first_tag)
|
||||
end
|
||||
|
||||
if not c.pid then return end
|
||||
|
||||
awful.spawn.easy_async({ "readlink", "/proc/" .. c.pid .. "/exe" }, function(name)
|
||||
c.name = string.lower(name:match("[^\\/]+$") or name)
|
||||
end)
|
||||
|
||||
-- Forcefully set the correct icon for a client
|
||||
-- Taken from https://discord.com/channels/702548301299580939/893586726885425163/947173452073287722 (Author: Orlando#0171) and modified a little bit
|
||||
-- local icon_cache = Get_icon(beautiful.get().icon_theme, c)
|
||||
|
||||
-- if type(icon_cache) ~= "userdata" then
|
||||
-- local s = gears.surface(icon_cache)
|
||||
-- local img = cairo.ImageSurface.create(cairo.Format.ARGB32, s:get_width(), s:get_height())
|
||||
-- local cr = cairo.Context(img)
|
||||
-- cr:set_source_surface(s, 0, 0)
|
||||
-- cr:paint()
|
||||
|
||||
-- c.icon = img._native
|
||||
-- end
|
||||
end)
|
||||
|
||||
client.connect_signal("property::maximized", function(c)
|
||||
c.border_width = beautiful.border_width
|
||||
end)
|
||||
|
||||
client.connect_signal("request::titlebars", function(c)
|
||||
local buttons = gears.table.join(
|
||||
awful.button({ }, 1, function()
|
||||
c:emit_signal("request::activate", "titlebar", {raise = true})
|
||||
awful.mouse.client.move(c)
|
||||
end),
|
||||
awful.button({ }, 3, function()
|
||||
c:emit_signal("request::activate", "titlebar", {raise = true})
|
||||
awful.mouse.client.resize(c)
|
||||
end)
|
||||
)
|
||||
|
||||
awful.titlebar.enable_tooltip = false
|
||||
|
||||
awful.titlebar(c) : setup {
|
||||
-- {
|
||||
-- widget = wibox.container.margin,
|
||||
-- left = dpi(8),
|
||||
-- awful.titlebar.widget.titlewidget(c),
|
||||
-- buttons = buttons
|
||||
-- },
|
||||
nil,
|
||||
|
||||
{
|
||||
widget = wibox.widget.base.empty_widget(),
|
||||
buttons = buttons
|
||||
},
|
||||
{
|
||||
|
||||
{
|
||||
awful.titlebar.widget.maximizedbutton (c),
|
||||
awful.titlebar.widget.minimizebutton (c),
|
||||
awful.titlebar.widget.closebutton (c),
|
||||
|
||||
spacing = dpi(4),
|
||||
layout = wibox.layout.fixed.horizontal
|
||||
},
|
||||
|
||||
margins = dpi(5),
|
||||
widget = wibox.container.margin,
|
||||
},
|
||||
layout = wibox.layout.align.horizontal
|
||||
}
|
||||
end)
|
5
.config/awesome/components/signals/init.lua
Normal file
|
@ -0,0 +1,5 @@
|
|||
require "components.signals.naughty"
|
||||
require "components.signals.awesome"
|
||||
require "components.signals.client"
|
||||
require "components.signals.rules"
|
||||
require "components.signals.screen"
|
64
.config/awesome/components/signals/naughty.lua
Normal file
|
@ -0,0 +1,64 @@
|
|||
local awful = require "awful"
|
||||
local vars = require "themes.prismite.vars"
|
||||
local wibox = require "wibox"
|
||||
local naughty = require "naughty"
|
||||
local xresources = require "beautiful.xresources"
|
||||
local dpi = xresources.apply_dpi
|
||||
|
||||
function build_notification(n)
|
||||
|
||||
|
||||
local popup = awful.popup {
|
||||
widget = {
|
||||
{
|
||||
{
|
||||
widget = naughty.widget.icon,
|
||||
image = n.image,
|
||||
forced_height = 64,
|
||||
forced_width = 64,
|
||||
clip_shape = vars.shape
|
||||
},
|
||||
{
|
||||
{
|
||||
widget = wibox.widget.textbox,
|
||||
text = n.title
|
||||
},
|
||||
{
|
||||
widget = wibox.widget.textbox,
|
||||
text = n.message
|
||||
},
|
||||
layout = wibox.layout.fixed.vertical
|
||||
},
|
||||
layout = wibox.layout.fixed.horizontal
|
||||
},
|
||||
widget = wibox.container.margin,
|
||||
margins = dpi(4)
|
||||
},
|
||||
border_color = vars.colors.bright.black,
|
||||
border_width = vars.border_width,
|
||||
ontop = true,
|
||||
placement = function(d)
|
||||
return awful.placement.bottom_right(d, {
|
||||
honor_padding = true
|
||||
})
|
||||
end,
|
||||
bg = vars.colors.bg,
|
||||
shape = vars.shape,
|
||||
}
|
||||
|
||||
-- popup.y = screen[1].tiling_area.height - - dpi(4)
|
||||
end
|
||||
|
||||
-- naughty.connect_signal("request::display", build_notification)
|
||||
|
||||
naughty.connect_signal("request::display", function(n)
|
||||
naughty.layout.box { notification = n }
|
||||
end)
|
||||
|
||||
naughty.connect_signal("request::display_error", function(message, startup)
|
||||
naughty.notification {
|
||||
urgency = "critical",
|
||||
title = "Oops, an error happened"..(startup and " during startup!" or "!"),
|
||||
message = message
|
||||
}
|
||||
end)
|
102
.config/awesome/components/signals/rules.lua
Normal file
|
@ -0,0 +1,102 @@
|
|||
local ruled = require "ruled"
|
||||
local beautiful = require "beautiful"
|
||||
local awful = require "awful"
|
||||
local vars = require "themes.prismite.vars"
|
||||
|
||||
ruled.client.connect_signal("request::rules", function()
|
||||
ruled.client.append_rule({
|
||||
id = "global",
|
||||
rule = {},
|
||||
properties = {
|
||||
border_width = beautiful.border_width,
|
||||
border_color = beautiful.border_normal,
|
||||
focus = awful.client.focus.filter,
|
||||
raise = true,
|
||||
screen = awful.screen.preferred,
|
||||
placement = awful.placement.centered+awful.placement.no_offscreen,
|
||||
floating = false,
|
||||
shape = vars.shape,
|
||||
honor_padding = true
|
||||
-- tag = "1"
|
||||
}
|
||||
})
|
||||
|
||||
ruled.client.append_rule({
|
||||
id = "titlebars",
|
||||
rule_any = {
|
||||
type = {
|
||||
"normal",
|
||||
"dialog"
|
||||
}
|
||||
},
|
||||
properties = {
|
||||
titlebars_enabled = true
|
||||
}
|
||||
})
|
||||
|
||||
ruled.client.append_rule({
|
||||
id = "steam",
|
||||
rule_any = {
|
||||
class = { "Steam" }
|
||||
},
|
||||
properties = {
|
||||
screen = 1,
|
||||
tag = screen[1].tags[6]
|
||||
}
|
||||
})
|
||||
|
||||
ruled.client.append_rule({
|
||||
id = "browser_tag",
|
||||
rule_any = {
|
||||
class = { "firefox" }
|
||||
},
|
||||
properties = {
|
||||
screen = 1,
|
||||
tag = screen[1].tags[2]
|
||||
}
|
||||
})
|
||||
|
||||
ruled.client.append_rule({
|
||||
id = "chat_tag",
|
||||
rule_any = {
|
||||
class = { "discord" }
|
||||
},
|
||||
properties = {
|
||||
screen = 1,
|
||||
tag = screen[1].tags[3]
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
ruled.client.append_rule({
|
||||
id = "music_tag",
|
||||
rule_any = {
|
||||
class = { "Spotify" }
|
||||
},
|
||||
properties = {
|
||||
screen = 1,
|
||||
tag = screen[1].tags[4]
|
||||
}
|
||||
})
|
||||
|
||||
ruled.client.append_rule({
|
||||
id = "code_tag",
|
||||
rule_any = {
|
||||
class = { "lite-xl", "code_kitty" }
|
||||
},
|
||||
properties = {
|
||||
screen = 1,
|
||||
tag = screen[1].tags[5]
|
||||
}
|
||||
})
|
||||
|
||||
ruled.client.append_rule({
|
||||
id = "pip",
|
||||
rule = {
|
||||
name = "Picture-in-Picture"
|
||||
},
|
||||
properties = {
|
||||
ontop = true
|
||||
}
|
||||
})
|
||||
end)
|
79
.config/awesome/components/signals/screen.lua
Normal file
|
@ -0,0 +1,79 @@
|
|||
local awful = require "awful"
|
||||
local wibox = require "wibox"
|
||||
local beautiful = require "beautiful"
|
||||
local xresources = require "beautiful.xresources"
|
||||
local dpi = xresources.apply_dpi
|
||||
|
||||
screen.connect_signal("request::wallpaper", function(s)
|
||||
awful.wallpaper {
|
||||
screen = s,
|
||||
widget = {
|
||||
{
|
||||
image = beautiful.wallpaper,
|
||||
upscale = true,
|
||||
downscale = true,
|
||||
widget = wibox.widget.imagebox,
|
||||
},
|
||||
valign = "center",
|
||||
halign = "center",
|
||||
tiled = false,
|
||||
widget = wibox.container.tile,
|
||||
}
|
||||
}
|
||||
end)
|
||||
|
||||
screen.connect_signal("request::desktop_decoration", function(s)
|
||||
-- s.padding = dpi(4)
|
||||
|
||||
awful.tag.add(
|
||||
"",
|
||||
{
|
||||
screen = s,
|
||||
layout = awful.layout.suit.floating,
|
||||
selected = true
|
||||
}
|
||||
)
|
||||
|
||||
awful.tag.add(
|
||||
"",
|
||||
{
|
||||
screen = s,
|
||||
layout = awful.layout.suit.floating,
|
||||
|
||||
}
|
||||
)
|
||||
|
||||
awful.tag.add(
|
||||
"",
|
||||
{
|
||||
screen = s,
|
||||
layout = awful.layout.suit.tile.left,
|
||||
master_width_factor = 0.7
|
||||
}
|
||||
)
|
||||
|
||||
awful.tag.add(
|
||||
"",
|
||||
{
|
||||
screen = s,
|
||||
layout = awful.layout.suit.tile
|
||||
}
|
||||
)
|
||||
|
||||
awful.tag.add(
|
||||
"",
|
||||
{
|
||||
screen = s,
|
||||
layout = awful.layout.suit.tile.right,
|
||||
master_width_factor = 0.7
|
||||
}
|
||||
)
|
||||
|
||||
awful.tag.add(
|
||||
"",
|
||||
{
|
||||
screen = s,
|
||||
layout = awful.layout.suit.floating,
|
||||
}
|
||||
)
|
||||
end)
|
78
.config/awesome/components/statusbar/battery.lua
Normal file
|
@ -0,0 +1,78 @@
|
|||
local awful = require "awful"
|
||||
local xresources = require "beautiful.xresources"
|
||||
local dpi = xresources.apply_dpi
|
||||
local vars = require "themes.prismite.vars"
|
||||
local wibox = require "wibox"
|
||||
|
||||
local battery_inner = awful.widget.watch("cat /sys/class/power_supply/BAT0/capacity", 1, function(widget, stdout)
|
||||
local icon = ""
|
||||
local color = vars.colors.red
|
||||
|
||||
if io.popen("cat /sys/class/power_supply/BAT0/status"):read("*a"):sub(0, -2) == "Charging" then
|
||||
icon = ""
|
||||
color = vars.colors.green
|
||||
widget:set_markup("<span color=\"" .. color .. "\">" .. icon .. "</span>")
|
||||
return
|
||||
end
|
||||
|
||||
local percent = tonumber(stdout)
|
||||
|
||||
if percent <= 5 then
|
||||
icon = ""
|
||||
color = vars.colors.red
|
||||
elseif percent <= 10 then
|
||||
icon = ""
|
||||
color = vars.colors.red
|
||||
elseif percent <= 20 then
|
||||
icon = ""
|
||||
color = vars.colors.red
|
||||
elseif percent <= 30 then
|
||||
icon = ""
|
||||
color = vars.colors.yellow
|
||||
elseif percent <= 40 then
|
||||
icon = ""
|
||||
color = vars.colors.yellow
|
||||
elseif percent <= 50 then
|
||||
icon = ""
|
||||
color = vars.colors.yellow
|
||||
elseif percent <= 60 then
|
||||
icon = ""
|
||||
color = vars.colors.yellow
|
||||
elseif percent <= 70 then
|
||||
icon = ""
|
||||
color = vars.colors.yellow
|
||||
elseif percent <= 80 then
|
||||
icon = ""
|
||||
color = vars.colors.green
|
||||
elseif percent <= 90 then
|
||||
icon = ""
|
||||
color = vars.colors.green
|
||||
elseif percent <= 100 then
|
||||
icon = ""
|
||||
color = vars.colors.green
|
||||
end
|
||||
|
||||
widget:set_markup("<span color=\"" .. color .. "\">" .. icon .. "</span>")
|
||||
end)
|
||||
|
||||
local battery = wibox.widget {
|
||||
widget = wibox.container.place,
|
||||
battery_inner
|
||||
}
|
||||
|
||||
awful.tooltip {
|
||||
objects = { battery },
|
||||
timer_function = function()
|
||||
return io.popen("cat /sys/class/power_supply/BAT0/capacity"):read("*a"):sub(0, -2) .. "%"
|
||||
end,
|
||||
bg = vars.colors.bg,
|
||||
fg = vars.colors.fg,
|
||||
border_color = vars.colors.bright.black,
|
||||
border_width = vars.border_width,
|
||||
font = vars.font,
|
||||
shape = vars.shape,
|
||||
margin_leftright = dpi(6),
|
||||
margin_topbottom = dpi(6)
|
||||
}
|
||||
|
||||
return battery
|
33
.config/awesome/components/statusbar/brightness.lua
Normal file
|
@ -0,0 +1,33 @@
|
|||
local awful = require "awful"
|
||||
local xresources = require "beautiful.xresources"
|
||||
local dpi = xresources.apply_dpi
|
||||
local vars = require "themes.prismite.vars"
|
||||
local wibox = require "wibox"
|
||||
|
||||
|
||||
local brightness = wibox.widget {
|
||||
widget = wibox.container.place,
|
||||
{
|
||||
widget = wibox.widget.textbox,
|
||||
font = vars.font,
|
||||
text = ""
|
||||
},
|
||||
}
|
||||
|
||||
awful.tooltip {
|
||||
objects = { brightness },
|
||||
timer_function = function()
|
||||
return math.floor(tonumber(io.popen("brightnessctl g"):read("*a"):sub(0, -2)) / 255 * 100) .. "%"
|
||||
end,
|
||||
timeout = 0.5,
|
||||
bg = vars.colors.bg,
|
||||
fg = vars.colors.fg,
|
||||
border_color = vars.colors.bright.black,
|
||||
border_width = vars.border_width,
|
||||
font = vars.font,
|
||||
shape = vars.shape,
|
||||
margin_leftright = dpi(6),
|
||||
margin_topbottom = dpi(6)
|
||||
}
|
||||
|
||||
return brightness
|
32
.config/awesome/components/statusbar/clock.lua
Normal file
|
@ -0,0 +1,32 @@
|
|||
local awful = require "awful"
|
||||
local xresources = require "beautiful.xresources"
|
||||
local dpi = xresources.apply_dpi
|
||||
local vars = require "themes.prismite.vars"
|
||||
local wibox = require "wibox"
|
||||
|
||||
|
||||
local clock = wibox.widget {
|
||||
widget = wibox.container.place,
|
||||
{
|
||||
format = "%H\n%M",
|
||||
widget = wibox.widget.textclock,
|
||||
font = vars.font
|
||||
},
|
||||
}
|
||||
|
||||
awful.tooltip {
|
||||
objects = { clock },
|
||||
timer_function = function()
|
||||
return os.date("%a %d/%m/%y")
|
||||
end,
|
||||
bg = vars.colors.bg,
|
||||
fg = vars.colors.fg,
|
||||
border_color = vars.colors.bright.black,
|
||||
border_width = vars.border_width,
|
||||
font = vars.font,
|
||||
shape = vars.shape,
|
||||
margin_leftright = dpi(6),
|
||||
margin_topbottom = dpi(6)
|
||||
}
|
||||
|
||||
return clock
|
57
.config/awesome/components/statusbar/init.lua
Normal file
|
@ -0,0 +1,57 @@
|
|||
local awful = require "awful"
|
||||
local beautiful = require "beautiful"
|
||||
local xresources = require "beautiful.xresources"
|
||||
local dpi = xresources.apply_dpi
|
||||
local vars = require "themes.prismite.vars"
|
||||
local wibox = require "wibox"
|
||||
|
||||
local taglist = require "components.statusbar.taglist"
|
||||
local clock = require "components.statusbar.clock"
|
||||
local wifi = require "components.statusbar.wifi"
|
||||
local battery = require "components.statusbar.battery"
|
||||
local brightness = require "components.statusbar.brightness"
|
||||
|
||||
screen.connect_signal("request::desktop_decoration", function(s)
|
||||
local bar = awful.wibar({
|
||||
-- placement = function(d)
|
||||
-- local place = awful.placement.left + awful.placement.maximize_vertically
|
||||
-- return place(d, {
|
||||
-- margins = beautiful.useless_gap
|
||||
-- })
|
||||
-- end,
|
||||
margins = dpi(4),
|
||||
position = "left",
|
||||
screen = s,
|
||||
restrict_workarea = true,
|
||||
height = s.geometry.height - (beautiful.useless_gap * 4 + vars.border_width * 2) - 2,
|
||||
width = dpi(32),
|
||||
border_width = vars.border_width,
|
||||
border_color = vars.colors.bright.black,
|
||||
shape = vars.shape,
|
||||
bg = vars.colors.bg,
|
||||
widget = {
|
||||
{
|
||||
margins = dpi(4),
|
||||
widget = wibox.container.margin,
|
||||
{
|
||||
layout = wibox.layout.fixed.vertical,
|
||||
taglist
|
||||
}
|
||||
},
|
||||
nil,
|
||||
{
|
||||
margins = dpi(4),
|
||||
widget = wibox.container.margin,
|
||||
{
|
||||
layout = wibox.layout.fixed.vertical,
|
||||
spacing = dpi(8),
|
||||
brightness,
|
||||
battery,
|
||||
wifi,
|
||||
clock
|
||||
}
|
||||
},
|
||||
layout = wibox.layout.align.vertical,
|
||||
}
|
||||
})
|
||||
end)
|
86
.config/awesome/components/statusbar/taglist.lua
Normal file
|
@ -0,0 +1,86 @@
|
|||
local awful = require "awful"
|
||||
local xresources = require "beautiful.xresources"
|
||||
local dpi = xresources.apply_dpi
|
||||
local vars = require "themes.prismite.vars"
|
||||
local wibox = require "wibox"
|
||||
local naughty = require "naughty"
|
||||
|
||||
return awful.widget.taglist({
|
||||
screen = screen[1],
|
||||
filter = awful.widget.taglist.filter.all,
|
||||
style = {
|
||||
shape = vars.shape
|
||||
},
|
||||
layout = {
|
||||
spacing = 8,
|
||||
layout = wibox.layout.fixed.vertical
|
||||
},
|
||||
widget_template = {
|
||||
{
|
||||
{
|
||||
{
|
||||
id = "text_role",
|
||||
widget = wibox.widget.textbox,
|
||||
},
|
||||
widget = wibox.container.place,
|
||||
},
|
||||
{
|
||||
widget = wibox.container.background,
|
||||
bg = vars.colors.bright.black,
|
||||
shape = vars.shape,
|
||||
forced_height = dpi(2),
|
||||
forced_width = dpi(16),
|
||||
id = "indicator_role"
|
||||
},
|
||||
layout = wibox.layout.fixed.vertical
|
||||
},
|
||||
widget = wibox.container.place,
|
||||
create_callback = function(self, tag)
|
||||
local indicator = self:get_children_by_id("indicator_role")[1]
|
||||
local text = self:get_children_by_id("text_role")[1]
|
||||
-- naughty.notification {
|
||||
-- message = "b ".. tostring(text.font)
|
||||
-- }
|
||||
|
||||
-- text.font = "FiraCode Nerd Font Mono SemiBold 12"
|
||||
|
||||
-- naughty.notification {
|
||||
-- message = "a " .. tostring(text.font)
|
||||
-- }
|
||||
|
||||
self:connect_signal("mouse::enter", function()
|
||||
if tag.selected then return end
|
||||
|
||||
indicator.bg = vars.colors.yellow
|
||||
end)
|
||||
|
||||
self:connect_signal("mouse::leave", function()
|
||||
if tag.selected then return end
|
||||
|
||||
indicator.bg = vars.colors.bright.black
|
||||
end)
|
||||
|
||||
if tag.selected then
|
||||
indicator.bg = vars.colors.yellow
|
||||
end
|
||||
end,
|
||||
update_callback = function(self, tag)
|
||||
local indicator = self:get_children_by_id("indicator_role")[1]
|
||||
|
||||
if tag.selected then
|
||||
indicator.bg = vars.colors.yellow
|
||||
else
|
||||
indicator.bg = vars.colors.bright.black
|
||||
end
|
||||
end
|
||||
},
|
||||
buttons = {
|
||||
awful.button({ }, 1, function(t) t:view_only() end),
|
||||
awful.button({ modkey }, 1, function(t)
|
||||
if client.focus then
|
||||
client.focus:move_to_tag(t)
|
||||
end
|
||||
end),
|
||||
awful.button({ }, 3, awful.tag.viewtoggle),
|
||||
}
|
||||
})
|
60
.config/awesome/components/statusbar/wifi.lua
Normal file
|
@ -0,0 +1,60 @@
|
|||
local awful = require "awful"
|
||||
local xresources = require "beautiful.xresources"
|
||||
local dpi = xresources.apply_dpi
|
||||
local vars = require "themes.prismite.vars"
|
||||
local wibox = require "wibox"
|
||||
|
||||
local wifi_inner = awful.widget.watch("awk 'NR==3 {printf(\"%.0f\", $3*10/7)}' /proc/net/wireless", 1, function(widget, stdout)
|
||||
widget.font = "DejaVu Sans Mono wifi ramp Normal 8"
|
||||
local icon = ""
|
||||
local color = vars.colors.red
|
||||
|
||||
if stdout == "" then
|
||||
widget:set_markup("<span color=\"" .. color .. "\">" .. icon .. "</span>")
|
||||
return
|
||||
end
|
||||
|
||||
local percent = tonumber(stdout)
|
||||
|
||||
if percent <= 20 then
|
||||
icon = ""
|
||||
color = vars.colors.red
|
||||
elseif percent <= 40 then
|
||||
icon = ""
|
||||
color = vars.colors.yellow
|
||||
elseif percent <= 60 then
|
||||
icon = ""
|
||||
color = vars.colors.yellow
|
||||
elseif percent <= 80 then
|
||||
icon = ""
|
||||
color = vars.colors.green
|
||||
elseif percent <= 100 then
|
||||
icon = ""
|
||||
color = vars.colors.green
|
||||
end
|
||||
|
||||
|
||||
widget:set_markup("<span color=\"" .. color .. "\">" .. icon .. "</span>")
|
||||
end)
|
||||
|
||||
local wifi = wibox.widget {
|
||||
widget = wibox.container.place,
|
||||
wifi_inner
|
||||
}
|
||||
|
||||
awful.tooltip {
|
||||
objects = { wifi },
|
||||
timer_function = function()
|
||||
return io.popen("iwgetid -r"):read("*a"):sub(0, -2)
|
||||
end,
|
||||
bg = vars.colors.bg,
|
||||
fg = vars.colors.fg,
|
||||
border_color = vars.colors.bright.black,
|
||||
border_width = vars.border_width,
|
||||
font = vars.font,
|
||||
shape = vars.shape,
|
||||
margin_leftright = dpi(6),
|
||||
margin_topbottom = dpi(6)
|
||||
}
|
||||
|
||||
return wifi
|
172
.config/awesome/components/window_switcher/init.lua
Normal file
|
@ -0,0 +1,172 @@
|
|||
local awful = require "awful"
|
||||
local vars = require "themes.prismite.vars"
|
||||
local wibox = require "wibox"
|
||||
local obj = require "gears.object"
|
||||
local debug = require "gears.debug"
|
||||
local naughty = require "naughty"
|
||||
local xresources = require "beautiful.xresources"
|
||||
local dpi = xresources.apply_dpi
|
||||
|
||||
|
||||
local ws = obj {
|
||||
enable_properties = true,
|
||||
enable_auto_signals = true
|
||||
}
|
||||
|
||||
ws.selected = 1
|
||||
ws.max = 0
|
||||
|
||||
local widget = awful.popup {
|
||||
widget = {
|
||||
{
|
||||
widget = awful.widget.tasklist {
|
||||
screen = screen[1],
|
||||
filter = awful.widget.tasklist.filter.allscreen,
|
||||
style = {
|
||||
shape = vars.shape,
|
||||
},
|
||||
layout = {
|
||||
forced_num_rows = 1,
|
||||
layout = wibox.layout.grid.vertical,
|
||||
spacing = dpi(4)
|
||||
},
|
||||
widget_template = {
|
||||
{
|
||||
layout = wibox.layout.align.horizontal,
|
||||
{
|
||||
widget = wibox.container.place,
|
||||
{
|
||||
widget = wibox.container.margin,
|
||||
margins = dpi(6),
|
||||
{
|
||||
id = "text_role",
|
||||
widget = wibox.widget.textbox,
|
||||
}
|
||||
}
|
||||
},
|
||||
nil,
|
||||
{
|
||||
widget = wibox.container.place,
|
||||
{
|
||||
widget = wibox.container.margin,
|
||||
margins = dpi(6),
|
||||
{
|
||||
id = "tag_role",
|
||||
widget = wibox.widget.textbox,
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
forced_width = dpi(screen[1].geometry.width / 8),
|
||||
bg = vars.colors.black,
|
||||
border_width = vars.border_width,
|
||||
border_color = vars.colors.black,
|
||||
shape = vars.shape,
|
||||
widget = wibox.container.background,
|
||||
create_callback = function(self, client, i)
|
||||
-- self:get_children_by_id("name_role")[1].text = client.name
|
||||
self:get_children_by_id("tag_role")[1].text = client.first_tag.name
|
||||
|
||||
ws:connect_signal("property::selected", function(selected)
|
||||
naughty.notification {
|
||||
urgency = "critical",
|
||||
message = tostring(selected) .. " | " .. tostring(i)
|
||||
}
|
||||
|
||||
if selected == i then
|
||||
self.border_color = vars.colors.yellow
|
||||
else
|
||||
self.border_color = vars.colors.black
|
||||
end
|
||||
end)
|
||||
end
|
||||
-- update_callback = function(self, _, i)
|
||||
-- if ws.selected == i then
|
||||
-- self.border_color = vars.colors.yellow
|
||||
-- else
|
||||
-- self.border_color = vars.colors.black
|
||||
-- end
|
||||
-- end
|
||||
}
|
||||
},
|
||||
id = "tasklist"
|
||||
},
|
||||
widget = wibox.container.margin,
|
||||
margins = dpi(4)
|
||||
},
|
||||
border_color = vars.colors.bright.black,
|
||||
border_width = vars.border_width,
|
||||
ontop = true,
|
||||
placement = awful.placement.centered,
|
||||
bg = vars.colors.bg,
|
||||
shape = vars.shape,
|
||||
visible = false
|
||||
}
|
||||
|
||||
ws.widget = widget
|
||||
|
||||
ws.max = ws.widget.widget.tasklist.count
|
||||
|
||||
|
||||
|
||||
-- ws.widget:connect_signal("property::count", function(self)
|
||||
-- naughty.notification {
|
||||
-- urgency = "critical",
|
||||
-- message = tostring(ws.max)
|
||||
-- }
|
||||
-- ws.max = self.count
|
||||
-- end)
|
||||
|
||||
awful.keygrabber {
|
||||
keybindings = {
|
||||
awful.key {
|
||||
modifiers = { "Mod1" },
|
||||
key = "Tab",
|
||||
on_press = function()
|
||||
-- naughty.notification {
|
||||
-- urgency = "critical",
|
||||
-- message = tostring(WS.widget)
|
||||
-- }
|
||||
naughty.notification {
|
||||
urgency = "critical",
|
||||
message = tostring(ws.selected)
|
||||
}
|
||||
-- local file = io.open("/home/delta/.cache/awesome/tasklist_dump.txt", "w+")
|
||||
-- file:write(debug.dump_return(WS.widget, "tasklist"))
|
||||
-- file:close()
|
||||
-- ws.widget:emit_signal_recursive("widget::layout_changed")
|
||||
-- WS.widget:emit_signal("widget::redraw_needed")
|
||||
if ws.selected + 1 > ws.max then
|
||||
ws.selected = 1
|
||||
return
|
||||
end
|
||||
ws.selected = ws.selected + 1
|
||||
end
|
||||
},
|
||||
awful.key {
|
||||
modifiers = { "Mod1", "Shift" },
|
||||
key = "Tab",
|
||||
on_press = function()
|
||||
ws.widget:emit_signal("widget::layout_changed")
|
||||
if ws.selected - 1 == 0 then
|
||||
ws.selected = ws.max
|
||||
return
|
||||
end
|
||||
ws.selected = ws.selected - 1
|
||||
end
|
||||
},
|
||||
},
|
||||
stop_key = "Mod1",
|
||||
stop_event = "release",
|
||||
start_callback = function()
|
||||
ws.widget.visible = true
|
||||
naughty.notification {
|
||||
urgency = "critical",
|
||||
message = tostring(ws.max)
|
||||
}
|
||||
end,
|
||||
stop_callback = function()
|
||||
ws.widget.visible = false
|
||||
end,
|
||||
autostart = false
|
||||
}
|
19
.config/awesome/rc.lua
Normal file
|
@ -0,0 +1,19 @@
|
|||
pcall(require, "luarocks.loader")
|
||||
|
||||
local gears = require "gears"
|
||||
local awful = require "awful"
|
||||
|
||||
local beautiful = require "beautiful"
|
||||
beautiful.init(gears.filesystem.get_configuration_dir() .. "/themes/prismite/prismite.lua")
|
||||
|
||||
|
||||
require "components.signals"
|
||||
require "components.window_switcher"
|
||||
require "components.keybinds"
|
||||
require "components.statusbar"
|
||||
|
||||
tag.connect_signal("request::default_layouts", function()
|
||||
awful.layout.append_default_layouts({
|
||||
awful.layout.suit.floating
|
||||
})
|
||||
end)
|
BIN
.config/awesome/themes/prismite/lotus_wallpaper.png
Normal file
After Width: | Height: | Size: 64 KiB |
BIN
.config/awesome/themes/prismite/old_wallpaper.png
Normal file
After Width: | Height: | Size: 117 KiB |
73
.config/awesome/themes/prismite/prismite.lua
Normal file
|
@ -0,0 +1,73 @@
|
|||
local theme_assets = require("beautiful.theme_assets")
|
||||
local xresources = require "beautiful.xresources"
|
||||
local dpi = xresources.apply_dpi
|
||||
|
||||
local g = require("gears")
|
||||
local naughty = require("naughty")
|
||||
|
||||
local vars = require "themes.prismite.vars"
|
||||
|
||||
local theme = {}
|
||||
|
||||
theme.font = vars.font
|
||||
|
||||
theme.bg_normal = vars.colors.bg
|
||||
theme.bg_focus = vars.colors.bg
|
||||
theme.bg_urgent = vars.colors.bg
|
||||
theme.bg_minimize = vars.colors.bg
|
||||
theme.bg_systray = vars.colors.bg
|
||||
|
||||
theme.fg_normal = vars.colors.fg
|
||||
theme.fg_focus = vars.colors.fg
|
||||
theme.fg_urgent = vars.colors.fg
|
||||
theme.fg_minimize = vars.colors.fg
|
||||
|
||||
theme.useless_gap = dpi(2)
|
||||
theme.border_width = vars.border_width
|
||||
theme.border_normal = vars.colors.bright.black
|
||||
theme.border_focus = vars.colors.bright.black
|
||||
theme.border_marked = vars.colors.bright.black
|
||||
|
||||
theme.titlebar_close_button_normal = g.surface.load_from_shape(15, 15, g.shape.rounded_rect, vars.colors.red, "transparent", 4)
|
||||
theme.titlebar_close_button_focus = g.surface.load_from_shape(15, 15, g.shape.rounded_rect, vars.colors.red, "transparent", 4)
|
||||
theme.titlebar_close_button_normal_hover = g.surface.load_from_shape(15, 15, g.shape.rounded_rect, vars.colors.bright.red, "transparent", 4)
|
||||
theme.titlebar_close_button_focus_hover = g.surface.load_from_shape(15, 15, g.shape.rounded_rect, vars.colors.bright.red, "transparent", 4)
|
||||
|
||||
theme.titlebar_minimize_button_normal = g.surface.load_from_shape(15, 15, g.shape.rounded_rect, vars.colors.yellow, "transparent", 4)
|
||||
theme.titlebar_minimize_button_focus = g.surface.load_from_shape(15, 15, g.shape.rounded_rect, vars.colors.yellow, "transparent", 4)
|
||||
theme.titlebar_minimize_button_normal_hover = g.surface.load_from_shape(15, 15, g.shape.rounded_rect, vars.colors.bright.yellow, "transparent", 4)
|
||||
theme.titlebar_minimize_button_focus_hover = g.surface.load_from_shape(15, 15, g.shape.rounded_rect, vars.colors.bright.yellow, "transparent", 4)
|
||||
|
||||
theme.titlebar_maximized_button_normal_inactive = g.surface.load_from_shape(15, 15, g.shape.rounded_rect, vars.colors.green, "transparent", 4)
|
||||
theme.titlebar_maximized_button_focus_inactive = g.surface.load_from_shape(15, 15, g.shape.rounded_rect, vars.colors.green, "transparent", 4)
|
||||
theme.titlebar_maximized_button_normal_active = g.surface.load_from_shape(15, 15, g.shape.rounded_rect, vars.colors.bright.green, "transparent", 4)
|
||||
theme.titlebar_maximized_button_focus_active = g.surface.load_from_shape(15, 15, g.shape.rounded_rect, vars.colors.bright.green, "transparent", 4)
|
||||
|
||||
theme.menu_submenu_icon = "/usr/share/awesome/themes/default/submenu.png"
|
||||
theme.menu_height = dpi(15)
|
||||
theme.menu_width = dpi(100)
|
||||
|
||||
theme.wallpaper = vars.theme_path.."wallpaper.png"
|
||||
|
||||
theme.awesome_icon = theme_assets.awesome_icon(
|
||||
theme.menu_height, vars.colors.yellow, vars.colors.red
|
||||
)
|
||||
|
||||
theme.notification_icon_size = dpi(32)
|
||||
theme.notification_border_width = vars.border_width
|
||||
theme.notification_border_color = theme.border_normal
|
||||
theme.notification_shape = vars.shape
|
||||
|
||||
naughty.config.presets.critical.bg = theme.bg_normal
|
||||
naughty.config.presets.critical.timeout = 3
|
||||
naughty.config.presets.critical.fg = theme.fg_normal
|
||||
naughty.config.presets.critical.border_color = vars.colors.red
|
||||
naughty.config.defaults.position = "bottom_right"
|
||||
naughty.config.defaults.border_width = vars.border_width
|
||||
|
||||
theme.tasklist_plain_task_name = true
|
||||
|
||||
theme.icon_theme = "Papirus-Dark"
|
||||
|
||||
return theme
|
||||
|
BIN
.config/awesome/themes/prismite/prismite_logo.png
Normal file
After Width: | Height: | Size: 20 KiB |
BIN
.config/awesome/themes/prismite/sd_wallpaper.png
Normal file
After Width: | Height: | Size: 1.2 MiB |
BIN
.config/awesome/themes/prismite/sd_wallpaper_new.png
Normal file
After Width: | Height: | Size: 1.2 MiB |
51
.config/awesome/themes/prismite/vars.lua
Normal file
|
@ -0,0 +1,51 @@
|
|||
local gears = require "gears"
|
||||
local gfs = require("gears.filesystem")
|
||||
local xresources = require "beautiful.xresources"
|
||||
local x_col = xresources.get_current_theme()
|
||||
local dpi = xresources.apply_dpi
|
||||
|
||||
|
||||
local shape = function(cr,w,h)
|
||||
gears.shape.rounded_rect(cr,w,h,8)
|
||||
end
|
||||
|
||||
local border_width = dpi(1.5)
|
||||
|
||||
local font = "FiraCode Nerd Font Mono SemiBold 8"
|
||||
|
||||
local theme_path = gfs.get_configuration_dir() .. "themes/prismite/"
|
||||
|
||||
local colors = {
|
||||
fg = x_col.foreground,
|
||||
bg = x_col.background,
|
||||
|
||||
black = x_col.color0,
|
||||
red = x_col.color1,
|
||||
green = x_col.color2,
|
||||
yellow = x_col.color3,
|
||||
blue = x_col.color4,
|
||||
magenta = x_col.color5,
|
||||
cyan = x_col.color6,
|
||||
white = x_col.color7,
|
||||
|
||||
bright = {
|
||||
black = x_col.color8,
|
||||
red = x_col.color9,
|
||||
green = x_col.color10,
|
||||
yellow = x_col.color11,
|
||||
blue = x_col.color12,
|
||||
magenta = x_col.color13,
|
||||
cyan = x_col.color14,
|
||||
white = x_col.color15,
|
||||
}
|
||||
}
|
||||
|
||||
local vars = {
|
||||
["shape"] = shape,
|
||||
["colors"] = colors,
|
||||
["border_width"] = border_width,
|
||||
["font"] = font,
|
||||
["theme_path"] = theme_path
|
||||
}
|
||||
|
||||
return vars
|
BIN
.config/awesome/themes/prismite/wallpaper.png
Normal file
After Width: | Height: | Size: 51 KiB |
BIN
.config/awesome/themes/prismite/wallpaper_clean.png
Normal file
After Width: | Height: | Size: 56 KiB |