commit b380e753b191fe257019bb9c7f26364a4807d751 Author: crylia Date: Sun Sep 12 22:59:41 2021 +0200 Add config files for awesomewm, alacritty, picom and rofi diff --git a/alacritty/alacritty.yml b/alacritty/alacritty.yml new file mode 100644 index 0000000..cd3e653 --- /dev/null +++ b/alacritty/alacritty.yml @@ -0,0 +1,107 @@ +################################################ +# ██████╗██████╗ ██╗ ██╗██╗ ██╗ █████╗ # +# ██╔════╝██╔══██╗╚██╗ ██╔╝██║ ██║██╔══██╗ # +# ██║ ██████╔╝ ╚████╔╝ ██║ ██║███████║ # +# ██║ ██╔══██╗ ╚██╔╝ ██║ ██║██╔══██║ # +# ╚██████╗██║ ██║ ██║ ███████╗██║██║ ██║ # +# ╚═════╝╚═╝ ╚═╝ ╚═╝ ╚══════╝╚═╝╚═╝ ╚═╝ # +################################################ + +# Set the window Width and Height in console columns. +# The window size will change if the font size changes. +window: + dimensions: + columns: 110 + lines: 30 + decorations: full + startup_mode: Windowed + title: "Alacritty Terminal" + dynamic_title: true +# Scrolling history and multiplier +scrolling: + history: 10000 + multiplier: 3 +# Font family and style +font: + normal: + family: "MesloLGS NF" + style: Regular + bold: + family: "MesloLGS NF" + style: Bold + italic: + family: "MesloLGS NF" + style: italic + bold_italic: + family: "MesloLGS NF" + style: Bold Italic + size: 12.0 + offset: + x: 0 + y: 0 + draw_bold_text_with_bright_colors: false +# Background opacity from 0.0 transparent, 1.0 Opaque +background_opacity: 0.4 +# Terminal colors +colors: + primary: + background: '#000000' + foreground: '#FFFFFF' + cursor: + cursor: '#00b8ff' + search: + matches: + foreground: '#000000' + background: '#EA80FC' + focus_match: + foreground: '#000000' + background: '#E040FB' + bar: + foreground: '#B388FF' + background: '#121212' + selection: + text: '#EA80FC' + background: '#121212' + normal: + black: '#121212' + red: '#ff5252' + green: '#8BC34A' + yellow: '#FFFF00' + blue: '#82B1FF' + magenta: '#EA80FC' + cyan: '#84FFFF' + white: '#FFFFFF' + bright: + black: '#363636' + red: '#ef9a9a' + green: '#A5D6A7' + yellow: '#FFF59D' + blue: '#90CAF9' + magenta: '#CE93D8' + cyan: '#80DEEA' + white: '#FFFFFF' +# Cursor styling +cursor: + style: Beam + thickness: 0.2 + unfocused_hollow: false + blink_interval: 750 + +################################################################################ +# ███████╗██╗ ██╗ ██████╗ ██████╗ ████████╗ ██████╗██╗ ██╗████████╗███████╗ # +# ██╔════╝██║ ██║██╔═══██╗██╔══██╗╚══██╔══╝██╔════╝██║ ██║╚══██╔══╝██╔════╝ # +# ███████╗███████║██║ ██║██████╔╝ ██║ ██║ ██║ ██║ ██║ ███████╗ # +# ╚════██║██╔══██║██║ ██║██╔══██╗ ██║ ██║ ██║ ██║ ██║ ╚════██║ # +# ███████║██║ ██║╚██████╔╝██║ ██║ ██║ ╚██████╗╚██████╔╝ ██║ ███████║ # +# ╚══════╝╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═════╝ ╚═╝ ╚══════╝ # +################################################################################ + +# Mouse +mouse_bindings: + - { mouse: Right, action: Paste } + +# Keyboard +key_bindings: + - { key: C, mods: Control|Shift, action: Copy } + - { key: V, mods: Control|Shift, action: Paste } + - { key: C, mods: Control, mode: Vi, action: ClearSelection } diff --git a/awesome/bindings/bindtotags.lua b/awesome/bindings/bindtotags.lua new file mode 100644 index 0000000..27df697 --- /dev/null +++ b/awesome/bindings/bindtotags.lua @@ -0,0 +1,69 @@ +-- Awesome Libs +local awful = require("awful") +local gears = require("gears") + +local _M = {} +local modkey = RC.vars.modkey + +function _M.get(globalkeys) + for i = 1, 9 do + globalkeys = gears.table.join(globalkeys, + + -- View tag only + awful.key( + {modkey}, + "#" .. i + 9, + function() + local screen = awful.screen.focused() + local tag = screen.tags[i] + if tag then + tag:view_only() + end + end, + {description = "View Tag " .. i, group = "Tag"} + ), + -- Brings the window over without chaning the tag, reverts automatically on tag change + awful.key( + {modkey, "Control"}, + "#" .. i + 9, + function() + local screen = awful.screen.focused() + local tag = screen.tags[i] + if tag then + awful.tag.viewtoggle(tag) + end + end, + {description = "Toggle Tag " .. i, group = "Tag"} + ), + -- Brings the window over without chaning the tag, reverts automatically on tag change + awful.key( + {modkey, "Shift"}, + "#" .. i + 9, + function() + local screen = awful.screen.focused() + local tag = screen.tags[i] + if tag then + awful.tag.viewtoggle(tag) + end + end, + {description = "Move focused client on tag " .. i, group = "Tag"} + ), + -- Brings the window over without chaning the tag, reverts automatically on tag change + awful.key( + {modkey, "Control", "Shift"}, + "#" .. i + 9, + function() + local screen = awful.screen.focused() + local tag = screen.tags[i] + if tag then + awful.tag.viewtoggle(tag) + end + end, + {description = "Move focused client on tag " .. i, group = "Tag"} + ) + ) + end + return globalkeys +end + +return _M.get \ No newline at end of file diff --git a/awesome/bindings/clientbuttons.lua b/awesome/bindings/clientbuttons.lua new file mode 100644 index 0000000..12f54e4 --- /dev/null +++ b/awesome/bindings/clientbuttons.lua @@ -0,0 +1,25 @@ +-- Awesome Libs +local awful = require("awful") +local gears = require("gears") + +local _M = {} +local modkey = RC.vars.modkey + +function _M.get() + local clientbuttons = gears.table.join( + awful.button({ }, 1, function (c) + c:emit_signal("request::activate", "mouse_click", { raise = true }) + end), + awful.button({ modkey }, 1, function (c) + c:emit_signal("request::activate", "mouse_click", { raise = true }) + awful.mouse.client.move(c) + end), + awful.button({ modkey }, 3, function (c) + c:emit_signal("request::activate", "mouse_click", { raise = true }) + awful.mouse.client.resize(c) + end) + ) + return clientbuttons +end + +return _M.get \ No newline at end of file diff --git a/awesome/bindings/clientkeys.lua b/awesome/bindings/clientkeys.lua new file mode 100644 index 0000000..8ff9b67 --- /dev/null +++ b/awesome/bindings/clientkeys.lua @@ -0,0 +1,45 @@ +-- Awesome Libs +local awful = require("awful") +local gears = require("gears") + +local _M = {} +local modkey = RC.vars.modkey + +function _M.get() + local clientkeys = gears.table.join( + awful.key( + { modkey }, + "f", + function (c) + c.fullscreen = not c.fullscreen + c:raise() + end, + { description = "Toggle fullscreen", group = "Client" } + ), + awful.key( + { modkey }, + "q", + function (c) + c:kill() + end, + { description = "Close window", group = "Client" } + ), + awful.key( + { modkey, "Shift" }, + "Space", + awful.client.floating.toggle, + { description = "Toggle floating window", group = "Client" } + ), + awful.key( + { modkey, "Control" }, + "r", + function (c) + awesome.restart() + end, + { description = "Restart awesome", group = "Client" } + ) + ) + return clientkeys +end + +return _M.get \ No newline at end of file diff --git a/awesome/bindings/globalbuttons.lua b/awesome/bindings/globalbuttons.lua new file mode 100644 index 0000000..f11a43d --- /dev/null +++ b/awesome/bindings/globalbuttons.lua @@ -0,0 +1,19 @@ +-- Awesome Libs +local gears = require("gears") +local awful = require("awful") + +local _M = {} +local modkey = RC.vars.modkey + +function _M.get() + local globalbuttons = gears.table.join( + awful.button({ }, 3, function() + RC.mainmenu:toggle() + end), + awful.button({ }, 4, awful.tag.viewnext), + awful.button({ }, 5, awful.tag.viewprev) + ) + return globalbuttons +end + +return _M.get \ No newline at end of file diff --git a/awesome/bindings/globalkeys.lua b/awesome/bindings/globalkeys.lua new file mode 100644 index 0000000..72f6daf --- /dev/null +++ b/awesome/bindings/globalkeys.lua @@ -0,0 +1,357 @@ +-- Awesome Libs +local gears = require("gears") +local awful = require("awful") +local hotkeys_popup = require("awful.hotkeys_popup") + +-- Resource Configuration +local modkey = RC.vars.modkey +local terminal = RC.vars.terminal + +local _M = {} + +function _M.get() + local globalkeys = gears.table.join( + awful.key( + { modkey }, + "s", + hotkeys_popup.show_help, + {description="Cheet Sheet", group="Awesome"} + ), + -- Tag browsing + awful.key( + { modkey }, + "Left", + awful.tag.viewprev, + {description = "View previous", group = "Tag"} + ), + awful.key( + { modkey }, + "Right", + awful.tag.viewnext, + {description = "View next", group = "Tag"} + ), + awful.key( + { modkey }, + "Escape", + awful.tag.history.restore, + {description = "Go back", group = "Tag"} + ), + awful.key( + { modkey }, + "j", + function () + awful.client.focus.byidx( 1) + end, + {description = "Focus next by index", group = "Client"} + ), + awful.key( + { modkey }, + "k", + function () + awful.client.focus.byidx(-1) + end, + {description = "Focus previous by index", group = "Client"} + ), + awful.key( + { modkey }, + "w", + function () + RC.mainmenu:show() + end, + {description = "Show main menu", group = "Awesome"} + ), + awful.key( + { modkey, "Shift" }, + "j", + function () + awful.client.swap.byidx( 1) + end, + {description = "Swap with next client by index", group = "Client"} + ), + awful.key( + { modkey, "Shift" }, + "k", + function () + awful.client.swap.byidx( -1) + end, + {description = "Swap with previous client by index", group = "Client"} + ), + awful.key( + { modkey, "Control" }, + "j", + function () + awful.screen.focus_relative( 1) + end, + {description = "Focus the next screen", group = "Screen"} + ), + awful.key( + { modkey, "Control" }, + "k", + function () + awful.screen.focus_relative(-1) + end, + {description = "Focus the previous screen", group = "Screen"} + ), + awful.key( + { modkey }, + "u", + awful.client.urgent.jumpto, + {description = "Jump to urgent client", group = "Client"}), + awful.key( + { modkey }, + "Tab", + function () + awful.client.focus.history.previous() + if client.focus then + client.focus:raise() + end + end, + {description = "Go back", group = "Client"} + ), + awful.key( + { modkey }, + "Return", + function () + awful.spawn(terminal) + end, + {description = "Open terminal", group = "Launcher"} + ), + awful.key( + { modkey, "Control" }, + "r", + awesome.restart, + {description = "Reload awesome", group = "Awesome"} + ), + awful.key( + { modkey }, + "l", + function () + awful.tag.incmwfact( 0.05) + end, + {description = "Increase master width factor", group = "Layout"} + ), + awful.key( + { modkey }, + "h", + function () + awful.tag.incmwfact(-0.05) + end, + {description = "Decrease master width factor", group = "Layout"} + ), + awful.key( + { modkey, "Shift" }, + "h", + function () + awful.tag.incnmaster( 1, nil, true) + end, + {description = "Increase the number of master clients", group = "Layout"} + ), + awful.key( + { modkey, "Shift" }, + "l", + function () + awful.tag.incnmaster(-1, nil, true) + end, + {description = "Decrease the number of master clients", group = "Layout"} + ), + awful.key( + { modkey, "Control" }, + "h", + function () + awful.tag.incncol( 1, nil, true) + end, + {description = "Increase the number of columns", group = "Layout"} + ), + awful.key( + { modkey, "Control" }, + "l", + function () + awful.tag.incncol(-1, nil, true) + end, + {description = "Decrease the number of columns", group = "Layout"} + ), + awful.key( + { modkey }, + "space", + function () + awful.layout.inc( 1) + end, + {description = "Select next", group = "Layout"} + ), + awful.key( + { modkey, "Shift" }, + "space", + function () + awful.layout.inc(-1) + end, + {description = "Select previous", group = "Layout"} + ), + awful.key( + { modkey, "Control" }, + "n", + function () + local c = awful.client.restore() + -- Focus restored client + if c then + c:emit_signal( + "request::activate", "key.unminimize", {raise = true} + ) + end + end, + {description = "Restore minimized", group = "Client"} + ), + awful.key( + { modkey, "Control" }, + "Up", + function () + awful.client.moveresize( 0, 0, 0, -20) + end + ), + awful.key( + { modkey, "Control" }, + "Down", + function () + awful.client.moveresize( 0, 0, 0, 20) + end + ), + awful.key( + { modkey, "Control" }, + "Left", + function () + awful.client.moveresize( 0, 0, -20, 0) + end + ), + awful.key( + { modkey, "Control" }, + "Right", + function () + awful.client.moveresize( 0, 0, 20, 0) + end + ), + awful.key( + { modkey, "Shift" }, + "Down", + function () + awful.client.moveresize( 0, 20, 0, 0) + end + ), + awful.key( + { modkey, "Shift" }, + "Up", + function () + awful.client.moveresize( 0, -20, 0, 0) + end + ), + awful.key( + { modkey, "Shift" }, + "Left", + function () + awful.client.moveresize(-20, 0, 0, 0) + end + ), + awful.key( + { modkey, "Shift" }, + "Right", + function () + awful.client.moveresize( 20, 0, 0, 0) + end + ), + awful.key( + { modkey }, + "d", + function () + awful.spawn("rofi -show run") + end, + { descripton = "Start a Application", group = "Application" } + ), + awful.key( + { modkey }, + "Tab", + function () + awful.spawn("rofi -show window") + end, + { descripton = "Start a Application", group = "Application" } + ), + awful.key( + { modkey }, + "e", + function () + awful.spawn('nautilus') + end, + { descripton = "Start a Application", group = "Application" } + ), + awful.key( + { }, + "Print", + function () + awful.spawn("flameshot gui") + end + ), + awful.key( + { }, + "XF86AudioLowerVolume", + function (c) + awful.spawn("amixer sset Master 5%-") + awesome.emit_signal("widget::volume") + awesome.emit_signal("module::volume_osd:show", true) + awesome.emit_signal("module::slider:update") + awesome.emit_signal("widget::volume_osd:rerun") + end + ), + awful.key( + { }, + "XF86AudioRaiseVolume", + function (c) + awful.spawn("amixer sset Master 5%+") + awesome.emit_signal("widget::volume") + awesome.emit_signal("module::volume_osd:show", true) + awesome.emit_signal("module::slider:update") + awesome.emit_signal("widget::volume_osd:rerun") + end + ), + awful.key( + { }, + "XF86AudioMute", + function (c) + awful.spawn("pactl -- set-sink-mute @DEFAULT_SINK@ toggle") + awesome.emit_signal("widget::volume") + awesome.emit_signal("module::volume_osd:show", true) + awesome.emit_signal("module::slider:update") + awesome.emit_signal("widget::volume_osd:rerun") + + end + ), + awful.key( + { modkey }, + "F5", + function (c) + awful.spawn("xbacklight -inc 10") + awesome.emit_signal("module::brightness_osd:show", true) + awesome.emit_signal("module::brightness_slider:update") + awesome.emit_signal("widget::brightness_osd:rerun") + end + ), + awful.key( + { modkey }, + "F4", + function (c) + awful.spawn("xbacklight -dec 10") + awesome.emit_signal("module::brightness_osd:show", true) + awesome.emit_signal("module::brightness_slider:update") + awesome.emit_signal("widget::brightness_osd:rerun") + end + ), + awful.key( + { modkey, "Shift" }, + "q", + function () + local t = awful.screen.focused().selected_tag + t:delete() + end + ) + ) + + return globalkeys +end + +return setmetatable({ }, { __call = function(_, ...) return _M.get(...) end }) \ No newline at end of file diff --git a/awesome/deco/statusbar.lua b/awesome/deco/statusbar.lua new file mode 100644 index 0000000..0eb0153 --- /dev/null +++ b/awesome/deco/statusbar.lua @@ -0,0 +1,244 @@ +-------------------------------------------------------------------------------------------------------------- +-- This is the statusbar, every widget, module and so on is combined to all the stuff you see on the screen -- +-------------------------------------------------------------------------------------------------------------- +-- Awesome Libs +local awful = require("awful") +local beautiful = require("beautiful") +local colors = require ("theme.crylia.colors") +local dpi = beautiful.xresources.apply_dpi +local gears = require("gears") +local wibox = require("wibox") + +local tasklist = require("theme.crylia.widgets.tasklist") +local taglist = require("theme.crylia.widgets.taglist") + +awful.screen.connect_for_each_screen( + function (s) + + -- Bar for the layoutbox, taglist and newtag button + s.top_left = awful.popup { + widget = { + margins = dpi(10), + widget = wibox.container.margin + }, + ontop = false, + bg = colors.color["Grey900"], + stretch = false, + visible = true, + placement = function (c) + awful.placement.top_left(c, {margins = dpi(10)}) + end, + shape = function (cr, width, height) + gears.shape.rounded_rect(cr, width, height, 5) + end + } + + -- Bar for the tasklist + s.top_center = awful.popup{ + widget = { + margins = dpi(10), + widget = wibox.container.margin + }, + ontop = false, + bg = colors.color["Grey900"], + visible = true, + stretch = false, + maximum_width = 600, + placement = function (c) + awful.placement.top(c, {margins = dpi(10)}) + end, + shape = function (cr, width, height) + gears.shape.rounded_rect(cr, width, height, 5) + end, + layout = wibox.layout.flex.horizontal + } + + -- Bar for all the widgets + s.top_right = awful.popup { + widget = { + margins = dpi(10), + widget = wibox.container.margin + }, + ontop = false, + bg = "#212121", + visible = true, + placement = function (c) + awful.placement.top_right(c, {margins = dpi(10)}) + end, + shape = function (cr, width, height) + gears.shape.rounded_rect(cr, width, height, 5) + end + } + + -- Calendar OSD container + s.calendar_osd_container = awful.popup{ + widget = {}, + ontop = true, + bg = "#00000000", + border_width = dpi(1), + border_color = "#454545", + shape = function (cr, height, width) + gears.shape.rounded_rect(cr, dpi(500), dpi(300)) + end, + placement = function (c) + awful.placement.top_left(c, {margins = dpi(10)}) + end, + } + + -- OSD Container + s.osd_container = awful.popup{ + widget = { + margins = dpi(10), + widget = wibox.container.margin + }, + ontop = true, + bg = "#00000000", + border_width = dpi(1), + border_color = "#454545", + shape = function (cr, width, height) + gears.shape.rounded_rect(cr, width, height, 10) + end, + placement = function (c) + awful.placement.bottom_right(c, {margins = dpi(10)}) + end, + } + + -- All the modules and widgets + s.volume_osd = require("theme.crylia.modules.volume_osd")() + s.brightness_osd = require("theme.crylia.modules.brightness_osd")() + s.battery = require("theme.crylia.widgets.battery")() + s.network = require("theme.crylia.widgets.network")() + s.audio = require("theme.crylia.widgets.audio")() + s.date = require("theme.crylia.widgets.date")() + s.clock = require("theme.crylia.widgets.clock")() + s.bluetooth = require("theme.crylia.widgets.bluetooth")() + s.calendar_osd = require("theme.crylia.modules.calendar_osd")() + s.addtag = require("theme.crylia.widgets.addtag")() + s.layoutlist = require("theme.crylia.widgets.layout_list")() + + + s.top_left:setup { + nil, + nil, + { + { + s.layoutlist, + margins = dpi(6), + widget = wibox.container.margin + }, + { + taglist(s), + margins = dpi(6), + widget = wibox.container.margin + }, + { + s.addtag, + margins = dpi(7), + widget = wibox.container.margin + }, + forced_height = 45, + layout = wibox.layout.fixed.horizontal + }, + layout = wibox.layout.align.horizontal + } + + -- This is the space from top down till the window starts + s.top_left:struts{ + top = 55 + } + + s.top_center:setup{ + { + tasklist(s), + margins = dpi(6), + widget = wibox.container.margin + }, + forced_height = 45, + layout = wibox.layout.align.horizontal + } + + s.top_right:setup { + nil, + nil, + { + { + s.battery, + left = dpi(6), + right = dpi(3), + top = dpi(6), + bottom = dpi(6), + widget = wibox.container.margin + }, + { + s.network, + left = dpi(3), + right = dpi(3), + top = dpi(6), + bottom = dpi(6), + widget = wibox.container.margin + }, + { + s.bluetooth, + left = dpi(3), + right = dpi(3), + top = dpi(6), + bottom = dpi(6), + widget = wibox.container.margin + }, + { + s.audio, + left = dpi(3), + right = dpi(3), + top = dpi(6), + bottom = dpi(6), + widget = wibox.container.margin + }, + { + s.date, + left = dpi(3), + right = dpi(3), + top = dpi(6), + bottom = dpi(6), + widget = wibox.container.margin + }, + { + s.clock, + left = dpi(3), + right = dpi(6), + top = dpi(6), + bottom = dpi(6), + widget = wibox.container.margin + }, + forced_height = 45, + layout = wibox.layout.fixed.horizontal + }, + layout = wibox.layout.align.horizontal + } + + s.osd_container:setup{ + { + s.volume_osd, + layout = wibox.layout.fixed.horizontal + }, + spacing = dpi(10), + { + s.brightness_osd, + layout = wibox.layout.fixed.horizontal + + }, + layout = wibox.layout.align.vertical + } + --[[ s.calendar_osd_container:setup{ + s.calendar_osd, + layout = wibox.layout.align.horizontal + } ]] + + -- Signals + awesome.connect_signal( + "hide_centerbar", + function (hide) + s.top_center.visible = hide + end + ) + end +) \ No newline at end of file diff --git a/awesome/deco/taglist.lua b/awesome/deco/taglist.lua new file mode 100644 index 0000000..82fcd1d --- /dev/null +++ b/awesome/deco/taglist.lua @@ -0,0 +1,64 @@ +-- This function does currently nothing +-- Awesome Libs +local gears = require("gears") +local awful = require("awful") + +local _M = { } + +function _M.get() + local taglist_buttons = gears.table.join( + 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, + function (t) + if client.focus then + client.focus:toggle_tag(t) + end + end + ), + awful.button( + { modkey }, + 3, + function (t) + if client.focus then + client.focus:toggle_tag(t) + end + end + ), + awful.button( + { }, + 4, + function (t) + awful.tag.viewnext(t.screen) + end + ), + awful.button( + { }, + 5, + function (t) + if client.focus then + awful.tag.viewprev(t.screen) + end + end + ) + ) + return taglist_buttons +end + +return setmetatable({ }, { __call = function(_, ...) return _M.get(...) end}) \ No newline at end of file diff --git a/awesome/deco/tasklist.lua b/awesome/deco/tasklist.lua new file mode 100644 index 0000000..e099256 --- /dev/null +++ b/awesome/deco/tasklist.lua @@ -0,0 +1,50 @@ +-- This function does currently nothing +-- Default awesome libraries +local gears = require("gears") +local awful = require("awful") + +local _M = {} + +function _M.get() + local tasklist_buttons = gears.table.join( + awful.button( + { }, + 1, + function (c) + if c == client.focus then + c.minimized = true + else + c:emit_signal( + "request::activate", + "tasklist", + {raise = true} + ) + end + end + ), + awful.button( + { }, + 3, + function() + awful.menu.client_list({ theme = { width = 250 } }) + end + ), + awful.button( + { }, + 4, + function () + awful.client.focus.byidx(1) + end + ), + awful.button( + { }, + 5, + function () + awful.client.focus.byidx(-1) + end + ) + ) + return tasklist_buttons +end + +return setmetatable({}, { __call = function(_, ...) return _M.get(...) end }) \ No newline at end of file diff --git a/awesome/deco/wallpaper.lua b/awesome/deco/wallpaper.lua new file mode 100644 index 0000000..8c48c24 --- /dev/null +++ b/awesome/deco/wallpaper.lua @@ -0,0 +1,18 @@ +--------------------------------------- +-- This function sets your wallpaper -- +--------------------------------------- +-- Awesome Libs +local gears = require("gears") +local beautiful = require("beautiful") + +function Set_wallpaper(s) + if beautiful.wallpaper then + local wallpaper = beautiful.wallpaper + if type(wallpaper) == "function" then + wallpaper = wallpaper(s) + end + gears.wallpaper.maximized(wallpaper, s, true) + end +end + +screen.connect_signal("property::geometry", Set_wallpaper) \ No newline at end of file diff --git a/awesome/main/error_handling.lua b/awesome/main/error_handling.lua new file mode 100644 index 0000000..3036f68 --- /dev/null +++ b/awesome/main/error_handling.lua @@ -0,0 +1,33 @@ +---------------------------------------------------------------- +-- This class is to output an error if you fuck up the config -- +---------------------------------------------------------------- +-- Awesome Libs +local naughty = require("naughty") + +if awesome.startup_errors then + naughty.notify({ + preset = naughty.config.presets.critical, + title = "ERROR in Awesome config!", + text = awesome.startup_errors + }) +end + +do + local in_error = false + awesome.connect_signal( + "debug::error", + function (err) + if in_error then + return + end + in_error = true + + naughty.notify({ + preset = naughty.config.presets.critical, + title = "ERROR", + text = tostring(err) + }) + in_error = false + end + ) +end \ No newline at end of file diff --git a/awesome/main/layouts.lua b/awesome/main/layouts.lua new file mode 100644 index 0000000..33b4b29 --- /dev/null +++ b/awesome/main/layouts.lua @@ -0,0 +1,18 @@ +------------------------------------------------------------------------------------------ +-- Layout class, if you want to add or remove layouts from the list do it in this table -- +------------------------------------------------------------------------------------------ +-- Awesome Libs +local awful = require("awful") + +local _M = { } + +function _M.get() + local layouts = { + awful.layout.suit.tile, + awful.layout.suit.floating, + } + + return layouts +end + +return _M.get \ No newline at end of file diff --git a/awesome/main/menu.lua b/awesome/main/menu.lua new file mode 100644 index 0000000..2e2b8fd --- /dev/null +++ b/awesome/main/menu.lua @@ -0,0 +1,46 @@ +-------------------------------------------------------------- +-- Menu class, this is where you change the rightclick menu -- +-------------------------------------------------------------- +-- Awesome Libs +local awful = require("awful") + +-- Menu Namespace +local M = { } + +-- Module Namespace +local _M = { } + +local terminal = RC.vars.terminal + +M.session = { + { "Logout", function () awful.spawn.with_shell('logout') end }, + { "Shutdown", function () awful.spawn.with_shell('shutdown now') end }, + { "Reboot", function () awful.spawn.with_shell('reboot') end }, +} + +M.applications = { + { "Brave", "brave-browser" }, + { "VS Code", "code" }, + { "Blender", "blender" }, + { "Steam", "steam" }, + { "Lutris", "lutris" }, +} + +M.settings = { + { "General Settings", "gnome-control-center" }, + { "Power Settings", "xfce4-power-manager-settings" }, + { "Display Settings", "arandr" } +} + +function _M.get() + local menu_items = { + { "Power Menu", M.session }, + { "Applications", M.applications }, + { "Open Terminal", terminal }, + { "Settings", M.settings }, + } + + return menu_items +end + +return _M.get \ No newline at end of file diff --git a/awesome/main/rules.lua b/awesome/main/rules.lua new file mode 100644 index 0000000..1eb11c1 --- /dev/null +++ b/awesome/main/rules.lua @@ -0,0 +1,52 @@ +------------------------------------------------------------------------------------------------- +-- This class contains rules for float exceptions or special themeing for certain applications -- +------------------------------------------------------------------------------------------------- + +-- Awesome Libs +local awful = require("awful") +local beautiful = require("beautiful") + +local _M = { } + +function _M.get(clientkeys, clientbuttons) + local rules = { + { + rule = { }, + properties = { + border_width = beautiful.border_width, + border_color = beautiful.border_normal, + focus = awful.client.focus.filter, + raise = true, + keys = clientkeys, + buttons = clientbuttons, + screen = awful.screen.preferred, + placement = awful.placement.no_overlap+awful.placement.no_offscreen + } + }, + { + rule_any = { + instance = { }, + class = { + "Arandr", + "Tor Browser" + }, + name = { }, + role = { + "AlarmWindow", + "ConfigManager", + "pop-up" + } + }, + properties = { floating = true } + }, + { + rule_any = { + type = { "normal", "dialog" } + }, + properties = { titlebars_enabled = false } + } + } + return rules +end + +return _M.get \ No newline at end of file diff --git a/awesome/main/signals.lua b/awesome/main/signals.lua new file mode 100644 index 0000000..48cf480 --- /dev/null +++ b/awesome/main/signals.lua @@ -0,0 +1,22 @@ +-- Awesome Libs +local awful = require("awful") +local beautiful = require("beautiful") + +client.connect_signal( + "manage", + function (c) + if awesome.startup and not c.size_hints.user_porition and not c.size_hints.program_position then + awful.placement.no_offscreen(c) + end + end +) + +-- Workaround for focused border color, why in the love of god doesnt it work with +-- beautiful.border_focus +client.connect_signal("focus", function (c) + c.border_color = "#bdbdbd" +end) + +client.connect_signal("unfocus", function (c) + c.border_color = beautiful.border_normal +end) \ No newline at end of file diff --git a/awesome/main/tags.lua b/awesome/main/tags.lua new file mode 100644 index 0000000..7fd2f88 --- /dev/null +++ b/awesome/main/tags.lua @@ -0,0 +1,27 @@ +----------------------------------------------------------------------------------------------------- +-- Here are the ammount of tags generated, edit the awful.tag args if you want a different ammount -- +----------------------------------------------------------------------------------------------------- + +-- Awesome Libs +local awful = require("awful") + +local _M = { } + +function _M.get() + local tags = {} + awful.screen.connect_for_each_screen( + function (s) + tags[s] = awful.tag( + { + "1", "2", "3", "4" + }, + s, + RC.layouts[1] + ) + end + ) + + return tags +end + +return _M.get \ No newline at end of file diff --git a/awesome/main/theme.lua b/awesome/main/theme.lua new file mode 100644 index 0000000..a7a83dd --- /dev/null +++ b/awesome/main/theme.lua @@ -0,0 +1,19 @@ +local awful = require("awful") +local beautiful = require("beautiful") +local gears = require("gears") +local home = os.getenv("HOME") + +beautiful.init(home .. "/.config/awesome/theme/crylia/theme.lua") + +if(RC.vars.wallpaper) then + local wallpaper = RC.vars.wallpaper + if awful.util.file_readable(wallpaper) then + Theme.wallpaper = wallpaper + end +end + +if beautiful.wallpaper then + for s = 1, screen.count() do + gears.wallpaper.maximized(beautiful.wallpaper, s, true) + end +end \ No newline at end of file diff --git a/awesome/main/user_variables.lua b/awesome/main/user_variables.lua new file mode 100644 index 0000000..03250a9 --- /dev/null +++ b/awesome/main/user_variables.lua @@ -0,0 +1,13 @@ +------------------------------------------- +-- Uservariables are stored in this file -- +------------------------------------------- +local home = os.getenv("HOME") + +-- If you want different default programs, wallpaper path or modkey; edit this file. +local _M = { + terminal = "alacritty", + modkey = "Mod4", + wallpaper = home .. "/.config/awesome/theme/crylia/assets/wallpaper.jpg" +} + +return _M \ No newline at end of file diff --git a/awesome/rc.lua b/awesome/rc.lua new file mode 100644 index 0000000..d28fcac --- /dev/null +++ b/awesome/rc.lua @@ -0,0 +1,93 @@ +----------------------------------------------------------------------------------------- +-- █████╗ ██╗ ██╗███████╗███████╗ ██████╗ ███╗ ███╗███████╗██╗ ██╗███╗ ███╗ -- +-- ██╔══██╗██║ ██║██╔════╝██╔════╝██╔═══██╗████╗ ████║██╔════╝██║ ██║████╗ ████║ -- +-- ███████║██║ █╗ ██║█████╗ ███████╗██║ ██║██╔████╔██║█████╗ ██║ █╗ ██║██╔████╔██║ -- +-- ██╔══██║██║███╗██║██╔══╝ ╚════██║██║ ██║██║╚██╔╝██║██╔══╝ ██║███╗██║██║╚██╔╝██║ -- +-- ██║ ██║╚███╔███╔╝███████╗███████║╚██████╔╝██║ ╚═╝ ██║███████╗╚███╔███╔╝██║ ╚═╝ ██║ -- +-- ╚═╝ ╚═╝ ╚══╝╚══╝ ╚══════╝╚══════╝ ╚═════╝ ╚═╝ ╚═╝╚══════╝ ╚══╝╚══╝ ╚═╝ ╚═╝ -- +----------------------------------------------------------------------------------------- +-- Default Awesome Libs +local awful = require("awful") +local beautiful = require("beautiful") +local gears = require("gears") +local menubar = require("menubar") + +-- Global Namespace +RC = {} +RC.vars = require("main.user_variables") + +-- Error Handling +require("main.error_handling") + +-- Default Theme and Custom Wallpaper +beautiful.init(gears.filesystem.get_themes_dir() .. "default/theme.lua") +beautiful.wallpaper = RC.vars.wallpaper +modkey = RC.vars.modkey + +require("main.theme") + +-- Load Local User Libs +local main = { + layouts = require("main.layouts"), + tags = require("main.tags"), + menu = require("main.menu"), + rules = require("main.rules") +} + +-- Load all Shortcuts from Local User Libs +local bindings = { + globalbuttons = require("bindings.globalbuttons"), + clientbuttons = require("bindings.clientbuttons"), + globalkeys = require("bindings.globalkeys"), + bindtotags = require("bindings.bindtotags"), + clientkeys = require("bindings.clientkeys") +} + +-- Sets the local layout to Aweful.layout.inc +RC.layouts = main.layouts() +awful.layout.layouts = main.layouts() + +-- Tag table which holds all screen tags +RC.tags = main.tags() + +-- Creates a launcher widget and a main menu +RC.mainmenu = awful.menu({ + items = main.menu() +}) + +-- A Variable needed in Statusbar (helper) +RC.launcher = awful.widget.launcher({ + image = beautiful.awesome_icon, + menu = RC.mainmenu +}) + +-- Menubar configuration +menubar.utils.terminal = RC.vars.terminal + +-- Sets the user Keybindings +RC.globalkeys = bindings.globalkeys() +RC.globalkeys = bindings.bindtotags(RC.globalkeys) + +-- Set root +root.buttons(bindings.globalbuttons()) +root.keys(RC.globalkeys) + +-- Keymap +mykeyboardlayout = awful.widget.keyboardlayout() + +-- Default statusbar, uncomment if you dont use a third party tool like polybar +require("deco.statusbar") + +-- Rules to apply to new clients +awful.rules.rules = main.rules( + bindings.clientkeys(), + bindings.clientbuttons() +) + +-- Signals +require("main.signals") + +-- Autostart programs +awful.spawn.with_shell("~/.screenlayout/screen.sh") +awful.spawn.with_shell("picom --experimental-backends") +awful.spawn.with_shell("xfce4-power-manager") \ No newline at end of file diff --git a/awesome/theme/crylia/assets/icons/ArchLogo.png b/awesome/theme/crylia/assets/icons/ArchLogo.png new file mode 100644 index 0000000..143dc53 Binary files /dev/null and b/awesome/theme/crylia/assets/icons/ArchLogo.png differ diff --git a/awesome/theme/crylia/assets/icons/addtag/plus.svg b/awesome/theme/crylia/assets/icons/addtag/plus.svg new file mode 100644 index 0000000..2c21839 --- /dev/null +++ b/awesome/theme/crylia/assets/icons/addtag/plus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/awesome/theme/crylia/assets/icons/audio/volume-high.svg b/awesome/theme/crylia/assets/icons/audio/volume-high.svg new file mode 100644 index 0000000..a002372 --- /dev/null +++ b/awesome/theme/crylia/assets/icons/audio/volume-high.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/awesome/theme/crylia/assets/icons/audio/volume-low.svg b/awesome/theme/crylia/assets/icons/audio/volume-low.svg new file mode 100644 index 0000000..cddf5b8 --- /dev/null +++ b/awesome/theme/crylia/assets/icons/audio/volume-low.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/awesome/theme/crylia/assets/icons/audio/volume-medium.svg b/awesome/theme/crylia/assets/icons/audio/volume-medium.svg new file mode 100644 index 0000000..80c54ee --- /dev/null +++ b/awesome/theme/crylia/assets/icons/audio/volume-medium.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/awesome/theme/crylia/assets/icons/audio/volume-mute.svg b/awesome/theme/crylia/assets/icons/audio/volume-mute.svg new file mode 100644 index 0000000..7cdff75 --- /dev/null +++ b/awesome/theme/crylia/assets/icons/audio/volume-mute.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/awesome/theme/crylia/assets/icons/audio/volume-off.svg b/awesome/theme/crylia/assets/icons/audio/volume-off.svg new file mode 100644 index 0000000..01e450f --- /dev/null +++ b/awesome/theme/crylia/assets/icons/audio/volume-off.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/awesome/theme/crylia/assets/icons/battery/battery-alert.svg b/awesome/theme/crylia/assets/icons/battery/battery-alert.svg new file mode 100644 index 0000000..23a4f32 --- /dev/null +++ b/awesome/theme/crylia/assets/icons/battery/battery-alert.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/awesome/theme/crylia/assets/icons/battery/battery-charging-10.svg b/awesome/theme/crylia/assets/icons/battery/battery-charging-10.svg new file mode 100644 index 0000000..a234828 --- /dev/null +++ b/awesome/theme/crylia/assets/icons/battery/battery-charging-10.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/awesome/theme/crylia/assets/icons/battery/battery-charging-100.svg b/awesome/theme/crylia/assets/icons/battery/battery-charging-100.svg new file mode 100644 index 0000000..2190190 --- /dev/null +++ b/awesome/theme/crylia/assets/icons/battery/battery-charging-100.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/awesome/theme/crylia/assets/icons/battery/battery-charging-20.svg b/awesome/theme/crylia/assets/icons/battery/battery-charging-20.svg new file mode 100644 index 0000000..b7c63aa --- /dev/null +++ b/awesome/theme/crylia/assets/icons/battery/battery-charging-20.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/awesome/theme/crylia/assets/icons/battery/battery-charging-30.svg b/awesome/theme/crylia/assets/icons/battery/battery-charging-30.svg new file mode 100644 index 0000000..e943778 --- /dev/null +++ b/awesome/theme/crylia/assets/icons/battery/battery-charging-30.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/awesome/theme/crylia/assets/icons/battery/battery-charging-40.svg b/awesome/theme/crylia/assets/icons/battery/battery-charging-40.svg new file mode 100644 index 0000000..9391fbe --- /dev/null +++ b/awesome/theme/crylia/assets/icons/battery/battery-charging-40.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/awesome/theme/crylia/assets/icons/battery/battery-charging-50.svg b/awesome/theme/crylia/assets/icons/battery/battery-charging-50.svg new file mode 100644 index 0000000..2a51a07 --- /dev/null +++ b/awesome/theme/crylia/assets/icons/battery/battery-charging-50.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/awesome/theme/crylia/assets/icons/battery/battery-charging-60.svg b/awesome/theme/crylia/assets/icons/battery/battery-charging-60.svg new file mode 100644 index 0000000..0c5b758 --- /dev/null +++ b/awesome/theme/crylia/assets/icons/battery/battery-charging-60.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/awesome/theme/crylia/assets/icons/battery/battery-charging-70.svg b/awesome/theme/crylia/assets/icons/battery/battery-charging-70.svg new file mode 100644 index 0000000..06345cb --- /dev/null +++ b/awesome/theme/crylia/assets/icons/battery/battery-charging-70.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/awesome/theme/crylia/assets/icons/battery/battery-charging-80.svg b/awesome/theme/crylia/assets/icons/battery/battery-charging-80.svg new file mode 100644 index 0000000..bf0892a --- /dev/null +++ b/awesome/theme/crylia/assets/icons/battery/battery-charging-80.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/awesome/theme/crylia/assets/icons/battery/battery-charging-90.svg b/awesome/theme/crylia/assets/icons/battery/battery-charging-90.svg new file mode 100644 index 0000000..f79ffa5 --- /dev/null +++ b/awesome/theme/crylia/assets/icons/battery/battery-charging-90.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/awesome/theme/crylia/assets/icons/battery/battery-charging-outline.svg b/awesome/theme/crylia/assets/icons/battery/battery-charging-outline.svg new file mode 100644 index 0000000..41e981d --- /dev/null +++ b/awesome/theme/crylia/assets/icons/battery/battery-charging-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/awesome/theme/crylia/assets/icons/battery/battery-charging.svg b/awesome/theme/crylia/assets/icons/battery/battery-charging.svg new file mode 100644 index 0000000..2a5da64 --- /dev/null +++ b/awesome/theme/crylia/assets/icons/battery/battery-charging.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/awesome/theme/crylia/assets/icons/battery/battery-discharging-10.svg b/awesome/theme/crylia/assets/icons/battery/battery-discharging-10.svg new file mode 100644 index 0000000..8569269 --- /dev/null +++ b/awesome/theme/crylia/assets/icons/battery/battery-discharging-10.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/awesome/theme/crylia/assets/icons/battery/battery-discharging-20.svg b/awesome/theme/crylia/assets/icons/battery/battery-discharging-20.svg new file mode 100644 index 0000000..ab31690 --- /dev/null +++ b/awesome/theme/crylia/assets/icons/battery/battery-discharging-20.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/awesome/theme/crylia/assets/icons/battery/battery-discharging-30.svg b/awesome/theme/crylia/assets/icons/battery/battery-discharging-30.svg new file mode 100644 index 0000000..fd11566 --- /dev/null +++ b/awesome/theme/crylia/assets/icons/battery/battery-discharging-30.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/awesome/theme/crylia/assets/icons/battery/battery-discharging-40.svg b/awesome/theme/crylia/assets/icons/battery/battery-discharging-40.svg new file mode 100644 index 0000000..2e6a314 --- /dev/null +++ b/awesome/theme/crylia/assets/icons/battery/battery-discharging-40.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/awesome/theme/crylia/assets/icons/battery/battery-discharging-50.svg b/awesome/theme/crylia/assets/icons/battery/battery-discharging-50.svg new file mode 100644 index 0000000..b5aa185 --- /dev/null +++ b/awesome/theme/crylia/assets/icons/battery/battery-discharging-50.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/awesome/theme/crylia/assets/icons/battery/battery-discharging-60.svg b/awesome/theme/crylia/assets/icons/battery/battery-discharging-60.svg new file mode 100644 index 0000000..ee359e2 --- /dev/null +++ b/awesome/theme/crylia/assets/icons/battery/battery-discharging-60.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/awesome/theme/crylia/assets/icons/battery/battery-discharging-70.svg b/awesome/theme/crylia/assets/icons/battery/battery-discharging-70.svg new file mode 100644 index 0000000..077fbdb --- /dev/null +++ b/awesome/theme/crylia/assets/icons/battery/battery-discharging-70.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/awesome/theme/crylia/assets/icons/battery/battery-discharging-80.svg b/awesome/theme/crylia/assets/icons/battery/battery-discharging-80.svg new file mode 100644 index 0000000..a74b05c --- /dev/null +++ b/awesome/theme/crylia/assets/icons/battery/battery-discharging-80.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/awesome/theme/crylia/assets/icons/battery/battery-discharging-90.svg b/awesome/theme/crylia/assets/icons/battery/battery-discharging-90.svg new file mode 100644 index 0000000..39e3c8f --- /dev/null +++ b/awesome/theme/crylia/assets/icons/battery/battery-discharging-90.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/awesome/theme/crylia/assets/icons/battery/battery-off.svg b/awesome/theme/crylia/assets/icons/battery/battery-off.svg new file mode 100644 index 0000000..4ba32e4 --- /dev/null +++ b/awesome/theme/crylia/assets/icons/battery/battery-off.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/awesome/theme/crylia/assets/icons/battery/battery-outline.svg b/awesome/theme/crylia/assets/icons/battery/battery-outline.svg new file mode 100644 index 0000000..e05e71b --- /dev/null +++ b/awesome/theme/crylia/assets/icons/battery/battery-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/awesome/theme/crylia/assets/icons/battery/battery-unknown.svg b/awesome/theme/crylia/assets/icons/battery/battery-unknown.svg new file mode 100644 index 0000000..8e117be --- /dev/null +++ b/awesome/theme/crylia/assets/icons/battery/battery-unknown.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/awesome/theme/crylia/assets/icons/battery/battery.svg b/awesome/theme/crylia/assets/icons/battery/battery.svg new file mode 100644 index 0000000..950597a --- /dev/null +++ b/awesome/theme/crylia/assets/icons/battery/battery.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/awesome/theme/crylia/assets/icons/bluetooth/bluetooth-off.svg b/awesome/theme/crylia/assets/icons/bluetooth/bluetooth-off.svg new file mode 100644 index 0000000..4a8775a --- /dev/null +++ b/awesome/theme/crylia/assets/icons/bluetooth/bluetooth-off.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/awesome/theme/crylia/assets/icons/bluetooth/bluetooth-on.svg b/awesome/theme/crylia/assets/icons/bluetooth/bluetooth-on.svg new file mode 100644 index 0000000..2d7ae3a --- /dev/null +++ b/awesome/theme/crylia/assets/icons/bluetooth/bluetooth-on.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/awesome/theme/crylia/assets/icons/brightness/brightness-high.svg b/awesome/theme/crylia/assets/icons/brightness/brightness-high.svg new file mode 100644 index 0000000..0f22d78 --- /dev/null +++ b/awesome/theme/crylia/assets/icons/brightness/brightness-high.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/awesome/theme/crylia/assets/icons/brightness/brightness-low.svg b/awesome/theme/crylia/assets/icons/brightness/brightness-low.svg new file mode 100644 index 0000000..d5a1c15 --- /dev/null +++ b/awesome/theme/crylia/assets/icons/brightness/brightness-low.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/awesome/theme/crylia/assets/icons/brightness/brightness-medium.svg b/awesome/theme/crylia/assets/icons/brightness/brightness-medium.svg new file mode 100644 index 0000000..e4e223c --- /dev/null +++ b/awesome/theme/crylia/assets/icons/brightness/brightness-medium.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/awesome/theme/crylia/assets/icons/clock/clock.svg b/awesome/theme/crylia/assets/icons/clock/clock.svg new file mode 100644 index 0000000..d77dd69 --- /dev/null +++ b/awesome/theme/crylia/assets/icons/clock/clock.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/awesome/theme/crylia/assets/icons/date/calendar.svg b/awesome/theme/crylia/assets/icons/date/calendar.svg new file mode 100644 index 0000000..d694669 --- /dev/null +++ b/awesome/theme/crylia/assets/icons/date/calendar.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/awesome/theme/crylia/assets/icons/network/ethernet.svg b/awesome/theme/crylia/assets/icons/network/ethernet.svg new file mode 100644 index 0000000..7e53db2 --- /dev/null +++ b/awesome/theme/crylia/assets/icons/network/ethernet.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/awesome/theme/crylia/assets/icons/network/no-internet.svg b/awesome/theme/crylia/assets/icons/network/no-internet.svg new file mode 100644 index 0000000..2adb79c --- /dev/null +++ b/awesome/theme/crylia/assets/icons/network/no-internet.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/awesome/theme/crylia/assets/icons/network/wifi-strength-1.svg b/awesome/theme/crylia/assets/icons/network/wifi-strength-1.svg new file mode 100644 index 0000000..7966383 --- /dev/null +++ b/awesome/theme/crylia/assets/icons/network/wifi-strength-1.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/awesome/theme/crylia/assets/icons/network/wifi-strength-2.svg b/awesome/theme/crylia/assets/icons/network/wifi-strength-2.svg new file mode 100644 index 0000000..393ca82 --- /dev/null +++ b/awesome/theme/crylia/assets/icons/network/wifi-strength-2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/awesome/theme/crylia/assets/icons/network/wifi-strength-3.svg b/awesome/theme/crylia/assets/icons/network/wifi-strength-3.svg new file mode 100644 index 0000000..4f470d9 --- /dev/null +++ b/awesome/theme/crylia/assets/icons/network/wifi-strength-3.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/awesome/theme/crylia/assets/icons/network/wifi-strength-4.svg b/awesome/theme/crylia/assets/icons/network/wifi-strength-4.svg new file mode 100644 index 0000000..3974275 --- /dev/null +++ b/awesome/theme/crylia/assets/icons/network/wifi-strength-4.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/awesome/theme/crylia/assets/icons/network/wifi-strength-off-outline.svg b/awesome/theme/crylia/assets/icons/network/wifi-strength-off-outline.svg new file mode 100644 index 0000000..fe6d7bd --- /dev/null +++ b/awesome/theme/crylia/assets/icons/network/wifi-strength-off-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/awesome/theme/crylia/assets/icons/network/wifi-strength-outline.svg b/awesome/theme/crylia/assets/icons/network/wifi-strength-outline.svg new file mode 100644 index 0000000..3d54780 --- /dev/null +++ b/awesome/theme/crylia/assets/icons/network/wifi-strength-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/awesome/theme/crylia/assets/layout/dwindle.svg b/awesome/theme/crylia/assets/layout/dwindle.svg new file mode 100644 index 0000000..9e59058 --- /dev/null +++ b/awesome/theme/crylia/assets/layout/dwindle.svg @@ -0,0 +1,64 @@ + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/awesome/theme/crylia/assets/layout/floating.svg b/awesome/theme/crylia/assets/layout/floating.svg new file mode 100644 index 0000000..5dcd846 --- /dev/null +++ b/awesome/theme/crylia/assets/layout/floating.svg @@ -0,0 +1,64 @@ + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/awesome/theme/crylia/assets/layout/fullscreen.svg b/awesome/theme/crylia/assets/layout/fullscreen.svg new file mode 100644 index 0000000..6ba320b --- /dev/null +++ b/awesome/theme/crylia/assets/layout/fullscreen.svg @@ -0,0 +1,62 @@ + + + + + + + image/svg+xml + + + + + + + + diff --git a/awesome/theme/crylia/assets/layout/max.svg b/awesome/theme/crylia/assets/layout/max.svg new file mode 100644 index 0000000..f1b2b2d --- /dev/null +++ b/awesome/theme/crylia/assets/layout/max.svg @@ -0,0 +1,62 @@ + + + + + + + image/svg+xml + + + + + + + + diff --git a/awesome/theme/crylia/assets/layout/tile.svg b/awesome/theme/crylia/assets/layout/tile.svg new file mode 100644 index 0000000..ea62c5d --- /dev/null +++ b/awesome/theme/crylia/assets/layout/tile.svg @@ -0,0 +1,64 @@ + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/awesome/theme/crylia/assets/wallpaper.png b/awesome/theme/crylia/assets/wallpaper.png new file mode 100644 index 0000000..f806d10 Binary files /dev/null and b/awesome/theme/crylia/assets/wallpaper.png differ diff --git a/awesome/theme/crylia/colors.lua b/awesome/theme/crylia/colors.lua new file mode 100644 index 0000000..39a1607 --- /dev/null +++ b/awesome/theme/crylia/colors.lua @@ -0,0 +1,198 @@ +----------------------------------------------------- +-- This is a table with almost all Material colors -- +----------------------------------------------------- +local _M = { } + +_M.color = { + ['White'] = '#ffffffdd', + ['Black'] = '#000000', + + ['Grey50'] = '#fafafa', + ['Grey100'] = '#f5f5f5', + ['Grey200'] = '#eeeeee', + ['Grey300'] = '#e0e0e0', + ['Grey400'] = '#bdbdbd', + ['Grey500'] = '#9e9e9e', + ['Grey600'] = '#757575', + ['Grey700'] = '#616161', + ['Grey800'] = '#424242', + ['Grey900'] = '#212121', + + ['Red50'] = '#ffebee', + ['Red100'] = '#ffcdd2', + ['Red200'] = '#ef9a9a', + ['Red300'] = '#e57373', + ['Red400'] = '#ef5350', + ['Red500'] = '#f44336', + ['Red600'] = '#e53935', + ['Red700'] = '#d32f2f', + ['Red800'] = '#c62828', + ['Red900'] = '#b71c1c', + ['RedA100'] = '#ff8a80', + ['RedA200'] = '#ff5252', + ['RedA400'] = '#ff1744', + ['RedA700'] = '#d50000', + + ['Pink50'] = '#fce4ec', + ['Pink100'] = '#f8bbd0', + ['Pink200'] = '#f48fb1', + ['Pink300'] = '#f06292', + ['Pink400'] = '#ec407a', + ['Pink500'] = '#e91e63', + ['Pink600'] = '#d81b60', + ['Pink700'] = '#c2185b', + ['Pink800'] = '#ad1457', + ['Pink900'] = '#880e4f', + ['PinkA100'] = '#ff80ab', + ['PinkA200'] = '#ff4081', + ['PinkA400'] = '#f50057', + ['PinkA700'] = '#c51162', + + ['Blue50'] = '#e3f2fd', + ['Blue100'] = '#bbdefb', + ['Blue200'] = '#90caf9', + ['Blue300'] = '#64b5f6', + ['Blue400'] = '#42a5f5', + ['Blue500'] = '#2196f3', + ['Blue600'] = '#1e88e5', + ['Blue700'] = '#1976d2', + ['Blue800'] = '#1565c0', + ['Blue900'] = '#0d47a1', + ['BlueA100'] = '#82b1ff', + ['BlueA200'] = '#448aff', + ['BlueA400'] = '#2979ff', + ['BlueA700'] = '#2962ff', + + ['Yellow50'] = '#fffde7', + ['Yellow100'] = '#fff9c4', + ['Yellow200'] = '#fff59d', + ['Yellow300'] = '#fff176', + ['Yellow400'] = '#ffee58', + ['Yellow500'] = '#ffeb3b', + ['Yellow600'] = '#fdd835', + ['Yellow700'] = '#fbc02d', + ['Yellow800'] = '#f9a825', + ['Yellow900'] = '#f57f17', + ['YellowA100'] = '#ffff8d', + ['YellowA200'] = '#ffff00', + ['YellowA400'] = '#ffea00', + ['YellowA700'] = '#ffd600', + + ['Teal50'] = '#e0f2f1', + ['Teal100'] = '#b2dfdb', + ['Teal200'] = '#80cbc4', + ['Teal300'] = '#4db6ac', + ['Teal400'] = '#26a69a', + ['Teal500'] = '#009688', + ['Teal600'] = '#00897b', + ['Teal700'] = '#00796b', + ['Teal800'] = '#00695c', + ['Teal900'] = '#004d40', + ['TealA100'] = '#a7ffeb', + ['TealA200'] = '#64ffda', + ['TealA400'] = '#1de9b6', + ['TealA700'] = '#00bfa5', + + ['Green50'] = '#e8f5e9', + ['Green100'] = '#c8e6c9', + ['Green200'] = '#a5d6a7', + ['Green300'] = '#81c784', + ['Green400'] = '#66bb6a', + ['Green500'] = '#4caf50', + ['Green600'] = '#43a047', + ['Green700'] = '#388e3c', + ['Green800'] = '#2e7d32', + ['Green900'] = '#1b5e20', + ['GreenA100'] = '#b9f6ca', + ['GreenA200'] = '#69f0ae', + ['GreenA400'] = '#00e676', + ['GreenA700'] = '#00c853', + + ['Orange50'] = '#fff3e0', + ['Orange100'] = '#ffe0b2', + ['Orange200'] = '#ffcc80', + ['Orange300'] = '#ffb74d', + ['Orange400'] = '#ffa726', + ['Orange500'] = '#ff9800', + ['Orange600'] = '#fb8c00', + ['Orange700'] = '#f57c00', + ['Orange800'] = '#ef6c00', + ['Orange900'] = '#e65100', + ['OrangeA100'] = '#ffd180', + ['OrangeA200'] = '#ffab40', + ['OrangeA400'] = '#ff9100', + ['OrangeA700'] = '#ff6d00', + + ['DeepOrange50'] = '#fbe9e7', + ['DeepOrange100'] = '#ffccbc', + ['DeepOrange200'] = '#ffab91', + ['DeepOrange300'] = '#ff8a65', + ['DeepOrange400'] = '#ff7043', + ['DeepOrange500'] = '#ff5722', + ['DeepOrange600'] = '#f4511e', + ['DeepOrange700'] = '#e64a19', + ['DeepOrange800'] = '#d84315', + ['DeepOrange900'] = '#bf360c', + ['DeepOrangeA100'] = '#ff9e80', + ['DeepOrangeA200'] = '#ff6e40', + ['DeepOrangeA400'] = '#ff3d00', + ['DeepOrangeA700'] = '#dd2c00', + + ['Purple50'] = '#F3E5F5', + ['Purple100'] = '#E1BEE7', + ['Purple200'] = '#CE93D8', + ['Purple300'] = '#BA68C8', + ['Purple400'] = '#AB47BC', + ['Purple500'] = '#9C27B0', + ['Purple600'] = '#8E24AA', + ['Purple700'] = '#7B1FA2', + ['Purple800'] = '#6A1B9A', + ['Purple900'] = '#4A148C', + ['PurpleA100'] = '#EA80FC', + ['PurpleA200'] = '#E040FB', + ['PurpleA500'] = '#D500F9', + ['PurpleA700'] = '#AA00FF', + + ['DeepPurple50'] = '#EDE7F6', + ['DeepPurple100'] = '#D1C4E9', + ['DeepPurple200'] = '#B39DDB', + ['DeepPurple300'] = '#9575CD', + ['DeepPurple400'] = '#7E57C2', + ['DeepPurple500'] = '#673AB7', + ['DeepPurple600'] = '#5E35B1', + ['DeepPurple700'] = '#512DA8', + ['DeepPurple800'] = '#4527A0', + ['DeepPurple900'] = '#311B92', + ['DeepPurpleA100'] = '#B388FF', + ['DeepPurpleA200'] = '#7C4DFF', + ['DeepPurpleA400'] = '#651FFF', + ['DeepPurpleA700'] = '#6200EA', + + ['LightBlue50'] = '#E1F5FE', + ['LightBlue100'] = '#B3E5FC', + ['LightBlue200'] = '#81D4FA', + ['LightBlue300'] = '#4FC3F7', + ['LightBlue400'] = '#29B6F6', + ['LightBlue500'] = '#03A9F4', + ['LightBlue600'] = '#039BE5', + ['LightBlue700'] = '#0288D1', + ['LightBlue800'] = '#0277BD', + ['LightBlue900'] = '#01579B', + ['LightBlueA100'] = '#80D8FF', + ['LightBlueA200'] = '#40C4FF', + ['LightBlueA400'] = '#00B0FF', + ['LightBlueA700'] = '#0091EA', + + ['BlueGrey50'] = '#ECEFF1', + ['BlueGrey100'] = '#CFD8DC', + ['BlueGrey200'] = '#B0BEC5', + ['BlueGrey300'] = '#90A4AE', + ['BlueGrey400'] = '#78909C', + ['BlueGrey500'] = '#607D8B', + ['BlueGrey600'] = '#546E7A', + ['BlueGrey700'] = '#455A64', + ['BlueGrey800'] = '#37474F', + ['BlueGrey900'] = '#263238' +} + +return _M \ No newline at end of file diff --git a/awesome/theme/crylia/layouts.lua b/awesome/theme/crylia/layouts.lua new file mode 100644 index 0000000..67b1197 --- /dev/null +++ b/awesome/theme/crylia/layouts.lua @@ -0,0 +1,14 @@ +--Awesome Libs +local color = require("theme.crylia.colors") +local gears = require("gears") + +-- Icon directory path +local layout_path = Theme_path .. "assets/layout/" + +-- Here are the icons for the layouts defined, if you want to add more layouts go to main/layouts.lua +Theme.layout_floating = gears.color.recolor_image(layout_path .. "floating.svg", color.color["Grey900"]) +Theme.layout_tile = gears.color.recolor_image(layout_path .. "tile.svg", color.color["Grey900"]) +Theme.layout_dwindle = gears.color.recolor_image(layout_path .. "dwindle.svg", color.color["Grey900"]) +Theme.layout_fairh = gears.color.recolor_image(layout_path .. "fairh.svg", color.color["Grey900"]) +Theme.layout_fullscreen = gears.color.recolor_image(layout_path .. "fullscreen.svg", color.color["Grey900"]) +Theme.layout_max = gears.color.recolor_image(layout_path .. "max.svg", color.color["Grey900"]) \ No newline at end of file diff --git a/awesome/theme/crylia/modules/brightness_osd.lua b/awesome/theme/crylia/modules/brightness_osd.lua new file mode 100644 index 0000000..88ab0dc --- /dev/null +++ b/awesome/theme/crylia/modules/brightness_osd.lua @@ -0,0 +1,198 @@ +--------------------------------------- +-- This is the brightness_osd module -- +--------------------------------------- + +-- Awesome Libs +local awful = require("awful") +local color = require("theme.crylia.colors") +local dpi = require("beautiful").xresources.apply_dpi +local gears = require("gears") +local wibox = require("wibox") + +-- Icon directory path +local icondir = awful.util.getdir("config") .. "theme/crylia/assets/icons/brightness/" + +--TODO: fix backlight keys and osd not working correctly +return function () + + local brightness_osd_widget = wibox.widget{ + { + { + { + { + id = "label", + text = "Brightness", + align = "left", + valign = "center", + widget = wibox.widget.textbox + }, + nil, + { + ic = "value", + text = "0%", + align = "center", + valign = "center", + widget = wibox.widget.textbox + }, + id = "label_value_layout", + forced_height = dpi(48), + layout = wibox.layout.align.horizontal, + }, + { + { + { + id = "icon", + image = gears.color.recolor_image(icondir .. "brightness-high.svg", color.color["White"]), + widget = wibox.widget.imagebox + }, + id = "icon_margin", + top = dpi(12), + bottom = dpi(12), + widget = wibox.container.margin + }, + { + { + id = "brightness_slider", + bar_shape = gears.shape.rounded_rect, + bar_height = dpi(2), + bar_color = color.color["White"], + bar_active_color = color.color["White"], + handle_color = color.color["White"], + handle_shape = gears.shape.circle, + handle_width = dpi(15), + handle_border_color = color.color["White"], + handle_border_width = dpi(1), + maximum = 100, + widget = wibox.widget.slider + }, + id = "slider_layout", + forced_height = dpi(24), + widget = wibox.container.place + }, + id = "icon_slider_layout", + spacing = dpi(24), + layout = wibox.layout.fixed.horizontal + }, + id = "osd_layout", + layout = wibox.layout.fixed.vertical + }, + id = "container", + left = dpi(24), + right = dpi(24), + widget = wibox.container.margin + }, + bg = color.color["Grey900"] .. '44', + widget = wibox.container.background, + ontop = true, + visible = false, + type = "notification", + forced_height = dpi(100), + forced_width = dpi(300), + offset = dpi(5), + } + + brightness_osd_widget.container.osd_layout.icon_slider_layout.slider_layout.brightness_slider:connect_signal( + "property::value", + function () + local brightness_value = brightness_osd_widget.container.osd_layout.icon_slider_layout.slider_layout.brightness_slider:get_value() + + -- Performance is horrible, or it overrides and executes at the same time as the keybindings + awful.spawn("xbacklight -set " .. brightness_value .. "%", false) + brightness_osd_widget.container.osd_layout.label_value_layout.value:set_text(brightness_value .. "%") + + awesome.emit_signal( + "widget::brightness:update", + brightness_value + ) + + if awful.screen.focused().show_brightness_osd then + awesome.emit_signal( + "module::brightness_osd:show", + true + ) + end + + local icon = icondir .. "brightness" + if brightness_value >= 0 and brightness_value < 34 then + icon = icon .. "-low" + elseif brightness_value >= 34 and brightness_value < 67 then + icon = icon .. "-medium" + elseif brightness_value >= 67 then + icon = icon .. "-high" + end + brightness_osd_widget.container.osd_layout.icon_slider_layout.icon_margin.icon:set_image(gears.color.recolor_image(icon .. ".svg", color.color["White"])) + end + ) + + local update_slider = function () + awful.spawn.easy_async_with_shell( + [[ xbacklight -get ]], + function (stdout) + stdout = stdout:sub(1,-9) + brightness_osd_widget.container.osd_layout.icon_slider_layout.slider_layout.brightness_slider:set_value(tonumber(stdout)) + end + ) + end + + local hide_osd = gears.timer{ + timeout = 5, + autostart = true, + callback = function () + brightness_osd_widget.visible = false + end + } + + -- Signals + brightness_osd_widget:connect_signal( + "mouse::enter", + function () + brightness_osd_widget.visible = true + hide_osd:stop() + end + ) + + brightness_osd_widget:connect_signal( + "mouse::leave", + function () + brightness_osd_widget.visible = true + hide_osd:again() + end + ) + + awesome.connect_signal( + "widget::brightness_osd:rerun", + function () + if hide_osd.started then + hide_osd:again() + else + hide_osd:start() + end + end + ) + + update_slider() + + awesome.connect_signal( + "module::brightness_slider:update", + function () + update_slider() + end + ) + + awesome.connect_signal( + "widget::brightness:update", + function (value) + brightness_osd_widget.container.osd_layout.icon_slider_layout.slider_layout.brightness_slider:set_value(tonumber(value)) + end + ) + + awesome.connect_signal( + "module::brightness_osd:show", + function () + brightness_osd_widget.visible = true + end + ) + + update_slider() + return brightness_osd_widget +end \ No newline at end of file diff --git a/awesome/theme/crylia/modules/calendar_osd.lua b/awesome/theme/crylia/modules/calendar_osd.lua new file mode 100644 index 0000000..a6374e8 --- /dev/null +++ b/awesome/theme/crylia/modules/calendar_osd.lua @@ -0,0 +1,98 @@ +local wibox = require("wibox") +local awful = require("awful") +local gears = require("gears") +local naughty = require("naughty") +local dpi = require("beautiful").xresources.apply_dpi +local watch = awful.widget.watch +local color = require("theme.crylia.colors") + +local icondir = awful.util.getdir("config") .. "theme/crylia/assets/icons/date/" + +local calendar_osd = function () + + local calendar_osd_time = wibox.widget{ + { + widget = wibox.widget.textbox, + text = os.date("%H-%M-%S"), + id = "clock", + font = "digital-7 italic", + forced_height = dpi(50) + }, + layout = wibox.layout.align.horizontal + } + + +--[[ local create_calendar = function (widget, date) + local d = {year = date.year, month = (date.month or 1), day = (date.day or 1)} + local weekday = tonumber(os.date("%w", os.time(d))) + local default_bg = (weekday == 0 or weekday == 6) and color.color["Grey900"] + local container = wibox.widget { + { + widget, + margins = dpi(2), + widget = wibox.container.margin + }, + shape = function (cr, height, width) + gears.shape.rounded_rect(cr, height, widget) + end, + shape_border_width = dpi(1), + shape_border_color = color.color["Grey800"], + fg = color.color["White"], + bg = color.color["Grey900"], + widget = wibox.container.background + } + end ]] + + local calendar = wibox.widget{ + font = "digital-7 italic", + date = os.date("*t"), + spacing = dpi(15), + --fn_embed = create_calendar, + widget = wibox.widget.calendar.month() + } + + local current_month = calendar:get_date().month + + local update_active_month = function (i) + local date = calendar:get_date() + date.month = date.month + i, + calendar:set_date(nil), + calendar:set_date(date) + end + + calendar:buttons( + gears.table.join( + awful.button( + { }, + 4, + function () + update_active_month(-1) + end + ), + awful.button( + { }, + 5, + function () + update_active_month(1) + end + ) + ) + ) + + local calendar_widget = wibox.widget{ + { + calendar_osd_time, + calendar, + layout = wibox.layout.fixed.vertical + }, + bg = color.color["White"] .. "00", + shape = function (cr, height, width) + gears.shape.rounded_rect(cr, dpi(500), dpi(300)) + end, + widget = wibox.container.background + } + + return calendar_widget +end + +return calendar_osd \ No newline at end of file diff --git a/awesome/theme/crylia/modules/volume_osd.lua b/awesome/theme/crylia/modules/volume_osd.lua new file mode 100644 index 0000000..6fff566 --- /dev/null +++ b/awesome/theme/crylia/modules/volume_osd.lua @@ -0,0 +1,209 @@ +----------------------------------- +-- This is the volume_old module -- +----------------------------------- + +-- Awesome Libs +local awful = require("awful") +local color = require("theme.crylia.colors") +local dpi = require("beautiful").xresources.apply_dpi +local gears = require("gears") +local wibox = require("wibox") + +-- Icon directory path +local icondir = awful.util.getdir("config") .. "theme/crylia/assets/icons/audio/" + +-- Returns the volume_osd +return function () + + local volume_osd_widget = wibox.widget{ + { + { + { + { + id = "label", + text = "Volume", + align = "left", + valign = "center", + widget = wibox.widget.textbox + }, + nil, + { + id = "value", + text = "0%", + align = "center", + valign = "center", + widget = wibox.widget.textbox + }, + id = "label_value_layout", + forced_height = dpi(48), + layout = wibox.layout.align.horizontal, + }, + { + { + { + id = "icon", + image = gears.color.recolor_image(icondir .. "volume-high.svg", color.color["White"]), + widget = wibox.widget.imagebox + }, + id = "icon_margin", + top = dpi(12), + bottom = dpi(12), + widget = wibox.container.margin + }, + { + { + id = "volume_slider", + bar_shape = gears.shape.rounded_rect, + bar_height = dpi(2), + bar_color = color.color["White"], + bar_active_color = color.color["White"], + handle_color = color.color["White"], + handle_shape = gears.shape.circle, + handle_width = dpi(15), + handle_border_color = color.color["White"], + handle_border_width = dpi(1), + maximum = 100, + widget = wibox.widget.slider + }, + id = "slider_layout", + forced_height = dpi(24), + widget = wibox.container.place + }, + id = "icon_slider_layout", + spacing = dpi(24), + layout = wibox.layout.fixed.horizontal + }, + id = "osd_layout", + layout = wibox.layout.fixed.vertical + }, + id = "container", + left = dpi(24), + right = dpi(24), + widget = wibox.container.margin + }, + bg = color.color["Grey900"] .. '44', + widget = wibox.container.background, + ontop = true, + visible = false, + type = "notification", + forced_height = dpi(100), + forced_width = dpi(300), + offset = dpi(5), + } + + volume_osd_widget.container.osd_layout.icon_slider_layout.slider_layout.volume_slider:connect_signal( + "property::value", + function () + local volume_level = volume_osd_widget.container.osd_layout.icon_slider_layout.slider_layout.volume_slider:get_value() + + awful.spawn("amixer sset Master ".. volume_level .. "%", false) + awesome.emit_signal("widget::volume") + volume_osd_widget.container.osd_layout.label_value_layout.value:set_text(volume_level .. "%") + + awesome.emit_signal( + "widget::volume:update", + volume_level + ) + + if awful.screen.focused().show_volume_osd then + awesome.emit_signal( + "module::volume_osd:show", + true + ) + end + + local icon = icondir .. "volume" + if volume_level < 1 then + icon = icon .. "-mute" + elseif volume_level >= 1 and volume_level < 34 then + icon = icon .. "-low" + elseif volume_level >= 34 and volume_level < 67 then + icon = icon .. "-medium" + elseif volume_level >= 67 then + icon = icon .. "-high" + end + volume_osd_widget.container.osd_layout.icon_slider_layout.icon_margin.icon:set_image(gears.color.recolor_image(icon .. ".svg", color.color["White"])) + end + ) + + local update_slider = function () + awful.spawn.easy_async_with_shell( + [[ awk -F"[][]" '/dB/ { print $6 }' <(amixer sget Master) ]], + function (stdout) + if stdout:match("off") then + volume_osd_widget.container.osd_layout.label_value_layout.value:set_text("0%") + --volume_osd_slider.volume_slider:set_value(0) + volume_osd_widget.container.osd_layout.icon_slider_layout.icon_margin.icon:set_image(gears.color.recolor_image(icondir .. "volume-mute" .. ".svg", color.color["White"])) + else + awful.spawn.easy_async_with_shell( + [[ awk -F"[][]" '/dB/ { print $2 }' <(amixer sget Master) ]], + function (stdout) + stdout = stdout:sub(1, -3) + volume_osd_widget.container.osd_layout.icon_slider_layout.slider_layout.volume_slider:set_value(tonumber(stdout)) + end + ) + end + end + ) + end + + local hide_osd = gears.timer{ + timeout = 5, + autostart = true, + callback = function () + volume_osd_widget.visible = false + end + } + + -- Signals + awesome.connect_signal( + "module::slider:update", + function () + update_slider() + end + ) + + awesome.connect_signal( + "widget::volume:update", + function (value) + volume_osd_widget.container.osd_layout.icon_slider_layout.slider_layout.volume_slider:set_value(tonumber(value)) + end + ) + + awesome.connect_signal( + "module::volume_osd:show", + function () + volume_osd_widget.visible = true + end + ) + + volume_osd_widget:connect_signal( + "mouse::enter", + function () + volume_osd_widget.visible = true + hide_osd:stop() + end + ) + + volume_osd_widget:connect_signal( + "mouse::leave", + function () + volume_osd_widget.visible = true + hide_osd:again() + end + ) + + awesome.connect_signal( + "widget::volume_osd:rerun", + function () + if hide_osd.started then + hide_osd:again() + else + hide_osd:start() + end + end + ) + + update_slider() + return volume_osd_widget +end \ No newline at end of file diff --git a/awesome/theme/crylia/theme.lua b/awesome/theme/crylia/theme.lua new file mode 100644 index 0000000..9976e97 --- /dev/null +++ b/awesome/theme/crylia/theme.lua @@ -0,0 +1,21 @@ +-------------------------------------------------- +-- ██████╗██████╗ ██╗ ██╗██╗ ██╗ █████╗ -- +-- ██╔════╝██╔══██╗╚██╗ ██╔╝██║ ██║██╔══██╗ -- +-- ██║ ██████╔╝ ╚████╔╝ ██║ ██║███████║ -- +-- ██║ ██╔══██╗ ╚██╔╝ ██║ ██║██╔══██║ -- +-- ╚██████╗██║ ██║ ██║ ███████╗██║██║ ██║ -- +-- ╚═════╝╚═╝ ╚═╝ ╚═╝ ╚══════╝╚═╝╚═╝ ╚═╝ -- +-------------------------------------------------- +local awful = require("awful") + +Theme_path = awful.util.getdir("config") .. "/theme/crylia/" +Theme = { } + +dofile(Theme_path .. "theme_variables.lua") +dofile(Theme_path .. "layouts.lua") + +Theme.wallpaper = Theme_path .. "assets/wallpaper.png" +Theme.awesome_icon = Theme_path .. "assets/icons/icon.png" +Theme.awesome_subicon = Theme_path .. "assets/icons/icon.png" + +return Theme \ No newline at end of file diff --git a/awesome/theme/crylia/theme_variables.lua b/awesome/theme/crylia/theme_variables.lua new file mode 100644 index 0000000..6cfd91c --- /dev/null +++ b/awesome/theme/crylia/theme_variables.lua @@ -0,0 +1,62 @@ +------------------------------------------------------------------------------------------ +-- This is the main themeing file, here are most colors changed -- +-- If you want to change individual widget colors you will need to edit them seperately -- +------------------------------------------------------------------------------------------ + +-- Awesome Libs +local colors = require("theme.crylia.colors") +local dpi = require("beautiful.xresources").apply_dpi +local gears = require("gears") + +-- Note that most variables wont change anything since almost everything you see is individually themed + +Theme.font = "JetBrains Mono, Bold" + +Theme.bg_normal = colors.color["Grey900"] +Theme.bg_focus = colors.color["Grey900"] +Theme.bg_urgent = colors.color["RedA200"] +Theme.bg_minimize = colors.color["White"] +Theme.bg_systray = colors.color["White"] + +Theme.fg_normal = colors.color["White"] +Theme.fg_focus = colors.color["White"] +Theme.fg_urgent = colors.color["White"] +Theme.fg_minimize = colors.color["White"] + +Theme.useless_gap = dpi(5) -- Change this if you dont like window gaps +Theme.border_width = dpi(1) -- Change this if you dont like borders +Theme.border_normal = colors.color["Grey600"] +--Theme.border_focus = colors.color["Red"] -- Doesnt work, no idea why; workaround is in signals.lua +Theme.border_marked = colors.color["Red400"] + +Theme.menu_submenu_icon = Theme_path .. "assets.ArchLogo.png" +Theme.menu_height = dpi(30) +Theme.menu_width = dpi(200) +Theme.menu_bg_normal = colors.color["Grey900"] +Theme.menu_bg_focus = colors.color["Grey800"] +Theme.menu_fg_focus = colors.color["White"] +Theme.menu_border_color = colors.color["Grey600"] +Theme.menu_border_width = dpi(1) + +Theme.taglist_fg_focus = colors.color["Grey900"] +Theme.taglist_bg_focus = colors.color["White"] + +Theme.tooltip_border_color = colors.color["Grey800"] +Theme.tooltip_bg = colors.color["White"] .. "00" +Theme.tooltip_fg = colors.color["White"] +Theme.tooltip_border_width = dpi(1) +Theme.tooltip_shape = function (cr, width, heigth) + gears.shape.rounded_rect(cr, width, heigth, 10) +end + +Theme.notification_bg = colors.color["Grey900"] +Theme.notification_fg = colors.color["White"] +Theme.notification_border_width = dpi(1) +Theme.notification_border_color = colors.color["Grey800"] +Theme.notification_shape = function (cr, width, heigth) + gears.shape.rounded_rect(cr, width, heigth, 10) +end +Theme.notification_margin = dpi(10) +Theme.notification_max_width = dpi(400) +Theme.notification_max_height = dpi(1000) +Theme.notification_icon_size = dpi(40) \ No newline at end of file diff --git a/awesome/theme/crylia/widgets/addtag.lua b/awesome/theme/crylia/widgets/addtag.lua new file mode 100644 index 0000000..e53dd5d --- /dev/null +++ b/awesome/theme/crylia/widgets/addtag.lua @@ -0,0 +1,91 @@ +------------------------------------------------------------- +-- This is a button widget to add a new tag to the taglist -- +------------------------------------------------------------- + +-- Awesome Libs +local awful = require("awful") +local dpi = require("beautiful").xresources.apply_dpi +local gears = require("gears") +local wibox = require("wibox") + +-- User Libs +local color = require("theme.crylia.colors") + +-- Icon directory path +local icondir = awful.util.getdir("config") .. "theme/crylia/assets/icons/addtag/" + +-- Returns the add tag button widget +return function () + + -- This is the widget that gets dispayed + local add_tag_button = wibox.widget{ + { + { + image = gears.color.recolor_image(icondir .. "plus.svg", color.color["White"]), + widget = wibox.widget.imagebox, + resize = false + }, + margins = dpi(4), + widget = wibox.container.margin + }, + bg = color.color["Grey900"], + shape = function (cr, width, height) + gears.shape.rounded_rect(cr, width, height, 5) + end, + widget = wibox.container.background + } + + -- Keybindings and Mouse click bindings + add_tag_button:buttons( + gears.table.join( + -- Add a new tag + awful.button( + { }, + 1, + nil, + function () + awful.tag.add() + end + ) + ) + ) + + -- Signals + local old_wibox, old_cursor, old_bg + add_tag_button:connect_signal( + "mouse::enter", + function () + old_bg = add_tag_button.bg + add_tag_button.bg = "#ffffff" .. "12" + local w = mouse.current_wibox + if w then + old_cursor, old_wibox = w.cursor, w + w.cursor = "hand1" + end + end + ) + add_tag_button:connect_signal( + "button::press", + function () + add_tag_button.bg = "#ffffff" .. "24" + end + ) + add_tag_button:connect_signal( + "button::release", + function () + add_tag_button.bg = "#ffffff" .. "12" + end + ) + add_tag_button:connect_signal( + "mouse::leave", + function () + add_tag_button.bg = old_bg + if old_wibox then + old_wibox.cursor = old_cursor + old_wibox = nil + end + end + ) + + return add_tag_button +end \ No newline at end of file diff --git a/awesome/theme/crylia/widgets/audio.lua b/awesome/theme/crylia/widgets/audio.lua new file mode 100644 index 0000000..87cbed6 --- /dev/null +++ b/awesome/theme/crylia/widgets/audio.lua @@ -0,0 +1,156 @@ +------------------------------ +-- This is the audio widget -- +------------------------------ + +-- Awesome Libs +local awful = require("awful") +local color = require("theme.crylia.colors") +local dpi = require("beautiful").xresources.apply_dpi +local gears = require("gears") +local wibox = require("wibox") + +-- Icon directory path +local icondir = awful.util.getdir("config") .. "theme/crylia/assets/icons/audio/" + +-- Returns the audio widget +return function () + + local audio_widget = wibox.widget{ + { + { + { + { + { + id = "icon", + widget = wibox.widget.imagebox, + resize = false + }, + id = "icon_layout", + widget = wibox.container.place + }, + top = dpi(2), + widget = wibox.container.margin, + id = "icon_margin" + }, + spacing = dpi(6), + { + id = "label", + align = "center", + valign = "center", + widget = wibox.widget.textbox + }, + id = "audio_layout", + layout = wibox.layout.fixed.horizontal + }, + id = "container", + left = dpi(5), + right = dpi(10), + widget = wibox.container.margin + }, + bg = color.color["Yellow200"], + fg = color.color["Grey900"], + shape = function (cr, width, height) + gears.shape.rounded_rect(cr, width, height, 5) + end, + widget = wibox.widget.background + } + + local get_volume = function () + awful.spawn.easy_async_with_shell( + [[ awk -F"[][]" '/dB/ { print $2 }' <(amixer sget Master) ]], + function (stdout) + local icon = icondir .. "volume" + stdout = stdout:gsub("%%", "") + local volume = tonumber(stdout) or 0 + audio_widget.container.audio_layout.spacing = dpi(5) + audio_widget.container.audio_layout.label.visible = true + if volume < 1 then + icon = icon .. "-mute" + audio_widget.container.audio_layout.spacing = dpi(0) + audio_widget.container.audio_layout.label.visible = false + elseif volume >= 1 and volume < 34 then + icon = icon .. "-low" + elseif volume >= 34 and volume < 67 then + icon = icon .. "-medium" + elseif volume >= 67 then + icon = icon .. "-high" + end + audio_widget.container.audio_layout.label:set_text(volume .. "%") + audio_widget.container.audio_layout.icon_margin.icon_layout.icon:set_image(gears.color.recolor_image(icon .. ".svg", color.color["Grey900"])) + end + ) + end + + local check_muted = function () + awful.spawn.easy_async_with_shell( + [[ awk -F"[][]" '/dB/ { print $6 }' <(amixer sget Master) ]], + function (stdout) + if stdout:match("off") then + audio_widget.container.audio_layout.label.visible = false + audio_widget.container:set_right(0) + audio_widget.container.audio_layout.icon_margin.icon_layout.icon:set_image(gears.color.recolor_image(icondir .. "volume-mute" .. ".svg", color.color["Grey900"])) + else + audio_widget.container:set_right(10) + get_volume() + end + end + ) + end + + -- Signals + local old_wibox, old_cursor, old_bg + audio_widget:connect_signal( + "mouse::enter", + function () + old_bg = audio_widget.bg + audio_widget.bg = color.color["Yellow200"] .. "dd" + local w = mouse.current_wibox + if w then + old_cursor, old_wibox = w.cursor, w + w.cursor = "hand1" + end + end + ) + + audio_widget:connect_signal( + "button::press", + function () + audio_widget.bg = color.color["Yellow200"] .. "bb" + end + ) + + audio_widget:connect_signal( + "button::release", + function () + audio_widget.bg = color.color["Yellow200"] .. "dd" + end + ) + + audio_widget:connect_signal( + "mouse::leave", + function () + audio_widget.bg = old_bg + if old_wibox then + old_wibox.cursor = old_cursor + old_wibox = nil + end + end + ) + + audio_widget:connect_signal( + "button::press", + function () + awesome.emit_signal("module::volume_osd:show", true) + end + ) + + awesome.connect_signal( + "widget::volume", + function (c) + check_muted() + end + ) + + check_muted() + return audio_widget +end \ No newline at end of file diff --git a/awesome/theme/crylia/widgets/battery.lua b/awesome/theme/crylia/widgets/battery.lua new file mode 100644 index 0000000..1c7ac03 --- /dev/null +++ b/awesome/theme/crylia/widgets/battery.lua @@ -0,0 +1,238 @@ +-------------------------------- +-- This is the battery widget -- +-------------------------------- + +-- Awesome Libs +local awful = require("awful") +local color = require("theme.crylia.colors") +local dpi = require("beautiful").xresources.apply_dpi +local gears = require("gears") +local naughty = require("naughty") +local watch = awful.widget.watch +local wibox = require("wibox") + +-- Icon directory path +local icondir = awful.util.getdir("config") .. "theme/crylia/assets/icons/battery/" + +-- Returns the battery widget +return function () + local battery_widget = wibox.widget{ + { + { + { + { + { + id = "icon", + image = gears.color.recolor_image(icondir .. "battery-unknown.svg", "#212121"), + widget = wibox.widget.imagebox, + resize = false + }, + id = "icon_layout", + widget = wibox.container.place + }, + id = "icon_margin", + top = dpi(2), + widget = wibox.container.margin + }, + spacing = dpi(8), + { + visible = false, + align = 'center', + valign = 'center', + id = "label", + widget = wibox.widget.textbox + }, + id = "battery_layout", + layout = wibox.layout.fixed.horizontal + }, + id = "container", + left = dpi(5), + right = dpi(10), + widget = wibox.container.margin + }, + bg = color.color["Purple200"], + fg = color.color["Grey900"], + shape = function (cr, width, height) + gears.shape.rounded_rect(cr, width, height, 5) + end, + widget = wibox.widget.background + } + + local battery_tooltip = awful.tooltip{ + objects = {battery_widget}, + text = "", + mode = "inside", + align = "right", + margins = dpi(10) + } + + local get_battery_info = function () + awful.spawn.easy_async_with_shell( + [[ upower -i $(upower -e | grep BAT) | grep "time to " ]], + function (stdout) + if stdout == nil or stdout == '' then + battery_tooltip:set_text('No Battery Found') + return + end + local rem_time = "" + if stdout:match("hour") then + rem_time = "Hours" + else + rem_time = "Minutes" + end + if stdout:match("empty") then + battery_tooltip:set_text("Remaining battery time: " .. stdout:match("%d+,%d") .. " " .. rem_time) + elseif stdout:match("time to full") then + + battery_tooltip:set_text("Battery fully charged in: " .. stdout:match("%d+,%d") .. " " .. rem_time) + end + end + ) + end + get_battery_info() + + local last_battery_check = os.time() + local notify_critical_battery = true + + local battery_warning = function () + naughty.notify({ + icon = gears.color.recolor_image(icondir .. "battery-alert.svg", color.color["White"]), + app_name = "System notification", + title = "Battery is low", + message = "Battery is almost battery_labelempty", + urgency = "critical" + }) + end + + local update_battery = function (status) + awful.spawn.easy_async_with_shell( + [[sh -c "upower -i $(upower -e | grep BAT) | grep percentage | awk '{print \$2}' |tr -d '\n%'"]], + function (stdout) + local battery_percentage = tonumber(stdout) + + if not battery_percentage then + return + end + + battery_widget.container.battery_layout.spacing = dpi(5) + battery_widget.container.battery_layout.label.visible = true + battery_widget.container.battery_layout.label:set_text(battery_percentage .. '%') + + local icon = 'battery' + + if status == 'fully-charged' or status == 'charging' and battery_percentage == 100 then + icon = icon .. '-' .. 'charging' + battery_widget.container.battery_layout.icon_margin.icon_layout.icon:set_image(gears.surface.load_uncached(gears.color.recolor_image(icondir .. icon .. '.svg', "#212121"))) + return + end + + if battery_percentage > 0 and battery_percentage < 10 and status == 'discharging' then + icon = icon .. '-' .. 'alert' + if(os.difftime(os.time(), last_battery_check) > 300 or notify_critical_battery) then + last_battery_check = os.time() + notify_critical_battery = false + battery_warning() + end + battery_widget.container.battery_layout.icon_margin.icon_layout.icon:set_image(gears.surface.load_uncached(gears.color.recolor_image(icondir .. icon .. '.svg', "#212121"))) + return + end + + if battery_percentage > 0 and battery_percentage < 10 then + icon = icon .. '-' .. status .. '-' .. 'outline' + elseif battery_percentage >= 10 and battery_percentage < 20 then + icon = icon .. '-' .. status .. '-' .. '10' + elseif battery_percentage >= 20 and battery_percentage < 30 then + icon = icon .. '-' .. status .. '-' .. '20' + elseif battery_percentage >= 30 and battery_percentage < 40 then + icon = icon .. '-' .. status .. '-' .. '30' + elseif battery_percentage >= 40 and battery_percentage < 50 then + icon = icon .. '-' .. status .. '-' .. '40' + elseif battery_percentage >= 50 and battery_percentage < 60 then + icon = icon .. '-' .. status .. '-' .. '50' + elseif battery_percentage >= 60 and battery_percentage < 70 then + icon = icon .. '-' .. status .. '-' .. '60' + elseif battery_percentage >= 70 and battery_percentage < 80 then + icon = icon .. '-' .. status .. '-' .. '70' + elseif battery_percentage >= 80 and battery_percentage < 90 then + icon = icon .. '-' .. status .. '-' .. '80' + elseif battery_percentage >=90 and battery_percentage < 100 then + icon = icon .. '-' .. status .. '-' .. '90' + end + + battery_widget.container.battery_layout.icon_margin.icon_layout.icon:set_image(gears.surface.load_uncached(gears.color.recolor_image(icondir .. icon .. '.svg', "#212121"))) + + end + ) + end + + local old_wibox, old_cursor, old_bg + battery_widget:connect_signal( + "mouse::enter", + function () + old_bg = battery_widget.bg + battery_widget.bg = color.color["Purple200"] .. "dd" + local w = mouse.current_wibox + if w then + old_cursor, old_wibox = w.cursor, w + w.cursor = "hand1" + end + end + ) + + -- Signals + battery_widget:connect_signal( + "button::press", + function () + battery_widget.bg = color.color["Purple200"] .. "bb" + end + ) + + battery_widget:connect_signal( + "button::release", + function () + battery_widget.bg = color.color["Purple200"] .. "dd" + end + ) + + battery_widget:connect_signal( + "mouse::leave", + function () + battery_widget.bg = old_bg + if old_wibox then + old_wibox.cursor = old_cursor + old_wibox = nil + end + end + ) + + battery_widget:connect_signal( + 'button::press', + function () + awful.spawn("xfce4-power-manager-settings") + end + ) + + battery_widget:connect_signal( + "mouse::enter", + function () + get_battery_info() + end + ) + + watch( + [[sh -c "upower -i $(upower -e | grep BAT) | grep state | awk '{print \$2}' | tr -d '\n'"]], + 5, + function (widget, stdout) + local status = stdout:gsub('%\n', '') + if status == nil or status == '' then + battery_widget.container.battery_layout.spacing = dpi(0) + battery_widget.container.battery_layout.label.visible = false + battery_tooltip:set_text('No battery found') + battery_widget.container.battery_layout.icon_margin.icon_layout.icon:set_image(gears.surface.load_uncached(gears.color.recolor_image(icondir .. 'battery-off' .. '.svg', "#212121"))) + end + update_battery(status) + end + ) + + return battery_widget +end \ No newline at end of file diff --git a/awesome/theme/crylia/widgets/bluetooth.lua b/awesome/theme/crylia/widgets/bluetooth.lua new file mode 100644 index 0000000..e7feb23 --- /dev/null +++ b/awesome/theme/crylia/widgets/bluetooth.lua @@ -0,0 +1,155 @@ +---------------------------------- +-- This is the bluetooth widget -- +---------------------------------- + +-- Awesome Libs +local awful = require("awful") +local color = require("theme.crylia.colors") +local dpi = require("beautiful").xresources.apply_dpi +local gears = require("gears") +local wibox = require("wibox") + +-- Icon directory path +local icondir = awful.util.getdir("config") .. "theme/crylia/assets/icons/bluetooth/" + +-- Returns the bluetooth widget +return function () + local bluetooth_widget = wibox.widget{ + { + { + { + id = "icon", + image = gears.color.recolor_image(icondir .. "bluetooth-off.svg"), + widget = wibox.widget.imagebox, + resize = false + }, + id = "icon_layout", + widget = wibox.container.place + }, + id = "icon_margin", + left = dpi(5), + right = dpi(5), + widget = wibox.container.margin + }, + bg = color.color["Blue200"], + fg = color.color["Grey900"], + shape = function (cr, width, height) + gears.shape.rounded_rect(cr, width, height, 5) + end, + widget = wibox.widget.background + } + + local bluetooth_tooltip = awful.tooltip{ + objects = {bluetooth_widget}, + text = "", + mode = "inside", + align = "right", + margins = dpi(10) + } + + local bluetooth_state = "off" + local connected_device = "nothing" + + local get_bluetooth_information = function () + awful.spawn.easy_async_with_shell( + [[ bluetoothctl show | grep Powered | awk '{print $2}' ]], + function (stdout) + local icon = icondir .. "bluetooth" + stdout = stdout:gsub("\n", "") + if stdout == "yes" then + icon = icon .. "-on" + bluetooth_state = "on" + awful.spawn.easy_async_with_shell( + [[ bluetoothctl info | grep Name: | awk '{ first = $1; $1 = ""; print $0 }' ]], + function (stdout2) + if stdout2 == nil or stdout2:gsub("\n", "") == "" then + bluetooth_tooltip:set_text("Bluetooth is turned " .. bluetooth_state .. "\n" .. "You are currently not connected") + else + bluetooth_tooltip:set_text("Bluetooth is turned " .. bluetooth_state .. "\n" .. "You are currently connected to:" .. connected_device) + connected_device = stdout2 + end + end + ) + else + icon = icon .. "-off" + bluetooth_state = "off" + bluetooth_tooltip:set_text("Bluetooth is turned " .. bluetooth_state .. "\n") + end + bluetooth_widget.icon_margin.icon_layout.icon:set_image(gears.color.recolor_image(icon .. ".svg", color.color["Grey900"])) + end + ) + end + + local bluetooth_update = gears.timer{ + timeout = 5, + autostart = true, + call_now = true, + callback = function () + get_bluetooth_information() + end + } + + -- Signals + local old_wibox, old_cursor, old_bg + bluetooth_widget:connect_signal( + "mouse::enter", + function () + old_bg = bluetooth_widget.bg + bluetooth_widget.bg = color.color["Blue200"] .. "dd" + local w = mouse.current_wibox + if w then + old_cursor, old_wibox = w.cursor, w + w.cursor = "hand1" + end + end + ) + + bluetooth_widget:connect_signal( + "button::press", + function () + bluetooth_widget.bg = color.color["Blue200"] .. "bb" + end + ) + + bluetooth_widget:connect_signal( + "button::release", + function () + bluetooth_widget.bg = color.color["Blue200"] .. "dd" + end + ) + + bluetooth_widget:connect_signal( + "mouse::leave", + function () + bluetooth_widget.bg = old_bg + if old_wibox then + old_wibox.cursor = old_cursor + old_wibox = nil + end + end + ) + + bluetooth_widget:connect_signal( + "button::press", + function () + if bluetooth_state == "on" then + awful.spawn.easy_async_with_shell( + "bluetoothctl power off", + function (stdout) + get_bluetooth_information() + end + ) + else + awful.spawn.easy_async_with_shell( + "bluetoothctl power on", + function (stdout) + get_bluetooth_information() + end + ) + end + end + ) + + get_bluetooth_information() + return bluetooth_widget +end \ No newline at end of file diff --git a/awesome/theme/crylia/widgets/clock.lua b/awesome/theme/crylia/widgets/clock.lua new file mode 100644 index 0000000..a7bb12e --- /dev/null +++ b/awesome/theme/crylia/widgets/clock.lua @@ -0,0 +1,115 @@ +------------------------------ +-- This is the clock widget -- +------------------------------ + +-- Awesome Libs +local awful = require("awful") +local color = require("theme.crylia.colors") +local dpi = require("beautiful").xresources.apply_dpi +local gears = require("gears") +local wibox = require("wibox") + +-- Icon directory path +local icondir = awful.util.getdir("config") .. "theme/crylia/assets/icons/clock/" + +-- Returns the clock widget +return function () + + local clock_widget = wibox.widget{ + { + { + { + { + { + id = "icon", + image = gears.color.recolor_image(icondir .. "clock.svg", color.color["Grey900"]), + widget = wibox.widget.imagebox, + resize = false + }, + id = "icon_layout", + widget = wibox.container.place + }, + id = "icon_margin", + top = dpi(2), + widget = wibox.container.margin + }, + spacing = dpi(10), + { + id = "label", + align = "center", + valign = "center", + widget = wibox.widget.textbox + }, + id = "clock_layout", + layout = wibox.layout.fixed.horizontal + }, + id = "container", + left = dpi(10), + right = dpi(10), + widget = wibox.container.margin + }, + bg = color.color["Orange200"], + fg = color.color["Grey900"], + shape = function (cr, width, height) + gears.shape.rounded_rect(cr, width, height, 5) + end, + widget = wibox.widget.background + } + + local set_clock = function () + clock_widget.container.clock_layout.label:set_text(os.date("%H:%M")) + end + + -- Updates the clock every 5 seconds, worst case you are 5 seconds behind + -- ¯\_(ツ)_/¯ + local clock_update = gears.timer { + timeout = 5, + autostart = true, + call_now = true, + callback = function () + set_clock() + end + } + + -- Signals + local old_wibox, old_cursor, old_bg + clock_widget:connect_signal( + "mouse::enter", + function () + old_bg = clock_widget.bg + clock_widget.bg = color.color["Orange200"] .. "dd" + local w = mouse.current_wibox + if w then + old_cursor, old_wibox = w.cursor, w + w.cursor = "hand1" + end + end + ) + + clock_widget:connect_signal( + "button::press", + function () + clock_widget.bg = color.color["Orange200"] .. "bb" + end + ) + + clock_widget:connect_signal( + "button::release", + function () + clock_widget.bg = color.color["Orange200"] .. "dd" + end + ) + + clock_widget:connect_signal( + "mouse::leave", + function () + clock_widget.bg = old_bg + if old_wibox then + old_wibox.cursor = old_cursor + old_wibox = nil + end + end + ) + + return clock_widget +end \ No newline at end of file diff --git a/awesome/theme/crylia/widgets/date.lua b/awesome/theme/crylia/widgets/date.lua new file mode 100644 index 0000000..ab3c4b1 --- /dev/null +++ b/awesome/theme/crylia/widgets/date.lua @@ -0,0 +1,114 @@ +----------------------------- +-- This is the date widget -- +----------------------------- + +-- Awesome Libs +local awful = require("awful") +local color = require("theme.crylia.colors") +local dpi = require("beautiful").xresources.apply_dpi +local gears = require("gears") +local wibox = require("wibox") + +-- Icon directory path +local icondir = awful.util.getdir("config") .. "theme/crylia/assets/icons/date/" + +-- Returns the date widget +return function () + + local date_widget = wibox.widget{ + { + { + { + { + { + id = "icon", + image = gears.color.recolor_image(icondir .. "calendar.svg", color.color["Grey900"]), + widget = wibox.widget.imagebox, + resize = false + }, + id = "icon_layout", + widget = wibox.container.place + }, + id = "icon_margin", + top = dpi(2), + widget = wibox.container.margin + }, + spacing = dpi(10), + { + id = "label", + align = "center", + valign = "center", + widget = wibox.widget.textbox + }, + id = "date_layout", + layout = wibox.layout.fixed.horizontal + }, + id = "container", + left = dpi(10), + right = dpi(10), + widget = wibox.container.margin + }, + bg = color.color["Teal200"], + fg = color.color["Grey900"], + shape = function (cr, width, height) + gears.shape.rounded_rect(cr, width, height, 5) + end, + widget = wibox.widget.background + } + + local set_date = function () + date_widget.container.date_layout.label:set_text(os.date("%a, %b %d")) + end + + -- Updates the date every minute, dont blame me if you miss silvester + local date_updater = gears.timer { + timeout = 60, + autostart = true, + call_now = true, + callback = function () + set_date() + end + } + + -- Signals + local old_wibox, old_cursor, old_bg + date_widget:connect_signal( + "mouse::enter", + function () + old_bg = date_widget.bg + date_widget.bg = color.color["Teal200"] .. "dd" + local w = mouse.current_wibox + if w then + old_cursor, old_wibox = w.cursor, w + w.cursor = "hand1" + end + end + ) + + date_widget:connect_signal( + "button::press", + function () + date_widget.bg = color.color["Teal200"] .. "bb" + end + ) + + date_widget:connect_signal( + "button::release", + function () + date_widget.bg = color.color["Teal200"] .. "dd" + end + ) + + date_widget:connect_signal( + "mouse::leave", + function () + date_widget.bg = old_bg + if old_wibox then + old_wibox.cursor = old_cursor + old_wibox = nil + end + end + ) + + return date_widget +end \ No newline at end of file diff --git a/awesome/theme/crylia/widgets/layout_list.lua b/awesome/theme/crylia/widgets/layout_list.lua new file mode 100644 index 0000000..d17a454 --- /dev/null +++ b/awesome/theme/crylia/widgets/layout_list.lua @@ -0,0 +1,70 @@ +---------------------------------- +-- This is the layoutbox widget -- +---------------------------------- + +-- Awesome Libs +local awful = require("awful") +local color = require("theme.crylia.colors") +local dpi = require("beautiful").xresources.apply_dpi +local gears = require("gears") +local wibox = require("wibox") + +-- Returns the layoutbox widget +return function () + + local layout = wibox.widget{ + { + awful.widget.layoutbox(), + margins = dpi(3), + forced_width = dpi(33), + widget = wibox.container.margin + }, + bg = color.color["LightBlue200"], + shape = function (cr, width, height) + gears.shape.rounded_rect(cr, width, height, 5) + end, + widget = wibox.container.background + } + + -- Signals + local old_wibox, old_cursor, old_bg + layout:connect_signal( + "mouse::enter", + function () + old_bg = layout.bg + layout.bg = color.color["LightBlue200"] .. "dd" + local w = mouse.current_wibox + if w then + old_cursor, old_wibox = w.cursor, w + w.cursor = "hand1" + end + end + ) + + layout:connect_signal( + "button::press", + function () + layout.bg = color.color["LightBlue200"] .. "bb" + end + ) + + layout:connect_signal( + "button::release", + function () + layout.bg = color.color["LightBlue200"] .. "dd" + end + ) + + layout:connect_signal( + "mouse::leave", + function () + layout.bg = old_bg + if old_wibox then + old_wibox.cursor = old_cursor + old_wibox = nil + end + end + ) + + return layout +end \ No newline at end of file diff --git a/awesome/theme/crylia/widgets/network.lua b/awesome/theme/crylia/widgets/network.lua new file mode 100644 index 0000000..f828d84 --- /dev/null +++ b/awesome/theme/crylia/widgets/network.lua @@ -0,0 +1,373 @@ +-------------------------------- +-- This is the network widget -- +-------------------------------- + +-- Awesome Libs +local awful = require("awful") +local color = require("theme.crylia.colors") +local dpi = require("beautiful").xresources.apply_dpi +local gears = require("gears") +local naughty = require("naughty") +local wibox = require("wibox") + +-- Icon directory path +local icondir = awful.util.getdir("config") .. "theme/crylia/assets/icons/network/" + +-- Insert your interfaces here, get the from ip a +local interfaces = { + wlan_interface = "wlo1", + lan_interface = "enx00e04c89ce6f" +} + +local network_mode = nil + +-- Returns the network widget +return function () + local startup = true + local reconnect_startup = true + + local network_widget = wibox.widget{ + { + { + { + { + { + id = 'icon', + image = gears.color.recolor_image(icondir .. "no-internet" .. ".svg", color.color["Grey900"]), + widget = wibox.widget.imagebox, + resize = false + }, + id = "icon_layout", + widget = wibox.container.place + }, + id = "icon_margin", + top = dpi(2), + widget = wibox.container.margin + }, + spacing = dpi(8), + { + id = "label", + visible = false, + valign = "center", + align = "center", + widget = wibox.widget.textbox + }, + id = "network_layout", + layout = wibox.layout.fixed.horizontal + }, + id = "container", + left = dpi(10), + right = dpi(10), + widget = wibox.container.margin + }, + bg = color.color["Red200"], + fg = color.color["Grey900"], + shape = function (cr, width, height) + gears.shape.rounded_rect(cr, width, height, 5) + end, + widget = wibox.widget.background + } + + local network_tooltip = awful.tooltip{ + text = "Loading", + objects = {network_widget}, + mode = "inside", + align = "right", + margins = dpi(10) + } + + local check_for_internet = [=[ + status_ping=0 + packets="$(ping -q -w2 -c2 1.1.1.1 | grep -o "100% packet loss")" + if [ ! -z "${packets}" ]; + then + status_ping=0 + else + status_ping=1 + fi + if [ $status_ping -eq 0 ]; + then + echo "Connected but no internet" + fi + ]=] + + local update_startup = function () + if startup then + startup = false + end + end + + local update_reconnect_startup = function (status) + reconnect_startup = status + end + + local update_tooltip = function (message) + network_tooltip:set_markup(message) + end + + local network_notify = function (message, title, app_name, icon) + naughty.notify({ + text = message, + title = title, + app_name = app_name, + icon = gears.color.recolor_image(icon, color.color["White"]), + timeout = 3 + }) + end + + local update_wireless = function () + network_mode = "wireless" + + local notify_connected = function (essid) + local message = "You are now connected to ".. essid + local title = "Connection successfull" + local app_name = "System Notification" + local icon = icondir .. "wifi-strength-4.svg" + network_notify(message, title, app_name, icon) + end + + local update_wireless_data = function (strength, healthy) + awful.spawn.easy_async_with_shell( + [[ iw dev ]] .. interfaces.wlan_interface .. [[ link ]], + function (stdout) + local essid = stdout:match("SSID: (.-)\n") or "N/A" + local bitrate = stdout: match("tx bitrate: (.+/s)") or "N/A" + local message = "Connected to " .. essid .. "\nSignal strength " .. tostring(wifi_strength) .. "%\n" .. "Bit rate " .. tostring(bitrate) .. "" + + if healthy then + update_tooltip(message) + else + update_tooltip("You are connected but have no internet" .. message) + end + + if reconnect_startup or startup then + notify_connected(essid) + update_reconnect_startup(false) + end + end + ) + end + + local update_wireless_icon = function (strength) + awful.spawn.easy_async_with_shell( + check_for_internet, + function (stdout) + local icon = "wifi-strength" + if not stdout:match("Connected but no internet") then + if startup or reconnect_startup then + awesome.emit_signal("system::network_connected") + end + icon = icon .. '-' .. tostring(strength) + update_wireless_data(wifi_strength_rounded, true) + else + icon = icon .. "-" .. tostring(strength) + update_wireless_data(wifi_strength_rounded, false) + end + network_widget.container.network_layout.spacing = dpi(8) + network_widget.container.network_layout.icon_margin.icon_layout.icon:set_image(gears.color.recolor_image(icondir .. icon .. ".svg", color.color["Grey900"])) + end + ) + end + + local update_wireless_strength = function () + awful.spawn.easy_async_with_shell( + [[ awk 'NR==3 {printf "%3.0f", ($3/70)*100}' /proc/net/wireless ]], + function (stdout) + if not tonumber(stdout) then + return + end + wifi_strength = tonumber(stdout) + network_widget.container.network_layout.spacing = dpi(10) + network_widget.container.network_layout.label.visible = true + network_widget.container.network_layout.label:set_text(tostring(wifi_strength)) + local wifi_strength_rounded = math.floor(wifi_strength / 25 + 0.5) + update_wireless_icon(wifi_strength_rounded) + end + ) + end + + update_wireless_strength() + update_startup() + end + + local update_wired = function () + network_mode = "wired" + + local notify_connected = function () + local message = "You are now connected to ".. interfaces.lan_interface + local title = "Connection successfull" + local app_name = "System Notification" + local icon = icondir .. "ethernet.svg" + network_notify(message, title, app_name, icon) + end + + awful.spawn.easy_async_with_shell( + check_for_internet, + function (stdout) + local icon = "ethernet" + + if stdout:match("Connected but no internet") then + icon = "no-internet" + update_tooltip( + "No internet" + ) + else + update_tooltip("You are connected to:\nEthernet Interface " .. interfaces.lan_interface .. "") + if startup or reconnect_startup then + awesome.emit_signal("system::network_connected") + notify_connected() + update_startup() + end + update_reconnect_startup(false) + end + network_widget.container.network_layout.label.visible = false + network_widget.container.network_layout.spacing = dpi(0) + network_widget.container.network_layout.icon_margin.icon_layout.icon:set_image(icondir .. icon .. ".svg") + end + ) + + end + + local update_disconnected = function () + local notify_wireless_disconnected = function (essid) + local message = "WiFi has been disconnected" + local title = "Connection lost" + local app_name = "System Notification" + local icon = icondir .. "wifi-strength-off-outline.svg" + network_notify(message, title, app_name, icon) + end + local notify_wired_disconnected = function (essid) + local message = "Ethernet has been unplugged" + local title = "Connection lost" + local app_name = "System Notification" + local icon = icondir .. "no-internet.svg" + network_notify(message, title, app_name, icon) + end + local icon = "wifi-strength-off-outline" + if network_mode == "wireless" then + icon = "wifi-strength-off-outline" + if not reconnect_startup then + update_reconnect_startup(true) + notify_wireless_disconnected() + end + elseif network_mode == "wired" then + icon = "no-internet" + if not reconnect_startup then + update_reconnect_startup(true) + notify_wired_disconnected() + end + end + network_widget.container.network_layout.label.visible = false + update_tooltip("Network unreachable") + network_widget.test.test2.spacing = dpi(0) + network_widget.container.network_layout.icon_margin.icon_layout.icon:set_image(gears.color.recolor_image(icondir .. icon .. ".svg", color.color["Grey900"])) + end + + local check_network_mode = function () + awful.spawn.easy_async_with_shell( + [=[ + wireless="]=] .. tostring(interfaces.wlan_interface) .. [=[" + wired="]=] .. tostring(interfaces.lan_interface) .. [=[" + net="/sys/class/net/" + wireless_state="down" + wired_state="down" + network_mode="" + function check_network_state(){ + if [[ "${wireless_state}" == "up" ]]; + then + network_mode="wireless" + elif [[ "${wired_state}" == "up" ]]; + then + network_mode="wired" + else + network_mode="No internet connected" + fi + } + function check_network_directory(){ + if [[ -n "${wireless}" && -d "${net}${wireless}" ]]; + then + wireless_state="$(cat "${net}${wireless}/operstate")" + fi + if [[ -n "${wired}" && -d "${net}${wired}" ]]; + then + wired_state="$(cat "${net}${wired}/operstate")" + fi + check_network_state + } + function print_network_mode(){ + check_network_directory + print "${network_mode}" + } + print_network_mode + ]=], + function (stdout) + local mode = stdout:gsub("%\n", "") + if stdout:match("No internet connected") then + update_disconnected() + elseif stdout:match("wireless") then + update_wireless() + elseif stdout:match("wired") then + update_wired() + end + end + ) + end + + local network_updater = gears.timer{ + timeout = 5, + autostart = true, + call_now = true, + callback = function () + check_network_mode() + end + } + + -- Signals + local old_wibox, old_cursor, old_bg + network_widget:connect_signal( + "mouse::enter", + function () + old_bg = network_widget.bg + network_widget.bg = color.color["Red200"] .. "dd" + local w = mouse.current_wibox + if w then + old_cursor, old_wibox = w.cursor, w + w.cursor = "hand1" + end + end + ) + + network_widget:connect_signal( + "button::press", + function () + network_widget.bg = color.color["Red200"] .. "bb" + end + ) + + network_widget:connect_signal( + "button::release", + function () + network_widget.bg = color.color["Red200"] .. "dd" + end + ) + + network_widget:connect_signal( + "mouse::leave", + function () + network_widget.bg = old_bg + if old_wibox then + old_wibox.cursor = old_cursor + old_wibox = nil + end + end + ) + + network_widget:connect_signal( + "button::press", + function () + awful.spawn("gnome-control-center wlan") + end + ) + + return network_widget +end \ No newline at end of file diff --git a/awesome/theme/crylia/widgets/taglist.lua b/awesome/theme/crylia/widgets/taglist.lua new file mode 100644 index 0000000..7de0db7 --- /dev/null +++ b/awesome/theme/crylia/widgets/taglist.lua @@ -0,0 +1,216 @@ +local wibox = require("wibox") +local awful = require("awful") +local gears = require("gears") +local dpi = require("beautiful").xresources.apply_dpi +local color = require("theme.crylia.colors") + +local list_update = function (widget, buttons, label, data, objects) + widget:reset() + + for i, object in ipairs(objects) do + + local tag_icon = wibox.widget{ + nil, + { + id = "icon", + resize = true, + widget = wibox.widget.imagebox + }, + nil, + layout = wibox.layout.align.horizontal + } + + local tag_icon_margin = wibox.widget{ + tag_icon, + forced_width = dpi(33), + margins = dpi(3), + widget = wibox.container.margin + } + + local tag_label = wibox.widget{ + text = "", + align = "center", + valign = "center", + visible = true, + font = "JetBrains Mono ExtraBold, 14", + forced_width = dpi(25), + widget = wibox.widget.textbox + } + + local tag_label_margin = wibox.widget{ + tag_label, + left = dpi(5), + right = dpi(5), + widget = wibox.container.margin + } + + local tag_widget = wibox.widget { + { + id = "widget_margin", + { + id = "container", + tag_label_margin, + --tag_icon_margin, + layout = wibox.layout.fixed.horizontal + }, + margins = dpi(0), + widget = wibox.container.margin + }, + fg = color.color["White"], + shape = function (cr, width, height) + gears.shape.rounded_rect(cr, width, height, 5) + end, + widget = wibox.widget.background + } + + tag_widget:buttons(buttons, object) + + --local text, bg_color, bg_image, icon, args = label(object, tag_label) + + tag_label:set_text(i) + + if object == awful.screen.focused().selected_tag then + tag_widget:set_bg(color.color["White"]) + tag_widget:set_fg(color.color["Grey900"]) + else + tag_widget:set_bg("#3A475C") + end + + for _, client in ipairs(object:clients()) do + if client.icon then + tag_label_margin:set_right(0) + local icon = wibox.widget{ + { + id = "icon_container", + { + id = "icon", + resize = true, + widget = wibox.widget.imagebox + }, + widget = wibox.container.place + }, + tag_icon, + forced_width = dpi(33), + margins = dpi(6), + widget = wibox.container.margin + } + icon.icon_container.icon:set_image(client.icon) + tag_widget.widget_margin.container:setup({ + icon, + layout = wibox.layout.align.horizontal + }) + else + tag_icon_margin:set_margins(0) + tag_icon:set_forced_width(0) + end + end + + local old_wibox, old_cursor, old_bg + tag_widget:connect_signal( + "mouse::enter", + function () + old_bg = tag_widget.bg + tag_widget.bg = "#3A475C" .. "dd" + local w = mouse.current_wibox + if w then + old_cursor, old_wibox = w.cursor, w + w.cursor = "hand1" + end + end + ) + + tag_widget:connect_signal( + "button::press", + function () + tag_widget.bg = "#3A475C" .. "bb" + end + ) + + tag_widget:connect_signal( + "button::release", + function () + tag_widget.bg = "#3A475C" .. "dd" + end + ) + + tag_widget:connect_signal( + "mouse::leave", + function () + tag_widget.bg = old_bg + if old_wibox then + old_wibox.cursor = old_cursor + old_wibox = nil + end + end + ) + + widget:add(tag_widget) + widget:set_spacing(dpi(6)) + end + +end + +local tag_list = function (s) + return awful.widget.taglist( + s, + awful.widget.taglist.filter.all, + gears.table.join( + 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, + function (t) + if client.focus then + client.focus:toggle_tag(t) + end + end + ), + awful.button( + { modkey }, + 3, + function (t) + if client.focus then + client.focus:toggle_tag(t) + end + end + ), + awful.button( + { }, + 4, + function (t) + awful.tag.viewnext(t.screen) + end + ), + awful.button( + { }, + 5, + function (t) + if client.focus then + awful.tag.viewprev(t.screen) + end + end + ) + ) + , + {}, + list_update, + wibox.layout.fixed.horizontal() + ) +end + +return tag_list \ No newline at end of file diff --git a/awesome/theme/crylia/widgets/tasklist.lua b/awesome/theme/crylia/widgets/tasklist.lua new file mode 100644 index 0000000..330b1a8 --- /dev/null +++ b/awesome/theme/crylia/widgets/tasklist.lua @@ -0,0 +1,171 @@ +local awful = require('awful') +local wibox = require('wibox') +local dpi = require('beautiful').xresources.apply_dpi +local gears = require('gears') +local color = require('theme.crylia.colors') +local naughty = require("naughty") + +local list_update = function (widget, buttons, label, data, objects) + widget:reset() + + for i, object in ipairs(objects) do + + local task_icon = wibox.widget{ + nil, + { + id = "icon", + resize = true, + widget = wibox.widget.imagebox + }, + nil, + layout = wibox.layout.align.horizontal + } + + local task_icon_margin = wibox.widget{ + task_icon, + forced_width = dpi(33), + margins = dpi(3), + widget = wibox.container.margin + } + + local task_title = wibox.widget{ + text = "", + align = "center", + valign = "center", + visible = true, + widget = wibox.widget.textbox + } + + local task_widget = wibox.widget{ + { + { + task_icon_margin, + task_title, + layout = wibox.layout.fixed.horizontal + }, + margins = dpi(0), + widget = wibox.container.margin + }, + bg = color.color["White"], + fg = color.color["Grey900"], + shape = function (cr, width, height) + gears.shape.rounded_rect(cr, width, height, 5) + end, + widget = wibox.widget.background + } + + local task_tool_tip = awful.tooltip{ + objects = {task_widget}, + mode = "inside", + align = "right", + delay_show = 1 + } + + task_widget:buttons(buttons, object) + + local text, bg, bg_image, icon, args = label(object, task_title) + + if object == client.focus then + if text == nil or text == '' then + task_title:set_margins(0) + else + local text_full = text:match('>(.-)<') + if text_full then + text = text_full + task_tool_tip:set_text(text_full) + task_tool_tip:add_to_object(task_widget) + else + task_tool_tip:remove_from_object(task_widget) + end + end + task_widget:set_bg(color.color["White"]) + task_widget:set_fg(color.color["Grey900"]) + task_title:set_text(text) + else + task_widget:set_bg("#3A475C") + task_title:set_text('') + end + + if icon then + task_icon.icon:set_image(icon) + else + task_icon_margin:set_margins(0) + end + + widget:add(task_widget) + widget:set_spacing(dpi(6)) + + local old_wibox, old_cursor, old_bg + task_widget:connect_signal( + "mouse::enter", + function () + old_bg = task_widget.bg + task_widget.bg = "#ffffff" .. "bb" + local w = mouse.current_wibox + if w then + old_cursor, old_wibox = w.cursor, w + w.cursor = "hand1" + end + end + ) + + task_widget:connect_signal( + "button::press", + function () + task_widget.bg = "#ffffff" .. "aa" + end + ) + + task_widget:connect_signal( + "button::release", + function () + task_widget.bg = "#ffffff" .. "bb" + end + ) + + task_widget:connect_signal( + "mouse::leave", + function () + task_widget.bg = old_bg + if old_wibox then + old_wibox.cursor = old_cursor + old_wibox = nil + end + end + ) + end + + if (widget.children and #widget.children or 0) == 0 then + awesome.emit_signal("hide_centerbar", false) + else + awesome.emit_signal("hide_centerbar", true) + end + return widget +end + +return function(s) + return awful.widget.tasklist( + s, + awful.widget.tasklist.filter.currenttags, + gears.table.join( + awful.button( + {}, + 1, + function (c) + if c == client.focus then + c.minimized = true + else + c.minimized = false + if not c.invisible() and c.first_tag then + c:emit_signal("request::activate") + c:raise() + end + end + end + ) + ), + {}, + list_update, + wibox.layout.fixed.horizontal() + ) +end \ No newline at end of file diff --git a/picom.conf b/picom.conf new file mode 100644 index 0000000..3afb4eb --- /dev/null +++ b/picom.conf @@ -0,0 +1,155 @@ +# ░█▀█░▀█▀░█▀▀░█▀█░█▄█░░░░█▀▀░█▀█░█▀█░█▀▀ +# ░█▀▀░░█░░█░░░█░█░█░█░░░░█░░░█░█░█░█░█▀▀ +# ░▀░░░▀▀▀░▀▀▀░▀▀▀░▀░▀░▀░░▀▀▀░▀▀▀░▀░▀░▀░░ +# +# X compositor configuration + +# ░█▀▀░█░█░█▀█░█▀▄░█▀█░█░█ +# ░▀▀█░█▀█░█▀█░█░█░█░█░█▄█ +# ░▀▀▀░▀░▀░▀░▀░▀▀░░▀▀▀░▀░▀ + +shadow = true; +shadow-radius = 12; +shadow-opacity = 0.65; +shadow-offset-x = -5; +shadow-offset-y = -6; + +# shadow-red = 0 +# shadow-green = 0 +# shadow-blue = 0 +shadow-color = "#000000"; + +shadow-exclude = [ + #"name = 'Notification'", + "class_g = 'Conky'", + #"class_g ?= 'Notify-osd'", + "class_g = 'Cairo-clock'", + #"class_g = 'slop'", + #"name = 'Dunst'", + #"name = 'dmenu'", + #"class_g = 'Rofi'", + "_GTK_FRAME_EXTENTS@:c", + "_NET_WM_STATE@:32a *= '_NET_WM_STATE_HIDDEN'" +]; + +# shadow-exclude-reg = "x10+0+0"; +# xinerama-shadow-crop = true; + +# ░█▀▀░█▀█░█▀▄░▀█▀░█▀█░█▀▀ +# ░█▀▀░█▀█░█░█░░█░░█░█░█░█ +# ░▀░░░▀░▀░▀▀░░▀▀▀░▀░▀░▀▀▀ + +fading = true; +fade-in-step = 0.03; +fade-out-step = 0.03; +fade-delta = 4; + +fade-exclude = [ + "name *= 'polybar'" +]; + +no-fading-openclose = false; +no-fading-destroyed-argb = true; + +# ░█▀█░█▀█░█▀█░█▀▀░▀█▀░▀█▀░█░█ +# ░█░█░█▀▀░█▀█░█░░░░█░░░█░░░█░ +# ░▀▀▀░▀░░░▀░▀░▀▀▀░▀▀▀░░▀░░░▀░ + +inactive-opacity = 1; +frame-opacity = 1; +inactive-opacity-override = false; +active-opacity = 1.0; +inactive-dim = 0.0; + +focus-exclude = [ + "class_g = 'Cairo-clock'", + "class_g ?= 'rofi'", + "class_g ?= 'slop'", + "class_g ?= 'Steam'" +]; + +# inactive-dim-fixed = 1.0; + +opacity-rule = [ + "80:class_g = 'URxvt'", + "80:class_g = 'UXTerm'", + "80:class_g = 'XTerm'" +] + +# ░█▀▄░█░░░█░█░█▀▄░█▀▄░▀█▀░█▀█░█▀▀ +# ░█▀▄░█░░░█░█░█▀▄░█▀▄░░█░░█░█░█░█ +# ░▀▀░░▀▀▀░▀▀▀░▀░▀░▀░▀░▀▀▀░▀░▀░▀▀▀ + +blur: { + method = "kawase"; + strength = 5.0; + deviation = 1.0; + kernel = "11x11gaussian"; +} + +blur-background = false; +blur-background-frame = true; +blur-background-fixed = true; +# blur-kern = "3x3box"; + +blur-background-exclude = [ + #"name *= 'polybar'", + "_GTK_FRAME_EXTENTS@:c" +]; + +# ░█▀▀░█▀▀░█▀█░█▀▀░█▀▄░█▀█░█░░░░░█▀▀░█▀▀░▀█▀░▀█▀░▀█▀░█▀█░█▀▀░█▀▀ +# ░█░█░█▀▀░█░█░█▀▀░█▀▄░█▀█░█░░░░░▀▀█░█▀▀░░█░░░█░░░█░░█░█░█░█░▀▀█ +# ░▀▀▀░▀▀▀░▀░▀░▀▀▀░▀░▀░▀░▀░▀▀▀░░░▀▀▀░▀▀▀░░▀░░░▀░░▀▀▀░▀░▀░▀▀▀░▀▀▀ + +corner-radius = 10.0 +rounded-corners-exclude = [ + "name *= 'Awesome drawin'", + "name *= 'polybar'", + "name *= 'rofi'", + "name *= 'Dunst'", + "name *= 'dmenu'", + "_GTK_FRAME_EXTENTS@:c" +] +round-borders = 1 +daemon = false; +backend = "glx"; +vsync = true; +dbus = false; +mark-wmwin-focused = true; +mark-ovredir-focused = true; +detect-rounded-corners = true; +detect-client-opacity = true; +refresh-rate = 0; +# use-ewmh-active-win = true; +# unredir-if-possible = false; +# unredir-if-possible-delay = 0; + +unredir-if-possible-exclude = []; + +detect-transient = true; +detect-client-leader = true; +resize-damage = 1; + +invert-color-include = []; + +glx-no-stencil = true; +# glx-no-rebind-pixmap = false; +use-damage = true; +# xrender-sync-fence = true; + +# glx-fshader-win = ""; +# force-win-blend = false; + +# no-ewmh-fullscreen = false; +# max-brightness = 1.0; + +transparent-clipping = false; + +show-all-xerrors = true; + +wintypes: { + tooltip = { fade = true; shadow = false; focus = false; }; + normal = { shadow = true; }; + dock = { shadow = false; }; + desktop = { shadow = true; blur-background = false; }; +}; diff --git a/rofi/config.rasi b/rofi/config.rasi new file mode 100644 index 0000000..d5bba3d --- /dev/null +++ b/rofi/config.rasi @@ -0,0 +1,90 @@ +configuration { + modi: "run,drun,window"; + width: 30; + font: "UbuntuMono Nerd Font Regular Mono 12"; + terminal: "alacritty"; + line-margin: 0; + line-padding: 0; + separator-style: "solid"; + hide-scrollbar: true; + display-drun: "Apps"; + display-run: "Run"; + display-window: "Windows"; + show-icons: true; +} +/* +background = #1d212a +foreground = #a6bcfa +yellow = #fee38f +red = #fc8995 +green = #8ae19c +blue = #a6bcfa +purple = #de95d5 +strongpurple = #EAA3FC +cyan = #81d4ef +pink = #F3D1F4 +bluegreen = #A8E6CF +*/ + +* { + bg: #1d212a; + fg: #a6bcfa; + background-color: @bg; + text-color: @fg; + separatorcolor: #fc8995; +} + +window { + padding: 10px; + border-radius: 5px; + border: 1px; + border-color: #a6bcfa; +} + +prompt, entry { + text-color: #fc8995; + padding: 0px; +} + +entry { + border-radius: 4px; + margin: 0 0 10px 10px; +} + +mainbox { + background-color: #8ae19c; +} + +listview { + padding: 10px 0 0 0; +} + +prompt { + background-color: #fc8995; + text-color: @bg; + margin: 0 0 10px 0; + border-radius: 4px; + padding: 1px 4px 1px 4px; +} + +element { + border-radius: 4px; + text-color: #a6bcfa; + padding: 4px; +} + +element selected{ + background-color: @fg; + text-color: @bg; +} + +button { + padding: 10px; +} + +button selected { + background-color: #fff; + text-color: @bg; + padding: 20px; +} + diff --git a/rofi/crylia.rasi b/rofi/crylia.rasi new file mode 100644 index 0000000..523b337 --- /dev/null +++ b/rofi/crylia.rasi @@ -0,0 +1,3 @@ +{ + background-color: #fff; +} \ No newline at end of file diff --git a/rofi/run_rofi.sh b/rofi/run_rofi.sh new file mode 100755 index 0000000..674f2a9 --- /dev/null +++ b/rofi/run_rofi.sh @@ -0,0 +1,14 @@ +#!/usr/bin/env bash +options="one +two +three" +theme=${1:-$HOME/.config/rofi/config.rasi} +selection=$(echo -e "${options}" | rofi -dmenu -config $theme) +case "${selection}" in + "one") + notify-send "run_rofi.sh" "one";; + "two") + notify-send "run_rofi.sh" "two";; + "three") + notify-send "run_rofi.sh" "three";; +esac \ No newline at end of file