From bcb39f3a7016f5f15696390210721dc7608b9617 Mon Sep 17 00:00:00 2001
From: Jon Santmyer <jon@jonsantmyer.com>
Date: Wed, 27 Sep 2023 20:04:34 -0400
Subject: awesome: redo topbar.

reworking systems org
---
 programs/dotfiles/awesome/calendar.lua         | 115 -------------------------
 programs/dotfiles/awesome/dmenu.lua            |  12 +++
 programs/dotfiles/awesome/rc.lua               |  14 +--
 programs/dotfiles/awesome/theme.lua            |  10 +--
 programs/dotfiles/awesome/volume.lua           |  60 -------------
 programs/dotfiles/awesome/widgets/calendar.lua | 115 +++++++++++++++++++++++++
 programs/dotfiles/awesome/widgets/volume.lua   |  60 +++++++++++++
 programs/virt-manager.nix                      |  16 ++++
 8 files changed, 212 insertions(+), 190 deletions(-)
 delete mode 100644 programs/dotfiles/awesome/calendar.lua
 create mode 100644 programs/dotfiles/awesome/dmenu.lua
 delete mode 100644 programs/dotfiles/awesome/volume.lua
 create mode 100644 programs/dotfiles/awesome/widgets/calendar.lua
 create mode 100644 programs/dotfiles/awesome/widgets/volume.lua
 create mode 100644 programs/virt-manager.nix

(limited to 'programs')

diff --git a/programs/dotfiles/awesome/calendar.lua b/programs/dotfiles/awesome/calendar.lua
deleted file mode 100644
index 6e791b3..0000000
--- a/programs/dotfiles/awesome/calendar.lua
+++ /dev/null
@@ -1,115 +0,0 @@
-local awful = require("awful")
-local beautiful = require("beautiful")
-local wibox = require("wibox")
-local gears = require("gears")
-
-local calendar_widget = {}
-
-local function worker(user_args)
-    local args = user_args or {}
-
-    local style = {}
-
-    style.month = {
-        padding = 4,
-        bg_color = beautiful.bg_normal,
-        border_width = 0
-    }
-
-    style.normal = {
-        markup = function(t) return t end,
-        shape = function(cr, width, height) gears.shape.rounded_rect(cr, width, height, 4) end,
-    }
-    
-    style.focused = {
-        bg_color = beautiful.bg_focus,
-        fg_color = beautiful.fg_focus,
-        markup = function(t) return '<b>' .. t .. '</b>' end,
-        shape = function(cr, width, height) gears.shape.rounded_rect(cr, width, height, 4) end,
-    }
-
-    style.header = {
-        bg_color = beautiful.bg_focus,
-        fg_color = beautiful.fg_focus,
-        markup = function(t) return '<b>'..t..'</b>' end,
-    }
-
-    style.weekday = {
-        bg_color = beautiful.bg_focus,
-        fg_color = beautiful.fg_focus,
-        markup = function(t) return '<b>'..t..'</b>' end,
-    }
-
-    local function decorate(widget, flag, date)
-        if flag == 'monthheader' then flag = 'header' end
-        if flag == 'focus' then
-            local today = os.date('*t')
-            if not today.month == date.month and today.year == date.year then
-                flag = 'normal'
-            end
-        end
-        local properties = style[flag] or {}
-        if properties.markup and widget.get_text and widget.set_markup then
-            widget:set_markup(properties.markup(widget:get_text()))
-        end
-        local thisdate = { 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 beautiful.bg_focused
-                           or beautiful.bg_normal
-        return wibox.widget {
-            {
-                {
-                    widget,
-                    halign = 'center',
-                    widget = wibox.container.place
-                },
-                margins = (properties.padding or 2) + (properties.border_width or 0),
-                widget = wibox.container.margin
-            },
-            shape = properties.shape,
-            shape_border_color = properties.border_color or '#00000000',
-            shape_border_width = properties.border_width or 0,
-            fg = properties.fg_color or beautiful.fg_normal,
-            bg = properties.bg_color or beautiful.bg_normal,
-            widget = wibox.container.background
-        }
-    end
-
-    local cal = wibox.widget {
-        date = os.date('*t'),
-        font = beautiful.get_font(),
-        fn_embed = decorate,
-        long_weekdays = true,
-        start_sunday = true,
-        widget = wibox.widget.calendar.month
-    }
-
-    local popup = awful.popup {
-        ontop = true,
-        visible = false,
-        shape = gears.shape.rounded_rect,
-        offset = { y = 5 },
-        border_width = 2,
-        border_color = beautiful.fg_minimize,
-        widget = cal
-    }
-
-    function calendar_widget.toggle()
-        if popup.visible then
-            cal:set_date(nil)
-            cal:set_date(os.date('*t'))
-            popup:set_widget(nil)
-            popup:set_widget(cal)
-            popup.visible = not popup.visible
-        else
-            awful.placement.top_right(popup, { margins = { top = 30, right = 10 }, parent = awful.screen.focused() })
-            popup.visible = true
-        end
-    end
-    return calendar_widget
-end
-
-return setmetatable(calendar_widget, { __call = function(_, ...)
-    return worker(...)
-end})
diff --git a/programs/dotfiles/awesome/dmenu.lua b/programs/dotfiles/awesome/dmenu.lua
new file mode 100644
index 0000000..17301d3
--- /dev/null
+++ b/programs/dotfiles/awesome/dmenu.lua
@@ -0,0 +1,12 @@
+local awful = require("awful")
+local keygrabber = require("awful.keygrabber")
+local beautiful = require("beautiful")
+local wibox = require("wibox")
+local gears = require("gears")
+
+local dmenu_widget = {}
+
+local function worker(user_args)
+    
+end
+
diff --git a/programs/dotfiles/awesome/rc.lua b/programs/dotfiles/awesome/rc.lua
index 904164a..3bf090f 100644
--- a/programs/dotfiles/awesome/rc.lua
+++ b/programs/dotfiles/awesome/rc.lua
@@ -137,10 +137,10 @@ toptextclock = wibox.widget.textclock()
 --    shape = gears.shape.rounded_rect
 --}
 
