Replace Widget.Icon with Label to fix stuttering icons.

This commit is contained in:
Jas Singh
2024-07-13 22:09:14 -07:00
parent 3c2abcc9ae
commit 58f6e02b8d
9 changed files with 69 additions and 20 deletions

View File

@@ -1,4 +1,5 @@
import { connectedControls } from "./connectedControls.js";
import { getBluetoothIcon } from "../utils.js";
const devices = (bluetooth, self) => {
return self.hook(bluetooth, () => {
@@ -81,13 +82,14 @@ const devices = (bluetooth, self) => {
hpack: "start",
class_name: "menu-button-container",
children: [
Widget.Icon({
vpack: "center",
Widget.Label({
vpack: "start",
class_name: `menu-button-icon bluetooth ${conDevNames.includes(device.address) ? "active" : ""}`,
icon: `${device["icon-name"]}-symbolic`,
label: getBluetoothIcon(`${device["icon-name"]}-symbolic`),
}),
Widget.Box({
vertical: true,
vpack: "center",
children: [
Widget.Label({
vpack: "center",

View File

@@ -14,7 +14,7 @@ const label = (bluetooth) => {
children: [
Widget.Label({
class_name: "menu-label",
vpack: "start",
vpack: "center",
hpack: "start",
label: "Bluetooth",
}),

View File

@@ -0,0 +1,31 @@
const getBluetoothIcon = (iconName) => {
const deviceIconMap = [
["^audio-card*", "󰎄"],
["^audio-headphones*", "󰋋"],
["^audio-headset*", "󰋎"],
["^audio-input*", "󰍬"],
["^audio-speakers*", "󰓃"],
["^bluetooth*", "󰂯"],
["^camera*", "󰄀"],
["^computer*", "󰟀"],
["^input-gaming*", "󰍬"],
["^input-keyboard*", "󰌌"],
["^input-mouse*", "󰍽"],
["^input-tablet*", "󰓶"],
["^media*", "󱛟"],
["^modem*", "󱂇"],
["^network*", "󱂇"],
["^phone*", "󰄞"],
["^printer*", "󰐪"],
["^scanner*", "󰚫"],
["^video-camera*", "󰕧"],
];
const foundMatch = deviceIconMap.find((icon) =>
RegExp(icon[0]).test(iconName.toLowerCase()),
);
return foundMatch ? foundMatch[1] : "󰂯";
};
export { getBluetoothIcon };