Rewrote bluetooth widget with bdus. Added default song_info icon for artist_art
This commit is contained in:
@@ -16,4 +16,5 @@ require("src.core.rules")
|
||||
require("src.bindings.global_buttons")
|
||||
require("src.bindings.bind_to_tags")
|
||||
require("src.modules.init")
|
||||
--require("src.tools.auto_starter")(user_vars.autostart)
|
||||
require("src.tools.auto_starter")(user_vars.autostart)
|
||||
require("src.dbus.bluetooth_dbus")()
|
||||
|
||||
1
awesome/src/assets/icons/notifications/spotify.svg
Normal file
1
awesome/src/assets/icons/notifications/spotify.svg
Normal file
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg fill="#414141" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="24" height="24" viewBox="0 0 24 24"><path d="M17.9,10.9C14.7,9 9.35,8.8 6.3,9.75C5.8,9.9 5.3,9.6 5.15,9.15C5,8.65 5.3,8.15 5.75,8C9.3,6.95 15.15,7.15 18.85,9.35C19.3,9.6 19.45,10.2 19.2,10.65C18.95,11 18.35,11.15 17.9,10.9M17.8,13.7C17.55,14.05 17.1,14.2 16.75,13.95C14.05,12.3 9.95,11.8 6.8,12.8C6.4,12.9 5.95,12.7 5.85,12.3C5.75,11.9 5.95,11.45 6.35,11.35C10,10.25 14.5,10.8 17.6,12.7C17.9,12.85 18.05,13.35 17.8,13.7M16.6,16.45C16.4,16.75 16.05,16.85 15.75,16.65C13.4,15.2 10.45,14.9 6.95,15.7C6.6,15.8 6.3,15.55 6.2,15.25C6.1,14.9 6.35,14.6 6.65,14.5C10.45,13.65 13.75,14 16.35,15.6C16.7,15.75 16.75,16.15 16.6,16.45M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z" /></svg>
|
||||
|
After Width: | Height: | Size: 962 B |
@@ -1,52 +1,124 @@
|
||||
local gears = require("gears")
|
||||
local dbus_proxy = require("dbus_proxy")
|
||||
local lgi = require("lgi")
|
||||
local naughty = require("naughty")
|
||||
|
||||
return function()
|
||||
|
||||
local function get_device_info(self, object_path)
|
||||
local function get_device_info(object_path)
|
||||
if object_path ~= nil and object_path:match("/org/bluez/hci0/dev") then
|
||||
local device_proxy = dbus_proxy.Proxy:new {
|
||||
local device = dbus_proxy.Proxy:new {
|
||||
bus = dbus_proxy.Bus.SYSTEM,
|
||||
name = "org.bluez",
|
||||
interface = "org.bluez.Device1",
|
||||
path = object_path
|
||||
}
|
||||
|
||||
local bat_proxy = dbus_proxy.Proxy:new {
|
||||
local battery = dbus_proxy.Proxy:new {
|
||||
bus = dbus_proxy.Bus.SYSTEM,
|
||||
name = "org.bluez",
|
||||
interface = "org.bluez.Battery1",
|
||||
path = object_path
|
||||
}
|
||||
|
||||
local device_properties_proxy = dbus_proxy.Proxy:new {
|
||||
local device_properties = dbus_proxy.Proxy:new {
|
||||
bus = dbus_proxy.Bus.SYSTEM,
|
||||
name = "org.bluez",
|
||||
interface = "org.freedesktop.DBus.Properties",
|
||||
path = object_path
|
||||
}
|
||||
|
||||
if device_proxy.Name ~= "" and device_proxy.Name ~= nil then
|
||||
--[[ device_properties_proxy:connect_signal("PropertiesChanged", function()
|
||||
awesome.emit_signal(object_path .. "_updated", device_proxy)
|
||||
naughty.notify({ title = "hi" })
|
||||
end) ]]
|
||||
naughty.notify({ title = device_proxy.Name })
|
||||
if device.Name ~= "" and device.Name ~= nil then
|
||||
device_properties:connect_signal(function()
|
||||
naughty.notification {
|
||||
title = "Bluetooth Device Connected",
|
||||
message = device.Name,
|
||||
icon = require("awful").util.getdir("config") .. "src/assets/icons/bluetooth/bluetooth.svg"
|
||||
}
|
||||
awesome.emit_signal("device_added", object_path, device, battery)
|
||||
end, "PropertiesChanged")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local ret = dbus_proxy.Proxy:new {
|
||||
local ObjectManager = dbus_proxy.Proxy:new {
|
||||
bus = dbus_proxy.Bus.SYSTEM,
|
||||
name = "org.bluez",
|
||||
interface = "org.freedesktop.Dbus.ObjectManager",
|
||||
interface = "org.freedesktop.DBus.ObjectManager",
|
||||
path = "/"
|
||||
}
|
||||
|
||||
local objects = ret:GetManagedObjects()
|
||||
local Adapter = dbus_proxy.Proxy:new {
|
||||
bus = dbus_proxy.Bus.SYSTEM,
|
||||
name = "org.bluez",
|
||||
interface = "org.bluez.Adapter1",
|
||||
path = "/org/bluez/hci0"
|
||||
}
|
||||
|
||||
local AdapterProperties = dbus_proxy.Proxy:new {
|
||||
bus = dbus_proxy.Bus.SYSTEM,
|
||||
name = "org.bluez",
|
||||
interface = "org.freedesktop.DBus.Properties",
|
||||
path = "/org/bluez/hci0"
|
||||
}
|
||||
|
||||
ObjectManager:connect_signal(
|
||||
function(interface)
|
||||
get_device_info(interface)
|
||||
end,
|
||||
"InterfacesAdded"
|
||||
)
|
||||
|
||||
ObjectManager:connect_signal(
|
||||
function(interface)
|
||||
awesome.emit_signal("device_removed", interface)
|
||||
end,
|
||||
"InterfacesRemoved"
|
||||
)
|
||||
|
||||
Adapter:connect_signal(
|
||||
function(data)
|
||||
if data.Powered ~= nil then
|
||||
awesome.emit_signal("state", data.Powered)
|
||||
end
|
||||
end,
|
||||
"PropertiesChanged"
|
||||
)
|
||||
|
||||
AdapterProperties:connect_signal(
|
||||
function(data)
|
||||
if data.Powered ~= nil then
|
||||
awesome.emit_signal("state", data.Powered)
|
||||
if data.Powered then
|
||||
Adapter:StartDiscovery()
|
||||
end
|
||||
end
|
||||
end,
|
||||
"PropertiesChanged"
|
||||
)
|
||||
|
||||
awesome.connect_signal("toggle_bluetooth",
|
||||
function()
|
||||
local is_powered = Adapter.Powered
|
||||
Adapter:Set(
|
||||
"org.bluez.Adapter1",
|
||||
"Powered",
|
||||
lgi.GLib.Variant("b", not is_powered)
|
||||
)
|
||||
Adapter.Powered = { signature = "b", value = not is_powered }
|
||||
awesome.emit_signal("state", Adapter.Powered)
|
||||
end)
|
||||
|
||||
gears.timer.delayed_call(
|
||||
function()
|
||||
local objects = ObjectManager:GetManagedObjects()
|
||||
|
||||
for object_path, _ in pairs(objects) do
|
||||
get_device_info(ret, object_path)
|
||||
get_device_info(object_path)
|
||||
end
|
||||
|
||||
awesome.emit_signal("state", Adapter.Powered)
|
||||
end
|
||||
)
|
||||
|
||||
end
|
||||
|
||||
@@ -40,90 +40,21 @@ return function()
|
||||
end,
|
||||
widget = wibox.container.background
|
||||
}
|
||||
|
||||
local bluetooth_tooltip = awful.tooltip {
|
||||
objects = { bluetooth_widget },
|
||||
text = "",
|
||||
mode = "inside",
|
||||
preferred_alignments = "middle",
|
||||
margins = dpi(10)
|
||||
}
|
||||
|
||||
local bluetooth_state = "off"
|
||||
local connected_device = "nothing"
|
||||
|
||||
awful.widget.watch(
|
||||
"rfkill list bluetooth",
|
||||
5,
|
||||
function(_, stdout)
|
||||
local icon = icondir .. "bluetooth"
|
||||
if stdout:match('Soft blocked: yes') or stdout:gsub("\n", "") == '' then
|
||||
icon = icon .. "-off"
|
||||
bluetooth_state = "off"
|
||||
bluetooth_tooltip:set_text("Bluetooth is turned " .. bluetooth_state .. "\n")
|
||||
else
|
||||
icon = icon .. "-on"
|
||||
bluetooth_state = "on"
|
||||
awful.spawn.easy_async_with_shell(
|
||||
'./.config/awesome/src/scripts/bt.sh',
|
||||
function(stdout2)
|
||||
if stdout2 == nil or stdout2:gsub("\n", "") == "" then
|
||||
bluetooth_tooltip:set_text("Bluetooth is turned " .. bluetooth_state .. "\n" .. "You are currently not connected")
|
||||
else
|
||||
connected_device = stdout2:gsub("%(", ""):gsub("%)", "")
|
||||
bluetooth_tooltip:set_text("Bluetooth is turned " .. bluetooth_state .. "\n" .. "You are currently connected to:\n" .. connected_device)
|
||||
end
|
||||
end
|
||||
)
|
||||
end
|
||||
bluetooth_widget.icon_margin.icon_layout.icon:set_image(gears.color.recolor_image(icon .. ".svg", color["Grey900"]))
|
||||
end,
|
||||
bluetooth_widget
|
||||
)
|
||||
|
||||
-- Signals
|
||||
-- Hover signal to change color when mouse is over
|
||||
Hover_signal(bluetooth_widget, color["Blue200"], color["Grey900"])
|
||||
|
||||
awesome.connect_signal("state", function(state)
|
||||
if state then
|
||||
bluetooth_widget:get_children_by_id("icon")[1]:set_image(gears.color.recolor_image(icondir .. "bluetooth-on.svg", color["Grey900"]))
|
||||
else
|
||||
bluetooth_widget:get_children_by_id("icon")[1]:set_image(gears.color.recolor_image(icondir .. "bluetooth-off.svg", color["Grey900"]))
|
||||
end
|
||||
end)
|
||||
|
||||
bluetooth_widget:connect_signal(
|
||||
"button::press",
|
||||
function()
|
||||
awful.spawn.easy_async_with_shell(
|
||||
"rfkill list bluetooth",
|
||||
function(stdout)
|
||||
if stdout:gsub("\n", "") ~= '' then
|
||||
if bluetooth_state == "off" then
|
||||
awful.spawn.easy_async_with_shell(
|
||||
[[
|
||||
rfkill unblock bluetooth
|
||||
sleep 1
|
||||
bluetoothctl power on
|
||||
]] ,
|
||||
function()
|
||||
naughty.notification {
|
||||
title = "System Notification",
|
||||
app_name = "Bluetooth",
|
||||
message = "Bluetooth activated"
|
||||
}
|
||||
end
|
||||
)
|
||||
else
|
||||
awful.spawn.easy_async_with_shell(
|
||||
[[
|
||||
bluetoothctl power off
|
||||
rfkill block bluetooth
|
||||
]] ,
|
||||
function()
|
||||
naughty.notification {
|
||||
title = "System Notification",
|
||||
app_name = "Bluetooth",
|
||||
message = "Bluetooth deactivated"
|
||||
}
|
||||
end
|
||||
)
|
||||
end
|
||||
end
|
||||
end
|
||||
)
|
||||
awesome.emit_signal("toggle_bluetooth")
|
||||
end
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user