diff --git a/modules/bar/Bar.ts b/modules/bar/Bar.ts index 7984ea9..f09d029 100644 --- a/modules/bar/Bar.ts +++ b/modules/bar/Bar.ts @@ -234,7 +234,7 @@ export const Bar = (() => { class_name: 'bar-panel-container', child: Widget.CenterBox({ class_name: 'bar-panel', - css: 'padding: 1px', + css: 'padding: 1px 0px 0px 0px', startWidget: Widget.Box({ class_name: "box-left", hexpand: true, diff --git a/modules/menus/audio/index.ts b/modules/menus/audio/index.ts index c7cbf0c..f39231b 100644 --- a/modules/menus/audio/index.ts +++ b/modules/menus/audio/index.ts @@ -3,23 +3,23 @@ import { activeDevices } from "./active/index.js"; import { availableDevices } from "./available/index.js"; export default () => { - return DropdownMenu({ - name: "audiomenu", - transition: "crossfade", - child: Widget.Box({ - class_name: "menu-items audio", - hpack: "fill", - hexpand: true, - child: Widget.Box({ - vertical: true, - hpack: "fill", - hexpand: true, - class_name: "menu-items-container", - children: [ - activeDevices(), - availableDevices(), - ], - }), - }), - }); + return DropdownMenu({ + name: "audiomenu", + transition: "crossfade", + child: Widget.Box({ + class_name: "menu-items audio", + hpack: "fill", + hexpand: true, + child: Widget.Box({ + vertical: true, + hpack: "fill", + hexpand: true, + class_name: "menu-items-container audio", + children: [ + activeDevices(), + availableDevices(), + ], + }), + }), + }); }; diff --git a/options.ts b/options.ts index 38ce853..0a79420 100644 --- a/options.ts +++ b/options.ts @@ -85,6 +85,7 @@ const options = mkOptions(OPTIONS, { weight: opt(600), }, notification: { + scaling: opt(100), background: opt(tertiary_colors.mantle), opacity: opt(100), actions: { @@ -102,6 +103,7 @@ const options = mkOptions(OPTIONS, { } }, osd: { + scaling: opt(100), enable: opt(true), orientation: opt("vertical"), opacity: opt(100), @@ -119,6 +121,7 @@ const options = mkOptions(OPTIONS, { location: opt("right"), }, bar: { + scaling: opt(100), floating: opt(false), layer: opt<"top" | "bottom" | "overlay" | "background">("top"), margin_top: opt("0.5em"), @@ -133,6 +136,7 @@ const options = mkOptions(OPTIONS, { buttons: { monochrome: opt(false), spacing: opt("0.25em"), + y_margins: opt("0.4em"), radius: opt("0.3em"), opacity: opt(100), background: opt(colors.base2), @@ -283,6 +287,7 @@ const options = mkOptions(OPTIONS, { }, menu: { media: { + scaling: opt(100), song: opt(tertiary_colors.lavender), artist: opt(tertiary_colors.teal), album: opt(tertiary_colors.pink), @@ -310,6 +315,7 @@ const options = mkOptions(OPTIONS, { } }, volume: { + scaling: opt(100), card: { color: opt(colors.base), }, @@ -349,6 +355,7 @@ const options = mkOptions(OPTIONS, { } }, network: { + scaling: opt(100), card: { color: opt(colors.base), }, @@ -379,6 +386,7 @@ const options = mkOptions(OPTIONS, { }, }, bluetooth: { + scaling: opt(100), card: { color: opt(colors.base), }, @@ -420,6 +428,7 @@ const options = mkOptions(OPTIONS, { }, }, battery: { + scaling: opt(100), card: { color: opt(colors.base), }, @@ -449,6 +458,7 @@ const options = mkOptions(OPTIONS, { }, }, clock: { + scaling: opt(100), card: { color: opt(colors.base), }, @@ -491,6 +501,8 @@ const options = mkOptions(OPTIONS, { }, }, dashboard: { + scaling: opt(100), + confirmation_scaling: opt(100), card: { color: opt(colors.base), }, @@ -596,6 +608,7 @@ const options = mkOptions(OPTIONS, { }, }, notifications: { + scaling: opt(100), label: opt(colors.lavender), no_notifications_label: opt(colors.surface0), background: opt(colors.crust), @@ -835,7 +848,7 @@ const options = mkOptions(OPTIONS, { cache_actions: opt(true), }, - dummy: opt(true) + dummy: opt(true), }) globalThis["options"] = options diff --git a/scss/main.scss b/scss/main.scss index a8b037c..92b0363 100644 --- a/scss/main.scss +++ b/scss/main.scss @@ -15,6 +15,7 @@ @import "style/common/general"; //modules - bar +@import "style/bar/bar"; @import "style/bar/menu"; @import "style/bar/audio"; @import "style/bar/media"; @@ -26,7 +27,6 @@ @import "style/bar/systray"; @import "style/bar/notifications"; @import "style/bar/power"; -@import "style/bar/bar"; @import "style/bar/battery"; //modules - menus diff --git a/scss/style/bar/bar.scss b/scss/style/bar/bar.scss index 58b990e..ec95db2 100644 --- a/scss/style/bar/bar.scss +++ b/scss/style/bar/bar.scss @@ -1,4 +1,8 @@ .bar { + * { + font-size: $font-size * $bar-scaling/100; + } + .bar-panel-container { margin-top: if($bar-floating, $bar-margin_top, 0em); margin-bottom: if($bar-floating, $bar-margin_bottom, 0em); @@ -19,7 +23,7 @@ background-color: $bar-buttons-background; border-radius: $bar-buttons-radius; padding: 0.2rem 0.9rem; - margin: 0.5rem $bar-buttons-spacing; + margin: $bar-buttons-y_margins $bar-buttons-spacing; opacity: $bar-buttons-opacity/100; &:hover { diff --git a/scss/style/menus/audiomenu.scss b/scss/style/menus/audiomenu.scss index 66c06b9..b62a1c5 100644 --- a/scss/style/menus/audiomenu.scss +++ b/scss/style/menus/audiomenu.scss @@ -1,174 +1,184 @@ -.menu-items.audio { - background: if($bar-menus-monochrome, $bar-menus-background, $bar-menus-menu-volume-background-color); - border-color: if($bar-menus-monochrome, $bar-menus-border-color, $bar-menus-menu-volume-border-color); - opacity: $bar-menus-opacity/100; -} +.menu-items-container.audio { + min-width: 18em * $bar-menus-menu-volume-scaling/100; -.menu-dropdown-label.audio { - color: if($bar-menus-monochrome, $bar-menus-label, $bar-menus-menu-volume-label-color); -} + @import "./menu.scss"; -.menu-label.audio { - color: if($bar-menus-monochrome, $bar-menus-label, $bar-menus-menu-volume-label-color); -} - -.menu-active.playback, -.menu-active.input { - color: if($bar-menus-monochrome, $bar-menus-text, $bar-menus-menu-volume-text); -} - -.menu-button-isactive.audio { - color: if($bar-menus-monochrome, $bar-menus-icons-active, $bar-menus-menu-volume-icons-active); -} - -.menu-slider.playback { - trough { - background: if($bar-menus-monochrome, $bar-menus-slider-background, $bar-menus-menu-volume-audio_slider-background); - - highlight, - progress { - background: if($bar-menus-monochrome, $bar-menus-slider-primary, $bar-menus-menu-volume-audio_slider-primary); - } + * { + font-size: $font-size * $bar-menus-menu-volume-scaling/100; } - &:hover { + .menu-items { + background: if($bar-menus-monochrome, $bar-menus-background, $bar-menus-menu-volume-background-color); + border-color: if($bar-menus-monochrome, $bar-menus-border-color, $bar-menus-menu-volume-border-color); + opacity: $bar-menus-opacity/100; + } + + .menu-dropdown-label.audio { + color: if($bar-menus-monochrome, $bar-menus-label, $bar-menus-menu-volume-label-color); + } + + .menu-label.audio { + color: if($bar-menus-monochrome, $bar-menus-label, $bar-menus-menu-volume-label-color); + } + + .menu-active.playback, + .menu-active.input { + color: if($bar-menus-monochrome, $bar-menus-text, $bar-menus-menu-volume-text); + } + + .menu-button-isactive.audio { + color: if($bar-menus-monochrome, $bar-menus-icons-active, $bar-menus-menu-volume-icons-active); + } + + .menu-slider.playback { trough { - background: if($bar-menus-monochrome, $bar-menus-slider-backgroundhover, $bar-menus-menu-volume-audio_slider-backgroundhover); + background: if($bar-menus-monochrome, $bar-menus-slider-background, $bar-menus-menu-volume-audio_slider-background); + + highlight, + progress { + background: if($bar-menus-monochrome, $bar-menus-slider-primary, $bar-menus-menu-volume-audio_slider-primary); + } } - slider { - background: if($bar-menus-monochrome, $bar-menus-slider-puck, $bar-menus-menu-volume-audio_slider-puck); - } - } -} + &:hover { + trough { + background: if($bar-menus-monochrome, $bar-menus-slider-backgroundhover, $bar-menus-menu-volume-audio_slider-backgroundhover); + } -.menu-slider.inputs { - trough { - background: if($bar-menus-monochrome, $bar-menus-slider-background, $bar-menus-menu-volume-input_slider-background); - - highlight, - progress { - background: if($bar-menus-monochrome, $bar-menus-slider-primary, $bar-menus-menu-volume-input_slider-primary); + slider { + background: if($bar-menus-monochrome, $bar-menus-slider-puck, $bar-menus-menu-volume-audio_slider-puck); + } } } - &:hover { + .menu-slider.inputs { trough { - background: if($bar-menus-monochrome, $bar-menus-slider-backgroundhover, $bar-menus-menu-volume-input_slider-backgroundhover); + background: if($bar-menus-monochrome, $bar-menus-slider-background, $bar-menus-menu-volume-input_slider-background); + + highlight, + progress { + background: if($bar-menus-monochrome, $bar-menus-slider-primary, $bar-menus-menu-volume-input_slider-primary); + } } - slider { - background: if($bar-menus-monochrome, $bar-menus-slider-puck, $bar-menus-menu-volume-input_slider-puck); - } - } -} + &:hover { + trough { + background: if($bar-menus-monochrome, $bar-menus-slider-backgroundhover, $bar-menus-menu-volume-input_slider-backgroundhover); + } -.menu-active-percentage.playback, -.menu-active-percentage.input { - color: if($bar-menus-monochrome, $bar-menus-text, $bar-menus-menu-volume-text); -} - -.menu-active-button { - - .menu-active-icon.playback, - .menu-active-icon.input { - color: if($bar-menus-monochrome, $bar-menus-iconbuttons-active, $bar-menus-menu-volume-iconbutton-active); - opacity: 1; - } - - &.muted { - - .menu-active-icon.playback, - .menu-active-icon.input { - color: if($bar-menus-monochrome, $bar-menus-iconbuttons-passive, $bar-menus-menu-volume-iconbutton-passive); - opacity: 1; + slider { + background: if($bar-menus-monochrome, $bar-menus-slider-puck, $bar-menus-menu-volume-input_slider-puck); + } } } - &:hover { - - .menu-active-icon.playback, - .menu-active-icon.input { - color: if($bar-menus-monochrome, $bar-menus-iconbuttons-passive, $bar-menus-menu-volume-iconbutton-passive); - opacity: 0.3; - } + .menu-active-percentage.playback, + .menu-active-percentage.input { + color: if($bar-menus-monochrome, $bar-menus-text, $bar-menus-menu-volume-text); } - &.muted:hover { + .menu-active-button { .menu-active-icon.playback, .menu-active-icon.input { color: if($bar-menus-monochrome, $bar-menus-iconbuttons-active, $bar-menus-menu-volume-iconbutton-active); opacity: 1; } - } -} -.menu-button-icon.playback, -.menu-button-icon.input { - color: if($bar-menus-monochrome, $bar-menus-icons-passive, $bar-menus-menu-volume-icons-passive); + &.muted { - &.active { - color: if($bar-menus-monochrome, $bar-menus-icons-active, $bar-menus-menu-volume-icons-active); - } -} + .menu-active-icon.playback, + .menu-active-icon.input { + color: if($bar-menus-monochrome, $bar-menus-iconbuttons-passive, $bar-menus-menu-volume-iconbutton-passive); + opacity: 1; + } + } -.menu-button.audio { - color: if($bar-menus-monochrome, $bar-menus-icons-passive, $bar-menus-menu-volume-icons-passive); + &:hover { - .menu-button-name.playback, - .menu-button-name.input { - color: if($bar-menus-monochrome, $bar-menus-text, $bar-menus-menu-volume-text); + .menu-active-icon.playback, + .menu-active-icon.input { + color: if($bar-menus-monochrome, $bar-menus-iconbuttons-passive, $bar-menus-menu-volume-iconbutton-passive); + opacity: 0.3; + } + } + + &.muted:hover { + + .menu-active-icon.playback, + .menu-active-icon.input { + color: if($bar-menus-monochrome, $bar-menus-iconbuttons-active, $bar-menus-menu-volume-iconbutton-active); + opacity: 1; + } + } } + .menu-button-icon.playback, + .menu-button-icon.input { + color: if($bar-menus-monochrome, $bar-menus-icons-passive, $bar-menus-menu-volume-icons-passive); - &:hover { + &.active { + color: if($bar-menus-monochrome, $bar-menus-icons-active, $bar-menus-menu-volume-icons-active); + } + } + + .menu-button.audio { + color: if($bar-menus-monochrome, $bar-menus-icons-passive, $bar-menus-menu-volume-icons-passive); .menu-button-name.playback, .menu-button-name.input { - color: if($bar-menus-monochrome, $bar-menus-listitems-active, $bar-menus-menu-volume-listitems-active); + color: if($bar-menus-monochrome, $bar-menus-text, $bar-menus-menu-volume-text); + } + + + &:hover { + + .menu-button-name.playback, + .menu-button-name.input { + color: if($bar-menus-monochrome, $bar-menus-listitems-active, $bar-menus-menu-volume-listitems-active); + } } } -} -.menu-section-container.volume { - margin-bottom: 0.65em; -} + .menu-section-container.volume { + margin-bottom: 0.65em; + } -.menu-section-container.playback { - margin-top: 0em; - margin-bottom: 1em; -} + .menu-section-container.playback { + margin-top: 0em; + margin-bottom: 1em; + } -.menu-section-container.input { - margin-top: 0em; -} + .menu-section-container.input { + margin-top: 0em; + } -.menu-label-container.input { - border-radius: 0em; - background: if($bar-menus-monochrome, $bar-menus-cards, $bar-menus-menu-volume-card-color); -} + .menu-label-container.input { + border-radius: 0em; + background: if($bar-menus-monochrome, $bar-menus-cards, $bar-menus-menu-volume-card-color); + } -.menu-label-container.playback { - background: if($bar-menus-monochrome, $bar-menus-cards, $bar-menus-menu-volume-card-color); -} + .menu-label-container.playback { + background: if($bar-menus-monochrome, $bar-menus-cards, $bar-menus-menu-volume-card-color); + } -.menu-items-section.input { - background: if($bar-menus-monochrome, $bar-menus-cards, $bar-menus-menu-volume-card-color); -} + .menu-items-section.input { + background: if($bar-menus-monochrome, $bar-menus-cards, $bar-menus-menu-volume-card-color); + } -.menu-items-section.playback { - background: if($bar-menus-monochrome, $bar-menus-cards, $bar-menus-menu-volume-card-color); -} + .menu-items-section.playback { + background: if($bar-menus-monochrome, $bar-menus-cards, $bar-menus-menu-volume-card-color); + } -.menu-label-container.selected { - background: if($bar-menus-monochrome, $bar-menus-cards, $bar-menus-menu-volume-card-color); -} + .menu-label-container.selected { + background: if($bar-menus-monochrome, $bar-menus-cards, $bar-menus-menu-volume-card-color); + } -.menu-items-section.selected { - background: if($bar-menus-monochrome, $bar-menus-cards, $bar-menus-menu-volume-card-color); -} + .menu-items-section.selected { + background: if($bar-menus-monochrome, $bar-menus-cards, $bar-menus-menu-volume-card-color); + } -.menu-items-section.playback { - border-radius: 0em; + .menu-items-section.playback { + border-radius: 0em; + } } diff --git a/scss/style/menus/bluetooth.scss b/scss/style/menus/bluetooth.scss index 48fa73d..dfb6429 100644 --- a/scss/style/menus/bluetooth.scss +++ b/scss/style/menus/bluetooth.scss @@ -1,10 +1,20 @@ +.menu-items-container.bluetooth * { + font-size: $font-size * $bar-menus-menu-bluetooth-scaling/100; +} + +@import "./menu.scss"; + .menu-items.bluetooth { background: if($bar-menus-monochrome, $bar-menus-background, $bar-menus-menu-bluetooth-background-color); border-color: if($bar-menus-monochrome, $bar-menus-border-color, $bar-menus-menu-bluetooth-border-color); opacity: $bar-menus-opacity/100; + font-size: $font-size * $bar-menus-menu-bluetooth-scaling/100; } .menu-items-container.bluetooth { + + min-width: 18em * $bar-menus-menu-bluetooth-scaling/100; + font-size: 1.3em; .menu-section-container { @@ -26,7 +36,7 @@ .menu-items-section { background: if($bar-menus-monochrome, $bar-menus-cards, $bar-menus-menu-bluetooth-card-color); - min-height: 20em; + min-height: 20em * $bar-menus-menu-bluetooth-scaling/100; font-size: 1em; } diff --git a/scss/style/menus/calendar.scss b/scss/style/menus/calendar.scss index fc3bb68..969e092 100644 --- a/scss/style/menus/calendar.scss +++ b/scss/style/menus/calendar.scss @@ -1,3 +1,7 @@ +.calendar-menu-content * { + font-size: $font-size * $bar-menus-menu-clock-scaling/100; +} + .calendar-content-container { margin-top: 0em; min-width: 27em; diff --git a/scss/style/menus/dashboard.scss b/scss/style/menus/dashboard.scss index b4ae322..bfa4861 100644 --- a/scss/style/menus/dashboard.scss +++ b/scss/style/menus/dashboard.scss @@ -1,3 +1,7 @@ +.dashboard-menu-content * { + font-size: $font-size * $bar-menus-menu-dashboard-scaling/100; +} + .dashboard-content-items { margin-left: 0.50em; min-width: 28.5em; @@ -87,6 +91,8 @@ } .shortcuts-container { + font-size: 1em; + .dashboard-card { padding: 1.5em; @@ -121,10 +127,8 @@ color: if($bar-menus-monochrome, $bar-menus-buttons-text, $bar-menus-menu-dashboard-shortcuts-text); min-height: 3em; - &.discord { - label { - margin-right: 0.15em; - } + label { + font-size: 1.5em; } &.record.active { diff --git a/scss/style/menus/energy.scss b/scss/style/menus/energy.scss index 5a9f505..328c2a5 100644 --- a/scss/style/menus/energy.scss +++ b/scss/style/menus/energy.scss @@ -1,10 +1,19 @@ +.menu-items-container.energy * { + font-size: $font-size * $bar-menus-menu-battery-scaling/100; +} + .menu-items.energy { background: if($bar-menus-monochrome, $bar-menus-background, $bar-menus-menu-battery-background-color); border-color: if($bar-menus-monochrome, $bar-menus-border-color, $bar-menus-menu-battery-border-color); opacity: $bar-menus-opacity/100; + font-size: $font-size * $bar-menus-menu-battery-scaling/100; } +@import "./menu.scss"; + .menu-items-container.energy { + min-width: 18em * $bar-menus-menu-battery-scaling/100; + .menu-label { color: if($bar-menus-monochrome, $bar-menus-label, $bar-menus-menu-battery-label-color); } diff --git a/scss/style/menus/media.scss b/scss/style/menus/media.scss index a864295..63400a9 100644 --- a/scss/style/menus/media.scss +++ b/scss/style/menus/media.scss @@ -2,11 +2,16 @@ background: if($bar-menus-monochrome, $bar-menus-background, $bar-menus-menu-media-background-color); border-color: if($bar-menus-monochrome, $bar-menus-border-color, $bar-menus-menu-media-border-color); opacity: $bar-menus-opacity/100; + } .menu-items-container.media { - min-width: 23em; - min-height: 10em; + * { + font-size: $font-size * $bar-menus-menu-media-scaling/100; + } + + min-width: 23em * $bar-menus-menu-media-scaling/100; + min-height: 10em * $bar-menus-menu-media-scaling/100; .menu-section-container { margin: 1em 0em; diff --git a/scss/style/menus/menu.scss b/scss/style/menus/menu.scss index 119d779..d6938d4 100644 --- a/scss/style/menus/menu.scss +++ b/scss/style/menus/menu.scss @@ -85,14 +85,12 @@ background: $crust; border: $bar-menus-border-size solid $bar-menus-border-color; border-radius: $bar-menus-border-radius; - min-width: 18em; color: $text; } .menu-items-container { border-radius: 0.4em; font-size: 1.3em; - min-width: 18em; } .menu-section-container { diff --git a/scss/style/menus/network.scss b/scss/style/menus/network.scss index b72e417..d8dcd05 100644 --- a/scss/style/menus/network.scss +++ b/scss/style/menus/network.scss @@ -1,10 +1,18 @@ +.menu-items-container.network * { + font-size: $font-size * $bar-menus-menu-network-scaling/100; +} + +@import "./menu.scss"; + .menu-items.network { background: if($bar-menus-monochrome, $bar-menus-background, $bar-menus-menu-network-background-color); border-color: if($bar-menus-monochrome, $bar-menus-border-color, $bar-menus-menu-network-border-color); opacity: $bar-menus-opacity/100; + font-size: $font-size * $bar-menus-menu-network-scaling/100; } .menu-items-container.network { + min-width: 18em * $bar-menus-menu-network-scaling/100; font-size: 1.3em; .menu-items-section { diff --git a/scss/style/menus/notifications.scss b/scss/style/menus/notifications.scss index f341a4a..e40554e 100644 --- a/scss/style/menus/notifications.scss +++ b/scss/style/menus/notifications.scss @@ -1,7 +1,11 @@ +.notification-menu-content * { + font-size: $font-size * $bar-menus-menu-notifications-scaling/100; +} + .notification-card-container.menu { margin: 0em; - min-width: 30.6em; - min-height: 48em; + min-width: 30.6em * $bar-menus-menu-notifications-scaling/100; + min-height: 48em * $bar-menus-menu-notifications-scaling/100; background: if($bar-menus-monochrome, $bar-menus-background, $bar-menus-menu-notifications-background); border: $bar-menus-border-size solid if($bar-menus-monochrome, $bar-menus-border-color, $bar-menus-menu-notifications-border); border-radius: $bar-menus-border-radius; @@ -28,7 +32,8 @@ .notification-card.menu { background: $notification-background; - min-width: 26.2em; + min-width: 26.2em * $bar-menus-menu-notifications-scaling/100; + font-size: $font-size * $bar-menus-menu-notifications-scaling/100; border: 0.15em solid $notification-border; border-radius: 0em; border-bottom-left-radius: 0.4em; @@ -50,6 +55,7 @@ .menu-label.notifications { margin: 0em; + font-size: $font-size * $bar-menus-menu-notifications-scaling/100; color: if($bar-menus-monochrome, $bar-menus-label, $bar-menus-menu-notifications-label); } @@ -107,11 +113,11 @@ } .bell { - font-size: 10em; + font-size: 10em * $bar-menus-menu-notifications-scaling/100; } .message { - font-size: 1.5em; + font-size: 1.5em * $bar-menus-menu-notifications-scaling/100; } } diff --git a/scss/style/menus/power.scss b/scss/style/menus/power.scss index 90ddbec..deef5b4 100644 --- a/scss/style/menus/power.scss +++ b/scss/style/menus/power.scss @@ -7,13 +7,16 @@ window#verification { $popover-padding: 0.6rem * 1.6; window#verification .verification { + * { + font-size: $font-size * $bar-menus-menu-dashboard-confirmation_scaling/100; + } + @include floating-widget; background: if($bar-menus-monochrome, $bar-menus-background, $bar-menus-menu-dashboard-powermenu-confirmation-background); border: $bar-menus-border-size solid if($bar-menus-monochrome, $bar-menus-border-color, $bar-menus-menu-dashboard-powermenu-confirmation-border); padding: 0.35em * 1.6 * 1.5; min-width: 20em; min-height: 6em; - font-size: 1.3em; opacity: $bar-menus-opacity/100; .verification-content { diff --git a/scss/style/notifications/popups.scss b/scss/style/notifications/popups.scss index 82fc785..1a031ae 100644 --- a/scss/style/notifications/popups.scss +++ b/scss/style/notifications/popups.scss @@ -10,6 +10,10 @@ } .notification-card-container { + * { + font-size: $font-size * $notification-scaling/100; + } + padding: 1px; } diff --git a/scss/style/osd/index.scss b/scss/style/osd/index.scss index 6db19bd..6f76537 100644 --- a/scss/style/osd/index.scss +++ b/scss/style/osd/index.scss @@ -1,4 +1,8 @@ .indicator { + * { + font-size: $font-size * $osd-scaling/100; + } + .osd-container { margin: $osd-margins; opacity: $osd-opacity/100; diff --git a/widget/settings/pages/config/bar/index.ts b/widget/settings/pages/config/bar/index.ts index 2f40701..ab49c3c 100644 --- a/widget/settings/pages/config/bar/index.ts +++ b/widget/settings/pages/config/bar/index.ts @@ -16,6 +16,7 @@ export const BarSettings = () => { Header('Spacing'), Option({ opt: options.theme.bar.outer_spacing, title: 'Outer Spacing', subtitle: 'Spacing on the outer left and right edges of the bar.', type: 'string' }), + Option({ opt: options.theme.bar.buttons.y_margins, title: 'Vertical Margins', subtitle: 'Spacing above/below the buttons in the bar.', type: 'string' }), Option({ opt: options.theme.bar.buttons.spacing, title: 'Button Spacing', subtitle: 'Spacing between the buttons in the bar.', type: 'string' }), Option({ opt: options.theme.bar.buttons.radius, title: 'Button Radius', type: 'string' }), Option({ opt: options.theme.bar.floating, title: 'Floating Bar', type: 'boolean' }), diff --git a/widget/settings/pages/config/general/index.ts b/widget/settings/pages/config/general/index.ts index c6c6673..9b864ee 100644 --- a/widget/settings/pages/config/general/index.ts +++ b/widget/settings/pages/config/general/index.ts @@ -4,25 +4,42 @@ import { Header } from "widget/settings/shared/Header"; import options from "options"; export const BarGeneral = () => { - return Widget.Box({ + return Widget.Scrollable({ class_name: "bar-theme-page paged-container", - vertical: true, - children: [ - Header('General Settings'), - Option({ opt: options.theme.font.name, title: 'Font', type: 'font' }), - Option({ opt: options.theme.font.size, title: 'Font Size', type: 'string' }), - Option({ opt: options.theme.font.weight, title: 'Font Weight', subtitle: "100, 200, 300, etc.", type: 'number', increment: 100, min: 100, max: 900 }), - Option({ - opt: options.dummy, - title: 'Config', - subtitle: 'WARNING: Importing a configuration will replace your current configuration settings.', - type: 'config_import', - exportData: { - filePath: OPTIONS, - themeOnly: false - } - }), - Option({ opt: options.terminal, title: 'Terminal', subtitle: "Tools such as 'btop' will open in this terminal", type: 'string' }), - ] + vscroll: "automatic", + child: Widget.Box({ + vertical: true, + children: [ + Header('General Settings'), + Option({ opt: options.theme.font.name, title: 'Font', type: 'font' }), + Option({ opt: options.theme.font.size, title: 'Font Size', type: 'string' }), + Option({ opt: options.theme.font.weight, title: 'Font Weight', subtitle: "100, 200, 300, etc.", type: 'number', increment: 100, min: 100, max: 900 }), + Option({ + opt: options.dummy, + title: 'Config', + subtitle: 'WARNING: Importing a configuration will replace your current configuration settings.', + type: 'config_import', + exportData: { + filePath: OPTIONS, + themeOnly: false + } + }), + Option({ opt: options.terminal, title: 'Terminal', subtitle: "Tools such as 'btop' will open in this terminal", type: 'string' }), + + Header('Scaling'), + Option({ opt: options.theme.bar.scaling, title: 'Bar', type: 'number', min: 1, max: 100, increment: 5 }), + Option({ opt: options.theme.notification.scaling, title: 'Notifications', type: 'number', min: 1, max: 100, increment: 5 }), + Option({ opt: options.theme.osd.scaling, title: 'OSD', type: 'number', min: 1, max: 100, increment: 5 }), + Option({ opt: options.theme.bar.menus.menu.dashboard.scaling, title: 'Dashboard Menu', type: 'number', min: 1, max: 100, increment: 5 }), + Option({ opt: options.theme.bar.menus.menu.dashboard.confirmation_scaling, title: 'Confirmation Dialog', type: 'number', min: 1, max: 100, increment: 5 }), + Option({ opt: options.theme.bar.menus.menu.media.scaling, title: 'Media Menu', type: 'number', min: 1, max: 100, increment: 5 }), + Option({ opt: options.theme.bar.menus.menu.volume.scaling, title: 'Volume Menu', type: 'number', min: 1, max: 100, increment: 5 }), + Option({ opt: options.theme.bar.menus.menu.network.scaling, title: 'Network Menu', type: 'number', min: 1, max: 100, increment: 5 }), + Option({ opt: options.theme.bar.menus.menu.bluetooth.scaling, title: 'Bluetooth Menu', type: 'number', min: 1, max: 100, increment: 5 }), + Option({ opt: options.theme.bar.menus.menu.battery.scaling, title: 'Battery Menu', type: 'number', min: 1, max: 100, increment: 5 }), + Option({ opt: options.theme.bar.menus.menu.clock.scaling, title: 'Clock Menu', type: 'number', min: 1, max: 100, increment: 5 }), + Option({ opt: options.theme.bar.menus.menu.notifications.scaling, title: 'Notifications Menu', type: 'number', min: 1, max: 100, increment: 5 }), + ] + }) }) } diff --git a/widget/settings/pages/config/menus/clock.ts b/widget/settings/pages/config/menus/clock.ts index 11aa8e8..8ef2436 100644 --- a/widget/settings/pages/config/menus/clock.ts +++ b/widget/settings/pages/config/menus/clock.ts @@ -4,18 +4,21 @@ import { Header } from "widget/settings/shared/Header"; import options from "options"; export const ClockMenuSettings = () => { - return Widget.Box({ - class_name: "bar-theme-page paged-container", - vertical: true, - children: [ - Header('Time'), - Option({ opt: options.menus.clock.time.military, title: 'Use 24hr time', type: 'boolean' }), + return Widget.Scrollable({ + vscroll: "automatic", + child: Widget.Box({ + class_name: "bar-theme-page paged-container", + vertical: true, + children: [ + Header('Time'), + Option({ opt: options.menus.clock.time.military, title: 'Use 24hr time', type: 'boolean' }), - Header('Weather'), - Option({ opt: options.menus.clock.weather.location, title: 'Location', subtitle: 'Zip Code, Postal Code, City, etc.', type: 'string' }), - Option({ opt: options.menus.clock.weather.key, title: 'Weather API Key', subtitle: 'May require AGS restart. https://weatherapi.com/', type: 'string' }), - Option({ opt: options.menus.clock.weather.unit, title: 'Units', type: 'enum', enums: ['imperial', 'metric'] }), - Option({ opt: options.menus.clock.weather.interval, title: 'Weather Fetching Interval (ms)', subtitle: 'May require AGS restart.', type: 'number' }), - ] + Header('Weather'), + Option({ opt: options.menus.clock.weather.location, title: 'Location', subtitle: 'Zip Code, Postal Code, City, etc.', type: 'string' }), + Option({ opt: options.menus.clock.weather.key, title: 'Weather API Key', subtitle: 'May require AGS restart. https://weatherapi.com/', type: 'string' }), + Option({ opt: options.menus.clock.weather.unit, title: 'Units', type: 'enum', enums: ['imperial', 'metric'] }), + Option({ opt: options.menus.clock.weather.interval, title: 'Weather Fetching Interval (ms)', subtitle: 'May require AGS restart.', type: 'number' }), + ] + }) }) } diff --git a/widget/settings/pages/config/notifications/index.ts b/widget/settings/pages/config/notifications/index.ts index 6130413..12ddeeb 100644 --- a/widget/settings/pages/config/notifications/index.ts +++ b/widget/settings/pages/config/notifications/index.ts @@ -4,16 +4,19 @@ import { Header } from "widget/settings/shared/Header"; import options from "options"; export const NotificationSettings = () => { - return Widget.Box({ - class_name: "bar-theme-page paged-container", - vertical: true, - children: [ - Header('Notification Settings'), - Option({ opt: options.notifications.position, title: 'Notification Location', type: 'enum', enums: ['top left', 'top', 'top right', 'right', 'bottom right', 'bottom', 'bottom left', 'left'] }), - Option({ opt: options.notifications.monitor, title: 'Monitor', subtitle: 'The ID of the monitor on which to display the notification', type: 'number' }), - Option({ opt: options.notifications.active_monitor, title: 'Follow Cursor', subtitle: 'The notification will follow the monitor of your cursor', type: 'boolean' }), - Option({ opt: options.notifications.timeout, title: 'Notification Timeout', subtitle: 'How long notification popups will last (in milliseconds).', type: 'number' }), - Option({ opt: options.notifications.cache_actions, title: 'Preserve Actions', subtitle: 'This will persist the action buttons of a notification after rebooting.', type: 'boolean' }), - ] + return Widget.Scrollable({ + vscroll: "automatic", + child: Widget.Box({ + class_name: "bar-theme-page paged-container", + vertical: true, + children: [ + Header('Notification Settings'), + Option({ opt: options.notifications.position, title: 'Notification Location', type: 'enum', enums: ['top left', 'top', 'top right', 'right', 'bottom right', 'bottom', 'bottom left', 'left'] }), + Option({ opt: options.notifications.monitor, title: 'Monitor', subtitle: 'The ID of the monitor on which to display the notification', type: 'number' }), + Option({ opt: options.notifications.active_monitor, title: 'Follow Cursor', subtitle: 'The notification will follow the monitor of your cursor', type: 'boolean' }), + Option({ opt: options.notifications.timeout, title: 'Notification Timeout', subtitle: 'How long notification popups will last (in milliseconds).', type: 'number' }), + Option({ opt: options.notifications.cache_actions, title: 'Preserve Actions', subtitle: 'This will persist the action buttons of a notification after rebooting.', type: 'boolean' }), + ] + }) }) } diff --git a/widget/settings/pages/config/osd/index.ts b/widget/settings/pages/config/osd/index.ts index 8c0438d..0e8ca77 100644 --- a/widget/settings/pages/config/osd/index.ts +++ b/widget/settings/pages/config/osd/index.ts @@ -4,18 +4,21 @@ import { Header } from "widget/settings/shared/Header"; import options from "options"; export const OSDSettings = () => { - return Widget.Box({ - class_name: "bar-theme-page paged-container", - vertical: true, - children: [ - Header('On Screen Display'), - Option({ opt: options.theme.osd.enable, title: 'Enabled', type: 'boolean' }), - Option({ opt: options.theme.osd.orientation, title: 'Orientation', type: 'enum', enums: ["horizontal", "vertical"] }), - Option({ opt: options.theme.osd.location, title: 'Position', subtitle: 'Position of the OSD on the screen', type: 'enum', enums: ["top left", "top", "top right", "right", "bottom right", "bottom", "bottom left", "left"] }), - Option({ opt: options.theme.osd.monitor, title: 'Monitor', subtitle: 'The ID of the monitor on which to display the OSD', type: 'number' }), - Option({ opt: options.theme.osd.active_monitor, title: 'Follow Cursor', subtitle: 'The OSD will follow the monitor of your cursor', type: 'boolean' }), - Option({ opt: options.theme.osd.radius, title: 'Radius', subtitle: 'Radius of the on-screen-display that indicates volume/brightness change', type: 'string' }), - Option({ opt: options.theme.osd.margins, title: 'Margins', subtitle: 'Margins in the following format: top right bottom left', type: 'string' }), - ] + return Widget.Scrollable({ + vscroll: "automatic", + child: Widget.Box({ + class_name: "bar-theme-page paged-container", + vertical: true, + children: [ + Header('On Screen Display'), + Option({ opt: options.theme.osd.enable, title: 'Enabled', type: 'boolean' }), + Option({ opt: options.theme.osd.orientation, title: 'Orientation', type: 'enum', enums: ["horizontal", "vertical"] }), + Option({ opt: options.theme.osd.location, title: 'Position', subtitle: 'Position of the OSD on the screen', type: 'enum', enums: ["top left", "top", "top right", "right", "bottom right", "bottom", "bottom left", "left"] }), + Option({ opt: options.theme.osd.monitor, title: 'Monitor', subtitle: 'The ID of the monitor on which to display the OSD', type: 'number' }), + Option({ opt: options.theme.osd.active_monitor, title: 'Follow Cursor', subtitle: 'The OSD will follow the monitor of your cursor', type: 'boolean' }), + Option({ opt: options.theme.osd.radius, title: 'Radius', subtitle: 'Radius of the on-screen-display that indicates volume/brightness change', type: 'string' }), + Option({ opt: options.theme.osd.margins, title: 'Margins', subtitle: 'Margins in the following format: top right bottom left', type: 'string' }), + ] + }) }) }