aboutsummaryrefslogtreecommitdiff
path: root/.config/awesome/services
diff options
context:
space:
mode:
Diffstat (limited to '.config/awesome/services')
-rw-r--r--.config/awesome/services/battery.lua14
-rw-r--r--.config/awesome/services/brightness.lua13
-rw-r--r--.config/awesome/services/common.lua118
-rw-r--r--.config/awesome/services/init.lua5
-rw-r--r--.config/awesome/services/playerctl.lua45
-rw-r--r--.config/awesome/services/wifi.lua23
6 files changed, 165 insertions, 53 deletions
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
-}