From f5612f081db0dc69f5c0ebc69e67fa3b098a9ad9 Mon Sep 17 00:00:00 2001 From: delta Date: Fri, 12 May 2023 16:18:24 +0200 Subject: restructure services, add get_essid to quarrel.native and other wip work --- .config/awesome/services/battery.lua | 14 ---- .config/awesome/services/brightness.lua | 13 ---- .config/awesome/services/common.lua | 118 ++++++++++++++++++++++++++++++++ .config/awesome/services/init.lua | 5 +- .config/awesome/services/playerctl.lua | 45 ++++++++++++ .config/awesome/services/wifi.lua | 23 ------- 6 files changed, 165 insertions(+), 53 deletions(-) delete mode 100644 .config/awesome/services/battery.lua delete mode 100644 .config/awesome/services/brightness.lua create mode 100644 .config/awesome/services/common.lua create mode 100644 .config/awesome/services/playerctl.lua delete mode 100644 .config/awesome/services/wifi.lua (limited to '.config/awesome/services') diff --git a/.config/awesome/services/battery.lua b/.config/awesome/services/battery.lua deleted file mode 100644 index c2a7f3e..0000000 --- a/.config/awesome/services/battery.lua +++ /dev/null @@ -1,14 +0,0 @@ -local gtimer = require "gears.timer" -local qfs = require "quarrel.fs" - -gtimer { - timeout = 1, - call_now = true, - autostart = true, - callback = function() - local capacity = qfs.read("/sys/class/power_supply/BAT0/capacity", "n") - local status = qfs.read("/sys/class/power_supply/BAT0/status", "l") - - awesome.emit_signal("services::battery", capacity, status) - end -} diff --git a/.config/awesome/services/brightness.lua b/.config/awesome/services/brightness.lua deleted file mode 100644 index b8d07e7..0000000 --- a/.config/awesome/services/brightness.lua +++ /dev/null @@ -1,13 +0,0 @@ -local gtimer = require "gears.timer" -local qfs = require "quarrel.fs" - -gtimer { - timeout = 1, - call_now = true, - autostart = true, - callback = function() - local brightness = qfs.read("/sys/class/backlight/amdgpu_bl0/actual_brightness", "n") - - awesome.emit_signal("services::brightness", brightness) - end -} diff --git a/.config/awesome/services/common.lua b/.config/awesome/services/common.lua new file mode 100644 index 0000000..07300db --- /dev/null +++ b/.config/awesome/services/common.lua @@ -0,0 +1,118 @@ +local qfs = require "quarrel.fs" +local gfs = require "gears.filesystem" +local qservice = require "quarrel.service" +local qjson = require "quarrel.json" +local qnative = require "quarrel.native" +local gcolor = require "gears.color" +local qmath = require "quarrel.math" +local phosphor = require "assets.phosphor" +local qvars = require "quarrel.vars" + +-- follows the format `service = { provider, icon_provider }` +local services = { + audio = { + -- volume, muted + function() + if not gfs.file_readable("/tmp/wp_audio_status") then + awesome.emit_signal("services::audio", -1, false) + return + end + local audio_status = qjson.decode(qfs.read("/tmp/wp_audio_status")) + local default_sink = audio_status["alsa_output.usb-046d_G435_Wireless_Gaming_Headset_V001008005.1-01.analog-stereo"] + + if not default_sink then + return nil, false + end + + return default_sink.volume, default_sink.muted + end, + function(volume, muted) + if muted or not volume then + return gcolor.recolor_image(phosphor["speaker_simple_x_fill"], qvars.colors.red) + end + + local icon_data = qmath.step_value(volume, { + { 0, "slash" }, + { 25, "none" }, + { 50, "low" }, + { 75, "high" }, + { 100 } + }) + + gcolor.recolor_image(phosphor["speaker_simple_" .. icon_data .. "_fill"], qvars.colors.fg) + end + }, + battery = { + -- capacity, status + function() + return qfs.read("/sys/class/power_supply/BAT0/capacity", "n"), qfs.read("/sys/class/power_supply/BAT0/status", "l") + end, + function(capacity, status) + local icon_data = status == "Charging" and { "charging", "green" } or qmath.step_value(capacity, { + { 0, { "empty", "red" } }, + { 20, { "low", "red" } }, + { 40, { "medium", "yellow" } }, + { 60, { "high", "green" } }, + { 80, { "full", "green" } }, + { 100 } + }) + + return gcolor.recolor_image(phosphor["battery_vertical_" .. icon_data[1] .. "_fill"], qvars.colors[icon_data[2]]) + end + }, + brightness = { + -- brightness + function() + return qfs.read("/sys/class/backlight/amdgpu_bl0/actual_brightness", "n") + end, + function(brightness) + local icon_data = qmath.step_value(brightness, { + { 0, "cloud_moon" }, + { 51, "moon" }, + { 102, "sun_horizon" }, + { 153, "sun_dim" }, + { 204, "sun" }, + { 255 } + }) + + return gcolor.recolor_image(phosphor[icon_data .. "_fill"], qvars.colors.fg) + end + }, + wifi = { + -- essid, strength, connected + function() + local lines = {} + + for line in io.lines("/proc/net/wireless") do + table.insert(lines, line) + end + + if not lines[3] then + return nil, 0, false + end + + local strength = lines[3]:match("^%s*(.*)"):match("^.-%s+.-%s+.-(%S+)%.") + + return qnative.get_essid(), math.floor(tonumber(strength) * 10 / 7), true + end, + function(_, strength, connected) + if not connected then + return gcolor.recolor_image(phosphor.wifi_x_fill, qvars.colors.red) + end + + local icon_data = qmath.step_value(strength, { + { 0, { "none", "red" } }, + { 25, { "low", "yellow" } }, + { 50, { "medium", "yellow" } }, + { 75, { "high", "green" } }, + { 100 } + }) + + return gcolor.recolor_image(phosphor["wifi_" .. icon_data[1] .. "_fill"], qvars.colors[icon_data[2]]) + end + } +} + +for name, service in pairs(services) do + qservice.register(name, service[1], service[2]) +end diff --git a/.config/awesome/services/init.lua b/.config/awesome/services/init.lua index 23f6dd3..82e2096 100644 --- a/.config/awesome/services/init.lua +++ b/.config/awesome/services/init.lua @@ -1,3 +1,2 @@ -require "services.battery" -require "services.brightness" -require "services.wifi" +require "services.playerctl" +require "services.common" diff --git a/.config/awesome/services/playerctl.lua b/.config/awesome/services/playerctl.lua new file mode 100644 index 0000000..01598f8 --- /dev/null +++ b/.config/awesome/services/playerctl.lua @@ -0,0 +1,45 @@ +local playerctl = require "lib.bling.signal.playerctl".lib { + player = { "spotify", "ncmpcpp", "%any" } +} + +playerctl:connect_signal("metadata", function(...) + awesome.emit_signal("services::playerctl::metadata", ...) +end) + +playerctl:connect_signal("position", function(...) + awesome.emit_signal("services::playerctl::position", ...) +end) + +playerctl:connect_signal("playback_status", function(...) + awesome.emit_signal("services::playerctl::playback_status", ...) +end) + +playerctl:connect_signal("seeked", function(...) + awesome.emit_signal("services::playerctl::seeked", ...) +end) + +playerctl:connect_signal("volume", function(...) + awesome.emit_signal("services::playerctl::volume", ...) +end) + +playerctl:connect_signal("loop_status", function(...) + awesome.emit_signal("services::playerctl::loop_status", ...) +end) + +playerctl:connect_signal("shuffle", function(...) + awesome.emit_signal("services::playerctl::shuffle", ...) +end) + +playerctl:connect_signal("exit", function(...) + awesome.emit_signal("services::playerctl::exit", ...) +end) + +playerctl:connect_signal("exit", function(...) + awesome.emit_signal("services::playerctl::exit", ...) +end) + +playerctl:connect_signal("no_players", function() + awesome.emit_signal("services::playerctl::no_players") +end) + +return playerctl diff --git a/.config/awesome/services/wifi.lua b/.config/awesome/services/wifi.lua deleted file mode 100644 index f6b67f1..0000000 --- a/.config/awesome/services/wifi.lua +++ /dev/null @@ -1,23 +0,0 @@ -local gtimer = require "gears.timer" - -gtimer { - timeout = 1, - call_now = true, - autostart = true, - callback = function() - local lines = {} - - for line in io.lines("/proc/net/wireless") do - table.insert(lines, line) - end - - if not lines[3] then - awesome.emit_signal("services::wifi", 0, false) - return - end - - local strength = lines[3]:match("^%s*(.*)"):match("^.-%s+.-%s+.-(%S+)%.") - - awesome.emit_signal("services::wifi", math.floor(tonumber(strength) * 10 / 7), true) - end -} -- cgit v1.2.3