diff --git a/assets/icons/caelestia-bluetooth-device-symbolic.svg b/assets/icons/caelestia-bluetooth-device-symbolic.svg
new file mode 100644
index 00000000..86b126fa
--- /dev/null
+++ b/assets/icons/caelestia-bluetooth-device-symbolic.svg
@@ -0,0 +1,6 @@
+
+
\ No newline at end of file
diff --git a/scss/bar.scss b/scss/bar.scss
index 12c8df39..0ceac943 100644
--- a/scss/bar.scss
+++ b/scss/bar.scss
@@ -84,6 +84,15 @@
.status-icons {
color: scheme.$rosewater;
+
+ .bluetooth {
+ @include lib.spacing(10);
+
+ // The spacing doesn't look right for some reason so this
+ & > :first-child:not(:last-child) {
+ margin-right: lib.s(5);
+ }
+ }
}
.pkg-updates {
diff --git a/src/modules/bar.tsx b/src/modules/bar.tsx
index 97787fc9..fbcfb104 100644
--- a/src/modules/bar.tsx
+++ b/src/modules/bar.tsx
@@ -324,49 +324,72 @@ const Network = () => (
);
-const Bluetooth = () => (
+const BluetoothDevice = (device: AstalBluetooth.Device) => (
);
+const Bluetooth = () => (
+
+
+ {bind(AstalBluetooth.get_default(), "devices").as(d => d.map(BluetoothDevice))}
+
+);
+
const StatusIcons = () => (