🎉 Add support for GNOME Shell 47

This commit is contained in:
Simon Schneegans
2024-07-31 07:54:47 +02:00
parent d3d88383f7
commit 00882e1898
15 changed files with 60 additions and 47 deletions
+2 -1
View File
@@ -11,7 +11,8 @@
"settings-schema": "org.gnome.shell.extensions.burn-my-windows",
"shell-version": [
"45",
"46"
"46",
"47"
],
"url": "https://github.com/Schneegans/Burn-My-Windows",
"version": 41
+1 -3
View File
@@ -45,10 +45,8 @@ export default class Effect {
// Write all uniform values at the start of each animation.
shader.connect('begin-animation', (shader, settings) => {
const c = Clutter.Color.from_string(settings.get_string('energize-a-color'))[1];
// clang-format off
shader.set_uniform_float(shader._uColor, 3, [c.red / 255, c.green / 255, c.blue / 255]);
shader.set_uniform_float(shader._uColor, 3, utils.parseColor(settings.get_string('energize-a-color')));
shader.set_uniform_float(shader._uScale, 1, [settings.get_double('energize-a-scale')]);
// clang-format on
});
+1 -3
View File
@@ -45,10 +45,8 @@ export default class Effect {
// Write all uniform values at the start of each animation.
shader.connect('begin-animation', (shader, settings) => {
const c = Clutter.Color.from_string(settings.get_string('energize-b-color'))[1];
// clang-format off
shader.set_uniform_float(shader._uColor, 3, [c.red / 255, c.green / 255, c.blue / 255]);
shader.set_uniform_float(shader._uColor, 3, utils.parseColor(settings.get_string('energize-b-color')));
shader.set_uniform_float(shader._uScale, 1, [settings.get_double('energize-b-scale')]);
// clang-format on
});
+1 -2
View File
@@ -61,10 +61,9 @@ export default class Effect {
// And update all uniforms at the start of each animation.
shader.connect('begin-animation', (shader, settings) => {
for (let i = 1; i <= 5; i++) {
const c = Clutter.Color.from_string(settings.get_string('fire-color-' + i))[1];
shader.set_uniform_float(
shader._uGradient[i - 1], 4,
[c.red / 255, c.green / 255, c.blue / 255, c.alpha / 255]);
utils.parseColor(settings.get_string('fire-color-' + i)));
}
// clang-format off
+1 -3
View File
@@ -48,11 +48,9 @@ export default class Effect {
// Write all uniform values at the start of each animation.
shader.connect('begin-animation', (shader, settings, forOpening, testMode) => {
const c = Clutter.Color.from_string(settings.get_string('glitch-color'))[1];
// clang-format off
shader.set_uniform_float(shader._uSeed, 1, [testMode ? 0 : Math.random()]);
shader.set_uniform_float(shader._uColor, 4, [c.red / 255, c.green / 255, c.blue / 255, c.alpha / 255]);
shader.set_uniform_float(shader._uColor, 4, utils.parseColor(settings.get_string('glitch-color')));
shader.set_uniform_float(shader._uScale, 1, [settings.get_double('glitch-scale')]);
shader.set_uniform_float(shader._uStrength, 1, [settings.get_double('glitch-strength')]);
shader.set_uniform_float(shader._uSpeed, 1, [settings.get_double('glitch-speed')]);
+2 -9
View File
@@ -50,20 +50,13 @@ export default class Effect {
// Write all uniform values at the start of each animation.
shader.connect('begin-animation', (shader, settings, forOpening, testMode) => {
// Get the two configurable colors. They are directly injected into the shader
// code below.
const gc =
Clutter.Color.from_string(settings.get_string('hexagon-glow-color'))[1];
const lc =
Clutter.Color.from_string(settings.get_string('hexagon-line-color'))[1];
// clang-format off
shader.set_uniform_float(shader._uAdditiveBlending, 1, [settings.get_boolean('hexagon-additive-blending')]);
shader.set_uniform_float(shader._uSeed, 2, [testMode ? 0 : Math.random(), testMode ? 0 : Math.random()]);
shader.set_uniform_float(shader._uScale, 1, [settings.get_double('hexagon-scale')]);
shader.set_uniform_float(shader._uLineWidth, 1, [settings.get_double('hexagon-line-width')]);
shader.set_uniform_float(shader._uGlowColor, 4, [gc.red / 255, gc.green / 255, gc.blue / 255, gc.alpha / 255]);
shader.set_uniform_float(shader._uLineColor, 4, [lc.red / 255, lc.green / 255, lc.blue / 255, lc.alpha / 255]);
shader.set_uniform_float(shader._uGlowColor, 4, utils.parseColor(settings.get_string('hexagon-glow-color')));
shader.set_uniform_float(shader._uLineColor, 4, utils.parseColor(settings.get_string('hexagon-line-color')));
// clang-format on
});
});
+1 -3
View File
@@ -72,11 +72,9 @@ export default class Effect {
shader._startPointerPos = null;
}
const c = Clutter.Color.from_string(settings.get_string('incinerate-color'))[1];
// clang-format off
shader.set_uniform_float(shader._uSeed, 2, seed);
shader.set_uniform_float(shader._uColor, 3, [c.red / 255, c.green / 255, c.blue / 255]);
shader.set_uniform_float(shader._uColor, 3, utils.parseColor(settings.get_string('incinerate-color')));
shader.set_uniform_float(shader._uScale, 1, [settings.get_double('incinerate-scale')]);
shader.set_uniform_float(shader._uTurbulence, 1, [settings.get_double('incinerate-turbulence')]);
// clang-format on
+2 -6
View File
@@ -65,13 +65,9 @@ export default class Effect {
// Write all uniform values at the start of each animation.
shader.connect('begin-animation', (shader, settings) => {
const c1 =
Clutter.Color.from_string(settings.get_string('matrix-trail-color'))[1];
const c2 = Clutter.Color.from_string(settings.get_string('matrix-tip-color'))[1];
// clang-format off
shader.set_uniform_float(shader._uTrailColor, 3, [c1.red / 255, c1.green / 255, c1.blue / 255]);
shader.set_uniform_float(shader._uTipColor, 3, [c2.red / 255, c2.green / 255, c2.blue / 255]);
shader.set_uniform_float(shader._uTrailColor, 3, utils.parseColor(settings.get_string('matrix-trail-color')));
shader.set_uniform_float(shader._uTipColor, 3, utils.parseColor(settings.get_string('matrix-tip-color')));
shader.set_uniform_float(shader._uLetterSize, 1, [settings.get_int('matrix-scale')]);
shader.set_uniform_float(shader._uRandomness, 1, [settings.get_double('matrix-randomness')]);
shader.set_uniform_float(shader._uOverShoot, 1, [settings.get_double('matrix-overshoot')]);
+1 -3
View File
@@ -49,11 +49,9 @@ export default class Effect {
// Write all uniform values at the start of each animation.
shader.connect('begin-animation', (shader, settings, forOpening, testMode) => {
const c = Clutter.Color.from_string(settings.get_string('portal-color'))[1];
// clang-format off
shader.set_uniform_float(shader._uSeed, 2, [testMode ? 0 : Math.random(), testMode ? 0 : Math.random()]);
shader.set_uniform_float(shader._uColor, 3, [c.red / 255, c.green / 255, c.blue / 255]);
shader.set_uniform_float(shader._uColor, 3, utils.parseColor(settings.get_string('portal-color')));
shader.set_uniform_float(shader._uDetails, 1, [settings.get_double('portal-details')]);
shader.set_uniform_float(shader._uRotationSpeed, 1, [settings.get_double('portal-rotation-speed')]);
shader.set_uniform_float(shader._uWhirling, 1, [settings.get_double('portal-whirling')]);
+1 -4
View File
@@ -63,11 +63,8 @@ export default class Effect {
// Write all uniform values at the start of each animation.
shader.connect('begin-animation', (shader, settings, forOpening, testMode) => {
// The dust particles will fade to this color over time.
const c = Clutter.Color.from_string(settings.get_string('snap-color'))[1];
// clang-format off
shader.set_uniform_float(shader._uDustColor, 4, [c.red / 255, c.green / 255, c.blue / 255, c.alpha / 255]);
shader.set_uniform_float(shader._uDustColor, 4, utils.parseColor(settings.get_string('snap-color')));
shader.set_uniform_float(shader._uSeed, 2, [testMode ? 0 : Math.random(), testMode ? 0 : Math.random()]);
shader.set_uniform_float(shader._uDustScale, 1, [settings.get_double('snap-scale')]);
// clang-format on
+1 -3
View File
@@ -61,10 +61,8 @@ export default class Effect {
// Write all uniform values at the start of each animation.
shader.connect('begin-animation', (shader, settings, forOpening, testMode) => {
const c = Clutter.Color.from_string(settings.get_string('trex-scratch-color'))[1];
// clang-format off
shader.set_uniform_float(shader._uFlashColor, 4, [c.red / 255, c.green / 255, c.blue / 255, c.alpha / 255]);
shader.set_uniform_float(shader._uFlashColor, 4, utils.parseColor(settings.get_string('trex-scratch-color')));
shader.set_uniform_float(shader._uSeed, 2, [testMode ? 0 : Math.random(), testMode ? 0 : Math.random()]);
shader.set_uniform_float(shader._uClawSize, 1, [settings.get_double('trex-scratch-scale')]);
shader.set_uniform_float(shader._uNumClaws, 1, [settings.get_int('trex-scratch-count')]);
+1 -2
View File
@@ -46,9 +46,8 @@ export default class Effect {
// Write all uniform values at the start of each animation.
shader.connect('begin-animation', (shader, settings) => {
const c = Clutter.Color.from_string(settings.get_string('tv-effect-color'))[1];
shader.set_uniform_float(
shader._uColor, 4, [c.red / 255, c.green / 255, c.blue / 255, c.alpha / 255]);
shader._uColor, 4, utils.parseColor(settings.get_string('tv-effect-color')));
});
});
}
+1 -3
View File
@@ -49,11 +49,9 @@ export default class Effect {
// Write all uniform values at the start of each animation.
shader.connect('begin-animation', (shader, settings, forOpening, testMode) => {
const c = Clutter.Color.from_string(settings.get_string('tv-glitch-color'))[1];
// clang-format off
shader.set_uniform_float(shader._uSeed, 1, [testMode ? 0 : Math.random()]);
shader.set_uniform_float(shader._uColor, 4, [c.red / 255, c.green / 255, c.blue / 255, c.alpha / 255]);
shader.set_uniform_float(shader._uColor, 4, utils.parseColor(settings.get_string('tv-glitch-color')));
shader.set_uniform_float(shader._uScale, 1, [settings.get_double('tv-glitch-scale')]);
shader.set_uniform_float(shader._uStrength, 1, [settings.get_double('tv-glitch-strength')]);
shader.set_uniform_float(shader._uSpeed, 1, [settings.get_double('tv-glitch-speed')]);
+1 -2
View File
@@ -52,9 +52,8 @@ export default class Effect {
// Write all uniform values at the start of each animation.
shader.connect('begin-animation', (shader, settings, forOpening, testMode) => {
for (let i = 1; i <= 3; i++) {
const c = Clutter.Color.from_string(settings.get_string('wisps-color-' + i))[1];
shader.set_uniform_float(shader._uColor[i - 1], 3,
[c.red / 255, c.green / 255, c.blue / 255]);
utils.parseColor(settings.get_string('wisps-color-' + i)));
}
// clang-format off
+43
View File
@@ -104,3 +104,46 @@ export async function executeCommand(argv, input = null, cancellable = null) {
});
});
}
// Converts a hex, rgb, or rgba CSS-like color string to four numbers
// representing rgba values.
export function parseColor(color) {
// Function to convert hex component to a number
function hexToDecimal(hex) {
return parseInt(hex, 16);
}
// Default RGBA values.
let r = 0, g = 0, b = 0, a = 1;
// Hex format.
if (color.startsWith('#')) {
const hex = color.slice(1);
if (hex.length === 3) {
// 3-digit hex
r = hexToDecimal(hex[0] + hex[0]);
g = hexToDecimal(hex[1] + hex[1]);
b = hexToDecimal(hex[2] + hex[2]);
} else if (hex.length === 6) {
// 6-digit hex
r = hexToDecimal(hex.substring(0, 2));
g = hexToDecimal(hex.substring(2, 4));
b = hexToDecimal(hex.substring(4, 6));
}
}
// rgb() or rgba() format.
else if (color.startsWith('rgb')) {
// Extract the values inside the parentheses
const rgbValues = color.match(/rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*([0-9.]+))?\)/);
if (rgbValues) {
r = parseInt(rgbValues[1], 10);
g = parseInt(rgbValues[2], 10);
b = parseInt(rgbValues[3], 10);
if (rgbValues[4] !== undefined) {
a = parseFloat(rgbValues[4]);
}
}
}
return [ r/255, g/255, b/255, a ];
}