diff --git a/.config/awesome/config.lua b/.config/awesome/config.lua index 93fc2d9..a9a3d6f 100644 --- a/.config/awesome/config.lua +++ b/.config/awesome/config.lua @@ -13,4 +13,23 @@ M.apps = { M.apps.start_editor = M.apps.terminal .. "-e" .. M.apps.editor +M.widget = {} + +M.widget.weather = { + api_key = "", + coordinates = { lat = "", lon = "" }, +} + +M.widget.github = { + username = "punkfairie", +} + +M.widget.mic = { + name = "alsa_input...", +} + +M.widget.disk = { + name = "/dev/sdb3", +} + return M diff --git a/.config/awesome/helpers/ui.lua b/.config/awesome/helpers/ui.lua index 52fe3e8..7bd82cf 100644 --- a/.config/awesome/helpers/ui.lua +++ b/.config/awesome/helpers/ui.lua @@ -1,5 +1,7 @@ local gshape = require("gears.shape") +local capi = { mouse = mouse } + local _ui = {} function _ui.rrect(radius) @@ -8,4 +10,24 @@ function _ui.rrect(radius) end end +function _ui.add_hover_cursor(w, hover_cursor) + local original_cursor = "left_ptr" + + w:connect_signal("mouse::enter", function() + local widget = capi.mouse.current_wibox + + if widget then + widget.cursor = hover_cursor + end + end) + + w:connect_signal("mouse::leave", function() + local widget = capi.mouse.current_wibox + + if widget then + widget.cursor = original_cursor + end + end) +end + return _ui diff --git a/.config/awesome/lib/catppuccin b/.config/awesome/lib/catppuccin new file mode 160000 index 0000000..1af8166 --- /dev/null +++ b/.config/awesome/lib/catppuccin @@ -0,0 +1 @@ +Subproject commit 1af8166d2afdf0622d0a3d38d7b40d3958ab138d diff --git a/.config/awesome/lib/init.lua b/.config/awesome/lib/init.lua new file mode 100644 index 0000000..e69de29 diff --git a/.config/awesome/lib/rubato b/.config/awesome/lib/rubato new file mode 160000 index 0000000..8a3737b --- /dev/null +++ b/.config/awesome/lib/rubato @@ -0,0 +1 @@ +Subproject commit 8a3737b7af4c9dc40c53d700118333d36541d4d3 diff --git a/.config/awesome/main/tags.lua b/.config/awesome/main/tags.lua index 28ae2bc..98ba649 100644 --- a/.config/awesome/main/tags.lua +++ b/.config/awesome/main/tags.lua @@ -1,5 +1,5 @@ local awful = require("awful") screen.connect_signal("request::desktop_decoration", function(s) - awful.tag({ "", "", "", "", "", "" }, s, awful.layout.layouts[1]) + awful.tag({ "", "", "", "", "", "󰍹" }, s, awful.layout.layouts[1]) end) diff --git a/.config/awesome/rc.lua b/.config/awesome/rc.lua index 55b6fb8..5ea8248 100644 --- a/.config/awesome/rc.lua +++ b/.config/awesome/rc.lua @@ -7,7 +7,7 @@ local beautiful = require("beautiful") require("awful.autofocus") -- Theme -- -beautiful.init(gears.filesystem.get_configuration_dir() .. "themes/catppuccin/theme.lua") +beautiful.init(gears.filesystem.get_configuration_dir() .. "themes/catppuccin-macchiato/theme.lua") -- Main/Configuration -- require("main") @@ -23,3 +23,4 @@ require("ui") -- Autostart -- awful.spawn.with_shell("picom --experimental-backends") +awful.spawn("copyq") diff --git a/.config/awesome/signals/cpu.lua b/.config/awesome/signals/cpu.lua new file mode 100644 index 0000000..c42a69f --- /dev/null +++ b/.config/awesome/signals/cpu.lua @@ -0,0 +1,22 @@ +local awful = require("awful") +local gears = require("gears") + +local function get_cpu() + local script = [[ + echo $[100-$(vmstat 1 2|tail -1|awk '{print $15}')] + ]] + + awful.spawn.easy_async_with_shell(script, function(cpu_perc) + cpu_perc = cpu_perc:match("%d+") + awesome.emit_signal("signal::cpu", cpu_perc) + end) +end + +gears.timer({ + timeout = 1, + call_now = true, + autostart = true, + callback = function() + get_cpu() + end, +}) diff --git a/.config/awesome/signals/init.lua b/.config/awesome/signals/init.lua new file mode 100644 index 0000000..075a476 --- /dev/null +++ b/.config/awesome/signals/init.lua @@ -0,0 +1,4 @@ +require("signals.volume") +require("signals.mic") +require("signals.cpu") +require("signals.mem") diff --git a/.config/awesome/signals/mem.lua b/.config/awesome/signals/mem.lua new file mode 100644 index 0000000..352bc38 --- /dev/null +++ b/.config/awesome/signals/mem.lua @@ -0,0 +1,22 @@ +local awful = require("awful") +local gears = require("gears") + +local function get_mem() + local script = [[ + free | grep Mem | awk '{print $3/$2 * 100.0}' | cut -f 1 -d "." + ]] + + awful.spawn.easy_async_with_shell(script, function(mem_perc) + mem_perc = mem_perc:match("%d+") + awesome.emit_signal("signal::mem", mem_perc) + end) +end + +gears.timer({ + timeout = 4, + call_now = true, + autostart = true, + callback = function() + get_mem() + end, +}) diff --git a/.config/awesome/signals/mic.lua b/.config/awesome/signals/mic.lua new file mode 100644 index 0000000..794d16d --- /dev/null +++ b/.config/awesome/signals/mic.lua @@ -0,0 +1,28 @@ +local awful = require("awful") + +local microphone = require("config").widget.mic.name + +local vol_sc = "pamixer --source " .. microphone .. " --get-volume" +local mute_sc = "pamixer --source " .. microphone .. " --get-mute" + +local function get_vol() + awful.spawn.easy_async_with_shell(vol_sc, function(vol) + awful.spawn.easy_async_with_shell(mute_sc, function(mute) + local muted + + if mute:match("false") then + muted = false + else + muted = true + end + + awesome.emit_signal("signal::mic", vol, muted) + end) + end) +end + +awesome.connect_signal("widget::update_mic", function() + get_vol() +end) + +get_vol() diff --git a/.config/awesome/signals/volume.lua b/.config/awesome/signals/volume.lua new file mode 100644 index 0000000..76305bc --- /dev/null +++ b/.config/awesome/signals/volume.lua @@ -0,0 +1,26 @@ +local awful = require("awful") + +local vol_sc = "pamixer --get-volume" +local mute_sc = "pamixer --get-mute" + +local function get_vol() + awful.spawn.easy_async_with_shell(vol_sc, function(vol) + awful.spawn.easy_async_with_shell(mute_sc, function(mute) + local muted + + if mute:match("false") then + muted = false + else + muted = true + end + + awesome.emit_signal("signal::volume", vol, muted) + end) + end) +end + +awesome.connect_signal("widget::update_vol", function() + get_vol() +end) + +get_vol() diff --git a/.config/awesome/themes/catppuccin-macchiato/theme.lua b/.config/awesome/themes/catppuccin-macchiato/theme.lua index 7402954..07f4305 100644 --- a/.config/awesome/themes/catppuccin-macchiato/theme.lua +++ b/.config/awesome/themes/catppuccin-macchiato/theme.lua @@ -1,4 +1,4 @@ -local palette = require("catppuccin.mocha") +local palette = require("lib.catppuccin.catppuccin.macchiato") local filesystem = require("gears.filesystem") local dpi = require("beautiful.xresources").apply_dpi local theme_assets = require("beautiful.theme_assets") @@ -11,8 +11,42 @@ local theme = {} -- Transparent Color theme.transparent = "#00000000" +-- Theme colors +theme.color = { + base = palette.base.hex, + mantle = palette.mantle.hex, + crust = palette.crust.hex, + + surface0 = palette.surface0.hex, + surface1 = palette.surface1.hex, + surface2 = palette.surface2.hex, + + text = palette.text.hex, + subtext0 = palette.subtext0.hex, + subtext1 = palette.subtext1.hex, + + overlay0 = palette.overlay0.hex, + overlay1 = palette.overlay1.hex, + overlay2 = palette.overlay2.hex, + + rosewater = palette.rosewater.hex, + flamingo = palette.flamingo.hex, + pink = palette.pink.hex, + mauve = palette.mauve.hex, + red = palette.red.hex, + maroon = palette.maroon.hex, + peach = palette.peach.hex, + yellow = palette.yellow.hex, + green = palette.green.hex, + teal = palette.teal.hex, + sky = palette.sky.hex, + sapphire = palette.sapphire.hex, + blue = palette.blue.hex, + lavender = palette.lavender.hex, +} + -- Font -theme.font_name = "FiraCode Nerd Font " +theme.font_name = "FiraCode Nerd Font Propo" .. " " theme.font = theme.font_name .. "10" -- Assets diff --git a/.config/awesome/ui/init.lua b/.config/awesome/ui/init.lua index 0d26a2d..f0fb93c 100644 --- a/.config/awesome/ui/init.lua +++ b/.config/awesome/ui/init.lua @@ -2,5 +2,5 @@ require("ui.menu") -- ui.popups -- ui.notif-panel -- ui.info-panel --- ui.top-panel +require("ui.top-panel") -- ui.titlebar diff --git a/.config/awesome/ui/menu.lua b/.config/awesome/ui/menu.lua index e7afeaf..4393d4f 100644 --- a/.config/awesome/ui/menu.lua +++ b/.config/awesome/ui/menu.lua @@ -1,4 +1,3 @@ -local apps = require("main.apps") local gears = require("gears") local awful = require("awful") local hotkeys_popup = require("awful.hotkeys_popup") @@ -6,6 +5,7 @@ local beautiful = require("beautiful") local wibox = require("wibox") local helpers = require("helpers") +local apps = require("config").apps local menu = {} diff --git a/.config/awesome/ui/top-panel/init.lua b/.config/awesome/ui/top-panel/init.lua new file mode 100644 index 0000000..e54535b --- /dev/null +++ b/.config/awesome/ui/top-panel/init.lua @@ -0,0 +1,112 @@ +local beautiful = require("beautiful") +local wibox = require("wibox") +local awful = require("awful") + +local widgets = require("ui.top-panel.widgets") + +local dpi = beautiful.xresources.apply_dpi + +local function create_icon(i, c) + local widget = { + { + font = beautiful.font_name .. "12.5", + text = " " .. i, + widget = wibox.widget.textbox, + }, + fg = c, + widget = wibox.container.background, + } + + return widget +end + +-- Create icons with color. +local calendar_icon = create_icon("", beautiful.color.teal) +local clock_icon = create_icon(" ", beautiful.color.pink) + +screen.connect_signal("request::desktop_decoration", function(s) + local clockdate = wibox.widget({ + layout = wibox.layout.fixed.horizontal, + calendar_icon, + widgets.date, + clock_icon, + widgets.clock, + }) + + local tasklist = wibox.widget({ + { + layout = wibox.layout.fixed.horizontal, + s.tasklist, + }, + forced_width = 300, + layout = wibox.layout.fixed.horizontal, + }) + + -- Create the wibox. + s.wibox = awful.wibar({ + position = "top", + screen = s, + margins = { + top = dpi(10), + left = dpi(20), + right = dpi(20), + }, + border_width = dpi(2), + border_color = beautiful.color.surface0, + + widget = { + layout = wibox.layout.align.horizontal, + expand = "none", + { + { -- left widgets + layout = wibox.layout.fixed.horizontal, + widgets.menu, + widgets.seperator, + s.taglist, + widgets.seperator, + tasklist, + }, + left = 5, + right = 0, + top = 2, + bottom = 2, + layout = wibox.container.margin, + }, + { + { + layout = wibox.layout.align.horizontal, + clockdate, + }, + left = 0, + right = 0, + top = 1, + bottom = 1, + layout = wibox.container.margin, + }, + { -- right widgets + { + layout = wibox.layout.fixed.horizontal, + widgets.systray, + widgets.seperator, + widgets.audio, + widgets.mem, + widgets.cpu, + widgets.disk, + widgets.layoutbox, + }, + left = 0, + right = 2, + top = 1, + bottom = 1, + layout = wibox.container.margin, + }, + }, + }) + + -- s.border2 = awful.wibar({ + -- position = "top", + -- screen = s, + -- bg = beautiful.color.surface0, + -- height = dpi(2), + -- }) +end) diff --git a/.config/awesome/ui/top-panel/widgets/audio.lua b/.config/awesome/ui/top-panel/widgets/audio.lua new file mode 100644 index 0000000..0a75298 --- /dev/null +++ b/.config/awesome/ui/top-panel/widgets/audio.lua @@ -0,0 +1,81 @@ +local wibox = require("wibox") +local beautiful = require("beautiful") +local gears = require("gears") +local awful = require("awful") + +local helpers = require("helpers") + +local dpi = beautiful.xresources.apply_dpi + +-- Icon -- +local icon = wibox.widget.textbox() +icon.font = beautiful.font_name .. "12.5" +icon.align = "center" +icon.markup = "󰕾" + +-- Uptime -- +local audio = wibox.widget.textbox() +audio.font = beautiful.font_name .. "10" +audio.align = "center" + +local function get_val() + awesome.connect_signal("signal::volume", function(vol, muted) + if muted then + audio.markup = "muted" + icon.markup = "󰖁" + else + audio.markup = tonumber(vol) .. "%" + icon.markup = "󰕾" + end + end) +end + +get_val() + +local full = wibox.widget({ + { + { + icon, + audio, + spacing = dpi(8), + layout = wibox.layout.fixed.horizontal, + }, + left = dpi(5), + right = 8, + layout = wibox.container.margin, + }, + forced_width = 73, + layout = wibox.layout.fixed.horizontal, +}) + +full:buttons(gears.table.join(awful.button({}, 1, function() + awesome.emit_signal("action::toggle") +end))) + +local update_volume = function() + awful.spawn.easy_async_with_shell("pamixer --get-volume", function(stdout) + audio.markup = tonumber(stdout:match("%d+")) .. "%" + + if tonumber(stdout:match("%d+")) < 10 then + icon.markup = "󰕿" + elseif tonumber(stdout:match("%d+")) < 50 then + icon.markup = "󰖀" + elseif tonumber(stdout:match("%d+")) < 100 then + icon.markup = "󰕾" + end + end) +end + +update_volume() + +awesome.connect_signal("widget::update_vol", function() + update_volume() +end) + +awesome.connect_signal("widget::update_vol_pulse", function() + update_volume() +end) + +helpers.ui.add_hover_cursor(full, "hand2") + +return full diff --git a/.config/awesome/ui/top-panel/widgets/clock.lua b/.config/awesome/ui/top-panel/widgets/clock.lua new file mode 100644 index 0000000..c13f772 --- /dev/null +++ b/.config/awesome/ui/top-panel/widgets/clock.lua @@ -0,0 +1,17 @@ +local wibox = require("wibox") +local beautiful = require("beautiful") +local gears = require("gears") + +local clock = wibox.widget.textbox() +clock.font = beautiful.font_name .. "11" + +gears.timer({ + timeout = 60, + autostart = true, + call_now = true, + callback = function() + clock.markup = os.date("%I:%M %p") + end, +}) + +return clock diff --git a/.config/awesome/ui/top-panel/widgets/cpu.lua b/.config/awesome/ui/top-panel/widgets/cpu.lua new file mode 100644 index 0000000..3b68cfd --- /dev/null +++ b/.config/awesome/ui/top-panel/widgets/cpu.lua @@ -0,0 +1,41 @@ +local wibox = require("wibox") +local beautiful = require("beautiful") + +local dpi = beautiful.xresources.apply_dpi + +-- Icon -- +local icon = wibox.widget.textbox() +icon.font = beautiful.font_name .. "12.5" +icon.align = "center" +icon.markup = "" + +-- Uptime -- +local cpu = wibox.widget.textbox() +cpu.font = beautiful.font_name .. "10" +cpu.align = "center" + +local function get_val() + awesome.connect_signal("signal::cpu", function(cpu_perc) + cpu.markup = tonumber(cpu_perc) .. "%" + end) +end + +get_val() + +local full = wibox.widget({ + { + { + icon, + cpu, + spacing = dpi(8), + layout = wibox.layout.fixed.horizontal, + }, + left = 1, + right = 0, + layout = wibox.container.margin, + }, + forced_width = 73, + layout = wibox.layout.fixed.horizontal, +}) + +return full diff --git a/.config/awesome/ui/top-panel/widgets/date.lua b/.config/awesome/ui/top-panel/widgets/date.lua new file mode 100644 index 0000000..94c075d --- /dev/null +++ b/.config/awesome/ui/top-panel/widgets/date.lua @@ -0,0 +1,17 @@ +local wibox = require("wibox") +local beautiful = require("beautiful") +local gears = require("gears") + +local date = wibox.widget.textbox() +date.font = beautiful.font_name .. "11" + +gears.timer({ + timeout = 60, + autostart = true, + call_now = true, + callback = function() + date.markup = os.date(" %a %b %d") + end, +}) + +return date diff --git a/.config/awesome/ui/top-panel/widgets/disk.lua b/.config/awesome/ui/top-panel/widgets/disk.lua new file mode 100644 index 0000000..021c69b --- /dev/null +++ b/.config/awesome/ui/top-panel/widgets/disk.lua @@ -0,0 +1,37 @@ +local wibox = require("wibox") +local beautiful = require("beautiful") + +local dpi = beautiful.xresources.apply_dpi + +-- Icon -- +local icon = wibox.widget.textbox() +icon.font = beautiful.font_name .. "12.5" +icon.align = "center" +icon.markup = "" + +-- Uptime -- +local disk = wibox.widget.textbox() +disk.font = beautiful.font_name .. "10" +disk.align = "center" + +local function get_val() + awesome.connect_signal("signal::disk", function(disk_perc) + disk.markup = tonumber(disk_perc) .. "%" + end) +end + +get_val() + +local full = wibox.widget({ + { + icon, + disk, + spacing = dpi(8), + layout = wibox.layout.fixed.horizontal, + }, + left = 1, + right = 8, + layout = wibox.container.margin, +}) + +return full diff --git a/.config/awesome/ui/top-panel/widgets/init.lua b/.config/awesome/ui/top-panel/widgets/init.lua new file mode 100644 index 0000000..c3486a9 --- /dev/null +++ b/.config/awesome/ui/top-panel/widgets/init.lua @@ -0,0 +1,16 @@ +return { + audio = require("ui.top-panel.widgets.audio"), + clock = require("ui.top-panel.widgets.clock"), + cpu = require("ui.top-panel.widgets.cpu"), + date = require("ui.top-panel.widgets.date"), + disk = require("ui.top-panel.widgets.disk"), + layoutbox = require("ui.top-panel.widgets.layoutbox"), + mem = require("ui.top-panel.widgets.mem"), + menu = require("ui.top-panel.widgets.menu"), + power = require("ui.top-panel.widgets.power"), + promptbox = require("ui.top-panel.widgets.promptbox"), + seperator = require("ui.top-panel.widgets.seperator"), + systray = require("ui.top-panel.widgets.systray"), + taglist = require("ui.top-panel.widgets.taglist"), + tasklist = require("ui.top-panel.widgets.tasklist"), +} diff --git a/.config/awesome/ui/top-panel/widgets/launcher.lua b/.config/awesome/ui/top-panel/widgets/launcher.lua new file mode 100644 index 0000000..d1b4e73 --- /dev/null +++ b/.config/awesome/ui/top-panel/widgets/launcher.lua @@ -0,0 +1,8 @@ +local awful = require("awful") +local beautiful = require("beautiful") + +local mainmenu = require("ui.menu").mainmenu + +local launcher = awful.widget.launcher({ image = beautiful.awesome_icon, menu = mainmenu }) + +return launcher diff --git a/.config/awesome/ui/top-panel/widgets/layoutbox.lua b/.config/awesome/ui/top-panel/widgets/layoutbox.lua new file mode 100644 index 0000000..e42078c --- /dev/null +++ b/.config/awesome/ui/top-panel/widgets/layoutbox.lua @@ -0,0 +1,23 @@ +local awful = require("awful") + +local layoutbox = awful.widget.layoutbox({ + buttons = { + awful.button({}, 1, function() + awful.layout.inc(1) + end), + + awful.button({}, 3, function() + awful.layout.inc(-1) + end), + + awful.button({}, 4, function() + awful.layout.inc(-1) + end), + + awful.button({}, 5, function() + awful.layout.inc(1) + end), + }, +}) + +return layoutbox diff --git a/.config/awesome/ui/top-panel/widgets/mem.lua b/.config/awesome/ui/top-panel/widgets/mem.lua new file mode 100644 index 0000000..6f01ee1 --- /dev/null +++ b/.config/awesome/ui/top-panel/widgets/mem.lua @@ -0,0 +1,41 @@ +local wibox = require("wibox") +local beautiful = require("beautiful") + +local dpi = beautiful.xresources.apply_dpi + +-- Icon -- +local icon = wibox.widget.textbox() +icon.font = beautiful.font_name .. "12.5" +icon.align = "center" +icon.markup = "󰍛" + +-- Uptime -- +local mem = wibox.widget.textbox() +mem.font = beautiful.font_name .. "10" +mem.align = "center" + +local function get_val() + awesome.connect_signal("signal::mem", function(mem_perc) + mem.markup = tonumber(mem_perc) .. "%" + end) +end + +get_val() + +local full = wibox.widget({ + { + { + icon, + mem, + spacing = dpi(8), + layout = wibox.layout.fixed.horizontal, + }, + left = 1, + right = 0, + layout = wibox.container.margin, + }, + forced_width = 73, + layout = wibox.layout.fixed.horizontal, +}) + +return full diff --git a/.config/awesome/ui/top-panel/widgets/menu.lua b/.config/awesome/ui/top-panel/widgets/menu.lua new file mode 100644 index 0000000..0d635f2 --- /dev/null +++ b/.config/awesome/ui/top-panel/widgets/menu.lua @@ -0,0 +1,24 @@ +local wibox = require("wibox") +local beautiful = require("beautiful") +local gears = require("gears") +local awful = require("awful") + +local helpers = require("helpers") + +local menu = wibox.widget({ + { + font = beautiful.font_name .. "16", + markup = "󰋒", + widget = wibox.widget.textbox(), + }, + bottom = 2, + widget = wibox.container.margin, +}) + +helpers.ui.add_hover_cursor(menu, "hand2") + +menu:buttons(gears.table.join(awful.button({}, 1, function() + awesome.emit_signal("sidebar::toggle") +end))) + +return menu diff --git a/.config/awesome/ui/top-panel/widgets/power.lua b/.config/awesome/ui/top-panel/widgets/power.lua new file mode 100644 index 0000000..869f440 --- /dev/null +++ b/.config/awesome/ui/top-panel/widgets/power.lua @@ -0,0 +1,14 @@ +local wibox = require("wibox") +local beautiful = require("beautiful") +local gears = require("gears") +local awful = require("awful") + +local menu = wibox.widget.textbox() +menu.font = beautiful.font_name .. "16" +menu.markup = "" + +menu:buttons(gears.table.join(awful.button({}, 1, function() + awesome.emit_signal("module::exit_screen:show") +end))) + +return menu diff --git a/.config/awesome/ui/top-panel/widgets/promptbox.lua b/.config/awesome/ui/top-panel/widgets/promptbox.lua new file mode 100644 index 0000000..06ce84a --- /dev/null +++ b/.config/awesome/ui/top-panel/widgets/promptbox.lua @@ -0,0 +1,5 @@ +local awful = require("awful") + +local promptbox = awful.widget.prompt() + +return promptbox diff --git a/.config/awesome/ui/top-panel/widgets/seperator.lua b/.config/awesome/ui/top-panel/widgets/seperator.lua new file mode 100644 index 0000000..50635eb --- /dev/null +++ b/.config/awesome/ui/top-panel/widgets/seperator.lua @@ -0,0 +1,8 @@ +local wibox = require("wibox") +local beautiful = require("beautiful") + +local seperator = wibox.widget.textbox() +seperator.font = beautiful.font_name .. "14" +seperator.markup = "|" + +return seperator diff --git a/.config/awesome/ui/top-panel/widgets/systray.lua b/.config/awesome/ui/top-panel/widgets/systray.lua new file mode 100644 index 0000000..1ec2d84 --- /dev/null +++ b/.config/awesome/ui/top-panel/widgets/systray.lua @@ -0,0 +1,67 @@ +local beautiful = require("beautiful") +local wibox = require("wibox") +local rubato = require("lib.rubato") +local gears = require("gears") +local awful = require("awful") + +local dpi = beautiful.xresources.apply_dpi + +local arrow = wibox.widget.textbox() +arrow.font = beautiful.font_name .. "13" +arrow.markup = "»" + +local systray = wibox.widget.systray() +systray.visible = true +beautiful.systray_icon_spacing = dpi(4) + +local widget = wibox.widget({ + widget = wibox.container.constraint, + strategy = "max", + width = dpi(0), + { + widget = wibox.container.margin, + margins = dpi(2), + systray, + }, +}) + +widget.visible = true + +local slide = rubato.timed({ + duration = 0.9, + awestore_compat = true, + subscribed = function(pos) + widget.width = pos + end, +}) + +local value = true + +arrow.toggle = function() + if value == false then + arrow.markup = "»" + value = true + slide:set(2) + else + arrow.markup = "«" + slide:set(500) + value = false + end +end + +awesome.connect_signal("arrow::toggle", function() + arrow.toggle() +end) + +arrow:buttons(gears.table.join(awful.button({}, 1, function() + awesome.emit_signal("arrow::toggle") +end))) + +local sys = wibox.widget({ + layout = wibox.layout.fixed.horizontal, + arrow, + widget, + spacing = dpi(2), +}) + +return sys diff --git a/.config/awesome/ui/top-panel/widgets/taglist.lua b/.config/awesome/ui/top-panel/widgets/taglist.lua new file mode 100644 index 0000000..5c6e87e --- /dev/null +++ b/.config/awesome/ui/top-panel/widgets/taglist.lua @@ -0,0 +1,111 @@ +local beautiful = require("beautiful") +local awful = require("awful") +local wibox = require("wibox") +local bling = require("lib.bling") + +local keys = require("config").keys + +local dpi = beautiful.xresources.apply_dpi + +awful.screen.connect_for_each_screen(function(s) + s.taglist = awful.widget.taglist({ + screen = s, + filter = awful.widget.taglist.filter.all, + widget_template = { + { + { + { + id = "text_role", + widget = wibox.widget.textbox, + }, + layout = wibox.layout.fixed.horizontal, + }, + left = 4, + right = 4, + widget = wibox.container.margin, + }, + id = "background_role", + widget = wibox.container.background, + + -- Hover colors & an index label. + create_callback = function(self, c3, index) + self:get_children_by_id("text_role")[1].markup = " " .. index .. " " + self:connect_signal("mouse::enter", function() + -- BLING: Only show widget when there are clients in the tag. + if #c3:clients() > 0 then + -- BLING: Update the widget with the new tag. + awesome.emit_signal("bling::tag_preview::update", c3) + -- BLING: Show the widget. + awesome.emit_signal("bling::tag_preview::visibility", s, true) + end + end) + + self:connect_signal("mouse::leave", function() + -- BLING: Turn the widget off. + awesome.emit_signal("bling::tag_preview::visibility", s, false) + + if self.has_backup then + self.bg = self.backup + end + end) + end, + + update_callback = function(self, _, index) + self:get_children_by_id("text_role")[1].markup = " " .. index .. " " + end, + }, + + buttons = { + awful.button({}, 1, function(t) + t:view_only() + end), + + awful.button({ keys.mod }, 1, function(t) + if client.focus then + client.focus:move_to_tag(t) + end + end), + + awful.button({}, 3, awful.tag.viewtoggle), + + awful.button({ keys.mod }, 3, function(t) + if client.focus then + client.focus:toggle_tag(t) + end + end), + + awful.button({}, 4, function(t) + awful.tag.viewprev(t.screen) + end), + + awful.button({}, 5, function(t) + awful.tag.viewnext(t.screen) + end), + }, + }) + + bling.widget.tag_preview.enable({ + show_client_content = true, + x = 0, -- x-coord of popup + y = 0, -- y-coord of popup + scale = 0.2, -- scale of preview compared to screen + honor_padding = true, -- honor padding when creating widget size + honor_workarea = true, --honor work area when creating widget size + + placement_fn = function(c) -- place widget using awful.placement + awful.placement.top_left(c, { + margins = { + top = 31, + left = 0, + }, + }) + end, + + background_widget = wibox.widget({ -- set bg image for the widget + image = beautiful.wallpaper, + horizontal_fit_policy = "fit", + vertical_fit_policy = "fit", + widget = wibox.widget.imagebox, + }), + }) +end) diff --git a/.config/awesome/ui/top-panel/widgets/tasklist.lua b/.config/awesome/ui/top-panel/widgets/tasklist.lua new file mode 100644 index 0000000..fb2aaae --- /dev/null +++ b/.config/awesome/ui/top-panel/widgets/tasklist.lua @@ -0,0 +1,8 @@ +local awful = require("awful") + +awful.screen.connect_for_each_screen(function(s) + s.tasklist = awful.widget.tasklist({ + screen = s, + filter = awful.widget.tasklist.filter.focused, + }) +end) diff --git a/.gitignore b/.gitignore index 11890b6..9d95b1b 100644 --- a/.gitignore +++ b/.gitignore @@ -50,6 +50,7 @@ Videos/ *.tmp # Automatically appended -.mozilla/ .config/dconf/ .config/fish/fish_variables +.local/ +.config/autostart/ diff --git a/.gitmodules b/.gitmodules index ba282ec..f2afae7 100644 --- a/.gitmodules +++ b/.gitmodules @@ -25,3 +25,12 @@ [submodule "/home/marley/.themes/lazygit/catppuccin"] path = /home/marley/.themes/lazygit/catppuccin url = git@github.com:catppuccin/lazygit.git +[submodule "/home/marley/.themes/ventoy/catppuccin"] + path = /home/marley/.themes/ventoy/catppuccin + url = git@github.com:Dooez/ventoy-catppuccin.git +[submodule ".config/awesome/lib/rubato"] + path = .config/awesome/lib/rubato + url = git@github.com:andOrlando/rubato.git +[submodule ".config/awesome/lib/catppuccin"] + path = .config/awesome/lib/catppuccin + url = git@github.com:catppuccin/lua.git diff --git a/.themes/ventoy/catppuccin b/.themes/ventoy/catppuccin new file mode 160000 index 0000000..5410456 --- /dev/null +++ b/.themes/ventoy/catppuccin @@ -0,0 +1 @@ +Subproject commit 5410456039771ae5cfe1464688a8eb2947a71cda