summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Keller <tjk@tjkeller.xyz>2024-10-11 20:43:20 -0500
committerTim Keller <tjk@tjkeller.xyz>2024-10-11 20:43:20 -0500
commitce020ab718b0ea09224dd15fc9a5796b3acc7904 (patch)
tree5d1ab3fb93f85d6fbf1b9fe84dfcd3484ce6ef33
parent5e84a09eb67772b07a73102538d2445ecb403613 (diff)
downloaddotconfig-ce020ab718b0ea09224dd15fc9a5796b3acc7904.tar.xz
dotconfig-ce020ab718b0ea09224dd15fc9a5796b3acc7904.zip
overhaul awesome
-rw-r--r--awesome/bar.lua287
-rw-r--r--awesome/func/noborders.lua (renamed from awesome/noborders.lua)0
-rw-r--r--awesome/func/sloppyfocus.lua (renamed from awesome/sloppyfocus.lua)2
-rw-r--r--awesome/func/tagnames.lua (renamed from awesome/tagnames.lua)0
-rw-r--r--awesome/func/warpcursor.lua (renamed from awesome/warpcursor.lua)0
-rw-r--r--awesome/hosts/libreX60.lua4
-rw-r--r--awesome/layouts.lua19
-rw-r--r--awesome/lib/errors.lua (renamed from awesome/errors.lua)0
-rw-r--r--awesome/lib/manage.lua (renamed from awesome/manage.lua)0
-rw-r--r--awesome/lib/screen.lua (renamed from awesome/screen.lua)0
-rw-r--r--awesome/mouse.lua39
-rw-r--r--awesome/rc.lua36
-rw-r--r--awesome/rules.lua31
-rw-r--r--awesome/theme.lua32
-rw-r--r--awesome/todo2
-rw-r--r--awesome/util/dbus_example.lua59
-rw-r--r--awesome/widgets/button.lua33
-rw-r--r--awesome/widgets/classiclayoutbox.lua2
-rw-r--r--awesome/widgets/classiclayouts.lua77
-rw-r--r--awesome/widgets/cpu.lua3
-rw-r--r--awesome/widgets/pipewire.lua34
-rw-r--r--awesome/widgets/ram.lua2
-rw-r--r--awesome/widgets/temperature.lua2
23 files changed, 340 insertions, 324 deletions
diff --git a/awesome/bar.lua b/awesome/bar.lua
index 523beec..4adddb3 100644
--- a/awesome/bar.lua
+++ b/awesome/bar.lua
@@ -1,181 +1,146 @@
-local gears = require("gears")
local awful = require("awful")
-require("awful.autofocus")
--- Widget and layout library
local wibox = require("wibox")
--- Theme handling library
local beautiful = require("beautiful")
--- Notification library
-local naughty = require("naughty")
-local menubar = require("menubar")
-local hotkeys_popup = require("awful.hotkeys_popup")
--- Enable hotkeys help widget for VIM and other apps
--- when client with a matching name is opened:
-require("awful.hotkeys_popup.keys")
-
--- Load widgets
-local widget_cpu_usage = require("widgets.cpu")
-local widget_ram_usage = require("widgets.ram")
+-- load widgets
+--local mylauncher = require("widgets.button")
+local widget_cpu_usage = require("widgets.cpu")
+local widget_ram_usage = require("widgets.ram")
local widget_temperature = require("widgets.temperature")
-local classiclayoutbox = require("widgets.classiclayoutbox")
-local volume_control = require("widgets.pavolctld")
+local classiclayoutbox = require("widgets.classiclayouts")
+local volume_control = require("widgets.pavolctld")
local widget_volume = volume_control.textbox
--- Menu
--- Create a launcher widget and a main menu
-myawesomemenu = {
- { "hotkeys", function() hotkeys_popup.show_help(nil, awful.screen.focused()) end },
- { "restart", awesome.restart },
- { "quit", function() awesome.quit() end },
+-- store widgets here
+local spacing = 8
+local separator = { widget = wibox.widget.separator, opacity = 0 }
+
+local widgets = {
+ spacing = spacing, -- constant
+ layoutlist = wibox.widget {
+ layout = wibox.layout.fixed.horizontal,
+ buttons = layout_buttons,
+ wibox.container.margin(
+ classiclayoutbox(s),
+ spacing, spacing, 0, 0
+ ),
+ },
+ taglist = function(s) return awful.widget.taglist {
+ screen = s,
+ filter = awful.widget.taglist.filter.noempty,
+ buttons = taglist_buttons,
+ } end,
+ tasklist = function(s) return wibox.widget {
+ layout = wibox.layout.align.horizontal,
+ expand = "outside",
+ separator,
+ awful.widget.tasklist {
+ screen = s,
+ filter = awful.widget.tasklist.filter.focused,
+ buttons = tasklist_buttons,
+ widget_template = {
+ id = "text_role",
+ widget = wibox.widget.textbox,
+ align = "center",
+ },
+ },
+ separator,
+ } end,
+ textclock = wibox.widget.textclock("%A, %B %e, %-I:%M %p"),
+ cpu = wibox.widget {
+ layout = wibox.layout.fixed.horizontal,
+ wibox.widget.textbox "CPU: ",
+ widget_cpu_usage,
+ wibox.widget.textbox "% ",
+ widget_temperature "/sys/class/hwmon/hwmon2/temp1_input",
+ wibox.widget.textbox "°",
+ },
+ ram = {
+ layout = wibox.layout.fixed.horizontal,
+ wibox.widget.textbox "RAM: ",
+ widget_ram_usage,
+ wibox.widget.textbox "%",
+ },
+ vol = {
+ layout = wibox.layout.fixed.horizontal,
+ buttons = volume_buttons,
+ wibox.widget.textbox "VOL: ",
+ widget_volume,
+ wibox.widget.textbox "%",
+ },
}
-mymainmenu = awful.menu({
- items = {
- { "awesome", myawesomemenu, beautiful.awesome_icon },
- { "open terminal", terminal }
- }
-})
-
-mylauncher = awful.widget.launcher({
- image = beautiful.awesome_icon,
- menu = mymainmenu
-})
-
--- Menubar configuration
-menubar.utils.terminal = terminal -- Set the terminal for applications that require it
-
--- Wibar
--- Create a textclock widget
---mytextclock = wibox.widget.textclock("%A, %B %e, %-I:%M %p")
--- x60
-mytextclock = wibox.widget.textclock("%a, %b %e, %-H:%M")
-
--- Create a wibox for each screen and add it
-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, awful.tag.viewtoggle),
- 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) awful.tag.viewprev(t.screen) end)
-)
-
-local tasklist_buttons = gears.table.join(
- awful.button({ }, 1, function (c) c:emit_signal("request::activate", "tasklist", {raise = true}) 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)
-)
-
-local volume_buttons = gears.table.join(
- awful.button({ }, 4, function() volume_control.volume_inc(5) end),
- awful.button({ }, 5, function() volume_control.volume_dec(5) end)
-)
-
+-- left widget group func
+function widgets.left_widgets(s) return wibox.widget {
+ layout = wibox.layout.fixed.horizontal,
+ spacing = spacing,
+ {
+ layout = wibox.layout.fixed.horizontal,
+ widgets.layoutlist,
+ widgets.taglist(s),
+ },
+ widgets.tasklist(s),
+} end
+
+-- miggle widget group func
+function widgets.middle_widgets(s) return wibox.widget {
+ layout = wibox.layout.fixed.horizontal,
+ widgets.textclock,
+} end
+
+-- right widget group func
+function widgets.right_widgets(s) return wibox.widget {
+ layout = wibox.layout.fixed.horizontal,
+ {
+ layout = wibox.layout.fixed.horizontal,
+ spacing = spacing,
+ widgets.cpu,
+ widgets.ram,
+ widgets.vol,
+ },
+ {
+ widget = wibox.widget.separator,
+ opacity = 0,
+ forced_width = spacing
+ },
+ --mylauncher,
+} end
+
+-- create a wibox for each screen and add it
awful.screen.connect_for_each_screen(function (s)
awful.tag({"1", "2", "3", "4", "5", "6", "7", "8", "9"}, s, awful.layout.layouts[1])
s.mypromptbox = awful.widget.prompt()
- --s.mylayoutbox = awful.widget.layoutbox {
- -- screen = s,
- -- 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),
- -- }
- --}
-
-
- -- Create the wibox
+ -- create the wibox
s.mywibox = awful.wibar({ position = "top", screen = s })
- -- Add widgets to the wibox
+ -- add widgets to the wibox
s.mywibox:setup {
layout = wibox.layout.align.horizontal,
expand = "none",
- spacing = 8,
- -- Left widgets
- {
- layout = wibox.layout.fixed.horizontal,
- spacing = 8,
- {
- layout = wibox.layout.fixed.horizontal,
- --awful.widget.layoutbox(s),
- classiclayoutbox(s),
- awful.widget.taglist {
- screen = s,
- filter = awful.widget.taglist.filter.noempty,
- buttons = taglist_buttons,
- },
- },
- {
- layout = wibox.layout.align.horizontal,
- expand = "outside",
- wibox.widget { widget = wibox.widget.separator, opacity = 0 },
- awful.widget.tasklist {
- screen = s,
- filter = awful.widget.tasklist.filter.focused,
- buttons = tasklist_buttons,
- widget_template = {
- id = "text_role",
- widget = wibox.widget.textbox,
- align = "center",
- },
- },
- wibox.widget { widget = wibox.widget.separator, opacity = 0 },
- },
- },
- -- Middle widget
- {
- layout = wibox.layout.fixed.horizontal,
- mytextclock,
- },
- -- Right widgets
- {
- layout = wibox.layout.fixed.horizontal,
- spacing = 8,
- {
- layout = wibox.layout.fixed.horizontal,
- wibox.widget.textbox "CPU: ",
- widget_cpu_usage,
- wibox.widget.textbox "% ",
- widget_temperature "/sys/class/hwmon/hwmon2/temp1_input",
- wibox.widget.textbox "°",
- },
- {
- layout = wibox.layout.fixed.horizontal,
- wibox.widget.textbox "RAM: ",
- widget_ram_usage,
- wibox.widget.textbox "%",
- },
- {
- layout = wibox.layout.fixed.horizontal,
- buttons = volume_buttons,
- wibox.widget.textbox "VOL: ",
- widget_volume,
- wibox.widget.textbox "%",
- },
- mylauncher,
- },
+ spacing = spacing,
+ widgets.left_widgets(s),
+ widgets.middle_widgets(s),
+ widgets.right_widgets(s),
}
-
- ---- Signal for changing tasklist filter based on layout
- ---- DOESNT WORK TODO
- --s:connect_signal("property::layout", function()
- -- naughty.notify({
- -- title = "Hello, AwesomeWM!",
- -- text = "This is a notification.",
- -- timeout = 5, -- Timeout in seconds
- -- position = "top_right" -- Position on the screen
- -- })
- -- if awful.layout.get(s) == awful.layout.suit.max then
- -- s.mytasklist.filter = awful.widget.tasklist.filter.currenttags
- -- else
- -- s.mytasklist.filter = awful.widget.tasklist.filter.focused
- -- end
- --end
- --)
-
end)
+
+---- signal for changing tasklist filter based on layout
+---- DOESNT WORK TODO
+--local naughty = require("naughty")
+--s:connect_signal("property::layout", function()
+-- naughty.notify({
+-- title = "Hello, AwesomeWM!",
+-- text = "This is a notification.",
+-- timeout = 5, -- Timeout in seconds
+-- position = "top_right" -- Position on the screen
+-- })
+-- if awful.layout.get(s) == awful.layout.suit.max then
+-- s.mytasklist.filter = awful.widget.tasklist.filter.currenttags
+-- else
+-- s.mytasklist.filter = awful.widget.tasklist.filter.focused
+-- end
+--end
+--)
+
+return widgets
diff --git a/awesome/noborders.lua b/awesome/func/noborders.lua
index fe67024..fe67024 100644
--- a/awesome/noborders.lua
+++ b/awesome/func/noborders.lua
diff --git a/awesome/sloppyfocus.lua b/awesome/func/sloppyfocus.lua
index e6b7e4e..be9cd9c 100644
--- a/awesome/sloppyfocus.lua
+++ b/awesome/func/sloppyfocus.lua
@@ -1,5 +1,3 @@
-local beautiful = require("beautiful")
-
-- Enable sloppy focus, so that focus follows mouse.
client.connect_signal("mouse::enter", function(c)
c:emit_signal("request::activate", "mouse_enter", { raise = false })
diff --git a/awesome/tagnames.lua b/awesome/func/tagnames.lua
index fcd01a4..fcd01a4 100644
--- a/awesome/tagnames.lua
+++ b/awesome/func/tagnames.lua
diff --git a/awesome/warpcursor.lua b/awesome/func/warpcursor.lua
index f1a46bd..f1a46bd 100644
--- a/awesome/warpcursor.lua
+++ b/awesome/func/warpcursor.lua
diff --git a/awesome/hosts/libreX60.lua b/awesome/hosts/libreX60.lua
new file mode 100644
index 0000000..3ce5619
--- /dev/null
+++ b/awesome/hosts/libreX60.lua
@@ -0,0 +1,4 @@
+local wibox = require("wibox")
+local bar_widgets = require("bar")
+
+bar_widgets.textclock.format = "%a, %b %e, %-H:%M"
diff --git a/awesome/layouts.lua b/awesome/layouts.lua
index 7b78c02..67fd31d 100644
--- a/awesome/layouts.lua
+++ b/awesome/layouts.lua
@@ -1,5 +1,4 @@
local awful = require("awful")
---local tile = require("tile")
-- Table of layouts to cover with awful.layout.inc, order matters.
awful.layout.layouts = {
@@ -7,4 +6,22 @@ awful.layout.layouts = {
awful.layout.suit.tile.bottom,
awful.layout.suit.max,
awful.layout.suit.floating,
+
+
+-- awful.layout.suit.floating,
+-- awful.layout.suit.tile,
+-- awful.layout.suit.tile.left,
+-- awful.layout.suit.tile.bottom,
+-- awful.layout.suit.tile.top,
+-- awful.layout.suit.fair,
+-- awful.layout.suit.fair.horizontal,
+-- awful.layout.suit.spiral,
+-- awful.layout.suit.spiral.dwindle,
+-- awful.layout.suit.max,
+-- awful.layout.suit.max.fullscreen,
+-- awful.layout.suit.magnifier,
+-- awful.layout.suit.corner.nw,
+-- awful.layout.suit.corner.ne,
+-- awful.layout.suit.corner.sw,
+-- awful.layout.suit.corner.se,
}
diff --git a/awesome/errors.lua b/awesome/lib/errors.lua
index 2079c0e..2079c0e 100644
--- a/awesome/errors.lua
+++ b/awesome/lib/errors.lua
diff --git a/awesome/manage.lua b/awesome/lib/manage.lua
index 5b1bd40..5b1bd40 100644
--- a/awesome/manage.lua
+++ b/awesome/lib/manage.lua
diff --git a/awesome/screen.lua b/awesome/lib/screen.lua
index dc01e2c..dc01e2c 100644
--- a/awesome/screen.lua
+++ b/awesome/lib/screen.lua
diff --git a/awesome/mouse.lua b/awesome/mouse.lua
index f3d0bc1..13165db 100644
--- a/awesome/mouse.lua
+++ b/awesome/mouse.lua
@@ -1,22 +1,47 @@
local awful = require("awful")
local gears = require("gears")
+local volume_control = require("widgets.pavolctld")
local super = "Mod4"
local alt = "Mod1"
local shift = "Shift"
local ctrl = "Control"
+-- window buttons
clientbuttons = gears.table.join(
awful.button({ }, 1, function (c) c:emit_signal("request::activate", "mouse_click", {raise = true}) end),
awful.button({ super }, 1, function (c) c:emit_signal("request::activate", "mouse_click", {raise = true}) awful.mouse.client.move(c) end),
awful.button({ super }, 3, function (c) c:emit_signal("request::activate", "mouse_click", {raise = true}) awful.mouse.client.resize(c) end)
)
--- {{{ Mouse bindings
-root.buttons(gears.table.join(
- awful.button({ }, 3, function () mymainmenu:toggle() end),
- awful.button({ }, 4, awful.tag.viewnext),
- awful.button({ }, 5, awful.tag.viewprev)
-))
--- }}}
+--root.buttons(gears.table.join(
+-- awful.button({ }, 3, function () mymainmenu:toggle() end),
+-- awful.button({ }, 4, awful.tag.viewnext),
+-- awful.button({ }, 5, awful.tag.viewprev)
+--))
+-- wibar widgets
+layout_buttons = gears.table.join(
+ awful.button({ }, 1, function() awful.layout.inc(1, awful.screen.focused().tags[0]) end)
+)
+
+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, awful.tag.viewtoggle),
+ 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) awful.tag.viewprev(t.screen) end)
+)
+
+tasklist_buttons = gears.table.join(
+ awful.button({ }, 1, function (c) c:emit_signal("request::activate", "tasklist", {raise = true}) 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)
+)
+
+volume_buttons = gears.table.join(
+ awful.button({ }, 4, function() volume_control.volume_inc(5) end),
+ awful.button({ }, 5, function() volume_control.volume_dec(5) end)
+)
diff --git a/awesome/rc.lua b/awesome/rc.lua
index 1bcbaa8..50d85d7 100644
--- a/awesome/rc.lua
+++ b/awesome/rc.lua
@@ -1,20 +1,30 @@
--- Global variable definitions
+-- global variable definitions
terminal = os.getenv("TERMINAL") or "xterm"
-editor = os.getenv("EDITOR") or "vi"
+editor = os.getenv("EDITOR") or "vi"
--- Import modules
-require("errors")
+-- get results from uname
+local uname = io.popen("uname -sn")
+local uname_i = uname:read("*a"):gmatch("%g+")
+uname:close()
+
+osname = uname_i()
+hostname = uname_i()
+
+-- import modules
+require("lib.errors")
+require("lib.manage")
+require("lib.screen")
require("layouts")
-require("theme") -- Load before bar
+require("theme") -- load before bar
+require("mouse") -- load before bar & rules
require("bar")
-require("screen")
-require("mouse")
require("keybindings")
require("rules")
-require("manage")
-require("noborders")
-require("warpcursor")
-require("sloppyfocus")
---require("tagnames")
-
+require("func.noborders")
+require("func.sloppyfocus")
+require("func.warpcursor")
+--require("func.tagnames")
--require("widgets.audio")
+
+-- call override module if exists
+pcall(function() require("hosts." .. hostname) end)
diff --git a/awesome/rules.lua b/awesome/rules.lua
index 3f57080..8655541 100644
--- a/awesome/rules.lua
+++ b/awesome/rules.lua
@@ -1,10 +1,11 @@
local awful = require("awful")
local beautiful = require("beautiful")
--- Rules to apply to new clients (through the "manage" signal).
+-- Rules to apply to new clients (through the "manage" signal)
awful.rules.rules = {
- -- All clients will match this rule.
- { rule = { },
+ -- All clients will match this rule
+ {
+ rule = { },
properties = {
border_width = beautiful.border_width,
border_color = beautiful.border_normal,
@@ -17,18 +18,21 @@ awful.rules.rules = {
prevent_kill = false,
}
},
- -- warp cursor
- { rule_any = { class = {
- "Chromium-browser",
- "Firefox",
- "Firefox-esr",
- "Gimp",
- "KeePassXC",
- "Pcmanfm",
+ -- Warp cursor
+ {
+ rule_any = { class = {
+ "Chromium-browser",
+ "Firefox",
+ "Firefox-esr",
+ "Gimp",
+ "KeePassXC",
+ "Pcmanfm",
}},
properties = { warp_cursor = true, }
},
- { rule = { class = "KeePassXC" },
+ -- KeePassXC rules
+ {
+ rule = { class = "KeePassXC" },
-- except = { name = "Unlock Database - KeePassXC" }, -- Not needed
properties = {
new_tag = {
@@ -39,7 +43,8 @@ awful.rules.rules = {
-- callback = function(c) c.first_tag.icon = c.icon end
}
},
- { rule_any = { name = { "Unlock Database - KeePassXC", "KeePassXC - Browser Access Request" } },
+ {
+ rule_any = { name = { "Unlock Database - KeePassXC", "KeePassXC - Browser Access Request" } },
properties = {
screen = awful.screen.focused(),
floating = true,
diff --git a/awesome/theme.lua b/awesome/theme.lua
index e48c1ce..98f0ee8 100644
--- a/awesome/theme.lua
+++ b/awesome/theme.lua
@@ -1,19 +1,39 @@
--- Theme handling library
+-- theme handling library
local beautiful = require("beautiful")
local gears = require("gears")
--- Themes define colours, icons, font and wallpapers.
+-- colors
+local darkgray = "#222222"
+local white = "#ffffff"
+local lightgray = "#aaaaaa"
+
+-- themes define colours, icons, font and wallpapers
beautiful.init(gears.filesystem.get_themes_dir() .. "gtk/theme.lua")
+
+-- gaps
beautiful.useless_gap = 0
beautiful.gap_single_client = false
+
+-- overrides
+beautiful.tasklist_font_focus = beautiful.font -- prevent bold
+beautiful.wibar_height = "18"
+beautiful.wibar_bg = darkgray
--beautiful.layoutlist_font = "Monospace 8"
--beautiful.font = "Tamzen 10"
--beautiful.taglist_font = "Tamzen 10"
--beautiful.tasklist_font = beautiful.font
-beautiful.tasklist_font_focus = beautiful.font -- prevent bold
-beautiful.tasklist_align = "center" -- does nothing?
-beautiful.wibar_height = "18"
+--beautiful.tasklist_align = "center" -- does nothing?
+
+-- hotkeys menu
+beautiful.hotkeys_font = beautiful.font -- TODO make bold
+beautiful.hotkeys_description_font = beautiful.font
+beautiful.hotkeys_border_color = beautiful.border_focus
+beautiful.hotkeys_bg = darkgray
+beautiful.hotkeys_fg = white
+beautiful.hotkeys_label_fg = white
+beautiful.hotkeys_modifiers_fg = lightgray
+beautiful.hotkeys_label_bg = darkgray -- ???
--- Set border on clients
+-- set border on clients
client.connect_signal("focus", function(c) c.border_color = beautiful.border_focus end)
client.connect_signal("unfocus", function(c) c.border_color = beautiful.border_normal end)
diff --git a/awesome/todo b/awesome/todo
index 346ddd8..08ab7dd 100644
--- a/awesome/todo
+++ b/awesome/todo
@@ -20,3 +20,5 @@ other layouts
floating support
tabbing support
cleanup
+
+move pvolctld logic to sep util file with diff callbacks
diff --git a/awesome/util/dbus_example.lua b/awesome/util/dbus_example.lua
deleted file mode 100644
index 1e4d756..0000000
--- a/awesome/util/dbus_example.lua
+++ /dev/null
@@ -1,59 +0,0 @@
-local lgi = require("lgi")
-local Gio = lgi.require("Gio")
-local GLib = lgi.require("GLib")
-
--- Workaround for https://github.com/pavouk/lgi/issues/142
-local function bus_get_async(type)
- Gio.bus_get(type, nil, coroutine.running())
- local a, b = coroutine.yield()
- return Gio.bus_get_finish(b)
-end
-
-local function inhibit(bus, what, who, why, mode)
- local name = "org.freedesktop.login1"
- local object = "/org/freedesktop/login1"
- local interface = "org.freedesktop.login1.Manager"
- local message = Gio.DBusMessage.new_method_call(name, object, interface, "Inhibit")
- message:set_body(GLib.Variant("(ssss)",
- { what, who, why, mode }))
-
- local timeout = -1 -- Just use the default
- local result, err = bus:async_send_message_with_reply(message, Gio.DBusSendMessageFlags.NONE,
- timeout, nil)
-
- if err then
- print("error: " .. tostring(err))
- return
- end
-
- if result:get_message_type() == "ERROR" then
- local _, err = result:to_gerror()
- print("error: " .. tostring(err))
- return
- end
-
- local fd_list = result:get_unix_fd_list()
- local fd, err = fd_list:get(0)
- if err then
- print("error: " .. tostring(err))
- return
- end
-
- -- Now... somehow turn this fd into something we can close
- return Gio.UnixInputStream.new(fd, true)
-end
-
-Gio.Async.call(function()
- local bus = bus_get_async(Gio.BusType.SYSTEM)
- local a = inhibit(bus, "shutdown:sleep", "hi, it's me!", "Just because", "delay")
- print("got lock")
- io.popen("sleep 10"):read("*a")
- a:async_close()
- -- Speed up deletion of the GDBusMessage that still references the FD
- collectgarbage("collect")
- collectgarbage("collect")
-
- print("released lock")
- io.popen("sleep 10"):read("*a")
-end)()
-
diff --git a/awesome/widgets/button.lua b/awesome/widgets/button.lua
new file mode 100644
index 0000000..cd1da1e
--- /dev/null
+++ b/awesome/widgets/button.lua
@@ -0,0 +1,33 @@
+local awful = require("awful")
+local beautiful = require("beautiful")
+local menubar = require("menubar")
+
+local hotkeys_popup = require("awful.hotkeys_popup")
+-- Enable hotkeys help widget for VIM and other apps
+-- when client with a matching name is opened:
+require("awful.hotkeys_popup.keys")
+
+-- Menu
+-- Create a launcher widget and a main menu
+myawesomemenu = {
+ { "hotkeys", function() hotkeys_popup.show_help(nil, awful.screen.focused()) end },
+ { "restart", awesome.restart },
+ { "quit", function() awesome.quit() end },
+}
+
+mymainmenu = awful.menu({
+ items = {
+ { "awesome", myawesomemenu, beautiful.awesome_icon },
+ { "open terminal", terminal }
+ }
+})
+
+mylauncher = awful.widget.launcher({
+ image = beautiful.awesome_icon,
+ menu = mymainmenu
+})
+
+-- Menubar configuration
+menubar.utils.terminal = terminal -- Set the terminal for applications that require it
+
+return mylauncher
diff --git a/awesome/widgets/classiclayoutbox.lua b/awesome/widgets/classiclayoutbox.lua
index 818dc0f..412cb77 100644
--- a/awesome/widgets/classiclayoutbox.lua
+++ b/awesome/widgets/classiclayoutbox.lua
@@ -19,7 +19,7 @@ local layout_icons = {
cornersw = "",
cornerse = "",
fairh = "",
- fairv = "",
+ fairv = "EEH",
max = "[M]",
floating = "><>",
magnifier = "[M]",
diff --git a/awesome/widgets/classiclayouts.lua b/awesome/widgets/classiclayouts.lua
index 917ca00..3b4fd64 100644
--- a/awesome/widgets/classiclayouts.lua
+++ b/awesome/widgets/classiclayouts.lua
@@ -1,27 +1,64 @@
-local awful = require("awful")
+local wibox = require("wibox")
+local layout = require("awful.layout")
-local layoutbox = {}
+local screen_widgets = {} -- need one widget per screen
local layout_icons = {
- cornernw = "",
- cornerne = "",
- cornersw = "",
- cornerse = "",
- fairh = "",
- fairv = "",
- max = "[M]",
- floating = "><>",
- magnifier = "[M]",
- fullscreen = "",
- spiral = "",
- dwindle = "",
- tile = "[]=",
- tiletop = "TTT",
- tilebottom = "TTT",
- tileleft = "=[]",
+ cornernw = "TT=",
+ cornerne = "=TT",
+ cornersw = "LL=",
+ cornerse = "=LL",
+ fairh = "#_#",
+ fairv = "##H",
+ max = "[M]",
+ floating = "><>",
+ magnifier = "=O=",
+ fullscreen = "[*]",
+ spiral = "[]@",
+ dwindle = "[]\\",
+ tile = "[]=",
+ tiletop = "LLL",
+ tilebottom = "TTT",
+ tileleft = "=[]",
}
-function(s)
- s = screen[s or 1]
+function update(screen_index)
+ local s = screen[screen_index or 1]
+ local w = screen_widgets[s]
+ local l = layout.get(s)
+ -- create widget if not existing
+ if w == nil then
+ screen_widgets[s] = { widget = wibox.widget.textbox(), layout = l }
+ w = screen_widgets[s]
+ --w._layoutbox_tooltip = tooltip {objects = {w}, delay_show = 1}
+
+ -- skip if no change
+ elseif w.layout == l then
+ return
+ end
+
+ -- set widget
+ local name = layout.getname(l)
+ --w._layoutbox_tooltip:set_text(name)
+ w.widget:set_text(layout_icons[name]) -- TODO handle nil
+ return w.widget
+end
+
+function update_screens()
+ for s, w in pairs(boxes) do
+ if s.valid then
+ update(s)
+ end
+ end
end
+
+function update_current_tag(t)
+ update(t.screen)
+end
+
+tag.connect_signal("property::selected", update_current_tag)
+tag.connect_signal("property::layout", update_current_tag)
+tag.connect_signal("property::screen", update_screens)
+
+return update
diff --git a/awesome/widgets/cpu.lua b/awesome/widgets/cpu.lua
index cbd5916..d92bce8 100644
--- a/awesome/widgets/cpu.lua
+++ b/awesome/widgets/cpu.lua
@@ -1,7 +1,5 @@
local wibox = require("wibox")
local widgets = require("util.widgets")
-local osname = require("util.osname")
-
-- this is directly adapted from slstatus's cpu.c module
local cpu_time = { 0,0,0,0,0,0,0 } -- user, nice, system, idle, iowait, irq, softirq
@@ -32,7 +30,6 @@ function linux_cpu_usage(widget)
widget:set_text(math.floor(usage))
end
-
-- return correct widget for os
if osname == "Linux" then
return widgets.watchfn(linux_cpu_usage, 5)
diff --git a/awesome/widgets/pipewire.lua b/awesome/widgets/pipewire.lua
deleted file mode 100644
index 3195ee7..0000000
--- a/awesome/widgets/pipewire.lua
+++ /dev/null
@@ -1,34 +0,0 @@
-local awful = require("awful")
-local wibox = require("wibox")
-
---local get_volume_cmd = "wpctl get-volume @DEFAULT_AUDIO_SINK@ | sed 's/Volume: //;s/0*\\.//'"
---local set_volume_cmd = "wpctl set-volume @DEFAULT_AUDIO_SINK@ %d%%%s" -- will be formatted
-local get_volume_cmd = "wpctl get-volume @DEFAULT_AUDIO_SINK@"
-
-local widget = {
- textbox = wibox.widget.textbox()
-}
-
-local updating = false
-function update_volume()
- if updating then
- return
- end
- awful.spawn.easy_async(get_volume_cmd, function(vol)
- updating = true
- vol = vol:sub(8) * 100 -- skip `Volume: ` whos len is 8
- widget.textbox:set_text(math.floor(vol))
- updating = false
- end)
-end
-
--- NOTE pulseaudio-utils (pactl) is still required due to the dependence on the
--- `pactl subscribe` command. in the future it would be advantageous to replace
--- this. currently it is (probably) only really possible with dbus.
-awful.spawn.with_line_callback("pactl subscribe", { stdout = function(stdout)
- --update_volume()
-end })
-
-update_volume()
-
-return widget.textbox
diff --git a/awesome/widgets/ram.lua b/awesome/widgets/ram.lua
index 2347ca4..44ab314 100644
--- a/awesome/widgets/ram.lua
+++ b/awesome/widgets/ram.lua
@@ -1,6 +1,5 @@
local wibox = require("wibox")
local widgets = require("util.widgets")
-local osname = require("util.osname")
function linux_ram_usage(widget)
@@ -27,7 +26,6 @@ function linux_ram_usage(widget)
widget:set_text(math.floor(used))
end
-
-- return correct widget for os
if osname == "Linux" then
return widgets.watchfn(linux_ram_usage, 5)
diff --git a/awesome/widgets/temperature.lua b/awesome/widgets/temperature.lua
index 985291d..a30e1ed 100644
--- a/awesome/widgets/temperature.lua
+++ b/awesome/widgets/temperature.lua
@@ -1,6 +1,5 @@
local wibox = require("wibox")
local widgets = require("util.widgets")
-local osname = require("util.osname")
local linux = { file = nil }
@@ -16,7 +15,6 @@ function linux.temperature(widget)
end
end
-
-- return correct widget for os
if osname == "Linux" then
return function(file)