diff --git a/modules/menus/DropdownMenu.js b/modules/menus/DropdownMenu.js index 84a50ef..ef3b190 100644 --- a/modules/menus/DropdownMenu.js +++ b/modules/menus/DropdownMenu.js @@ -30,7 +30,7 @@ const moveBoxToCursor = (self, minWidth, minHeight, fixed) => { marginRight = 13; marginLeft = monWidth - minWidth - 13; } - const marginTop = 40; + const marginTop = 43; const marginBottom = monHeight + minHeight - marginTop; self.set_margin_left(marginLeft); self.set_margin_right(marginRight); @@ -58,7 +58,7 @@ export default ({ keymode: "on-demand", exclusivity, layer: "top", - anchor: ["top"], + anchor: ["top", "left"], child: Widget.EventBox({ on_primary_click: () => App.closeWindow(name), on_secondary_click: () => App.closeWindow(name), diff --git a/modules/menus/bluetooth/index.js b/modules/menus/bluetooth/index.js index a9e2516..8cc718d 100644 --- a/modules/menus/bluetooth/index.js +++ b/modules/menus/bluetooth/index.js @@ -317,21 +317,33 @@ export default () => { Widget.Box({ hexpand: true, hpack: "end", - child: Widget.Switch({ - class_name: "menu-switch bluetooth", - active: bluetooth.bind("enabled"), - on_activate: ({ active }) => - Utils.execAsync([ - "bash", - "-c", - `bluetoothctl power ${active ? "on" : "off"}`, - ]).catch((err) => - console.error( + children: [ + // NOTE: Do we want to add this back to restart bluetooth service if it every hangs? + // Widget.Button({ + // class_name: "menu-icon-button restart-bluetooth-service", + // tooltip_text: "Restart Bluetooth Service", + // on_primary_click: () => Utils.execAsync('systemctl restart bluetooth'), + // child: Widget.Label({ + // class_name: "menu-icon-button-label", + // label: "󱄌" + // }) + // }), + Widget.Switch({ + class_name: "menu-switch bluetooth", + active: bluetooth.bind("enabled"), + on_activate: ({ active }) => + Utils.execAsync([ + "bash", + "-c", `bluetoothctl power ${active ? "on" : "off"}`, - err, + ]).catch((err) => + console.error( + `bluetoothctl power ${active ? "on" : "off"}`, + err, + ), ), - ), - }), + }), + ], }), ], }), diff --git a/modules/menus/media/index.js b/modules/menus/media/index.js index daf3bc5..05f7f8a 100644 --- a/modules/menus/media/index.js +++ b/modules/menus/media/index.js @@ -1,30 +1,361 @@ -const audio = await Service.import("mpris"); +const media = await Service.import("mpris"); import DropdownMenu from "../DropdownMenu.js"; +import icons from "../../icons/index.js"; + +media.cacheCoverArt = false; export default () => { + const activePlayer = Variable(media.players[0]); + + media.connect("changed", (value) => { + const statusOrder = { + Playing: 1, + Paused: 2, + Stopped: 3, + }; + + if (value.players.length === 0) { + activePlayer.value = media.players[0]; + return; + } + + const isPlaying = value.players.find( + (p) => p["play-back-status"] === "Playing", + ); + + if (isPlaying) { + activePlayer.value = value.players.sort( + (a, b) => + statusOrder[a["play-back-status"]] - + statusOrder[b["play-back-status"]], + )[0]; + } + }); + + const isLoopActive = (player) => { + return player["loop-status"] !== null && + ["track", "playlist"].includes(player["loop-status"].toLowerCase()) + ? "active" + : ""; + }; + + const isShuffleActive = (player) => { + return player["shuffle-status"] !== null && player["shuffle-status"] + ? "active" + : ""; + }; + return DropdownMenu({ name: "mediamenu", transition: "crossfade", fixed: true, + minWidth: 550, child: Widget.Box({ - class_name: "menu-items", + class_name: "media-indicator-container", + vertical: true, + hexpand: true, + vexpand: true, child: Widget.Box({ - vertical: true, + class_name: "media-indicator-items", + vexpand: true, hexpand: true, - class_name: "menu-items-container", + vertical: true, children: [ Widget.Box({ - class_name: "menu-dropdown-label-container", - hpack: "start", - children: [ - Widget.Label({ - class_name: "menu-dropdown-label media", - label: "Media", - }), - ], - }), - Widget.Separator({ - class_name: "menu-separator", + class_name: "media-indicator-current-player-info", + vpack: "center", + hexpand: true, + setup: (self) => { + self.hook(activePlayer, () => { + self.hook(media, () => { + const curPlayer = activePlayer.value; + + const albumCover = (player) => { + if ( + typeof player.track_cover_url === "string" && + player.track_cover_url.length > 0 + ) { + return [ + Widget.Box({ + vexpand: false, + vpack: "center", + class_name: "media-indicator-current-album-cover", + css: `background-image: url("${curPlayer.track_cover_url}")`, + }), + ]; + } + return []; + }; + if (curPlayer && curPlayer.play_back_status !== "Stopped") { + return (self.children = [ + ...albumCover(curPlayer), + Widget.Box({ + class_name: "media-indicator-right-section", + hpack: "center", + hexpand: true, + vertical: true, + children: [ + Widget.Box({ + class_name: "media-indicator-current-media-info", + hpack: "center", + hexpand: true, + vertical: true, + children: [ + Widget.Box({ + class_name: "media-indicator-current-song-name", + hpack: "center", + children: [ + Widget.Label({ + truncate: "end", + wrap: true, + class_name: + "media-indicator-current-song-name-label", + label: curPlayer["track-title"], + }), + ], + }), + Widget.Box({ + class_name: + "media-indicator-current-song-author", + hpack: "center", + children: [ + Widget.Label({ + truncate: "end", + wrap: true, + max_width_chars: 25, + class_name: + "media-indicator-current-song-author-label", + label: + curPlayer["track-artists"].join(", "), + }), + ], + }), + Widget.Box({ + class_name: + "media-indicator-current-song-album", + hpack: "center", + children: [ + Widget.Label({ + truncate: "end", + wrap: true, + max_width_chars: 25, + class_name: + "media-indicator-current-song-album-label", + label: curPlayer["track-album"], + }), + ], + }), + ], + }), + Widget.Box({ + class_name: + "media-indicator-current-player-controls", + vertical: true, + children: [ + Widget.Box({ + class_name: "media-indicator-current-controls", + hpack: "center", + children: [ + Widget.Box({ + class_name: + "media-indicator-control shuffle", + children: [ + Widget.Button({ + hpack: "center", + tooltip_text: + curPlayer.shuffle_status !== null + ? curPlayer.shuffle_status + ? "Shuffling" + : "Not Shuffling" + : null, + hasTooltip: true, + on_primary_click: () => + curPlayer.shuffle(), + class_name: `media-indicator-control-button shuffle ${isShuffleActive(curPlayer)} ${curPlayer.shuffle_status !== null ? "enabled" : "disabled"}`, + child: Widget.Icon( + icons.mpris.shuffle["enabled"], + ), + }), + ], + }), + Widget.Box({ + class_name: `media-indicator-control prev ${curPlayer.can_go_prev}`, + children: [ + Widget.Button({ + hpack: "center", + on_primary_click: () => + curPlayer.previous(), + class_name: `media-indicator-control-button prev ${curPlayer.can_go_prev ? "enabled" : "disabled"}`, + child: Widget.Icon(icons.mpris.prev), + }), + ], + }), + Widget.Box({ + class_name: "media-indicator-control play", + children: [ + Widget.Button({ + hpack: "center", + on_primary_click: () => + curPlayer.playPause(), + class_name: `media-indicator-control-button play ${curPlayer.can_play ? "enabled" : "disabled"}`, + child: Widget.Icon( + icons.mpris[ + curPlayer.play_back_status.toLowerCase() + ], + ), + }), + ], + }), + Widget.Box({ + class_name: `media-indicator-control next`, + children: [ + Widget.Button({ + hpack: "center", + on_primary_click: () => + curPlayer.next(), + class_name: `media-indicator-control-button next ${curPlayer.can_go_next ? "enabled" : "disabled"}`, + child: Widget.Icon(icons.mpris.next), + }), + ], + }), + Widget.Box({ + class_name: "media-indicator-control loop", + children: [ + Widget.Button({ + hpack: "center", + tooltip_text: + curPlayer.loop_status !== null + ? `Looping: ${curPlayer.loop_status}` + : null, + hasTooltip: true, + on_primary_click: () => + curPlayer.loop(), + class_name: `media-indicator-control-button loop ${isLoopActive(curPlayer)} ${curPlayer.loop_status !== null ? "enabled" : "disabled"}`, + child: Widget.Icon( + curPlayer.loop_status === null + ? icons.mpris.loop["none"] + : icons.mpris.loop[ + curPlayer.loop_status?.toLowerCase() + ], + ), + }), + ], + }), + ], + }), + ], + }), + Widget.Box({ + class_name: "media-indicator-current-progress-bar", + hexpand: true, + children: [ + Widget.Label({ + class_name: "media-indicator-time current", + vpack: "center", + setup: (self) => { + function update() { + const curMin = Math.floor( + curPlayer.position / 60, + ); + const curSec = Math.floor( + curPlayer.position % 60, + ); + + if ( + typeof curPlayer.position === "number" && + curPlayer.position >= 0 + ) { + self.label = `${curMin < 10 ? "0" + curMin : curMin}:${curSec < 10 ? "0" + curSec : curSec}`; + } else { + self.label = `00:00`; + } + } + self.poll(1000, update); + self.hook(curPlayer, update); + }, + }), + Widget.Box({ + hexpand: true, + child: Widget.Slider({ + hexpand: true, + class_name: "menu-slider media progress", + draw_value: false, + on_change: ({ value }) => + (curPlayer.position = + value * curPlayer.length), + visible: curPlayer + .bind("length") + .as((l) => l > 0), + setup: (self) => { + const update = () => { + if ( + typeof curPlayer.position === + "number" && + curPlayer.position > 0 + ) { + const value = + curPlayer.position / curPlayer.length; + self.value = value > 0 ? value : 0; + } + return 0; + }; + self.hook(curPlayer, update); + self.hook(curPlayer, update, "position"); + self.poll(1000, update); + }, + }), + }), + Widget.Label({ + class_name: "media-indicator-time total", + setup: (self) => { + const update = () => { + const totalSeconds = curPlayer.length; + const curHour = Math.floor( + totalSeconds / 3600, + ); + const curMin = Math.floor( + (totalSeconds % 3600) / 60, + ); + const curSec = Math.floor( + totalSeconds % 60, + ); + + self.label = `${ + curHour > 0 + ? (curHour < 10 + ? "0" + curHour + : curHour) + ":" + : "" + }${curMin < 10 ? "0" + curMin : curMin}:${ + curSec < 10 ? "0" + curSec : curSec + }`; + }; + + self.hook(curPlayer, update); + }, + }), + ], + }), + ], + }), + ]); + } + + return (self.children = [ + Widget.Box({ + class_name: "media-indicator-none", + hpack: "center", + vpack: "center", + expand: true, + child: Widget.Label({ + class_name: "media-indicator-none-label dim", + label: "No Media Is Currently Playing", + }), + }), + ]); + }); + }); + }, }), ], }), diff --git a/modules/menus/network/index.js b/modules/menus/network/index.js index b64dd09..3debe4f 100644 --- a/modules/menus/network/index.js +++ b/modules/menus/network/index.js @@ -2,10 +2,6 @@ const network = await Service.import("network"); import DropdownMenu from "../DropdownMenu.js"; export default () => { - network.connect("changed", (value) => { - // console.log(JSON.stringify(value, null, 2)); - }); - const pendingAuth = Variable(""); return DropdownMenu({ diff --git a/scss/bar/media.scss b/scss/bar/media.scss index 8539a92..a5c7c9a 100644 --- a/scss/bar/media.scss +++ b/scss/bar/media.scss @@ -2,10 +2,10 @@ .media { font-size: 1rem; - color: $green; + color: $lavender; } .bar-media_icon { font-size: 1.2em; - color: $green; + color: $lavender; } diff --git a/scss/main.scss b/scss/main.scss index c68f035..3f65ee5 100644 --- a/scss/main.scss +++ b/scss/main.scss @@ -30,6 +30,7 @@ @import "menus/audiomenu"; @import "menus/network"; @import "menus/bluetooth"; +@import "menus/media"; //notifications @import "notifications/popups"; diff --git a/scss/menus/media.scss b/scss/menus/media.scss new file mode 100644 index 0000000..e740d8b --- /dev/null +++ b/scss/menus/media.scss @@ -0,0 +1,162 @@ +@import "../colors"; + +.media-indicator-container { + min-width: 40rem; + min-height: 10rem; + background: $mantle; + border: 0.25rem solid $surface0; + border-radius: 0.4rem; +} + +.media-indicator-items { + margin: 1rem; + margin-bottom: 1.3rem; +} + +.media-indicator-current-album-cover { + border: 0.25rem solid $surface0; + background-color: $surface0; + border-radius: 0.25rem; + min-width: 11rem; + min-height: 11rem; + background-size: contain; + background-repeat: no-repeat; + background-position: center; +} + +.media-indicator-right-section { + margin-left: 2rem; +} + +.media-indicator-current-song-name { + margin-bottom: 0.75rem; +} + +.media-indicator-current-song-author { + margin-bottom: 0.5rem; +} + +.media-indicator-current-song-name-label { + color: $lavender; + font-size: 1.65rem; +} + +.media-indicator-current-song-author-label { + color: $teal; + font-size: 1.1rem; +} + +.media-indicator-current-song-album-label { + color: $pink; + font-size: 1.1rem; +} + +.media-indicator-current-controls { + margin-top: 1.5rem; + margin-bottom: 0.2rem; +} + +.media-indicator-control { + margin: 0rem 0.5rem; +} + +.media-indicator-time { + color: $overlay2; + font-size: 0.9rem; + font-weight: 800; + margin-top: 0.9rem; + + &.total { + margin-left: 1.2rem; + } + + &.current { + margin-right: 1.2rem; + } +} + +.media-indicator-control-button { + background: $lavender; + color: $crust; + min-height: 2.1rem; + min-width: 2.4rem; + border-radius: 0.2rem; + + tooltip { + min-width: 10rem; + min-height: 10rem; + background: red; + } + + &.disabled { + background: $surface0; + } + + &.enabled { + background: $lavender; + + &:hover { + background: $pink; + } + + &.active { + background: $pink; + } + } + +} + +image { + font-size: 1.5rem; +} + +.menu-slider.media.progress { + margin-top: 1rem; + min-height: 2rem; + min-width: 17rem; + + trough { + background: $base; + border-radius: 0.3rem; + + highlight, + progress { + min-height: 1rem; + background: $pink; + border-radius: 0.3rem; + } + } + + slider { + box-shadow: none; + background-color: transparent; + min-height: 1.2rem; + min-width: 1.2rem; + border: 0rem solid transparent; + border-radius: 0.3rem; + } + + &:hover { + trough { + background: $surface0; + } + + slider { + background: $overlay0; + box-shadow: none; + } + } + + &:disabled { + + highlight, + progress { + } + } + + trough:focus { + + slider { + } + } +} diff --git a/scss/menus/menu.scss b/scss/menus/menu.scss index 13cd8fb..e9663d2 100644 --- a/scss/menus/menu.scss +++ b/scss/menus/menu.scss @@ -1,13 +1,12 @@ .menu-slider { - // @include unset($rec: true); - trough { background: $base; + border-radius: 0.3rem; highlight, progress { background: $peach; - border-radius: 0.7rem; + border-radius: 0.3rem; } } @@ -17,7 +16,7 @@ min-height: 1.6rem; min-width: 1.6rem; border: 0rem solid transparent; - border-radius: 0.7rem; + border-radius: 0.3rem; } &:hover { @@ -30,23 +29,11 @@ box-shadow: none; } } - - &:disabled { - - highlight, - progress { - } - } - - trough:focus { - - slider { - } - } } .menu-switch { background-color: $surface0; + border-radius: 0.3rem; &:checked { background: $sky; @@ -56,7 +43,7 @@ highlight, progress { background-color: $peach; - border-radius: 0.7rem; + border-radius: 0.3rem; } } @@ -66,7 +53,7 @@ min-height: 1.2rem; min-width: 1.2rem; border: 0rem solid transparent; - border-radius: 0.7rem; + border-radius: 0.3rem; margin: 0.1rem 0.2rem; } diff --git a/style.css b/style.css index 9541e05..f914391 100644 --- a/style.css +++ b/style.css @@ -291,12 +291,12 @@ spinner:checked { .media { font-size: 1rem; - color: #a6e3a1; + color: #b4befe; } .bar-media_icon { font-size: 1.2em; - color: #a6e3a1; + color: #b4befe; } .bar-network { @@ -421,11 +421,12 @@ spinner:checked { .menu-slider trough { background: #1e1e2e; + border-radius: 0.3rem; } .menu-slider trough highlight, .menu-slider trough progress { background: #fab387; - border-radius: 0.7rem; + border-radius: 0.3rem; } .menu-slider slider { box-shadow: none; @@ -433,7 +434,7 @@ spinner:checked { min-height: 1.6rem; min-width: 1.6rem; border: 0rem solid transparent; - border-radius: 0.7rem; + border-radius: 0.3rem; } .menu-slider:hover trough { background: #313244; @@ -442,8 +443,10 @@ spinner:checked { background: #6c7086; box-shadow: none; } + .menu-switch { background-color: #313244; + border-radius: 0.3rem; } .menu-switch:checked { background: #89dceb; @@ -451,7 +454,7 @@ spinner:checked { .menu-switch trough highlight, .menu-switch trough progress { background-color: #fab387; - border-radius: 0.7rem; + border-radius: 0.3rem; } .menu-switch slider { box-shadow: none; @@ -459,7 +462,7 @@ spinner:checked { min-height: 1.2rem; min-width: 1.2rem; border: 0rem solid transparent; - border-radius: 0.7rem; + border-radius: 0.3rem; margin: 0.1rem 0.2rem; } .menu-switch:hover trough { @@ -892,6 +895,138 @@ window#powermenu .powermenu.box { color: #89dceb; } +.media-indicator-container { + min-width: 40rem; + min-height: 10rem; + background: #181825; + border: 0.25rem solid #313244; + border-radius: 0.4rem; +} + +.media-indicator-items { + margin: 1rem; + margin-bottom: 1.3rem; +} + +.media-indicator-current-album-cover { + border: 0.25rem solid #313244; + background-color: #313244; + border-radius: 0.25rem; + min-width: 11rem; + min-height: 11rem; + background-size: contain; + background-repeat: no-repeat; + background-position: center; +} + +.media-indicator-right-section { + margin-left: 2rem; +} + +.media-indicator-current-song-name { + margin-bottom: 0.75rem; +} + +.media-indicator-current-song-author { + margin-bottom: 0.5rem; +} + +.media-indicator-current-song-name-label { + color: #b4befe; + font-size: 1.65rem; +} + +.media-indicator-current-song-author-label { + color: #94e2d5; + font-size: 1.1rem; +} + +.media-indicator-current-song-album-label { + color: #f5c2e7; + font-size: 1.1rem; +} + +.media-indicator-current-controls { + margin-top: 1.5rem; + margin-bottom: 0.2rem; +} + +.media-indicator-control { + margin: 0rem 0.5rem; +} + +.media-indicator-time { + color: #9399b2; + font-size: 0.9rem; + font-weight: 800; + margin-top: 0.9rem; +} +.media-indicator-time.total { + margin-left: 1.2rem; +} +.media-indicator-time.current { + margin-right: 1.2rem; +} + +.media-indicator-control-button { + background: #b4befe; + color: #11111b; + min-height: 2.1rem; + min-width: 2.4rem; + border-radius: 0.2rem; +} +.media-indicator-control-button tooltip { + min-width: 10rem; + min-height: 10rem; + background: red; +} +.media-indicator-control-button.disabled { + background: #313244; +} +.media-indicator-control-button.enabled { + background: #b4befe; +} +.media-indicator-control-button.enabled:hover { + background: #f5c2e7; +} +.media-indicator-control-button.enabled.active { + background: #f5c2e7; +} + +image { + font-size: 1.5rem; +} + +.menu-slider.media.progress { + margin-top: 1rem; + min-height: 2rem; + min-width: 17rem; +} +.menu-slider.media.progress trough { + background: #1e1e2e; + border-radius: 0.3rem; +} +.menu-slider.media.progress trough highlight, +.menu-slider.media.progress trough progress { + min-height: 1rem; + background: #f5c2e7; + border-radius: 0.3rem; +} +.menu-slider.media.progress slider { + box-shadow: none; + background-color: transparent; + min-height: 1.2rem; + min-width: 1.2rem; + border: 0rem solid transparent; + border-radius: 0.3rem; +} +.menu-slider.media.progress:hover trough { + background: #313244; +} +.menu-slider.media.progress:hover slider { + background: #6c7086; + box-shadow: none; +} .notification-card-container { margin-top: 3.5rem; } diff --git a/style.css.map b/style.css.map index fba04ca..eb3f92a 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/network.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/network.scss","scss/menus/bluetooth.scss","scss/menus/media.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