forked from Shinonome/dots-hyprland
Merge remote-tracking branch 'origin/main' into addon-i18n
This commit is contained in:
@@ -37,11 +37,11 @@ Scope {
|
|||||||
return screens;
|
return screens;
|
||||||
return screens.filter(screen => list.includes(screen.name));
|
return screens.filter(screen => list.includes(screen.name));
|
||||||
}
|
}
|
||||||
LazyLoader {
|
Loader {
|
||||||
id: barLoader
|
id: barLoader
|
||||||
activeAsync: GlobalStates.barOpen
|
active: GlobalStates.barOpen
|
||||||
required property ShellScreen modelData
|
required property ShellScreen modelData
|
||||||
component: PanelWindow { // Bar window
|
sourceComponent: PanelWindow { // Bar window
|
||||||
id: barRoot
|
id: barRoot
|
||||||
screen: barLoader.modelData
|
screen: barLoader.modelData
|
||||||
|
|
||||||
@@ -533,7 +533,6 @@ Scope {
|
|||||||
|
|
||||||
size: Appearance.rounding.screenRounding
|
size: Appearance.rounding.screenRounding
|
||||||
color: showBarBackground ? Appearance.colors.colLayer0 : "transparent"
|
color: showBarBackground ? Appearance.colors.colLayer0 : "transparent"
|
||||||
opacity: 1.0 - Appearance.transparency
|
|
||||||
|
|
||||||
corner: RoundCorner.CornerEnum.TopLeft
|
corner: RoundCorner.CornerEnum.TopLeft
|
||||||
states: State {
|
states: State {
|
||||||
@@ -553,7 +552,6 @@ Scope {
|
|||||||
}
|
}
|
||||||
size: Appearance.rounding.screenRounding
|
size: Appearance.rounding.screenRounding
|
||||||
color: showBarBackground ? Appearance.colors.colLayer0 : "transparent"
|
color: showBarBackground ? Appearance.colors.colLayer0 : "transparent"
|
||||||
opacity: 1.0 - Appearance.transparency
|
|
||||||
|
|
||||||
corner: RoundCorner.CornerEnum.TopRight
|
corner: RoundCorner.CornerEnum.TopRight
|
||||||
states: State {
|
states: State {
|
||||||
|
|||||||
@@ -68,6 +68,7 @@ Item {
|
|||||||
}
|
}
|
||||||
|
|
||||||
StyledText {
|
StyledText {
|
||||||
|
visible: Config.options.bar.verbose
|
||||||
width: rowLayout.width - (CircularProgress.size + rowLayout.spacing * 2)
|
width: rowLayout.width - (CircularProgress.size + rowLayout.spacing * 2)
|
||||||
Layout.alignment: Qt.AlignVCenter
|
Layout.alignment: Qt.AlignVCenter
|
||||||
Layout.fillWidth: true // Ensures the text takes up available space
|
Layout.fillWidth: true // Ensures the text takes up available space
|
||||||
|
|||||||
@@ -46,9 +46,11 @@ MouseArea {
|
|||||||
implicitWidth: weatherPopup.implicitWidth
|
implicitWidth: weatherPopup.implicitWidth
|
||||||
implicitHeight: weatherPopup.implicitHeight
|
implicitHeight: weatherPopup.implicitHeight
|
||||||
anchor.item: root
|
anchor.item: root
|
||||||
anchor.edges: Edges.Bottom
|
anchor.edges: Edges.Top
|
||||||
anchor.rect.x: (root.implicitWidth - popupWindow.implicitWidth) / 2
|
anchor.rect.x: (root.implicitWidth - popupWindow.implicitWidth) / 2
|
||||||
anchor.rect.y: root.implicitHeight + 10
|
anchor.rect.y: Config.options.bar.bottom ?
|
||||||
|
(-weatherPopup.implicitHeight - 15) :
|
||||||
|
(root.implicitHeight + 15 )
|
||||||
color: "transparent"
|
color: "transparent"
|
||||||
WeatherPopup {
|
WeatherPopup {
|
||||||
id: weatherPopup
|
id: weatherPopup
|
||||||
|
|||||||
@@ -66,6 +66,11 @@ Singleton {
|
|||||||
property bool extraBackgroundTint: true
|
property bool extraBackgroundTint: true
|
||||||
property int fakeScreenRounding: 2 // 0: None | 1: Always | 2: When not fullscreen
|
property int fakeScreenRounding: 2 // 0: None | 1: Always | 2: When not fullscreen
|
||||||
property bool transparency: false
|
property bool transparency: false
|
||||||
|
property JsonObject wallpaperTheming: JsonObject {
|
||||||
|
property bool enableAppsAndShell: true
|
||||||
|
property bool enableQtApps: true
|
||||||
|
property bool enableTerminal: true
|
||||||
|
}
|
||||||
property JsonObject palette: JsonObject {
|
property JsonObject palette: JsonObject {
|
||||||
property string type: "auto" // Allowed: auto, scheme-content, scheme-expressive, scheme-fidelity, scheme-fruit-salad, scheme-monochrome, scheme-neutral, scheme-rainbow, scheme-tonal-spot
|
property string type: "auto" // Allowed: auto, scheme-content, scheme-expressive, scheme-fidelity, scheme-fruit-salad, scheme-monochrome, scheme-neutral, scheme-rainbow, scheme-tonal-spot
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,26 +6,53 @@ import QtQuick.Controls
|
|||||||
import QtQuick.Layouts
|
import QtQuick.Layouts
|
||||||
import Quickshell.Widgets
|
import Quickshell.Widgets
|
||||||
|
|
||||||
// Material 3 slider. See https://m3.material.io/components/sliders/overview
|
/**
|
||||||
|
* Material 3 slider. See https://m3.material.io/components/sliders/overview
|
||||||
|
* It doesn't exactly match the spec because it does not make sense to have stuff on a computer that fucking huge.
|
||||||
|
* Should be at 3/4 scale...
|
||||||
|
*/
|
||||||
|
|
||||||
Slider {
|
Slider {
|
||||||
id: root
|
id: root
|
||||||
property real scale: 0.85
|
|
||||||
property real backgroundDotSize: 4 * scale
|
property list<real> stopIndicatorValues: [1]
|
||||||
property real backgroundDotMargins: 4 * scale
|
enum Configuration {
|
||||||
// property real handleMargins: 0 * scale
|
XS = 12,
|
||||||
property real handleMargins: (root.pressed ? 0 : 2) * scale
|
S = 18,
|
||||||
property real handleWidth: (root.pressed ? 3 : 5) * scale
|
M = 30,
|
||||||
property real handleHeight: 44 * scale
|
L = 42,
|
||||||
property real handleLimit: root.backgroundDotMargins
|
XL = 72
|
||||||
property real trackHeight: 30 * scale
|
}
|
||||||
|
|
||||||
|
property var configuration: StyledSlider.Configuration.S
|
||||||
|
|
||||||
|
property real handleDefaultWidth: 3
|
||||||
|
property real handlePressedWidth: 1.5
|
||||||
|
|
||||||
property color highlightColor: Appearance.colors.colPrimary
|
property color highlightColor: Appearance.colors.colPrimary
|
||||||
property color trackColor: Appearance.colors.colSecondaryContainer
|
property color trackColor: Appearance.colors.colSecondaryContainer
|
||||||
property color handleColor: Appearance.m3colors.m3onSecondaryContainer
|
property color handleColor: Appearance.m3colors.m3onSecondaryContainer
|
||||||
property real trackRadius: Appearance.rounding.verysmall * scale
|
property color dotColor: Appearance.m3colors.m3onSecondaryContainer
|
||||||
|
property color dotColorHighlighted: Appearance.m3colors.m3onPrimary
|
||||||
property real unsharpenRadius: Appearance.rounding.unsharpen
|
property real unsharpenRadius: Appearance.rounding.unsharpen
|
||||||
|
property real trackWidth: configuration
|
||||||
property real limitedHandleRangeWidth: (root.availableWidth - handleWidth - root.handleLimit * 2)
|
property real trackRadius: trackWidth >= StyledSlider.Configuration.XL ? 21
|
||||||
|
: trackWidth >= StyledSlider.Configuration.L ? 12
|
||||||
|
: trackWidth >= StyledSlider.Configuration.M ? 9
|
||||||
|
: 6
|
||||||
|
property real handleHeight: Math.max(33, trackWidth + 9)
|
||||||
|
property real handleWidth: root.pressed ? handlePressedWidth : handleDefaultWidth
|
||||||
|
property real handleMargins: 4
|
||||||
|
onHandleMarginsChanged: {
|
||||||
|
console.log("Handle margins changed to", handleMargins);
|
||||||
|
}
|
||||||
|
property real trackDotSize: 3
|
||||||
property string tooltipContent: `${Math.round(value * 100)}%`
|
property string tooltipContent: `${Math.round(value * 100)}%`
|
||||||
|
|
||||||
|
leftPadding: handleMargins
|
||||||
|
rightPadding: handleMargins
|
||||||
|
property real effectiveDraggingWidth: width - leftPadding - rightPadding
|
||||||
|
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
from: 0
|
from: 0
|
||||||
to: 1
|
to: 1
|
||||||
@@ -37,10 +64,20 @@ Slider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Behavior on handleMargins {
|
Behavior on handleMargins {
|
||||||
NumberAnimation {
|
animation: Appearance.animation.elementMoveFast.numberAnimation.createObject(this)
|
||||||
duration: Appearance.animation.elementMoveFast.duration
|
}
|
||||||
easing.type: Appearance.animation.elementMoveFast.type
|
|
||||||
easing.bezierCurve: Appearance.animation.elementMoveFast.bezierCurve
|
component TrackDot: Rectangle {
|
||||||
|
required property real value
|
||||||
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
|
x: root.handleMargins + (value * root.effectiveDraggingWidth) - (root.trackDotSize / 2)
|
||||||
|
width: root.trackDotSize
|
||||||
|
height: root.trackDotSize
|
||||||
|
radius: Appearance.rounding.full
|
||||||
|
color: value > root.visualPosition ? root.dotColor : root.dotColorHighlighted
|
||||||
|
|
||||||
|
Behavior on color {
|
||||||
|
animation: Appearance.animation.elementMoveFast.colorAnimation.createObject(this)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -52,14 +89,17 @@ Slider {
|
|||||||
|
|
||||||
background: Item {
|
background: Item {
|
||||||
anchors.verticalCenter: parent.verticalCenter
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
implicitHeight: trackHeight
|
width: parent.width
|
||||||
|
implicitHeight: trackWidth
|
||||||
|
|
||||||
// Fill left
|
// Fill left
|
||||||
Rectangle {
|
Rectangle {
|
||||||
anchors.verticalCenter: parent.verticalCenter
|
anchors {
|
||||||
anchors.left: parent.left
|
verticalCenter: parent.verticalCenter
|
||||||
width: root.handleLimit * 2 + root.visualPosition * root.limitedHandleRangeWidth - (root.handleMargins + root.handleWidth / 2)
|
left: parent.left
|
||||||
height: trackHeight
|
}
|
||||||
|
width: root.handleMargins + (root.visualPosition * root.effectiveDraggingWidth) - (root.handleWidth / 2 + root.handleMargins)
|
||||||
|
height: trackWidth
|
||||||
color: root.highlightColor
|
color: root.highlightColor
|
||||||
topLeftRadius: root.trackRadius
|
topLeftRadius: root.trackRadius
|
||||||
bottomLeftRadius: root.trackRadius
|
bottomLeftRadius: root.trackRadius
|
||||||
@@ -69,35 +109,37 @@ Slider {
|
|||||||
|
|
||||||
// Fill right
|
// Fill right
|
||||||
Rectangle {
|
Rectangle {
|
||||||
anchors.verticalCenter: parent.verticalCenter
|
anchors {
|
||||||
anchors.right: parent.right
|
verticalCenter: parent.verticalCenter
|
||||||
width: root.handleLimit * 2 + (1 - root.visualPosition) * root.limitedHandleRangeWidth - (root.handleMargins + root.handleWidth / 2)
|
right: parent.right
|
||||||
height: trackHeight
|
}
|
||||||
|
width: root.handleMargins + ((1 - root.visualPosition) * root.effectiveDraggingWidth) - (root.handleWidth / 2 + root.handleMargins)
|
||||||
|
height: trackWidth
|
||||||
color: root.trackColor
|
color: root.trackColor
|
||||||
topLeftRadius: root.unsharpenRadius
|
|
||||||
bottomLeftRadius: root.unsharpenRadius
|
|
||||||
topRightRadius: root.trackRadius
|
topRightRadius: root.trackRadius
|
||||||
bottomRightRadius: root.trackRadius
|
bottomRightRadius: root.trackRadius
|
||||||
|
topLeftRadius: root.unsharpenRadius
|
||||||
|
bottomLeftRadius: root.unsharpenRadius
|
||||||
}
|
}
|
||||||
|
|
||||||
// Dot at the end
|
// Stop indicators
|
||||||
Rectangle {
|
Repeater {
|
||||||
anchors.verticalCenter: parent.verticalCenter
|
model: root.stopIndicatorValues
|
||||||
anchors.right: parent.right
|
TrackDot {
|
||||||
anchors.rightMargin: root.backgroundDotMargins
|
required property real modelData
|
||||||
width: root.backgroundDotSize
|
value: modelData
|
||||||
height: root.backgroundDotSize
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
radius: Appearance.rounding.full
|
}
|
||||||
color: root.handleColor
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
handle: Rectangle {
|
handle: Rectangle {
|
||||||
id: handle
|
id: handle
|
||||||
x: root.leftPadding + root.handleLimit + root.visualPosition * root.limitedHandleRangeWidth
|
|
||||||
y: root.topPadding + root.availableHeight / 2 - height / 2
|
|
||||||
implicitWidth: root.handleWidth
|
implicitWidth: root.handleWidth
|
||||||
implicitHeight: root.handleHeight
|
implicitHeight: root.handleHeight
|
||||||
|
x: root.handleMargins + (root.visualPosition * root.effectiveDraggingWidth) - (root.handleWidth / 2)
|
||||||
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
radius: Appearance.rounding.full
|
radius: Appearance.rounding.full
|
||||||
color: root.handleColor
|
color: root.handleColor
|
||||||
|
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ Item { // Player instance
|
|||||||
property string artDownloadLocation: Directories.coverArt
|
property string artDownloadLocation: Directories.coverArt
|
||||||
property string artFileName: Qt.md5(artUrl) + ".jpg"
|
property string artFileName: Qt.md5(artUrl) + ".jpg"
|
||||||
property string artFilePath: `${artDownloadLocation}/${artFileName}`
|
property string artFilePath: `${artDownloadLocation}/${artFileName}`
|
||||||
property color artDominantColor: ColorUtils.mix(colorQuantizer?.colors[0], Appearance.colors.colPrimaryContainer, 0.8) || Appearance.m3colors.m3secondaryContainer
|
property color artDominantColor: ColorUtils.mix((colorQuantizer?.colors[0] ?? Appearance.colors.colPrimary), Appearance.colors.colPrimaryContainer, 0.8) || Appearance.m3colors.m3secondaryContainer
|
||||||
property bool downloaded: false
|
property bool downloaded: false
|
||||||
property list<real> visualizerPoints: []
|
property list<real> visualizerPoints: []
|
||||||
property real maxVisualizerValue: 1000 // Max value in the data points
|
property real maxVisualizerValue: 1000 // Max value in the data points
|
||||||
|
|||||||
@@ -0,0 +1,46 @@
|
|||||||
|
import QtQuick
|
||||||
|
import QtQuick.Controls
|
||||||
|
import QtQuick.Layouts
|
||||||
|
import "root:/services/"
|
||||||
|
import "root:/modules/common/"
|
||||||
|
import "root:/modules/common/widgets/"
|
||||||
|
|
||||||
|
ContentPage {
|
||||||
|
forceWidth: true
|
||||||
|
|
||||||
|
ContentSection {
|
||||||
|
title: "Color generation"
|
||||||
|
|
||||||
|
ConfigRow {
|
||||||
|
uniform: true
|
||||||
|
ConfigSwitch {
|
||||||
|
text: "Shell & utilities"
|
||||||
|
checked: Config.options.appearance.wallpaperTheming.enableAppsAndShell
|
||||||
|
onCheckedChanged: {
|
||||||
|
Config.options.appearance.wallpaperTheming.enableAppsAndShell = checked;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ConfigSwitch {
|
||||||
|
text: "Qt apps"
|
||||||
|
checked: Config.options.appearance.wallpaperTheming.enableQtApps
|
||||||
|
onCheckedChanged: {
|
||||||
|
Config.options.appearance.wallpaperTheming.enableQtApps = checked;
|
||||||
|
}
|
||||||
|
StyledToolTip {
|
||||||
|
content: "Shell & utilities theming must also be enabled"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ConfigSwitch {
|
||||||
|
text: "Terminal"
|
||||||
|
checked: Config.options.appearance.wallpaperTheming.enableTerminal
|
||||||
|
onCheckedChanged: {
|
||||||
|
Config.options.appearance.wallpaperTheming.enableTerminal = checked;
|
||||||
|
}
|
||||||
|
StyledToolTip {
|
||||||
|
content: "Shell & utilities theming must also be enabled"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -11,54 +11,55 @@ import Quickshell.Services.Pipewire
|
|||||||
|
|
||||||
Item {
|
Item {
|
||||||
id: root
|
id: root
|
||||||
required property PwNode node;
|
required property PwNode node
|
||||||
PwObjectTracker { objects: [ node ] }
|
PwObjectTracker {
|
||||||
|
objects: [node]
|
||||||
|
}
|
||||||
|
|
||||||
implicitHeight: rowLayout.implicitHeight
|
implicitHeight: rowLayout.implicitHeight
|
||||||
|
|
||||||
RowLayout {
|
RowLayout {
|
||||||
id: rowLayout
|
id: rowLayout
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
spacing: 10
|
spacing: 6
|
||||||
|
|
||||||
|
Image {
|
||||||
|
property real size: slider.height * 0.9
|
||||||
|
Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter
|
||||||
|
visible: source != ""
|
||||||
|
sourceSize.width: size
|
||||||
|
sourceSize.height: size
|
||||||
|
source: {
|
||||||
|
let icon;
|
||||||
|
icon = AppSearch.guessIcon(root.node.properties["application.icon-name"]);
|
||||||
|
if (AppSearch.iconExists(icon))
|
||||||
|
return Quickshell.iconPath(icon, "image-missing");
|
||||||
|
icon = AppSearch.guessIcon(root.node.properties["node.name"]);
|
||||||
|
return Quickshell.iconPath(icon, "image-missing");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
ColumnLayout {
|
ColumnLayout {
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
spacing: 0
|
spacing: -4
|
||||||
|
|
||||||
RowLayout {
|
StyledText {
|
||||||
StyledText {
|
Layout.fillWidth: true
|
||||||
Layout.fillWidth: true
|
font.pixelSize: Appearance.font.pixelSize.small
|
||||||
font.pixelSize: Appearance.font.pixelSize.normal
|
color: Appearance.colors.colSubtext
|
||||||
elide: Text.ElideRight
|
elide: Text.ElideRight
|
||||||
text: {
|
text: {
|
||||||
// application.name -> description -> name
|
// application.name -> description -> name
|
||||||
const app = root.node.properties["application.name"] ?? (root.node.description != "" ? root.node.description : root.node.name);
|
const app = root.node.properties["application.name"] ?? (root.node.description != "" ? root.node.description : root.node.name);
|
||||||
const media = root.node.properties["media.name"];
|
const media = root.node.properties["media.name"];
|
||||||
return media != undefined ? `${app} • ${media}` : app;
|
return media != undefined ? `${app} • ${media}` : app;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
RowLayout {
|
StyledSlider {
|
||||||
Image {
|
id: slider
|
||||||
property real size: slider.trackHeight * 1.3
|
value: root.node.audio.volume
|
||||||
Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter
|
onValueChanged: root.node.audio.volume = value
|
||||||
visible: source != ""
|
|
||||||
sourceSize.width: size
|
|
||||||
sourceSize.height: size
|
|
||||||
source: {
|
|
||||||
let icon;
|
|
||||||
icon = AppSearch.guessIcon(root.node.properties["application.icon-name"]);
|
|
||||||
if (AppSearch.iconExists(icon)) return Quickshell.iconPath(icon, "image-missing");
|
|
||||||
icon = AppSearch.guessIcon(root.node.properties["node.name"]);
|
|
||||||
return Quickshell.iconPath(icon, "image-missing");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
StyledSlider {
|
|
||||||
id: slider
|
|
||||||
value: root.node.audio.volume
|
|
||||||
onValueChanged: root.node.audio.volume = value
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -57,5 +57,16 @@ apply_qt() {
|
|||||||
python "$CONFIG_DIR/scripts/kvantum/changeAdwColors.py" # apply config colors
|
python "$CONFIG_DIR/scripts/kvantum/changeAdwColors.py" # apply config colors
|
||||||
}
|
}
|
||||||
|
|
||||||
apply_qt &
|
# Check if terminal theming is enabled in config
|
||||||
apply_term &
|
CONFIG_FILE="$XDG_CONFIG_HOME/illogical-impulse/config.json"
|
||||||
|
if [ -f "$CONFIG_FILE" ]; then
|
||||||
|
enable_terminal=$(jq -r '.appearance.wallpaperTheming.enableTerminal' "$CONFIG_FILE")
|
||||||
|
if [ "$enable_terminal" = "true" ]; then
|
||||||
|
apply_term &
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "Config file not found at $CONFIG_FILE. Applying terminal theming by default."
|
||||||
|
apply_term &
|
||||||
|
fi
|
||||||
|
|
||||||
|
# apply_qt & # Qt theming is already handled by kde-material-colors
|
||||||
|
|||||||
@@ -12,6 +12,15 @@ MATUGEN_DIR="$XDG_CONFIG_HOME/matugen"
|
|||||||
terminalscheme="$SCRIPT_DIR/terminal/scheme-base.json"
|
terminalscheme="$SCRIPT_DIR/terminal/scheme-base.json"
|
||||||
|
|
||||||
handle_kde_material_you_colors() {
|
handle_kde_material_you_colors() {
|
||||||
|
# Check if Qt app theming is enabled in config
|
||||||
|
CONFIG_FILE="$XDG_CONFIG_HOME/illogical-impulse/config.json"
|
||||||
|
if [ -f "$CONFIG_FILE" ]; then
|
||||||
|
enable_qt_apps=$(jq -r '.appearance.wallpaperTheming.enableQtApps' "$CONFIG_FILE")
|
||||||
|
if [ "$enable_qt_apps" == "false" ]; then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
# Map $type_flag to allowed scheme variants for kde-material-you-colors-wrapper.sh
|
# Map $type_flag to allowed scheme variants for kde-material-you-colors-wrapper.sh
|
||||||
local kde_scheme_variant=""
|
local kde_scheme_variant=""
|
||||||
case "$type_flag" in
|
case "$type_flag" in
|
||||||
@@ -46,6 +55,7 @@ post_process() {
|
|||||||
local screen_height="$2"
|
local screen_height="$2"
|
||||||
local wallpaper_path="$3"
|
local wallpaper_path="$3"
|
||||||
|
|
||||||
|
|
||||||
handle_kde_material_you_colors &
|
handle_kde_material_you_colors &
|
||||||
|
|
||||||
# Determine the largest region on the wallpaper that's sufficiently un-busy to put widgets in
|
# Determine the largest region on the wallpaper that's sufficiently un-busy to put widgets in
|
||||||
@@ -242,6 +252,16 @@ switch() {
|
|||||||
|
|
||||||
pre_process "$mode_flag"
|
pre_process "$mode_flag"
|
||||||
|
|
||||||
|
# Check if app and shell theming is enabled in config
|
||||||
|
CONFIG_FILE="$XDG_CONFIG_HOME/illogical-impulse/config.json"
|
||||||
|
if [ -f "$CONFIG_FILE" ]; then
|
||||||
|
enable_apps_shell=$(jq -r '.appearance.wallpaperTheming.enableAppsAndShell' "$CONFIG_FILE")
|
||||||
|
if [ "$enable_apps_shell" == "false" ]; then
|
||||||
|
echo "App and shell theming disabled, skipping matugen and color generation"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
matugen "${matugen_args[@]}"
|
matugen "${matugen_args[@]}"
|
||||||
source "$(eval echo $ILLOGICAL_IMPULSE_VIRTUAL_ENV)/bin/activate"
|
source "$(eval echo $ILLOGICAL_IMPULSE_VIRTUAL_ENV)/bin/activate"
|
||||||
python3 "$SCRIPT_DIR/generate_colors_material.py" "${generate_colors_material_args[@]}" \
|
python3 "$SCRIPT_DIR/generate_colors_material.py" "${generate_colors_material_args[@]}" \
|
||||||
|
|||||||
@@ -42,6 +42,11 @@ ApplicationWindow {
|
|||||||
icon: "settings",
|
icon: "settings",
|
||||||
component: "modules/settings/ServicesConfig.qml"
|
component: "modules/settings/ServicesConfig.qml"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: "Advanced",
|
||||||
|
icon: "construction",
|
||||||
|
component: "modules/settings/AdvancedConfig.qml"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
name: "About",
|
name: "About",
|
||||||
icon: "info",
|
icon: "info",
|
||||||
|
|||||||
Reference in New Issue
Block a user