From 77811a75a2a201641e0ead0c56765c3edd0502f6 Mon Sep 17 00:00:00 2001 From: Jas Singh Date: Mon, 17 Jun 2024 22:43:04 -0700 Subject: [PATCH] Finished notification popup implementation. --- config.js | 15 ++-- modules/bar/battery/index.js | 2 +- modules/menus/DropdownMenu.js | 24 ++++-- modules/menus/bluetooth/index.js | 1 - modules/notifications/index.js | 121 ++++++++++++++++++------------- scss/menus/bluetooth.scss | 8 -- scss/notifications/popups.scss | 32 +++++--- style.css | 35 +++++---- style.css.map | 2 +- 9 files changed, 135 insertions(+), 105 deletions(-) diff --git a/config.js b/config.js index 20ea81d..4ad7fc2 100644 --- a/config.js +++ b/config.js @@ -28,15 +28,6 @@ const workspaceMonitorMap = { 2: [1,2,3,8,9,10], } -export default { - style: `${App.configDir}/style.css`, - closeWindowDelay: { - sideright: 350, - launcher: 350, - bar0: 350, - }, -}; - App.config({ windows: [ ...MenuWindows, @@ -45,4 +36,10 @@ App.config({ BarAlt(1, workspaceMonitorMap), Bar(2, workspaceMonitorMap), ], + style: `${App.configDir}/style.css`, + closeWindowDelay: { + sideright: 350, + launcher: 350, + bar0: 350, + }, }); diff --git a/modules/bar/battery/index.js b/modules/bar/battery/index.js index f8da7f2..caea477 100644 --- a/modules/bar/battery/index.js +++ b/modules/bar/battery/index.js @@ -17,7 +17,7 @@ const BatteryLabel = () => { class_name: "battery", visible: battery.bind("available"), children: [ - Widget.Icon({ icon }), + // Widget.Icon({ icon }), Widget.LevelBar({ widthRequest: 20, vpack: "center", diff --git a/modules/menus/DropdownMenu.js b/modules/menus/DropdownMenu.js index fca1ed2..67f68a2 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, child) => { +const moveBoxToCursor = (self, minWidth, minHeight) => { globalMousePos.connect("changed", ({ value }) => { let monWidth = hyprland.monitors[hyprland.active.monitor.id].width; let monHeight = hyprland.monitors[hyprland.active.monitor.id].height; @@ -56,7 +56,7 @@ export default ({ keymode: "on-demand", exclusivity, layer: "top", - anchor: ["top", "bottom", "right", "left"], + anchor: ["top"], child: Widget.EventBox({ on_primary_click: () => App.closeWindow(name), on_secondary_click: () => App.closeWindow(name), @@ -68,12 +68,24 @@ export default ({ return true; }, setup: (self) => { - moveBoxToCursor(self, minWidth, minHeight, child); + moveBoxToCursor(self, minWidth, minHeight); }, child: Widget.Box({ - class_name: "dropdown-menu-container", - can_focus: true, - children: [Padding(name), child], + css: "padding: 1px;", + child: Widget.Revealer({ + revealChild: false, + setup: (self) => + self.hook(App, (_, wname, visible) => { + if (wname === name) self.reveal_child = visible; + }), + transition: "crossfade", + transitionDuration: 500, + child: Widget.Box({ + class_name: "dropdown-menu-container", + can_focus: true, + children: [Padding(name), child], + }), + }), }), }), }), diff --git a/modules/menus/bluetooth/index.js b/modules/menus/bluetooth/index.js index 0c40621..ee8780d 100644 --- a/modules/menus/bluetooth/index.js +++ b/modules/menus/bluetooth/index.js @@ -288,7 +288,6 @@ export default () => { child: Widget.Button({ class_name: "menu-icon-button", on_primary_click: () => { - Utils.notify("Yoyo"); Utils.execAsync([ "bash", "-c", diff --git a/modules/notifications/index.js b/modules/notifications/index.js index 697096e..d2498bf 100644 --- a/modules/notifications/index.js +++ b/modules/notifications/index.js @@ -8,6 +8,8 @@ export default () => { class_name: "notifications-window", layer: "top", anchor: ["top", "right"], + monitor: 2, + exclusivity: "ignore", child: Widget.Box({ vertical: true, class_name: "notification-card-container", @@ -17,62 +19,83 @@ export default () => { return; } - return (self.children = notifs.popups.map((notif) => { - return Widget.Box({ - class_name: "notification-card", - children: [ + const imageContainer = (notif) => { + if (notif.image !== undefined) { + return [ Widget.Box({ class_name: "notification-card-image-container", - hpack: "start", + hpack: "center", + vexpand: true, child: Widget.Box({ + hpack: "center", + vexpand: true, class_name: "notification-card-image", css: `background-image: url("${notif.image}")`, }), }), - Widget.Box({ - vertical: true, - hpack: "end", - class_name: "notification-card-content", - children: [ - Widget.Box({ - class_name: "notification-card-header", - children: [ - Widget.Label({ - class_name: "notification-card-header-label", - truncate: "end", - wrap: true, - label: notif["summary"], - }), - ], - }), - Widget.Box({ - class_name: "notification-card-body", - vexpand: true, - children: [ - Widget.Label({ - class_name: "notification-card-body-label", - useMarkup: true, - lines: 3, - wrap: true, - truncate: "end", - label: notif["body"], - }), - ], - }), - Widget.Box({ - class_name: "notification-card-appname", - children: [ - Widget.Label({ - class_name: "notification-card-appname-label", - truncate: "end", - wrap: true, - label: notif["app-name"].toUpperCase(), - }), - ], - }), - ], - }), - ], + ]; + } + + return []; + }; + + return (self.children = notifs.popups.map((notif, index) => { + return Widget.Button({ + on_primary_click: () => { + notifs.CloseNotification(notif.id); + }, + on_secondary_click: () => { + notifs.CloseNotification(notif.id); + }, + child: Widget.Box({ + class_name: "notification-card", + children: [ + ...imageContainer(notif), + Widget.Box({ + vertical: true, + hpack: "end", + class_name: "notification-card-content", + children: [ + Widget.Box({ + class_name: "notification-card-header", + children: [ + Widget.Label({ + class_name: "notification-card-header-label", + truncate: "end", + wrap: true, + label: notif["summary"], + }), + ], + }), + Widget.Box({ + class_name: "notification-card-body", + vexpand: true, + children: [ + Widget.Label({ + class_name: "notification-card-body-label", + useMarkup: true, + lines: 2, + wrap: true, + truncate: "end", + label: notif["body"], + }), + ], + }), + Widget.Box({ + class_name: "notification-card-appname", + children: [ + Widget.Label({ + class_name: "notification-card-appname-label", + truncate: "end", + wrap: true, + label: notif["app-name"].toUpperCase(), + }), + ], + }), + ], + }), + ], + }), }); })); }); diff --git a/scss/menus/bluetooth.scss b/scss/menus/bluetooth.scss index 6479d9e..79f207d 100644 --- a/scss/menus/bluetooth.scss +++ b/scss/menus/bluetooth.scss @@ -42,14 +42,6 @@ margin-left: 2.1rem; } -.search-devices-container { - min-height: 8rem; -} - -.empty-bt-devices-container { - margin-top: 2rem; -} - .bluetooth-isconnecting { color: $sky; } diff --git a/scss/notifications/popups.scss b/scss/notifications/popups.scss index c82163f..9573f3d 100644 --- a/scss/notifications/popups.scss +++ b/scss/notifications/popups.scss @@ -1,14 +1,23 @@ @import "../colors"; +.notifications-window { + margin-top: 3.5rem; +} + .notification-card { color: $text; background: $mantle; - margin-top: 0.5rem; margin-right: 0.5rem; border: 0.15rem solid $lavender; - min-width: 32rem; - min-height: 7rem; + min-width: 25rem; + min-height: 6rem; border-radius: 0.8rem; + &:first-child { + margin-top: 3.5rem; + } + &:not(:first-child) { + margin-top: 1.5rem; + } } .notification-card-container { @@ -17,18 +26,17 @@ .notification-card-image-container { - margin: 1.5rem 0.75rem; + margin: 0.5rem 0.75rem; min-width: 4rem; min-height: 4rem; - // border: 0.15rem solid $surface2; border-radius: 0.7rem; } .notification-card-image { - min-width: 4rem; - min-height: 4rem; - // padding: 1rem 1rem; + border-radius: 0.5rem; + min-width: 3rem; + min-height: 3rem; + padding: 1rem 1rem; margin: 0.5rem 0rem; - margin-left: 0.5rem; background-size: contain; background-repeat: no-repeat; } @@ -37,19 +45,19 @@ min-width: 3.5rem; min-height: 3.5rem; padding: 0.6rem 0.6rem; - margin: 0.2rem 0rem; + // margin: 0.2rem 0rem; margin-right: 1rem; } .notification-card-appname-label { - margin-top: 0.4rem; + // margin-top: 0.4rem; font-size: 0.9rem; color: $pink; } .notification-card-header-label { font-size: 1.15rem; - margin-bottom: 0.25rem; + // margin-bottom: 0.25rem; color: $lavender; } diff --git a/style.css b/style.css index c0a87df..e285169 100644 --- a/style.css +++ b/style.css @@ -826,45 +826,47 @@ window#powermenu .powermenu.box { margin-left: 2.1rem; } -.search-devices-container { - min-height: 8rem; -} - -.empty-bt-devices-container { - margin-top: 2rem; -} - .bluetooth-isconnecting { color: #89dceb; } +.notifications-window { + margin-top: 3.5rem; +} + .notification-card { color: #cdd6f4; background: #181825; - margin-top: 0.5rem; margin-right: 0.5rem; border: 0.15rem solid #b4befe; - min-width: 32rem; - min-height: 7rem; + min-width: 25rem; + min-height: 6rem; border-radius: 0.8rem; } +.notification-card:first-child { + margin-top: 3.5rem; +} +.notification-card:not(:first-child) { + margin-top: 1.5rem; +} .notification-card-container { padding: 1px; } .notification-card-image-container { - margin: 1.5rem 0.75rem; + margin: 0.5rem 0.75rem; min-width: 4rem; min-height: 4rem; border-radius: 0.7rem; } .notification-card-image { - min-width: 4rem; - min-height: 4rem; + border-radius: 0.5rem; + min-width: 3rem; + min-height: 3rem; + padding: 1rem 1rem; margin: 0.5rem 0rem; - margin-left: 0.5rem; background-size: contain; background-repeat: no-repeat; } @@ -873,19 +875,16 @@ window#powermenu .powermenu.box { min-width: 3.5rem; min-height: 3.5rem; padding: 0.6rem 0.6rem; - margin: 0.2rem 0rem; margin-right: 1rem; } .notification-card-appname-label { - margin-top: 0.4rem; font-size: 0.9rem; color: #f5c2e7; } .notification-card-header-label { font-size: 1.15rem; - margin-bottom: 0.25rem; color: #b4befe; } diff --git a/style.css.map b/style.css.map index 1904d13..5379c1b 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