diff --git a/dots/.config/fish/config.fish b/dots/.config/fish/config.fish index 0d26fe1dc..c565cef0a 100755 --- a/dots/.config/fish/config.fish +++ b/dots/.config/fish/config.fish @@ -1,28 +1,31 @@ -function fish_prompt -d "Write out the prompt" - # This shows up as USER@HOST /home/user/ >, with the directory colored - # $USER and $hostname are set by fish, so you can just use them - # instead of using `whoami` and `hostname` - printf '%s@%s %s%s%s > ' $USER $hostname \ - (set_color $fish_color_cwd) (prompt_pwd) (set_color normal) -end - -if status is-interactive # Commands to run in interactive sessions can go here - +# Commands to run in interactive sessions can go here +if status is-interactive # No greeting set fish_greeting # Use starship - starship init fish | source + function starship_transient_prompt_func + starship module character + end + if test "$TERM" != "linux" + starship init fish | source + enable_transience + end + + # Colors if test -f ~/.local/state/quickshell/user/generated/terminal/sequences.txt cat ~/.local/state/quickshell/user/generated/terminal/sequences.txt end # Aliases - alias clear "printf '\033[2J\033[3J\033[1;1H'" # fix: kitty doesn't clear properly + # kitty doesn't clear properly so we need to do this weird printing + alias clear "printf '\033[2J\033[3J\033[1;1H'" alias celar "printf '\033[2J\033[3J\033[1;1H'" alias claer "printf '\033[2J\033[3J\033[1;1H'" - alias ls 'eza --icons' alias pamcan pacman alias q 'qs -c ii' + if test "$TERM" != "linux" + alias ls 'eza --icons' + end end diff --git a/dots/.config/quickshell/ii/modules/common/models/quickToggles/NightLightToggle.qml b/dots/.config/quickshell/ii/modules/common/models/quickToggles/NightLightToggle.qml index d53af9740..f71c97ee9 100644 --- a/dots/.config/quickshell/ii/modules/common/models/quickToggles/NightLightToggle.qml +++ b/dots/.config/quickshell/ii/modules/common/models/quickToggles/NightLightToggle.qml @@ -12,11 +12,11 @@ QuickToggleModel { name: Translation.tr("Night Light") statusText: (auto ? Translation.tr("Auto, ") : "") + (toggled ? Translation.tr("Active") : Translation.tr("Inactive")) - toggled: Hyprsunset.active + toggled: Hyprsunset.temperatureActive icon: auto ? "night_sight_auto" : "bedtime" mainAction: () => { - Hyprsunset.toggle() + Hyprsunset.toggleTemperature() } hasMenu: true diff --git a/dots/.config/quickshell/ii/modules/common/widgets/StyledSlider.qml b/dots/.config/quickshell/ii/modules/common/widgets/StyledSlider.qml index 971a1eb10..af25619bd 100644 --- a/dots/.config/quickshell/ii/modules/common/widgets/StyledSlider.qml +++ b/dots/.config/quickshell/ii/modules/common/widgets/StyledSlider.qml @@ -17,6 +17,7 @@ Slider { id: root property list stopIndicatorValues: [1] + property list dividerValues: [] enum Configuration { Wavy = 4, XS = 12, @@ -45,6 +46,7 @@ Slider { property real handleHeight: (configuration === StyledSlider.Configuration.Wavy) ? 24 : Math.max(33, trackWidth + 9) property real handleWidth: root.pressed ? handlePressedWidth : handleDefaultWidth property real handleMargins: 4 + property real dividerMargins: 2 property real trackDotSize: 3 property bool usePercentTooltip: true property string tooltipContent: usePercentTooltip ? `${Math.round(((value - from) / (to - from)) * 100)}%` : `${Math.round(value)}` @@ -94,71 +96,94 @@ Slider { } background: Item { + id: background anchors.verticalCenter: parent.verticalCenter - width: parent.width + anchors.horizontalCenter: parent.horizontalCenter + width: root.width implicitHeight: trackWidth - + property var normalized: root.dividerValues.map(v => (v - root.from) / (root.to - root.from)) + property var filtered: normalized.filter(v => Math.abs(v - root.visualPosition) * effectiveDraggingWidth > handleMargins + handleWidth / 2 - dividerMargins) + property var leftValues: [0, ...filtered.filter(v => v < root.visualPosition), root.visualPosition] + property var rightValues: [root.visualPosition, ...filtered.filter(v => v > root.visualPosition), 1] + property var leftWidths: leftValues.map((v, i, a) => a[i + 1] - v).slice(0, -1) + property var rightWidths: rightValues.map((v, i, a) => a[i + 1] - v).slice(0, -1) + // Fill left - Loader { - anchors { - verticalCenter: parent.verticalCenter - left: parent.left - } - width: root.handleMargins + (root.visualPosition * root.effectiveDraggingWidth) - (root.handleWidth / 2 + root.handleMargins) - height: root.trackWidth - active: !root.wavy - sourceComponent: Rectangle { - color: root.highlightColor - topLeftRadius: root.trackRadius - bottomLeftRadius: root.trackRadius - topRightRadius: root.unsharpenRadius - bottomRightRadius: root.unsharpenRadius + Repeater { + model: background.leftWidths.length + + Loader { + required property real index + anchors.verticalCenter: background.verticalCenter + property real leftMargin: index > 0 ? root.dividerMargins : 0 + property real rightMargin: index < background.leftWidths.length - 1 ? root.dividerMargins : root.handleMargins + x: background.leftValues[index] * root.effectiveDraggingWidth + leftMargin + (index > 0 ? leftPadding : 0) + width: background.leftWidths[index] * root.effectiveDraggingWidth - leftMargin - rightMargin - (index === background.leftWidths.length - 1 ? handleWidth / 2 : 0) + (index === 0 ? leftPadding : 0) + height: root.trackWidth + active: !root.wavy + sourceComponent: Rectangle { + color: root.highlightColor + topLeftRadius: index === 0 ? root.trackRadius : root.unsharpenRadius + bottomLeftRadius: index === 0 ? root.trackRadius : root.unsharpenRadius + topRightRadius: root.unsharpenRadius + bottomRightRadius: root.unsharpenRadius + } } } - Loader { - anchors { - verticalCenter: parent.verticalCenter - left: parent.left - } - width: root.handleMargins + (root.visualPosition * root.effectiveDraggingWidth) - (root.handleWidth / 2 + root.handleMargins) - height: root.height - active: root.wavy - sourceComponent: WavyLine { - id: wavyFill - frequency: root.waveFrequency - fullLength: root.width - color: root.highlightColor - amplitudeMultiplier: root.wavy ? 0.5 : 0 - width: root.handleMargins + (root.visualPosition * root.effectiveDraggingWidth) - (root.handleWidth / 2 + root.handleMargins) - height: root.trackWidth - Connections { - target: root - function onValueChanged() { wavyFill.requestPaint(); } - function onHighlightColorChanged() { wavyFill.requestPaint(); } - } - FrameAnimation { - running: root.animateWave - onTriggered: { - wavyFill.requestPaint() + Repeater { + model: background.leftWidths.length + + Loader { + required property int index + anchors.verticalCenter: background.verticalCenter + property real leftMargin: index > 0 ? root.dividerMargins : 0 + property real rightMargin: index < background.leftWidths.length - 1 ? root.dividerMargins : root.handleMargins + x: background.leftValues[index] * root.effectiveDraggingWidth + leftMargin + (index > 0 ? leftPadding : 0) + width: background.leftWidths[index] * root.effectiveDraggingWidth - leftMargin - rightMargin - (index === background.leftWidths.length - 1 ? handleWidth / 2 : 0) + (index === 0 ? leftPadding : 0) + height: root.height + active: root.wavy + sourceComponent: WavyLine { + id: wavyFill + frequency: root.waveFrequency + fullLength: root.width + color: root.highlightColor + amplitudeMultiplier: root.wavy ? 0.5 : 0 + width: parent.width + height: root.trackWidth + Connections { + target: root + function onValueChanged() { wavyFill.requestPaint(); } + function onHighlightColorChanged() { wavyFill.requestPaint(); } + } + FrameAnimation { + running: root.animateWave + onTriggered: { + wavyFill.requestPaint() + } } } - } + } } // Fill right - Rectangle { - anchors { - verticalCenter: parent.verticalCenter - right: parent.right + Repeater { + model: background.rightWidths.length + + Rectangle { + required property int index + anchors.verticalCenter: background.verticalCenter + property real leftMargin: index > 0 ? root.dividerMargins : root.handleMargins + property real rightMargin: index < background.rightWidths.length - 1 ? root.dividerMargins : 0 + x: background.rightValues[index] * root.effectiveDraggingWidth + leftMargin + (index === 0 ? handleWidth / 2 : 0) + leftPadding + width: background.rightWidths[index] * root.effectiveDraggingWidth - leftMargin - rightMargin - (index === 0 ? handleWidth / 2 : 0) + (index === background.rightWidths.length - 1 ? rightPadding : 0) + height: trackWidth + color: root.trackColor + topRightRadius: index === background.rightWidths.length - 1 ? root.trackRadius : root.unsharpenRadius + bottomRightRadius: index === background.rightWidths.length - 1 ? root.trackRadius : root.unsharpenRadius + topLeftRadius: root.unsharpenRadius + bottomLeftRadius: root.unsharpenRadius } - width: root.handleMargins + ((1 - root.visualPosition) * root.effectiveDraggingWidth) - (root.handleWidth / 2 + root.handleMargins) - height: trackWidth - color: root.trackColor - topRightRadius: root.trackRadius - bottomRightRadius: root.trackRadius - topLeftRadius: root.unsharpenRadius - bottomLeftRadius: root.unsharpenRadius } // Stop indicators @@ -177,7 +202,7 @@ Slider { implicitWidth: root.handleWidth implicitHeight: root.handleHeight - x: root.handleMargins + (root.visualPosition * root.effectiveDraggingWidth) - (root.handleWidth / 2) + x: root.leftPadding + (root.visualPosition * root.effectiveDraggingWidth) - (root.handleWidth / 2) anchors.verticalCenter: parent.verticalCenter radius: Appearance.rounding.full color: root.handleColor diff --git a/dots/.config/quickshell/ii/modules/ii/bar/BarContent.qml b/dots/.config/quickshell/ii/modules/ii/bar/BarContent.qml index 2a72e3382..3bec75890 100644 --- a/dots/.config/quickshell/ii/modules/ii/bar/BarContent.qml +++ b/dots/.config/quickshell/ii/modules/ii/bar/BarContent.qml @@ -59,8 +59,8 @@ Item { // Bar content region implicitWidth: leftSectionRowLayout.implicitWidth implicitHeight: Appearance.sizes.baseBarHeight - onScrollDown: root.brightnessMonitor.setBrightness(root.brightnessMonitor.brightness - 0.05) - onScrollUp: root.brightnessMonitor.setBrightness(root.brightnessMonitor.brightness + 0.05) + onScrollDown: Brightness.decreaseBrightness() + onScrollUp: Brightness.increaseBrightness() onMovedAway: GlobalStates.osdBrightnessOpen = false onPressed: event => { if (event.button === Qt.LeftButton) @@ -70,7 +70,7 @@ Item { // Bar content region // Visual content ScrollHint { reveal: barLeftSideMouseArea.hovered - icon: "light_mode" + icon: Hyprsunset.gamma === 100 ? "light_mode" : "wb_twilight" tooltipText: Translation.tr("Scroll to change brightness") side: "left" anchors.left: parent.left diff --git a/dots/.config/quickshell/ii/modules/ii/onScreenDisplay/OnScreenDisplay.qml b/dots/.config/quickshell/ii/modules/ii/onScreenDisplay/OnScreenDisplay.qml index 21b9c4320..05bce49ae 100644 --- a/dots/.config/quickshell/ii/modules/ii/onScreenDisplay/OnScreenDisplay.qml +++ b/dots/.config/quickshell/ii/modules/ii/onScreenDisplay/OnScreenDisplay.qml @@ -25,6 +25,10 @@ Scope { id: "brightness", sourceUrl: "indicators/BrightnessIndicator.qml" }, + { + id: "gamma", + sourceUrl: "indicators/GammaIndicator.qml" + }, ] function triggerOsd() { @@ -52,6 +56,15 @@ Scope { } } + Connections { + target: Hyprsunset + function onGammaChangeAttempt() { + root.protectionMessage = ""; + root.currentIndicator = "gamma"; + root.triggerOsd(); + } + } + Connections { // Listen to volume changes target: Audio.sink?.audio ?? null diff --git a/dots/.config/quickshell/ii/modules/ii/onScreenDisplay/OsdValueIndicator.qml b/dots/.config/quickshell/ii/modules/ii/onScreenDisplay/OsdValueIndicator.qml index fc10c8a2a..e209ce286 100644 --- a/dots/.config/quickshell/ii/modules/ii/onScreenDisplay/OsdValueIndicator.qml +++ b/dots/.config/quickshell/ii/modules/ii/onScreenDisplay/OsdValueIndicator.qml @@ -11,6 +11,8 @@ Item { required property string name property bool rotateIcon: false property bool scaleIcon: false + property alias from: valueProgressBar.from + property alias to: valueProgressBar.to property real valueIndicatorVerticalPadding: 9 property real valueIndicatorLeftPadding: 10 diff --git a/dots/.config/quickshell/ii/modules/ii/onScreenDisplay/indicators/BrightnessIndicator.qml b/dots/.config/quickshell/ii/modules/ii/onScreenDisplay/indicators/BrightnessIndicator.qml index fbdbd7152..a4381757c 100644 --- a/dots/.config/quickshell/ii/modules/ii/onScreenDisplay/indicators/BrightnessIndicator.qml +++ b/dots/.config/quickshell/ii/modules/ii/onScreenDisplay/indicators/BrightnessIndicator.qml @@ -9,7 +9,7 @@ OsdValueIndicator { property var focusedScreen: Quickshell.screens.find(s => s.name === Hyprland.focusedMonitor?.name) property var brightnessMonitor: Brightness.getMonitorForScreen(focusedScreen) - icon: Hyprsunset.active ? "routine" : "light_mode" + icon: Hyprsunset.temperatureActive ? "routine" : "light_mode" rotateIcon: true scaleIcon: true name: Translation.tr("Brightness") diff --git a/dots/.config/quickshell/ii/modules/ii/onScreenDisplay/indicators/GammaIndicator.qml b/dots/.config/quickshell/ii/modules/ii/onScreenDisplay/indicators/GammaIndicator.qml new file mode 100644 index 000000000..7fed00163 --- /dev/null +++ b/dots/.config/quickshell/ii/modules/ii/onScreenDisplay/indicators/GammaIndicator.qml @@ -0,0 +1,14 @@ +import qs.services +import QtQuick +import Quickshell +import Quickshell.Hyprland +import qs.modules.ii.onScreenDisplay + +OsdValueIndicator { + id: rotateIcon + + icon: "wb_twilight" + name: Translation.tr("Gamma") + from: Hyprsunset.gammaLowerLimit / 100 + value: Hyprsunset.gamma / 100 ?? 0.5 +} diff --git a/dots/.config/quickshell/ii/modules/ii/screenCorners/ScreenCorners.qml b/dots/.config/quickshell/ii/modules/ii/screenCorners/ScreenCorners.qml index cbb8087ae..1e1ec07ba 100644 --- a/dots/.config/quickshell/ii/modules/ii/screenCorners/ScreenCorners.qml +++ b/dots/.config/quickshell/ii/modules/ii/screenCorners/ScreenCorners.qml @@ -98,7 +98,7 @@ Scope { if (!Config.options.sidebar.cornerOpen.valueScroll) return; if (cornerWidget.isLeft) - cornerPanelWindow.brightnessMonitor.setBrightness(cornerPanelWindow.brightnessMonitor.brightness - 0.05); + Brightness.decreaseBrightness() else { const currentVolume = Audio.value; const step = currentVolume < 0.1 ? 0.01 : 0.02 || 0.2; @@ -109,7 +109,7 @@ Scope { if (!Config.options.sidebar.cornerOpen.valueScroll) return; if (cornerWidget.isLeft) - cornerPanelWindow.brightnessMonitor.setBrightness(cornerPanelWindow.brightnessMonitor.brightness + 0.05); + Brightness.increaseBrightness() else { const currentVolume = Audio.value; const step = currentVolume < 0.1 ? 0.01 : 0.02 || 0.2; diff --git a/dots/.config/quickshell/ii/modules/ii/sidebarRight/QuickSliders.qml b/dots/.config/quickshell/ii/modules/ii/sidebarRight/QuickSliders.qml index 26925001e..4e80f7203 100644 --- a/dots/.config/quickshell/ii/modules/ii/sidebarRight/QuickSliders.qml +++ b/dots/.config/quickshell/ii/modules/ii/sidebarRight/QuickSliders.qml @@ -40,10 +40,25 @@ Rectangle { visible: active active: Config.options.sidebar.quickSliders.showBrightness sourceComponent: QuickSlider { - materialSymbol: "brightness_6" - value: root.brightnessMonitor.brightness + materialSymbol: "light_mode" + secondaryMaterialSymbol: "wb_twilight" + stopIndicatorValues: Hyprsunset.gamma !== 100 && root.brightnessMonitor?.brightness !== 0 ? [0.3 + root.brightnessMonitor?.brightness * 0.7] : [] + value: Hyprsunset.gamma === 100? 0.3 + root.brightnessMonitor?.brightness * 0.7 : Hyprsunset.gamma / 100 * 0.3 + tooltipContent: Hyprsunset.gamma === 100 ? `${Math.round(root.brightnessMonitor?.brightness * 100)}%` : `${Translation.tr("Gamma")} ${Hyprsunset.gamma}%` onMoved: { - root.brightnessMonitor.setBrightness(value) + if (value >= 0.3) { + // 0.3 - 1.0 brightness + root.brightnessMonitor.setBrightness((value - 0.3) / 0.7); + if (Hyprsunset.gamma !== 100) { + Hyprsunset.setGamma(100); + } + } else { + // 0 - 0.3 gamma + if (root.brightnessMonitor.brightness !== 0) { + root.brightnessMonitor.setBrightness(0); + } + Hyprsunset.setGamma(value * 100 / 0.3); + } } } } @@ -84,16 +99,18 @@ Rectangle { component QuickSlider: StyledSlider { id: quickSlider required property string materialSymbol + property string secondaryMaterialSymbol configuration: StyledSlider.Configuration.M stopIndicatorValues: [] + dividerValues: secondaryMaterialSymbol.length > 0 ? [secondaryIcon.iconLocation] : [] MaterialSymbol { id: icon property bool nearFull: quickSlider.value >= 0.9 anchors { - verticalCenter: parent.verticalCenter - right: nearFull ? quickSlider.handle.right : parent.right - rightMargin: quickSlider.nearFull ? 14 : 8 + verticalCenter: quickSlider.verticalCenter + right: nearFull ? quickSlider.handle.right : quickSlider.right + rightMargin: nearFull ? 14 : 8 } iconSize: 20 color: nearFull ? Appearance.colors.colOnPrimary : Appearance.colors.colOnSecondaryContainer @@ -105,7 +122,25 @@ Rectangle { Behavior on anchors.rightMargin { animation: Appearance.animation.elementMoveFast.numberAnimation.createObject(this) } + } + MaterialSymbol { + id: secondaryIcon + visible: secondaryMaterialSymbol.length > 0 + property real iconLocation: 0.3 + property bool nearIcon: iconLocation - quickSlider.value <= 0.1 && iconLocation - quickSlider.value > (quickSlider.handleWidth + 8 - 14) / quickSlider.effectiveDraggingWidth + anchors { + verticalCenter: quickSlider.verticalCenter + right: nearIcon ? quickSlider.handle.right : quickSlider.right + rightMargin: nearIcon ? 14 : (1 - iconLocation) * quickSlider.effectiveDraggingWidth + quickSlider.rightPadding + 8 + } + iconSize: 20 + color: quickSlider.value >= iconLocation - 0.1 ? Appearance.colors.colOnPrimary : Appearance.colors.colOnSecondaryContainer + text: secondaryMaterialSymbol + + Behavior on color { + animation: Appearance.animation.elementMoveFast.colorAnimation.createObject(this) + } } } } diff --git a/dots/.config/quickshell/ii/modules/ii/sidebarRight/nightLight/NightLightDialog.qml b/dots/.config/quickshell/ii/modules/ii/sidebarRight/nightLight/NightLightDialog.qml index e6f7509f2..7c7004b99 100644 --- a/dots/.config/quickshell/ii/modules/ii/sidebarRight/nightLight/NightLightDialog.qml +++ b/dots/.config/quickshell/ii/modules/ii/sidebarRight/nightLight/NightLightDialog.qml @@ -15,7 +15,7 @@ WindowDialog { id: root property var screen: root.QsWindow.window?.screen property var brightnessMonitor: Brightness.getMonitorForScreen(screen) - backgroundHeight: 600 + backgroundHeight: 700 WindowDialogTitle { text: Translation.tr("Eye protection") @@ -44,9 +44,9 @@ WindowDialog { iconSize: Appearance.font.pixelSize.larger buttonIcon: "check" text: Translation.tr("Enable now") - checked: Hyprsunset.active + checked: Hyprsunset.temperatureActive onCheckedChanged: { - Hyprsunset.toggle(checked) + Hyprsunset.toggleTemperature(checked) } } @@ -146,6 +146,33 @@ WindowDialog { id: brightnessColumn Layout.topMargin: -16 Layout.fillWidth: true + + WindowDialogSlider { + anchors { + left: parent.left + right: parent.right + leftMargin: 4 + rightMargin: 4 + } + value: root.brightnessMonitor.brightness + onMoved: root.brightnessMonitor.setBrightness(value) + } + } + + WindowDialogSectionHeader { + text: Translation.tr("Gamma") + } + + WindowDialogSeparator { + Layout.topMargin: -22 + Layout.leftMargin: 0 + Layout.rightMargin: 0 + } + + Column { + id: gammaColumn + Layout.topMargin: -16 + Layout.fillWidth: true Layout.fillHeight: true WindowDialogSlider { @@ -155,9 +182,10 @@ WindowDialog { leftMargin: 4 rightMargin: 4 } - // text: Translation.tr("Brightness") - value: root.brightnessMonitor.brightness - onMoved: root.brightnessMonitor.setBrightness(value) + from: Hyprsunset.gammaLowerLimit / 100 + value: Hyprsunset.gamma / 100 + onMoved: Hyprsunset.setGamma(value * 100) + tooltipContent: `${Math.round(value * 100)}%` } } diff --git a/dots/.config/quickshell/ii/modules/ii/sidebarRight/quickToggles/classicStyle/NightLight.qml b/dots/.config/quickshell/ii/modules/ii/sidebarRight/quickToggles/classicStyle/NightLight.qml index 8b7e69a5a..7fa6f18ae 100644 --- a/dots/.config/quickshell/ii/modules/ii/sidebarRight/quickToggles/classicStyle/NightLight.qml +++ b/dots/.config/quickshell/ii/modules/ii/sidebarRight/quickToggles/classicStyle/NightLight.qml @@ -6,10 +6,10 @@ import Quickshell.Io QuickToggleButton { id: nightLightButton - toggled: Hyprsunset.active + toggled: Hyprsunset.temperatureActive buttonIcon: Config.options.light.night.automatic ? "night_sight_auto" : "bedtime" onClicked: { - Hyprsunset.toggle() + Hyprsunset.toggleTemperature() } altAction: () => { diff --git a/dots/.config/quickshell/ii/modules/ii/verticalBar/VerticalBarContent.qml b/dots/.config/quickshell/ii/modules/ii/verticalBar/VerticalBarContent.qml index 69ffc4bbe..4e34d421a 100644 --- a/dots/.config/quickshell/ii/modules/ii/verticalBar/VerticalBarContent.qml +++ b/dots/.config/quickshell/ii/modules/ii/verticalBar/VerticalBarContent.qml @@ -54,8 +54,8 @@ Item { // Bar content region height: (root.height - middleSection.height) / 2 width: Appearance.sizes.verticalBarWidth - onScrollDown: root.brightnessMonitor.setBrightness(root.brightnessMonitor.brightness - 0.05) - onScrollUp: root.brightnessMonitor.setBrightness(root.brightnessMonitor.brightness + 0.05) + onScrollDown: Brightness.decreaseBrightness() + onScrollUp: Brightness.increaseBrightness() onMovedAway: GlobalStates.osdBrightnessOpen = false onPressed: event => { if (event.button === Qt.LeftButton) diff --git a/dots/.config/quickshell/ii/modules/settings/BackgroundConfig.qml b/dots/.config/quickshell/ii/modules/settings/BackgroundConfig.qml index 9916df9c1..680421f03 100644 --- a/dots/.config/quickshell/ii/modules/settings/BackgroundConfig.qml +++ b/dots/.config/quickshell/ii/modules/settings/BackgroundConfig.qml @@ -303,7 +303,7 @@ ContentPage { Config.options.background.widgets.clock.cookie.useSineCookie = checked; } StyledToolTip { - text: "Looks a bit softer and more consistent with different number of sides,\nbut has less impressive morphing" + text: Translation.tr("Looks a bit softer and more consistent with different number of sides,\nbut has less impressive morphing") } } @@ -327,7 +327,7 @@ ContentPage { Config.options.background.widgets.clock.cookie.constantlyRotate = checked; } StyledToolTip { - text: "Makes the clock always rotate. This is extremely expensive\n(expect 50% usage on Intel UHD Graphics) and thus impractical." + text: Translation.tr("Makes the clock always rotate. This is extremely expensive\n(expect 50% usage on Intel UHD Graphics) and thus impractical.") } } @@ -345,7 +345,7 @@ ContentPage { Config.options.background.widgets.clock.cookie.hourMarks = checked; } StyledToolTip { - text: "Can only be turned on using the 'Dots' or 'Full' dial style for aesthetic reasons" + text: Translation.tr("Can only be turned on using the 'Dots' or 'Full' dial style for aesthetic reasons") } } @@ -361,7 +361,7 @@ ContentPage { Config.options.background.widgets.clock.cookie.timeIndicators = checked; } StyledToolTip { - text: "Can't be turned on when using 'Numbers' dial style for aesthetic reasons" + text: Translation.tr("Can't be turned on when using 'Numbers' dial style for aesthetic reasons") } } } diff --git a/dots/.config/quickshell/ii/modules/waffle/actionCenter/nightLight/NightLightControl.qml b/dots/.config/quickshell/ii/modules/waffle/actionCenter/nightLight/NightLightControl.qml index 591e56399..09d00fda9 100644 --- a/dots/.config/quickshell/ii/modules/waffle/actionCenter/nightLight/NightLightControl.qml +++ b/dots/.config/quickshell/ii/modules/waffle/actionCenter/nightLight/NightLightControl.qml @@ -87,9 +87,9 @@ Item { name: Translation.tr("Enable now") description: Translation.tr("More comfortable viewing at night") iconName: WIcons.nightLightIcon - checked: Hyprsunset.active + checked: Hyprsunset.temperatureActive onCheckedChanged: { - Hyprsunset.toggle(checked); + Hyprsunset.toggleTemperature(checked); } } diff --git a/dots/.config/quickshell/ii/modules/waffle/looks/WIcons.qml b/dots/.config/quickshell/ii/modules/waffle/looks/WIcons.qml index b804aa3d9..ce026da29 100644 --- a/dots/.config/quickshell/ii/modules/waffle/looks/WIcons.qml +++ b/dots/.config/quickshell/ii/modules/waffle/looks/WIcons.qml @@ -71,7 +71,7 @@ Singleton { property string bluetoothIcon: BluetoothStatus.connected ? "bluetooth-connected" : BluetoothStatus.enabled ? "bluetooth" : "bluetooth-disabled" - property string nightLightIcon: Hyprsunset.active ? "weather-moon" : "weather-moon-off" + property string nightLightIcon: Hyprsunset.temperatureActive ? "weather-moon" : "weather-moon-off" property string notificationsIcon: Notifications.silent ? "alert-snooze" : "alert" diff --git a/dots/.config/quickshell/ii/scripts/colors/applycolor.sh b/dots/.config/quickshell/ii/scripts/colors/applycolor.sh index fd8651c73..2aab8dfce 100755 --- a/dots/.config/quickshell/ii/scripts/colors/applycolor.sh +++ b/dots/.config/quickshell/ii/scripts/colors/applycolor.sh @@ -40,6 +40,9 @@ apply_kitty() { for i in "${!colorlist[@]}"; do sed -i "s/${colorlist[$i]} #/${colorvalues[$i]#\#}/g" "$STATE_DIR"/user/generated/terminal/kitty-theme.conf done + + # Reload + kill -SIGUSR1 $(pidof kitty) } apply_anyterm() { diff --git a/dots/.config/quickshell/ii/scripts/colors/terminal/kitty-theme.conf b/dots/.config/quickshell/ii/scripts/colors/terminal/kitty-theme.conf index 2017b50f6..fdebeab3a 100644 --- a/dots/.config/quickshell/ii/scripts/colors/terminal/kitty-theme.conf +++ b/dots/.config/quickshell/ii/scripts/colors/terminal/kitty-theme.conf @@ -23,5 +23,27 @@ cursor #$term7 # foreground #$term7 # -selection_background #$term7 # -selection_foreground #$term0 # +selection_background #$onSecondaryContainer # +selection_foreground #$secondaryContainer # + +# Override obscure colors for starship prompt (these are greys at the end) +color255 #$primary # +color254 #$primaryContainer # +color253 #$secondary # +color252 #$secondaryContainer # +color251 #$tertiary # +color250 #$tertiaryContainer # +color249 #$error # +color248 #$errorContainer # + +color232 #$onPrimary # +color233 #$onPrimaryContainer # +color234 #$onSecondary # +color235 #$onSecondaryContainer # +color236 #$onTertiary # +color237 #$onTertiaryContainer # +color238 #$onError # +color239 #$onErrorContainer # + +color244 #$outline # +color245 #$outlineVariant # diff --git a/dots/.config/quickshell/ii/services/Brightness.qml b/dots/.config/quickshell/ii/services/Brightness.qml index b0c7f303e..939bc37d8 100644 --- a/dots/.config/quickshell/ii/services/Brightness.qml +++ b/dots/.config/quickshell/ii/services/Brightness.qml @@ -28,6 +28,12 @@ Singleton { } function increaseBrightness(): void { + // if gamma is not yet 100, first increase gamma + if (Hyprsunset.gamma !== 100) { + Hyprsunset.setGamma(Hyprsunset.gamma + 5); + return; + } + const focusedName = Hyprland.focusedMonitor.name; const monitor = monitors.find(m => focusedName === m.screen.name); if (monitor) @@ -37,8 +43,12 @@ Singleton { function decreaseBrightness(): void { const focusedName = Hyprland.focusedMonitor.name; const monitor = monitors.find(m => focusedName === m.screen.name); - if (monitor) + if (monitor && monitor.brightness > 0) monitor.setBrightness(monitor.brightness - 0.05); + // if brightness is 0, then decrease gamma + else { + Hyprsunset.setGamma(Hyprsunset.gamma - 5); + } } reloadableId: "brightness" diff --git a/dots/.config/quickshell/ii/services/Hyprsunset.qml b/dots/.config/quickshell/ii/services/Hyprsunset.qml index 8f0e36529..d51d4fe99 100644 --- a/dots/.config/quickshell/ii/services/Hyprsunset.qml +++ b/dots/.config/quickshell/ii/services/Hyprsunset.qml @@ -13,13 +13,18 @@ import Quickshell.Hyprland */ Singleton { id: root + signal gammaChangeAttempt() + + readonly property real gammaLowerLimit: 25 + property string from: Config.options?.light?.night?.from ?? "19:00" property string to: Config.options?.light?.night?.to ?? "06:30" property bool automatic: Config.options?.light?.night?.automatic && (Config?.ready ?? true) property int colorTemperature: Config.options?.light?.night?.colorTemperature ?? 5000 + property int gamma: 100 property bool shouldBeOn property bool firstEvaluation: true - property bool active: false + property bool temperatureActive: false property int fromHour: Number(from.split(":")[0]) property int fromMinute: Number(from.split(":")[1]) @@ -71,24 +76,52 @@ Singleton { if (!root.automatic || root.manualActive !== undefined) return; if (root.shouldBeOn) { - root.enable(); + root.enableTemperature(); } else { - root.disable(); + root.disableTemperature(); } } - function load() { } // Dummy to force init - - function enable() { - root.active = true; - // console.log("[Hyprsunset] Enabling"); - Quickshell.execDetached(["bash", "-c", `pidof hyprsunset || hyprsunset --temperature ${root.colorTemperature}`]); + function startHyprsunset() { + Quickshell.execDetached(["bash", "-c", `pidof hyprsunset || hyprsunset`]); } - function disable() { - root.active = false; + function load() { + root.startHyprsunset(); + updateHyprsunset.restart(); + } + + Timer { + id: updateHyprsunset + interval: 100 + repeat: false + onTriggered: { + root.ensureState(); + root.setGamma(root.gamma); + } + } + + function enableTemperature() { + root.temperatureActive = true; + + // console.log("[Hyprsunset] Enabling"); + root.startHyprsunset(); + Quickshell.execDetached(["bash", "-c", `hyprctl hyprsunset temperature ${root.colorTemperature}`]); + } + + function disableTemperature() { + root.temperatureActive = false; // console.log("[Hyprsunset] Disabling"); - Quickshell.execDetached(["bash", "-c", `pkill hyprsunset`]); + Quickshell.execDetached(["hyprctl", "hyprsunset", "identity"]); + } + + function setGamma(gamma) { + root.gamma = Math.max(root.gammaLowerLimit, Math.min(100, gamma)); + + root.gammaChangeAttempt(); + + root.startHyprsunset(); + Quickshell.execDetached(["bash", "-c", `hyprctl hyprsunset gamma ${root.gamma}`]); } function fetchState() { @@ -104,26 +137,26 @@ Singleton { onStreamFinished: { const output = stateCollector.text.trim(); if (output.length == 0 || output.startsWith("Couldn't")) - root.active = false; + root.temperatureActive = false; else - root.active = (output != "6500"); // 6500 is the default when off - // console.log("[Hyprsunset] Fetched state:", output, "->", root.active); + root.temperatureActive = (output != "6500"); // 6500 is the default when off + // console.log("[Hyprsunset] Fetched state:", output, "->", root.temperatureActive); } } } - function toggle(active = undefined) { + function toggleTemperature(active = undefined) { if (root.manualActive === undefined) { - root.manualActive = root.active; + root.manualActive = root.temperatureActive; root.manualActiveHour = root.clockHour; root.manualActiveMinute = root.clockMinute; } root.manualActive = active !== undefined ? active : !root.manualActive; if (root.manualActive) { - root.enable(); + root.enableTemperature(); } else { - root.disable(); + root.disableTemperature(); } } @@ -131,9 +164,9 @@ Singleton { Connections { target: Config.options.light.night function onColorTemperatureChanged() { - if (!root.active) return; + if (!root.temperatureActive) return; Hyprland.dispatch(`hyprctl hyprsunset temperature ${Config.options.light.night.colorTemperature}`); Quickshell.execDetached(["hyprctl", "hyprsunset", "temperature", `${Config.options.light.night.colorTemperature}`]); } } -} +} \ No newline at end of file diff --git a/dots/.config/quickshell/ii/translations/en_US.json b/dots/.config/quickshell/ii/translations/en_US.json index 82cae2c08..15e5d85d3 100644 --- a/dots/.config/quickshell/ii/translations/en_US.json +++ b/dots/.config/quickshell/ii/translations/en_US.json @@ -81,6 +81,7 @@ "Unknown function call: %1": "Unknown function call: %1", "Online | %1's model | Delivers fast, responsive and well-formatted answers. Disadvantages: not very eager to do stuff; might make up unknown function calls": "Online | %1's model | Delivers fast, responsive and well-formatted answers. Disadvantages: not very eager to do stuff; might make up unknown function calls", "Volume": "Volume", + "Gamma": "Gamma", "Medium": "Medium", "Copy code": "Copy code", "Exceeded max allowed": "Exceeded max allowed", @@ -359,6 +360,10 @@ "Connect to Wi-Fi": "Connect to Wi-Fi", "... and %1 more": "... and %1 more", "Cookie clock settings": "Cookie clock settings", + "Looks a bit softer and more consistent with different number of sides,\nbut has less impressive morphing": "Looks a bit softer and more consistent with different number of sides,\nbut has less impressive morphing", + "Makes the clock always rotate. This is extremely expensive\n(expect 50% usage on Intel UHD Graphics) and thus impractical.": "Makes the clock always rotate. This is extremely expensive\n(expect 50% usage on Intel UHD Graphics) and thus impractical.", + "Can only be turned on using the 'Dots' or 'Full' dial style for aesthetic reasons": "Can only be turned on using the 'Dots' or 'Full' dial style for aesthetic reasons", + "Can't be turned on when using 'Numbers' dial style for aesthetic reasons": "Can't be turned on when using 'Numbers' dial style for aesthetic reasons", "Brightness and volume": "Brightness and volume", "Choose file": "Choose file", "Invalid model. Supported: \n```": "Invalid model. Supported: \n```", @@ -607,4 +612,4 @@ "Battery full": "Battery full", "Pin": "Pin", "Unpin": "Unpin" -} \ No newline at end of file +} diff --git a/dots/.config/quickshell/ii/translations/ru_RU.json b/dots/.config/quickshell/ii/translations/ru_RU.json index d8d6498a3..998b7a34d 100644 --- a/dots/.config/quickshell/ii/translations/ru_RU.json +++ b/dots/.config/quickshell/ii/translations/ru_RU.json @@ -35,7 +35,7 @@ "Help & Support": "Помощь", "Bubble": "Пузырчатый", "Large images | God tier quality, no NSFW.": "Большие изобр. | Отличное качество, без NSFW.", - "Dark": "Тьма", + "Dark": "Тёмный", "Center clock": "Часы по центру экрана", "Search, calculate or run": "Поиск, расчёт, запуск", "Region height": "Высота области", @@ -47,7 +47,7 @@ "at": "в", "Math": "Математика", "Consider plugging in your device": "Подключите зарядку", - "Workspaces shown": "Видимые пространство", + "Workspaces shown": "Видимые пространства", "Place the corners to trigger at the bottom": "Триггер-углы снизу", "No API key\nSet it with /key YOUR_API_KEY": "Нет API-ключа\nУстановите: /key ВАШ_КЛЮЧ", "Auto (System)": "Авто (система)", @@ -223,7 +223,7 @@ "Networking": "Сеть", "Tint icons": "Тонировать иконки", "Low battery": "Низкий заряд", - "Make icons pinned by default": "Показывать все иконки", + "Make icons pinned by default": "Закреплять все иконки", "Get the next page of results": "Следующая стр. результатов", "Invalid API provider. Supported: \n-": "Неверный провайдер. Поддерж:\n-", "Show \"Locked\" text": "Показ. текст «Заблокировано»", @@ -276,7 +276,7 @@ "Prefixes": "Префиксы", "Terminal": "Терминала", "Incorrect password": "Неверный пароль", - "Line-separated": "Без разделения", + "Line-separated": "Разделение по строкам", "Always": "Всегда", "☕ Break: %1 minutes": "☕ Перерыв: %1 мин", "Depends on sidebars": "Зависит от панелей", @@ -288,7 +288,7 @@ "Base URL": "Базовый URL", "Float": "Флоат", "Invalid arguments. Must provide `command`.": "Неверные аргументы. Укажите `command`.", - "Fully charged": "Полностью заряжен", + "Fully charged": "Полностью заряжена", "Earbang protection": "Защита ушей", "Low warning": "Увед. о низком %", "Advanced": "Прочее", @@ -330,6 +330,10 @@ "Connect to Wi-Fi": "Подкл. к Wi-Fi", "... and %1 more": "... и ещё %1", "Cookie clock settings": "Настройки «Cookie»-часов", + "Looks a bit softer and more consistent with different number of sides,\nbut has less impressive morphing": "Выглядит мягче и уместнее с разным количеством углов,\nно сжатие может выглядить менее впечатляюще", + "Makes the clock always rotate. This is extremely expensive\n(expect 50% usage on Intel UHD Graphics) and thus impractical.": "Часы будут постоянно вращаться. Это крайне ресурсозатратно\n(примерно 50% использования Intel UHD Graphics) и фактически бесполезно.", + "Can only be turned on using the 'Dots' or 'Full' dial style for aesthetic reasons": "Может быть активировано только в режимах 'С точками' и 'Полностью залитый' по эстетическим причинам", + "Can't be turned on when using 'Numbers' dial style for aesthetic reasons": "Не может быть включено, когда используется стиль 'С числами' по эстетическим причинам", "Brightness and volume": "Яркость и громкость", "Choose file": "Выбор обоев", "Invalid model. Supported: \n```": "Неверная модель. Поддерживаемые: \n```", @@ -434,7 +438,7 @@ "Game mode": "Игровой режим", "Usage: %1save CHAT_NAME": "Исп: %1save ИМЯ_ЧАТА", "Thin": "Тонкий", - "Light": "Свет", + "Light": "Светлый", "When not fullscreen": "Не в фулл-скрине", "Commands, edit configs, search.\nTakes an extra turn to switch to search mode if that's needed": "Команды, редактирование конфигов, поиск.\nПри необходимости переключается в режим поиска", "Privacy Policy": "Политика конфиденциальности", @@ -506,7 +510,7 @@ "Could be images or parts of the screen that have some containment.\nMight not always be accurate.\nThis is done with an image processing algorithm run locally and no AI is used.": "Могут быть изображения или части экрана с содержимым.\nМожет быть неточно.\nИспользуется локальный алгоритм обработки изображений, без ИИ.", "Polling interval (m)": "Интервал опроса (мин)", "Inactive": "Неактивно", - "Authentication": "Аутентиф.", + "Authentication": "Аутентификация", "Full warning": "Уведомление о полном заряде при проценте", "Power Profile": "Профиль питания", "Content region": "Обл. контента", @@ -596,7 +600,7 @@ "Battery: %1%2": "Батарея: %1%2", "Command": "Команда", "Tooltips": "Подсказки", - "Show hidden icons": "Системный трей", + "Show hidden icons": "Показать скрытые значки", "Used for headings and titles": "Для заголовков", "Top-down": "Сверху вниз", "of %1": "из %1", @@ -613,7 +617,7 @@ "Overlay: General": "Игровой оверлей", "Enable opening zoom animation": "Анимация зума при открытии", "More Internet settings": "Доп. сетевые настройки", - "Nerd font icons": "Иконки Nerd Font (эмодзи)", + "Nerd font icons": "Иконки Nerd Font", "Display modifiers and keys in multiple keycap (e.g., \"Ctrl + A\" instead of \"Ctrl A\" or \"󰘴 + A\" instead of \"󰘴 A\")": "Показывать модификаторы с разделителем (напр, «Ctrl + A» вместо «Ctrl A»)", "Change password": "Изменить пароль", "Check interval (mins)": "Интервал пров. (мин)", @@ -633,7 +637,7 @@ "Numbers font": "Шрифт чисел", "Move right": "Переместить вправо", "Unknown Application": "Неизв. приложение", - "Used for decorative/expressive text": "Для декоротивного / выразительного текста", + "Used for decorative/expressive text": "Для декоративного / выразительного текста", "Used for reading large blocks of text": "Для чтения больших блоков", "Type /key to get started with online models\nCtrl+O to expand sidebar\nCtrl+P to pin sidebar\nCtrl+D to detach sidebar": "Введите /key для онлайн-моделей\nCtrl+O - расширить панель\nCtrl+P - закрепить панель\nCtrl+D - открепить панель", "Health:": "Здоровье:", @@ -648,7 +652,7 @@ "Pinned": "Закреплено", "Unpin from Start": "Открепить из пуска", "Adjust the color temperature": "Цветовая температура", - "Han chars": "Кандзи", + "Han chars": "Иероглифы", "Show only when locked": "Отображать только при блокировке", "Widget: Weather": "Виджет погоды", "Right to left": "Справа налево", @@ -659,13 +663,13 @@ "Fonts": "Шрифты", "Left to right": "Слева направо", "Set FPS limit": "Лимит FPS", - "Draggable": "Drag & drop", + "Draggable": "Перетаскиваемый", "Turn on from sunset to sunrise": "От заката до рассвета", "Do you want to allow this app to make changes to your device?": "Разрешить приложению изменять устройство?", "Balance brightness based on content": "Баланс яркости по содержимому", "Font width and roundness settings are only available for some fonts like Google Sans Flex": "Ширина и скруглённость - только для нек. шрифтов (напр, Google Sans Flex)", "Record region": "Запись обл.", - "You can also manually edit cheatsheet.superKey": "Можно вручную отредактировать клавишу в шпаргалке клавиш и в других частях системы", + "You can also manually edit cheatsheet.superKey": "Также вы можете вручную отредактировать cheatsheet.superKey", "Sign out": "Выйти", "Overlay: Crosshair": "Оверлей: прицел", "Shut down": "Выключить", diff --git a/dots/.config/starship.toml b/dots/.config/starship.toml index 2e3f7db96..376b46630 100644 --- a/dots/.config/starship.toml +++ b/dots/.config/starship.toml @@ -7,28 +7,31 @@ add_newline = false # Cool stuff 󰜥    # format = """ -# $cmd_duration$username$hostname $directory $git_branch -# $character -# """ +# $directory $fill $git_branch $cmd_duration +# $character""" format = """ -$cmd_duration 󰜥 $directory $git_branch -$character""" +$cmd_duration $directory$git_branch + $character""" + +[fill] +symbol = '-' +style = 'fg:245' # Replace the "❯" symbol in the prompt with "➜" [character] # The name of the module we are configuring is "character" -success_symbol = "[  ](bold fg:blue)" -error_symbol = "[  ](bold fg:red)" +success_symbol = "[ ](bold fg:255)" +error_symbol = "[ ](bold fg:249)" # Disable the package module, hiding it from the prompt completely [package] disabled = true [git_branch] -style = "bg: cyan" +style = "bg: 252" symbol = "󰘬" truncation_length = 12 truncation_symbol = "" -format = "󰜥 [](bold fg:cyan)[$symbol $branch(:$remote_branch)](fg:black bg:cyan)[ ](bold fg:cyan)" +format = " 󰜥 [](bold fg:252)[$symbol $branch(:$remote_branch)](fg:235 bg:252)[ ](bold fg:252)" [git_commit] commit_hash_length = 4 @@ -52,7 +55,7 @@ deleted = " 🗑 " [hostname] ssh_only = false -format = "[•$hostname](bg:cyan bold fg:black)[](bold fg:cyan)" +format = "[•$hostname](bg:252 bold fg:235)[](bold fg:252)" trim_at = ".companyname.com" disabled = false @@ -71,19 +74,19 @@ format = '🕙[\[ $time \]]($style) ' time_format = "%T" [username] -style_user = "bold bg:cyan fg:black" +style_user = "bold bg:252 fg:235" style_root = "red bold" -format = "[](bold fg:cyan)[$user]($style)" +format = "[](bold fg:252)[$user]($style)" disabled = false show_always = true [directory] -home_symbol = "  " +home_symbol = " " read_only = "  " -style = "bg:green fg:black" -truncation_length = 6 -truncation_symbol = " ••/" -format = '[](bold fg:green)[󰉋 $path]($style)[](bold fg:green)' +style = "bg:255 fg:black" +truncation_length = 2 +truncation_symbol = ".../" +format = '[](bold fg:255)[󰉋 → $path]($style)[](bold fg:255)' [directory.substitutions] @@ -97,4 +100,4 @@ format = '[](bold fg:green)[󰉋 $path]($style)[](bold fg:green)' [cmd_duration] min_time = 0 -format = '[](bold fg:yellow)[󰪢 $duration](bold bg:yellow fg:black)[](bold fg:yellow)' +format = '[](bold fg:252)[󰪢 $duration](bold bg:252 fg:235)[](bold fg:252)' diff --git a/sdata/dist-gentoo/illogical-impulse-quickshell-git/illogical-impulse-quickshell-git-9999-r5.ebuild b/sdata/dist-gentoo/illogical-impulse-quickshell-git/illogical-impulse-quickshell-git-0.1.0-r6.ebuild similarity index 70% rename from sdata/dist-gentoo/illogical-impulse-quickshell-git/illogical-impulse-quickshell-git-9999-r5.ebuild rename to sdata/dist-gentoo/illogical-impulse-quickshell-git/illogical-impulse-quickshell-git-0.1.0-r6.ebuild index f7bc4a155..5d8358638 100644 --- a/sdata/dist-gentoo/illogical-impulse-quickshell-git/illogical-impulse-quickshell-git-9999-r5.ebuild +++ b/sdata/dist-gentoo/illogical-impulse-quickshell-git/illogical-impulse-quickshell-git-0.1.0-r6.ebuild @@ -9,62 +9,62 @@ DESCRIPTION="Toolkit for building desktop widgets using QtQuick" HOMEPAGE="https://quickshell.org/" EGIT_REPO_URI="https://github.com/quickshell-mirror/quickshell.git" -EGIT_COMMIT="6e17efab83d3a5ad5d6e59bc08d26095c6660502" +EGIT_COMMIT="7511545ee20664e3b8b8d3322c0ffe7567c56f7a" KEYWORDS="~amd64 ~arm64 ~x86" LICENSE="LGPL-3" SLOT="0" -# Upstream recommends leaving all build options enabled by default -IUSE="+breakpad +jemalloc +sockets +wayland +layer-shell +session-lock +toplevel-management +screencopy +X +pipewire +tray +mpris +pam +hyprland +hyprland-global-shortcuts +hyprland-focus-grab +i3 +i3-ipc +bluetooth" + +IUSE="-breakpad +jemalloc +sockets +wayland +layer-shell +session-lock +toplevel-management +screencopy +X +pipewire +tray +mpris +pam +hyprland +hyprland-global-shortcuts +hyprland-focus-grab -i3 -i3-ipc +bluetooth" RDEPEND=" - dev-qt/qtbase:6 - dev-qt/qtsvg:6 - dev-qt/qt5compat:6 - - dev-qt/qtimageformats:6 - dev-qt/qtmultimedia:6 - dev-qt/qtpositioning:6 - dev-qt/qtquicktimeline:6 - dev-qt/qtsensors:6 - dev-qt/qtsvg:6 - dev-qt/qttools:6 - dev-qt/qttranslations:6 - dev-qt/qtvirtualkeyboard:6 - dev-qt/qtwayland:6 + dev-qt/qtbase:6= + dev-qt/qtdeclarative:6= + dev-qt/qt5compat:6= + kde-frameworks/kimageformats:6=[avif] + dev-cpp/cpptrace[unwind] + dev-qt/qtimageformats:6= + dev-qt/qtmultimedia:6= + dev-qt/qtpositioning:6= + dev-qt/qtquicktimeline:6= + dev-qt/qtsensors:6= + dev-qt/qtsvg:6= + dev-qt/qttools:6= + dev-qt/qttranslations:6= + dev-qt/qtvirtualkeyboard:6= + dev-qt/qtwayland:6= kde-apps/kdialog - kde-frameworks/syntax-highlighting:6 - kde-frameworks/kirigami + kde-frameworks/syntax-highlighting:6= + kde-frameworks/kirigami:6= - jemalloc? ( dev-libs/jemalloc ) + jemalloc? ( dev-libs/jemalloc:= ) wayland? ( dev-libs/wayland - dev-qt/qtwayland:6 + dev-qt/qtwayland:6= ) screencopy? ( x11-libs/libdrm media-libs/mesa ) - X? ( x11-libs/libxcb ) - pipewire? ( media-video/pipewire ) - mpris? ( dev-qt/qtdbus ) + X? ( x11-libs/libxcb:= ) + pipewire? ( media-video/pipewire:= ) + mpris? ( dev-qt/qtdbus:= ) pam? ( sys-libs/pam ) bluetooth? ( net-wireless/bluez ) " DEPEND="${RDEPEND}" BDEPEND=" - || ( >=sys-devel/gcc-14:* >=llvm-core/clang-17:* ) + dev-cpp/cli11 + dev-build/cmake + dev-vcs/git + dev-build/ninja + dev-qt/qtshadertools dev-util/spirv-tools - dev-qt/qtshadertools:6 wayland? ( dev-util/wayland-scanner dev-libs/wayland-protocols ) - dev-cpp/cli11 - dev-build/ninja - dev-build/cmake - dev-vcs/git virtual/pkgconfig breakpad? ( dev-util/breakpad ) dev-util/vulkan-headers @@ -74,7 +74,7 @@ src_configure(){ mycmakeargs=( -DCMAKE_BUILD_TYPE=RelWithDebInfo -DDISTRIBUTOR="Gentoo Illogical-Impulses" - -DINSTALL_QML_PREFIX="lib64/qt6/qml" + -DINSTALL_QML_PREFIX="$(get_libdir)/qt6/qml" -DCRASH_REPORTER=$(usex breakpad ON OFF) -DUSE_JEMALLOC=$(usex jemalloc ON OFF) -DSOCKETS=$(usex sockets ON OFF) diff --git a/sdata/dist-gentoo/illogical-impulse-widgets/illogical-impulse-widgets-1.0-r4.ebuild b/sdata/dist-gentoo/illogical-impulse-widgets/illogical-impulse-widgets-1.0-r5.ebuild similarity index 95% rename from sdata/dist-gentoo/illogical-impulse-widgets/illogical-impulse-widgets-1.0-r4.ebuild rename to sdata/dist-gentoo/illogical-impulse-widgets/illogical-impulse-widgets-1.0-r5.ebuild index 9ffceea09..6e9bf62af 100644 --- a/sdata/dist-gentoo/illogical-impulse-widgets/illogical-impulse-widgets-1.0-r4.ebuild +++ b/sdata/dist-gentoo/illogical-impulse-widgets/illogical-impulse-widgets-1.0-r5.ebuild @@ -18,7 +18,7 @@ RDEPEND=" gui-apps/hypridle gui-apps/hyprlock gui-apps/hyprpicker - app-misc/songrec + media-sound/songrec app-i18n/translate-shell gui-apps/wlogout sci-libs/libqalculate diff --git a/sdata/dist-gentoo/import-local-pkgs.sh b/sdata/dist-gentoo/import-local-pkgs.sh index 0062adb31..9c5b687e4 100644 --- a/sdata/dist-gentoo/import-local-pkgs.sh +++ b/sdata/dist-gentoo/import-local-pkgs.sh @@ -19,6 +19,3 @@ import_ebuild "${FT_DIR}" "media-fonts" "rubik-vf" import_ebuild "${FT_DIR}" "media-fonts" "space-grotesk" import_ebuild "${FT_DIR}" "kde-plasma" "breeze-plus" import_ebuild "${FT_DIR}" "x11-themes" "darkly" - -############### WIDGETS -import_ebuild "${WIDGETS_DIR}" "app-misc" "songrec" diff --git a/sdata/dist-gentoo/install-deps.sh b/sdata/dist-gentoo/install-deps.sh index f763fdceb..1cbbdb966 100644 --- a/sdata/dist-gentoo/install-deps.sh +++ b/sdata/dist-gentoo/install-deps.sh @@ -52,7 +52,6 @@ v sudo sh -c 'cat ./sdata/dist-gentoo/additional-useflags >> /etc/portage/packag v sudo emerge --sync v sudo emerge --quiet --newuse --update --deep @world v sudo emerge --quiet @smart-live-rebuild -v sudo emerge --depclean # Remove old ebuilds (if this isn't done the wildcard will fuck upon a version change) x sudo rm -fr ${ebuild_dir}/app-misc/illogical-impulse-* @@ -66,3 +65,5 @@ for i in "${metapkgs[@]}"; do v sudo ebuild ${ebuild_dir}/app-misc/${i}/*.ebuild digest v sudo emerge --update --quiet app-misc/${i} done + +v sudo emerge --depclean diff --git a/sdata/dist-gentoo/keywords b/sdata/dist-gentoo/keywords index 238200763..7e6fe2ab2 100644 --- a/sdata/dist-gentoo/keywords +++ b/sdata/dist-gentoo/keywords @@ -28,7 +28,6 @@ gui-libs/hyprcursor gui-apps/wf-recorder gui-apps/wtype gui-apps/fuzzel -gui-apps/quickshell ** gui-apps/wlogout dev-cpp/sdbus-c++ dev-libs/hyprland-protocols @@ -52,5 +51,7 @@ media-fonts/space-grotesk media-fonts/material-symbols-variable ** media-fonts/readex-pro media-fonts/rubik-vf -app-misc/songrec +media-sound/songrec dev-cpp/glaze +dev-cpp/cpptrace +dev-libs/libdwarf diff --git a/sdata/dist-gentoo/local-pkgs/widgets/songrec-0.4.3-r1.ebuild b/sdata/dist-gentoo/local-pkgs/widgets/songrec-0.4.3-r1.ebuild deleted file mode 100644 index fa5f1e6b3..000000000 --- a/sdata/dist-gentoo/local-pkgs/widgets/songrec-0.4.3-r1.ebuild +++ /dev/null @@ -1,48 +0,0 @@ -# Copyright 2025 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -DESCRIPTION="Illogicall Impulse Widget Dependencies" -HOMEPAGE="" -SRC_URI="https://github.com/marin-m/SongRec/archive/${PV}.tar.gz -> ${P}-SongRec.tar.gz" - -LICENSE="GPL-2" -SLOT="0" -KEYWORDS="~amd64 ~arm64 ~x86" -# need for cargo fetch, idk how to get around it if possible -RESTRICT="strip network-sandbox" - -DEPEND="" -RDEPEND="" - -S="${WORKDIR}/SongRec-${PV}" - -src_prepare() { - default - export CARGO_HOME="${WORKDIR}/cargo" - cargo fetch --locked --target "$(rustc -vV | sed -n 's/host: //p')" -} - -src_compile() { - export CARGO_HOME="${WORKDIR}/cargo" - cargo build --release --frozen --offline -} - -src_install() { - dobin target/release/songrec - insinto /usr/share/applications - - doins packaging/rootfs/usr/share/applications/com.github.marinm.songrec.desktop - - insinto /usr/share/icons/hicolor/scalable/apps - doins packaging/rootfs/usr/share/icons/hicolor/scalable/apps/com.github.marinm.songrec.svg - - insinto /usr/share/metainfo - doins packaging/rootfs/usr/share/metainfo/com.github.marinm.songrec.metainfo.xml - - insinto /usr/share/songrec/translations - doins -r translations/* - - dodoc README.md -} diff --git a/sdata/dist-gentoo/useflags b/sdata/dist-gentoo/useflags index e94832d36..c3d979e6d 100644 --- a/sdata/dist-gentoo/useflags +++ b/sdata/dist-gentoo/useflags @@ -111,7 +111,9 @@ sys-power/upower introspection gui-apps/fuzzel png svg dev-libs/glib dbus elf introspection mime xattr # ngl idk about nm-connection-editor. Works fine without -gui-apps/quickshell -X -i3 -i3-ipc breakpad bluetooth hyprland hyprland-focus-grab hyprland-global-shortcuts jemalloc layer-shell mpris pam pipewire screencopy session-lock sockets toplevel-management tray wayland #app-i18n/translate-shell (nothing needed) #gui-apps/wlogout (no use flags) media-gfx/imagemagick xml + +################### OTHER ################### +dev-cpp/cpptrace unwind