-local calendar_widget = require("calendar")
+local calendar_widget = require("widgets.calendar")
 local topcalendar = calendar_widget()
 
-local volume_widget = require("volume")
+local volume_widget = require("widgets.volume")
 local volumebar = volume_widget()
 
 toptextclock:connect_signal("button::press",
@@ -316,7 +316,7 @@ awful.screen.connect_for_each_screen(function(s)
     }
 
     -- Create the wibox
-    s.mywibox = awful.wibar({ position = "top", screen = s, bg = "#00000000"})
+    s.mywibox = awful.wibar({ position = "top", screen = s, bg = "#00000000", border_width = 8,})
 
     s.systray = wibox.widget.systray()
     s.systray.visible = true
@@ -327,11 +327,14 @@ awful.screen.connect_for_each_screen(function(s)
         expand = "none",
         { -- Left widgets
             layout = wibox.layout.fixed.horizontal,
-            wibox.container.margin(s.mytaglist, 5, 0, 0),
+            s.mytaglist,
             s.mypromptbox,
         },
         s.mytasklist, -- Middle widget
         { -- Right widgets
+            volumebar,
+            toptextclock,
+            wibox.container.margin(s.mylayoutbox, 4, 4, 4, 4),
             {
                 {
                     layout = wibox.layout.fixed.horizontal,
@@ -344,9 +347,6 @@ awful.screen.connect_for_each_screen(function(s)
                         top = 4,
                         bottom = 4
                     },
-                    volumebar,
-                    toptextclock,
-                    wibox.container.margin(s.mylayoutbox, 4, 4, 4, 4),
                 },
                 widget = wibox.container.background,
                 shape = gears.shape.rounded_rect,
diff --git a/programs/dotfiles/awesome/theme.lua b/programs/dotfiles/awesome/theme.lua
index c2da65a..49fe840 100644
--- a/programs/dotfiles/awesome/theme.lua
+++ b/programs/dotfiles/awesome/theme.lua
@@ -29,8 +29,8 @@ theme.tag_list_occupied = "#767d98"
 theme.tag_list_focused  = "#cdd6f4"
 theme.tag_list_urgent   = "#f38ba8"
 
-theme.useless_gap   = dpi(8)
-theme.border_width  = dpi(3)
+theme.useless_gap   = dpi(4)
+theme.border_width  = dpi(4)
 theme.border_normal = theme.bg_normal
 theme.border_focus  = theme.bg_focus
 theme.border_marked = theme.fg_focus
@@ -132,12 +132,6 @@ theme.awesome_icon = theme_assets.awesome_icon(
 -- from /usr/share/icons and /usr/share/icons/hicolor will be used.
 theme.icon_theme = nil
 
-theme.taglist_text_font = "FiraCode Nerd Font"
-
-theme.taglist_text_empty    = { "", "", "", "", "", "", "", "", "", "" }
-theme.taglist_text_occupied = { "", "", "", "", "", "", "", "", "", "" }
-theme.taglist_text_focused  = { "", "", "", "", "", "", "", "", "", "" }
-
 return theme
 
 -- vim: filetype=lua:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:textwidth=80
diff --git a/programs/dotfiles/awesome/volume.lua b/programs/dotfiles/awesome/volume.lua
deleted file mode 100644
index 21c200b..0000000
--- a/programs/dotfiles/awesome/volume.lua
+++ /dev/null
@@ -1,60 +0,0 @@
-local awful = require("awful")
-local spawn = require("awful.spawn")
-local watch = require("awful.widget.watch")
-local beautiful = require("beautiful")
-local wibox = require("wibox")
-local gears = require("gears")
-local naughty = require("naughty")
-
-local volume_widget = {}
-
-local get_volume_cmd = "bash -c 'wpctl get-volume @DEFAULT_AUDIO_SINK@'"
-
-local function worker(user_args)
-    local volume_bar = wibox.widget {
-        bar_shape = gears.shape.rounded_rect,
-        bar_height = 4,
-        bar_color = beautiful.fg_focus,
-        handle_color = beautiful.fg_focus,
-        handle_shape = gears.shape.circle,
-        handle_border_width = 0,
-        value = 0,
-        forced_width = 50,
-        widget = wibox.widget.slider,           
-    }
-
-    volume_widget = wibox.widget {
-        {
-            layout = wibox.layout.fixed.horizontal,
-            {
-                text = "󰕾 ",
-                widget = wibox.widget.textbox
-            },
-            volume_bar,
-            spacing = 4
-        },
-        widget = wibox.container.margin,
-        left = 8,
-    }
-
-    local function percentage(value)
-        return math.floor(value)
-    end
-
-    watch(get_volume_cmd, 1,
-    function(widget, stdout)
-        volume = stdout:match('0.%d+')
-        widget.value = tonumber(volume) * 100
-    end, volume_bar)
-
-    volume_bar:connect_signal("property::value",
-    function(self)
-        spawn.easy_async("bash -c 'wpctl set-volume @DEFAULT_AUDIO_SINK@ " .. self.value .. "%'", function() end)
-    end)
-    
-    return volume_widget
-end
-
-return setmetatable(volume_widget, { __call = function(_, ...)
-    return worker(...)
-end})
diff --git a/programs/dotfiles/awesome/widgets/calendar.lua b/programs/dotfiles/awesome/widgets/calendar.lua
new file mode 100644
index 0000000..6e791b3
--- /dev/null
+++ b/programs/dotfiles/awesome/widgets/calendar.lua
@@ -0,0 +1,115 @@
+local awful = require("awful")
+local beautiful = require("beautiful")
+local wibox = require("wibox")
+local gears = require("gears")
+
+local calendar_widget = {}
+
+local function worker(user_args)
+    local args = user_args or {}
+
+    local style = {}
+
+    style.month = {
+        padding = 4,
+        bg_color = beautiful.bg_normal,
+        border_width = 0
+    }
+
+    style.normal = {
+        markup = function(t) return t end,
+        shape = function(cr, width, height) gears.shape.rounded_rect(cr, width, height, 4) end,
+    }
+    
+    style.focused = {
+        bg_color = beautiful.bg_focus,
+        fg_color = beautiful.fg_focus,
+        markup = function(t) return '<b>' .. t .. '</b>' end,
+        shape = function(cr, width, height) gears.shape.rounded_rect(cr, width, height, 4) end,
+    }
+
+    style.header = {
+        bg_color = beautiful.bg_focus,
+        fg_color = beautiful.fg_focus,
+        markup = function(t) return '<b>'..t..'</b>' end,
+    }
+
+    style.weekday = {
+        bg_color = beautiful.bg_focus,
+        fg_color = beautiful.fg_focus,
+        markup = function(t) return '<b>'..t..'</b>' end,
+    }
+
+    local function decorate(widget, flag, date)
+        if flag == 'monthheader' then flag = 'header' end
+        if flag == 'focus' then
+            local today = os.date('*t')
+            if not today.month == date.month and today.year == date.year then
+                flag = 'normal'
+            end
+        end
+        local properties = style[flag] or {}
+        if properties.markup and widget.get_text and widget.set_markup then
+            widget:set_markup(properties.markup(widget:get_text()))
+        end
+        local thisdate = { 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 beautiful.bg_focused
+                           or beautiful.bg_normal
+        return wibox.widget {
+            {
+                {
+                    widget,
+                    halign = 'center',
+                    widget = wibox.container.place
+                },
+                margins = (properties.padding or 2) + (properties.border_width or 0),
+                widget = wibox.container.margin
+            },
+            shape = properties.shape,
+            shape_border_color = properties.border_color or '#00000000',
+            shape_border_width = properties.border_width or 0,
+            fg = properties.fg_color or beautiful.fg_normal,
+            bg = properties.bg_color or beautiful.bg_normal,
+            widget = wibox.container.background
+        }
+    end
+
+    local cal = wibox.widget {
+        date = os.date('*t'),
+        font = beautiful.get_font(),
+        fn_embed = decorate,
+        long_weekdays = true,
+        start_sunday = true,
+        widget = wibox.widget.calendar.month
+    }
+
+    local popup = awful.popup {
+        ontop = true,
+        visible = false,
+        shape = gears.shape.rounded_rect,
+        offset = { y = 5 },
+        border_width = 2,
+        border_color = beautiful.fg_minimize,
+        widget = cal
+    }
+
+    function calendar_widget.toggle()
+        if popup.visible then
+            cal:set_date(nil)
+            cal:set_date(os.date('*t'))
+            popup:set_widget(nil)
+            popup:set_widget(cal)
+            popup.visible = not popup.visible
+        else
+            awful.placement.top_right(popup, { margins = { top = 30, right = 10 }, parent = awful.screen.focused() })
+            popup.visible = true
+        end
+    end
+    return calendar_widget
+end
+
+return setmetatable(calendar_widget, { __call = function(_, ...)
+    return worker(...)
+end})
diff --git a/programs/dotfiles/awesome/widgets/volume.lua b/programs/dotfiles/awesome/widgets/volume.lua
new file mode 100644
index 0000000..21c200b
--- /dev/null
+++ b/programs/dotfiles/awesome/widgets/volume.lua
@@ -0,0 +1,60 @@
+local awful = require("awful")
+local spawn = require("awful.spawn")
+local watch = require("awful.widget.watch")
+local beautiful = require("beautiful")
+local wibox = require("wibox")
+local gears = require("gears")
+local naughty = require("naughty")
+
+local volume_widget = {}
+
+local get_volume_cmd = "bash -c 'wpctl get-volume @DEFAULT_AUDIO_SINK@'"
+
+local function worker(user_args)
+    local volume_bar = wibox.widget {
+        bar_shape = gears.shape.rounded_rect,
+        bar_height = 4,
+        bar_color = beautiful.fg_focus,
+        handle_color = beautiful.fg_focus,
+        handle_shape = gears.shape.circle,
+        handle_border_width = 0,
+        value = 0,
+        forced_width = 50,
+        widget = wibox.widget.slider,           
+    }
+
+    volume_widget = wibox.widget {
+        {
+            layout = wibox.layout.fixed.horizontal,
+            {
+                text = "󰕾 ",
+                widget = wibox.widget.textbox
+            },
+            volume_bar,
+            spacing = 4
+        },
+        widget = wibox.container.margin,
+        left = 8,
+    }
+
+    local function percentage(value)
+        return math.floor(value)
+    end
+
+    watch(get_volume_cmd, 1,
+    function(widget, stdout)
+        volume = stdout:match('0.%d+')
+        widget.value = tonumber(volume) * 100
+    end, volume_bar)
+
+    volume_bar:connect_signal("property::value",
+    function(self)
+        spawn.easy_async("bash -c 'wpctl set-volume @DEFAULT_AUDIO_SINK@ " .. self.value .. "%'", function() end)
+    end)
+    
+    return volume_widget
+end
+
+return setmetatable(volume_widget, { __call = function(_, ...)
+    return worker(...)
+end})
diff --git a/programs/virt-manager.nix b/programs/virt-manager.nix
new file mode 100644
index 0000000..b2f3de5
--- /dev/null
+++ b/programs/virt-manager.nix
@@ -0,0 +1,16 @@
+{ pkgs, username, ... }:
+{
+    dconf.settings = {
+        "org/virt-manager/virt-manager/connections" = {
+            autoconnect = ["qemu:///system"];
+            uris = ["qemu:///system"];
+        };
+    };
+
+    xdg.configFile."libvirt/qemu.conf".text = ''
+nvram = [
+    "/run/libvirt/nix-ovmf/AAVMF_CODE.fd:/run/libvirt/nix-ovmf/AAVMF_VARS.fd",
+    "/run/libvirt/nix-ovmf/OVMF_CODE.fd:/run/libvirt/nix-ovmf/OVMF_VARS.fd"
+]
+    '';
+}
-- 
cgit v1.2.1