From ca488f4fb60a7fb59f932471bd34af12578caf7c Mon Sep 17 00:00:00 2001 From: Jas Singh Date: Tue, 18 Jun 2024 01:48:10 -0700 Subject: [PATCH] Fixed systray icons to have reactive sizing and volume icon to properly change when muted/unmuted. --- modules/bar/bar.js | 3 ++- modules/bar/systray/index.js | 2 +- modules/bar/volume/index.js | 19 ++++++++++++------- modules/menus/DropdownMenu.js | 8 +++++--- modules/menus/audio/index.js | 3 +++ modules/menus/media/index.js | 2 ++ scss/bar/audio.scss | 2 +- scss/bar/bluetooth.scss | 2 +- scss/bar/media.scss | 2 +- scss/bar/systray.scss | 4 ++++ scss/bar/workspace.scss | 10 +++++----- style.css | 20 ++++++++++++-------- style.css.map | 2 +- 13 files changed, 50 insertions(+), 29 deletions(-) diff --git a/modules/bar/bar.js b/modules/bar/bar.js index 1c55bc9..8e9d355 100644 --- a/modules/bar/bar.js +++ b/modules/bar/bar.js @@ -7,7 +7,8 @@ import { Volume } from "./volume/index.js"; import { Network } from "./network/index.js"; import { Bluetooth } from "./bluetooth/index.js"; import { BatteryLabel } from "./battery/index.js"; -import { Clock } from "./clock/index.js"; import { SysTray } from "./systray/index.js"; +import { Clock } from "./clock/index.js"; +import { SysTray } from "./systray/index.js"; import { Power } from "./power/index.js"; import { BarItemBox } from "../shared/barItemBox.js"; diff --git a/modules/bar/systray/index.js b/modules/bar/systray/index.js index 4a79be4..a5bd7d7 100644 --- a/modules/bar/systray/index.js +++ b/modules/bar/systray/index.js @@ -13,8 +13,8 @@ const SysTray = () => { return Widget.Button({ cursor: "pointer", child: Widget.Icon({ + class_name: "systray-icon", icon: item.bind("icon"), - size: 18, }), on_primary_click: (_, event) => item.activate(event), on_secondary_click: (_, event) => item.openMenu(event), diff --git a/modules/bar/volume/index.js b/modules/bar/volume/index.js index dcb2b7c..7eb9ca2 100644 --- a/modules/bar/volume/index.js +++ b/modules/bar/volume/index.js @@ -12,17 +12,22 @@ const Volume = () => { }; const getIcon = () => { - const icon = audio.speaker.is_muted - ? 0 - : [101, 66, 34, 1, 0].find( - (threshold) => threshold <= audio.speaker.volume * 100, - ); + const icon = Utils.merge( + [audio.speaker.bind("is_muted"), audio.speaker.bind("volume")], + (isMuted, vol) => { + return isMuted + ? 0 + : [101, 66, 34, 1, 0].find((threshold) => threshold <= vol * 100); + }, + ); - return icons[icon]; + console.log(icon); + + return icon.as((i) => icons[i]); }; const volIcn = Widget.Label({ - label: audio.speaker.bind("volume").as(() => getIcon()), + label: getIcon(), class_name: "bar-volume_icon", }); diff --git a/modules/menus/DropdownMenu.js b/modules/menus/DropdownMenu.js index 9a85e66..84a50ef 100644 --- a/modules/menus/DropdownMenu.js +++ b/modules/menus/DropdownMenu.js @@ -9,7 +9,7 @@ export const Padding = (name) => setup: (w) => w.on("button-press-event", () => App.toggleWindow(name)), }); -const moveBoxToCursor = (self, minWidth, minHeight) => { +const moveBoxToCursor = (self, minWidth, minHeight, fixed) => { globalMousePos.connect("changed", ({ value }) => { let monWidth = hyprland.monitors[hyprland.active.monitor.id].width; let monHeight = hyprland.monitors[hyprland.active.monitor.id].height; @@ -19,7 +19,8 @@ const moveBoxToCursor = (self, minWidth, minHeight) => { [monWidth, monHeight] = [monHeight, monWidth]; } - let marginRight = monWidth - value[0] - minWidth / 2; + let marginRight = monWidth - minWidth / 2; + marginRight = fixed ? marginRight - monWidth / 2 : marginRight - value[0]; let marginLeft = monWidth - minWidth - marginRight; if (marginRight < 0) { @@ -46,6 +47,7 @@ export default ({ minWidth = 375, minHeight = 200, exclusivity = "ignore", + fixed = false, ...props }) => Widget.Window({ @@ -68,7 +70,7 @@ export default ({ return true; }, setup: (self) => { - moveBoxToCursor(self, minWidth, minHeight); + moveBoxToCursor(self, minWidth, minHeight, fixed); }, child: Widget.Box({ css: "padding: 1px; margin: -1px;", diff --git a/modules/menus/audio/index.js b/modules/menus/audio/index.js index 32f2ab4..88ddf68 100644 --- a/modules/menus/audio/index.js +++ b/modules/menus/audio/index.js @@ -2,6 +2,9 @@ const audio = await Service.import("audio"); import DropdownMenu from "../DropdownMenu.js"; export default () => { + audio.connect("changed", val => { + // console.log(JSON.stringify(val, null, 2)); + }) const renderPlaybacks = (playbackDevices) => { return playbackDevices.map((device) => { if (device.description === "Dummy Output") { diff --git a/modules/menus/media/index.js b/modules/menus/media/index.js index b7410be..daf3bc5 100644 --- a/modules/menus/media/index.js +++ b/modules/menus/media/index.js @@ -5,10 +5,12 @@ export default () => { return DropdownMenu({ name: "mediamenu", transition: "crossfade", + fixed: true, child: Widget.Box({ class_name: "menu-items", child: Widget.Box({ vertical: true, + hexpand: true, class_name: "menu-items-container", children: [ Widget.Box({ diff --git a/scss/bar/audio.scss b/scss/bar/audio.scss index 7886cb2..6fc2507 100644 --- a/scss/bar/audio.scss +++ b/scss/bar/audio.scss @@ -1,7 +1,7 @@ @import '../colors'; .bar-volume_icon { - font-size: 1.3rem; + font-size: 1.3em; color: $peach; } diff --git a/scss/bar/bluetooth.scss b/scss/bar/bluetooth.scss index f0c9512..5f45c26 100644 --- a/scss/bar/bluetooth.scss +++ b/scss/bar/bluetooth.scss @@ -1,7 +1,7 @@ @import '../colors'; .bar-bt_icon { - font-size: 1.3rem; + font-size: 1.2em; color: $sky; } diff --git a/scss/bar/media.scss b/scss/bar/media.scss index b90bbf1..8539a92 100644 --- a/scss/bar/media.scss +++ b/scss/bar/media.scss @@ -6,6 +6,6 @@ } .bar-media_icon { - font-size: 1.3rem; + font-size: 1.2em; color: $green; } diff --git a/scss/bar/systray.scss b/scss/bar/systray.scss index c9733a9..6ac51c8 100644 --- a/scss/bar/systray.scss +++ b/scss/bar/systray.scss @@ -24,3 +24,7 @@ .systray-menu check:checked { background-color: $lavender; } + +.systray-icon { + font-size: 1.3em; +} diff --git a/scss/bar/workspace.scss b/scss/bar/workspace.scss index a30f54b..25bf582 100644 --- a/scss/bar/workspace.scss +++ b/scss/bar/workspace.scss @@ -3,8 +3,8 @@ .workspaces { label { font-size: 0rem; - min-width: 0.9rem; - min-height: 0.9rem; + min-width: 1rem; + min-height: 1rem; border-radius: 1.9rem * .6; margin: 0rem 0.5rem * .5; transition: 300ms * .5; @@ -12,14 +12,14 @@ &.occupied { background-color: $yellow; - min-width: 0.9rem; - min-height: 0.9rem; + min-width: 1rem; + min-height: 1rem; } &.active { background-color: $sky; min-width: 2.2rem; - min-height: 0.9rem; + min-height: 1rem; } } } diff --git a/style.css b/style.css index 0c81cd7..2240cc7 100644 --- a/style.css +++ b/style.css @@ -281,7 +281,7 @@ spinner:checked { } .bar-volume_icon { - font-size: 1.3rem; + font-size: 1.3em; color: #fab387; } @@ -295,7 +295,7 @@ spinner:checked { } .bar-media_icon { - font-size: 1.3rem; + font-size: 1.2em; color: #a6e3a1; } @@ -304,7 +304,7 @@ spinner:checked { } .bar-bt_icon { - font-size: 1.3rem; + font-size: 1.2em; color: #89dceb; } @@ -329,8 +329,8 @@ spinner:checked { .workspaces label { font-size: 0rem; - min-width: 0.9rem; - min-height: 0.9rem; + min-width: 1rem; + min-height: 1rem; border-radius: 1.14rem; margin: 0rem 0.25rem; transition: 150ms; @@ -338,13 +338,13 @@ spinner:checked { } .workspaces label.occupied { background-color: #f9e2af; - min-width: 0.9rem; - min-height: 0.9rem; + min-width: 1rem; + min-height: 1rem; } .workspaces label.active { background-color: #89dceb; min-width: 2.2rem; - min-height: 0.9rem; + min-height: 1rem; } .workspaces label:not(:first-child) { @@ -381,6 +381,10 @@ spinner:checked { background-color: #b4befe; } +.systray-icon { + font-size: 1.3em; +} + .bar-power_label { color: #f38ba8; margin-right: 0.2rem; diff --git a/style.css.map b/style.css.map index 9c62308..aa08b7d 100644 --- a/style.css.map +++ b/style.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["scss/main.scss","scss/common/common.scss","scss/colors.scss","scss/common/widget-button.scss","scss/bar/menu.scss","scss/bar/audio.scss","scss/bar/media.scss","scss/bar/network.scss","scss/bar/bluetooth.scss","scss/bar/clock.scss","scss/bar/workspace.scss","scss/bar/window_title.scss","scss/bar/systray.scss","scss/bar/power.scss","scss/bar/bar.scss","scss/menus/menu.scss","scss/menus/power.scss","scss/common/floating-widget.scss","scss/menus/audiomenu.scss","scss/menus/bluetooth.scss","scss/notifications/popups.scss"],"names":[],"mappings":"AAAA;EACE;EACA;EACA;EACA;;;ACJF;EACE;EACA;EACA,kBCFgB;EDGhB;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACI,kBChBW;;ADkBf;EACE,OCnBa;;ADqBf;EACE;EACA;EACA;EACA;;AAGJ;EACE;EACA;EACA,kBC/Be;;;ADmCnB;EACE;EACA;EACA;EACA,OCvCiB;;;AD0CnB;EACE;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;AAAA;EAEE;EACA;EACA;EACA;EACA;EACA,kBC9DiB;ED+DjB;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;AAAA;EAEE;EACA,kBC9EgB;;;ADiFlB;AAAA;EAEE;EACA,kBCpFgB;;;ADuFlB;AAAA;AAAA;EAGE,OC1FgB;ED2FhB,kBC7CW;;;ADgDb;AAAA;AAAA;EAGE;EACA,kBCpDW;;;ADuDb;AAAA;AAAA;EAGE;EACA,kBC3DW;;;AD8Db;EACE;EACA;EACA;EACA;EACA,kBChHiB;EDiHjB;EACA;EACA;;;AAGF;EACE,kBC1EW;;;AD6Eb;EACE;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA,kBCvIc;EDwId;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;EACA;EACA,kBChKiB;;;ADmKnB;EACE;EACA,kBCxHW;;;AD2Hb;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA,OC1IW;ED2IX,kBCzLgB;ED0LhB;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE,kBC1MgB;ED2MhB,OC5Mc;ED6Md;;;AAGF;EACE;EACA;EACA,kBCjNiB;;;ADoNnB;EACE;IACE;;;AAIJ;EACE;EACA;EACA;;;AAGF;EACE;EACA;;;AE/NF;EACE,YDmCM;EClCN;EACA;EACA;EACA;EACA;EACA;EACA;EACA,cD2BM;EC1BN;EACA;;AAEA;EACE;EACA,cDSO;ECRP;;AAGF;EAEE;EACA,cDEO;;ACCT;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","file":"style.css"} \ No newline at end of file +{"version":3,"sourceRoot":"","sources":["scss/main.scss","scss/common/common.scss","scss/colors.scss","scss/common/widget-button.scss","scss/bar/menu.scss","scss/bar/audio.scss","scss/bar/media.scss","scss/bar/network.scss","scss/bar/bluetooth.scss","scss/bar/clock.scss","scss/bar/workspace.scss","scss/bar/window_title.scss","scss/bar/systray.scss","scss/bar/power.scss","scss/bar/bar.scss","scss/menus/menu.scss","scss/menus/power.scss","scss/common/floating-widget.scss","scss/menus/audiomenu.scss","scss/menus/bluetooth.scss","scss/notifications/popups.scss"],"names":[],"mappings":"AAAA;EACE;EACA;EACA;EACA;;;ACJF;EACE;EACA;EACA,kBCFgB;EDGhB;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACI,kBChBW;;ADkBf;EACE,OCnBa;;ADqBf;EACE;EACA;EACA;EACA;;AAGJ;EACE;EACA;EACA,kBC/Be;;;ADmCnB;EACE;EACA;EACA;EACA,OCvCiB;;;AD0CnB;EACE;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;AAAA;EAEE;EACA;EACA;EACA;EACA;EACA,kBC9DiB;ED+DjB;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;AAAA;EAEE;EACA,kBC9EgB;;;ADiFlB;AAAA;EAEE;EACA,kBCpFgB;;;ADuFlB;AAAA;AAAA;EAGE,OC1FgB;ED2FhB,kBC7CW;;;ADgDb;AAAA;AAAA;EAGE;EACA,kBCpDW;;;ADuDb;AAAA;AAAA;EAGE;EACA,kBC3DW;;;AD8Db;EACE;EACA;EACA;EACA;EACA,kBChHiB;EDiHjB;EACA;EACA;;;AAGF;EACE,kBC1EW;;;AD6Eb;EACE;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA,kBCvIc;EDwId;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;EACA;EACA,kBChKiB;;;ADmKnB;EACE;EACA,kBCxHW;;;AD2Hb;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA,OC1IW;ED2IX,kBCzLgB;ED0LhB;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE,kBC1MgB;ED2MhB,OC5Mc;ED6Md;;;AAGF;EACE;EACA;EACA,kBCjNiB;;;ADoNnB;EACE;IACE;;;AAIJ;EACE;EACA;EACA;;;AAGF;EACE;EACA;;;AE/NF;EACE,YDmCM;EClCN;EACA;EACA;EACA;EACA;EACA;EACA;EACA,cD2BM;EC1BN;EACA;;AAEA;EACE;EACA,cDSO;ECRP;;AAGF;EAEE;EACA,cDEO;;ACCT;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","file":"style.css"} \ No newline at end of file