diff --git a/modules/menus/network/index.js b/modules/menus/network/index.js index 6862db1..5845b19 100644 --- a/modules/menus/network/index.js +++ b/modules/menus/network/index.js @@ -4,219 +4,7 @@ import DropdownMenu from "../DropdownMenu.js"; export default () => { network.connect("changed", (value) => { console.log(JSON.stringify(value, null, 2)); - }) - const renderPlaybacks = (playbackDevices) => { - // return playbackDevices.map((device) => { - // if (device.description === "Dummy Output") { - // return Widget.Box({ - // class_name: "networkmenu-unfound-button playback", - // child: Widget.Box({ - // children: [ - // Widget.Label({ - // class_name: "networkmenu-button-name playback", - // label: "No playback devices found...", - // }), - // ], - // }), - // }); - // } - // return Widget.Button({ - // class_name: `networkmenu-button playback ${device}`, - // cursor: "pointer", - // on_primary_click: () => (audio.speaker = device), - // child: Widget.Box({ - // children: [ - // Widget.Box({ - // hpack: "start", - // children: [ - // Widget.Label({ - // truncate: "end", - // wrap: true, - // class_name: audio.speaker - // .bind("description") - // .as((v) => - // device.description === v - // ? "networkmenu-button-icon active playback" - // : "networkmenu-button-icon playback", - // ), - // label: "", - // }), - // Widget.Label({ - // class_name: audio.speaker - // .bind("description") - // .as((v) => - // device.description === v - // ? "networkmenu-button-name active playback" - // : "networkmenu-button-name playback", - // ), - // truncate: "end", - // wrap: true, - // label: device.description, - // }), - // ], - // }), - // Widget.Box({ - // hpack: "end", - // expand: true, - // children: [ - // Widget.Label({ - // class_name: "networkmenu-button-isactive playback", - // label: audio.speaker - // .bind("description") - // .as((v) => (device.description === v ? " " : "")), - // }), - // ], - // }), - // ], - // }), - // }); - // }); - }; - - const renderInputDevices = (inputDevices) => { - // if (!inputDevices.length) { - // return [ - // Widget.Box({ - // class_name: `networkmenu-unfound-button input`, - // child: Widget.Box({ - // children: [ - // Widget.Label({ - // class_name: "networkmenu-button-name input", - // label: "No input devices found...", - // }), - // ], - // }), - // }), - // ]; - // } - // return inputDevices.map((device) => { - // return Widget.Button({ - // cursor: "pointer", - // on_primary_click: () => (audio.microphone = device), - // class_name: `networkmenu-button input ${device}`, - // child: Widget.Box({ - // children: [ - // Widget.Box({ - // hpack: "start", - // children: [ - // Widget.Label({ - // class_name: audio.microphone - // .bind("description") - // .as((v) => - // device.description === v - // ? "networkmenu-button-icon active input" - // : "networkmenu-button-icon input", - // ), - // label: "", - // }), - // Widget.Label({ - // truncate: "end", - // wrap: true, - // class_name: audio.microphone - // .bind("description") - // .as((v) => - // device.description === v - // ? "networkmenu-button-name active input" - // : "networkmenu-button-name input", - // ), - // label: device.description, - // }), - // ], - // }), - // Widget.Box({ - // hpack: "end", - // expand: true, - // children: [ - // Widget.Label({ - // class_name: "networkmenu-button-isactive input", - // truncate: "end", - // wrap: true, - // label: audio.microphone - // .bind("description") - // .as((v) => (device.description === v ? " " : "")), - // }), - // ], - // }), - // ], - // }), - // }); - // }); - }; - - const renderActivePlayback = () => { - // return [ - // Widget.Label({ - // class_name: "networkmenu-active playback", - // truncate: "end", - // expand: true, - // wrap: true, - // label: audio.bind("speaker").as((v) => v.description || ""), - // }), - // Widget.Box({ - // class_name: "networkmenu-slider-container playback", - // children: [ - // Widget.Label({ - // class_name: "networkmenu-active-icon playback", - // label: audio.speaker - // .bind("volume") - // .as((v) => `${v === 0 ? "󰖁" : "󰕾"}`), - // }), - // Widget.Slider({ - // value: audio["speaker"].bind("volume"), - // class_name: "networkmenu-active-slider menu-slider playback", - // draw_value: false, - // hexpand: true, - // min: 0, - // max: 1, - // onChange: ({ value }) => (audio.speaker.volume = value), - // }), - // Widget.Label({ - // class_name: "networkmenu-active-percentage playback", - // label: audio.speaker - // .bind("volume") - // .as((v) => `${Math.floor(v * 100)}%`), - // }), - // ], - // }), - // ]; - }; - - const renderActiveInput = () => { - // return [ - // Widget.Label({ - // class_name: "networkmenu-active input", - // truncate: "end", - // wrap: true, - // label: audio.bind("microphone").as((v) => v.description || ""), - // }), - // Widget.Box({ - // class_name: "networkmenu-slider-container input", - // children: [ - // Widget.Label({ - // class_name: "networkmenu-active-icon input", - // label: audio.microphone - // .bind("volume") - // .as((v) => `${v === 0 ? "󰍭" : "󰍬"}`), - // }), - // Widget.Slider({ - // value: audio.microphone.bind("volume").as((v) => v), - // class_name: "networkmenu-active-slider menu-slider inputs", - // draw_value: false, - // hexpand: true, - // min: 0, - // max: 1, - // onChange: ({ value }) => (audio.microphone.volume = value), - // }), - // Widget.Label({ - // class_name: "networkmenu-active-percentage input", - // label: audio.microphone - // .bind("volume") - // .as((v) => `${Math.floor(v * 100)}%`), - // }), - // ], - // }), - // ]; - }; + }); return DropdownMenu({ name: "networkmenu", @@ -225,15 +13,16 @@ export default () => { class_name: "menu-items", child: Widget.Box({ vertical: true, - class_name: "menu-items-container", + hexpand: true, + class_name: "menu-items-container network", children: [ Widget.Box({ class_name: "menu-dropdown-label-container", hpack: "start", children: [ Widget.Label({ - class_name: "menu-dropdown-label audio", - label: "Network", + class_name: "menu-dropdown-label network", + label: "Networks", }), ], }), @@ -241,52 +30,144 @@ export default () => { class_name: "menu-separator", }), Widget.Box({ - class_name: "networkmenu-active-container playback", - vertical: true, - // children: renderActivePlayback(), + class_name: "menu-label-container network", + child: Widget.Label({ + class_name: "menu-label network", + hpack: "start", + label: "Connected Network", + }), }), Widget.Box({ - class_name: "networkmenu-active-container input", + class_name: "menu-item-box network", vertical: true, - // children: renderActiveInput(), + setup: (self) => { + self.hook(network, () => { + let sortedNetworks = []; + + if (network.wifi.access_points.length > 0) { + sortedNetworks = network.wifi.access_points + .filter((ap) => ap.ssid !== "Unknown") + .sort((a, b) => { + if (a.ssid === network.wifi.ssid) { + return -1; + } else if (b.ssid === network.wifi.ssid) { + return 1; + } else { + return b.strength - a.strength; + } + }); + } + + const localIfConnected = () => { + if (network.primary === "wired") { + return Widget.Box({ + class_name: `network-element-item-ethernet ${sortedNetworks.length > 0 ? "multi" : ""}`, + child: Widget.Box({ + hpack: "start", + vertical: true, + children: [ + Widget.Box({ + class_name: "network-element-items-container", + children: [ + Widget.Button({ + class_name: "menu-button-icon network", + child: Widget.Icon({ + tooltip_text: network.wired.internet, + icon: `${network.wired["icon_name"]}`, + }), + }), + Widget.Label({ + class_name: "menu-button-name network", + truncate: "end", + wrap: true, + label: `Ethernet (${network.wired.speed / 1000} Gbps)`, + }), + ], + }), + ], + }), + }); + } + return Widget.Box({}); + }; + return (self.child = localIfConnected()); + }); + }, }), Widget.Separator({ class_name: "menu-separator", }), Widget.Box({ - class_name: "networkmenu-label-container playback", - vertical: true, - children: [ - Widget.Label({ - class_name: "networkmenu-label playback", - label: "Playback Devices", - hpack: "start", - }), - // Widget.Box({ - // vertical: true, - // children: audio.bind("speakers").as((v) => renderPlaybacks(v)), - // }), - ], - }), - Widget.Separator({ - class_name: "menu-separator", + class_name: "menu-label-container network", + child: Widget.Label({ + class_name: "menu-label network", + hpack: "start", + label: "Available Networks", + }), }), Widget.Box({ - class_name: "networkmenu-label-container input", + class_name: "menu-item-box network", vertical: true, - children: [ - Widget.Label({ - class_name: "networkmenu-label input", - hpack: "start", - label: "Input Devices", - }), - // Widget.Box({ - // vertical: true, - // children: audio - // .bind("microphones") - // .as((v) => renderInputDevices(v)), - // }), - ], + setup: (self) => { + self.hook(network, () => { + // TODO: Finish dis + + let sortedNetworks = []; + + if (network.wifi.access_points.length > 0) { + sortedNetworks = network.wifi.access_points + .filter((ap) => ap.ssid !== "Unknown") + .sort((a, b) => { + if (a.ssid === network.wifi.ssid) { + return -1; + } else if (b.ssid === network.wifi.ssid) { + return 1; + } else { + return b.strength - a.strength; + } + }); + } + + console.log(sortedNetworks.length); + + return (self.children = sortedNetworks.map((curNetwork) => { + return Widget.Button({ + class_name: "network-element-item", + child: Widget.Box({ + children: [ + Widget.Box({ + hpack: "start", + vertical: true, + children: [ + Widget.Box({ + class_name: "network-element-items-container", + children: [ + Widget.Button({ + class_name: "menu-button-icon network", + child: Widget.Icon({ + tooltip_text: + curNetwork.ssid === network.wifi.ssid + ? network.wifi.state + : null, + icon: `${curNetwork["iconName"]}`, + }), + }), + Widget.Label({ + class_name: "menu-button-name network", + truncate: "end", + wrap: true, + label: curNetwork.ssid, + }), + ], + }), + ], + }), + ], + }), + }); + })); + }); + }, }), ], }), diff --git a/scss/menus/network.scss b/scss/menus/network.scss index e69de29..a8b1d84 100644 --- a/scss/menus/network.scss +++ b/scss/menus/network.scss @@ -0,0 +1,32 @@ +@import "../colors"; + +.menu-dropdown-label.network { + color: $mauve; +} + +.network-element-item-ethernet.multi { + margin-bottom: 0.5rem; +} + +.menu-label.network { + color: $mauve; +} + +.network-element-items-container * { + font-size: 1.1rem; +} + +.network-element-item { + &:not(:last-child) { + margin-bottom: 0.5rem; + } + + &:hover { + color: $mauve; + } +} + +.menu-button-icon.network { + color: $overlay2; +} + diff --git a/style.css b/style.css index ccc1785..a2f89a6 100644 --- a/style.css +++ b/style.css @@ -768,6 +768,33 @@ window#powermenu .powermenu.box { min-width: 25rem; } +.menu-dropdown-label.network { + color: #cba6f7; +} + +.network-element-item-ethernet.multi { + margin-bottom: 0.5rem; +} + +.menu-label.network { + color: #cba6f7; +} + +.network-element-items-container * { + font-size: 1.1rem; +} + +.network-element-item:not(:last-child) { + margin-bottom: 0.5rem; +} +.network-element-item:hover { + color: #cba6f7; +} + +.menu-button-icon.network { + color: #9399b2; +} + .menu-dropdown-label.bluetooth { color: #89dceb; } diff --git a/style.css.map b/style.css.map index 07ab070..735235a 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/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