🔧 Do not import the ShaderFactory in the preferences process

This commit is contained in:
Simon Schneegans
2023-09-08 20:45:58 +02:00
parent 3f05c946ec
commit 14cd1db7e9
25 changed files with 205 additions and 180 deletions
+1 -1
View File
@@ -24,7 +24,7 @@ import {Shader} from './Shader.js';
// possible in order to avoid memory leaks. //
//////////////////////////////////////////////////////////////////////////////////////////
export class ShaderFactory {
export default class ShaderFactory {
// Creates a new ShaderFactory. Requires the nick of the effect and a callback function
// which will be called whenever a new shader is created.
+8 -7
View File
@@ -16,7 +16,8 @@
const _ = imports.gettext.domain('burn-my-windows').gettext;
import {ShaderFactory} from '../ShaderFactory.js';
const ShaderFactory =
typeof global !== 'undefined' ? (await import('../ShaderFactory.js'))?.default : null;
//////////////////////////////////////////////////////////////////////////////////////////
// This effect hides the actor by violently sucking it into the void of magic. //
@@ -32,7 +33,7 @@ export default class Effect {
// GLSL file in resources/shaders/<nick>.glsl. The callback will be called for each
// newly created shader instance.
constructor() {
this.shaderFactory = new ShaderFactory(this.getNick(), (shader) => {
this.shaderFactory = new ShaderFactory(Effect.getNick(), (shader) => {
// Store uniform locations of newly created shaders.
shader._uSeed = shader.get_uniform_location('uSeed');
shader._uShake = shader.get_uniform_location('uShake');
@@ -57,7 +58,7 @@ export default class Effect {
// The effect is not available on GNOME Shell 3.36 as it requires scaling of the window
// actor.
getMinShellVersion() {
static getMinShellVersion() {
return [3, 38];
}
@@ -65,13 +66,13 @@ export default class Effect {
// required. It should match the prefix of the settings keys which store whether the
// effect is enabled currently (e.g. '*-enable-effect'), and its animation time
// (e.g. '*-animation-time').
getNick() {
static getNick() {
return 'apparition';
}
// This will be shown in the sidebar of the preferences dialog as well as in the
// drop-down menus where the user can choose the effect.
getLabel() {
static getLabel() {
return _('Apparition');
}
@@ -79,7 +80,7 @@ export default class Effect {
// This is called by the preferences dialog whenever a new effect profile is loaded. It
// binds all user interface elements to the respective settings keys of the profile.
bindPreferences(dialog) {
static bindPreferences(dialog) {
dialog.bindAdjustment('apparition-randomness');
dialog.bindAdjustment('apparition-animation-time');
dialog.bindAdjustment('apparition-twirl-intensity');
@@ -92,7 +93,7 @@ export default class Effect {
// The getActorScale() is called from extension.js to adjust the actor's size during the
// animation. This is useful if the effect requires drawing something beyond the usual
// bounds of the actor. This only works for GNOME 3.38+.
getActorScale(settings) {
static getActorScale(settings) {
return {x: 2.0, y: 2.0};
}
}
+8 -7
View File
@@ -16,7 +16,8 @@
const _ = imports.gettext.domain('burn-my-windows').gettext;
import {ShaderFactory} from '../ShaderFactory.js';
const ShaderFactory =
typeof global !== 'undefined' ? (await import('../ShaderFactory.js'))?.default : null;
//////////////////////////////////////////////////////////////////////////////////////////
// This effect shatters the window into pieces. For an explanation how this works, look //
@@ -44,7 +45,7 @@ export default class Effect {
// GLSL file in resources/shaders/<nick>.glsl. The callback will be called for each
// newly created shader instance.
constructor() {
this.shaderFactory = new ShaderFactory(this.getNick(), (shader) => {
this.shaderFactory = new ShaderFactory(Effect.getNick(), (shader) => {
// We import these modules in this function as they are not available in the
// preferences process. This callback is only called within GNOME Shell's process.
const {Clutter, GdkPixbuf, Cogl} = imports.gi;
@@ -115,7 +116,7 @@ export default class Effect {
// ---------------------------------------------------------------------------- metadata
// This effect is only available on GNOME Shell 40+.
getMinShellVersion() {
static getMinShellVersion() {
return [40, 0];
}
@@ -124,13 +125,13 @@ export default class Effect {
// effect is enabled currently (e.g. '*-enable-effect'), and its animation time
// (e.g. '*-animation-time'). Also, the shader file and the settings UI files should be
// named likes this.
getNick() {
static getNick() {
return 'broken-glass';
}
// This will be shown in the sidebar of the preferences dialog as well as in the
// drop-down menus where the user can choose the effect.
getLabel() {
static getLabel() {
return _('Broken Glass');
}
@@ -138,7 +139,7 @@ export default class Effect {
// This is called by the preferences dialog whenever a new effect profile is loaded. It
// binds all user interface elements to the respective settings keys of the profile.
bindPreferences(dialog) {
static bindPreferences(dialog) {
dialog.bindAdjustment('broken-glass-animation-time');
dialog.bindAdjustment('broken-glass-scale');
dialog.bindAdjustment('broken-glass-gravity');
@@ -151,7 +152,7 @@ export default class Effect {
// The getActorScale() is called from extension.js to adjust the actor's size during the
// animation. This is useful if the effect requires drawing something beyond the usual
// bounds of the actor. This only works for GNOME 3.38+.
getActorScale(settings) {
static getActorScale(settings) {
return {x: 2.0, y: 2.0};
}
}
+7 -6
View File
@@ -16,7 +16,8 @@
const _ = imports.gettext.domain('burn-my-windows').gettext;
import {ShaderFactory} from '../ShaderFactory.js';
const ShaderFactory =
typeof global !== 'undefined' ? (await import('../ShaderFactory.js'))?.default : null;
//////////////////////////////////////////////////////////////////////////////////////////
// This effect melts your windows. Inspired by the legendary screen transitions of the //
@@ -33,7 +34,7 @@ export default class Effect {
// GLSL file in resources/shaders/<nick>.glsl. The callback will be called for each
// newly created shader instance.
constructor() {
this.shaderFactory = new ShaderFactory(this.getNick(), (shader) => {
this.shaderFactory = new ShaderFactory(Effect.getNick(), (shader) => {
// Store uniform locations of newly created shaders.
shader._uActorScale = shader.get_uniform_location('uActorScale');
shader._uHorizontalScale = shader.get_uniform_location('uHorizontalScale');
@@ -65,7 +66,7 @@ export default class Effect {
// The effect is not available on GNOME Shell 3.36 as it requires scaling of the window
// actor.
getMinShellVersion() {
static getMinShellVersion() {
return [3, 38];
}
@@ -73,13 +74,13 @@ export default class Effect {
// required. It should match the prefix of the settings keys which store whether the
// effect is enabled currently (e.g. '*-enable-effect'), and its animation time
// (e.g. '*-animation-time').
getNick() {
static getNick() {
return 'doom';
}
// This will be shown in the sidebar of the preferences dialog as well as in the
// drop-down menus where the user can choose the effect.
getLabel() {
static getLabel() {
return _('Doom');
}
@@ -87,7 +88,7 @@ export default class Effect {
// This is called by the preferences dialog whenever a new effect profile is loaded. It
// binds all user interface elements to the respective settings keys of the profile.
bindPreferences(dialog) {
static bindPreferences(dialog) {
dialog.bindAdjustment('doom-animation-time');
dialog.bindAdjustment('doom-horizontal-scale');
dialog.bindAdjustment('doom-vertical-scale');
+8 -7
View File
@@ -16,7 +16,8 @@
const _ = imports.gettext.domain('burn-my-windows').gettext;
import {ShaderFactory} from '../ShaderFactory.js';
const ShaderFactory =
typeof global !== 'undefined' ? (await import('../ShaderFactory.js'))?.default : null;
//////////////////////////////////////////////////////////////////////////////////////////
// This effect looks a bit like the transporter effect from TOS. //
@@ -32,7 +33,7 @@ export default class Effect {
// GLSL file in resources/shaders/<nick>.glsl. The callback will be called for each
// newly created shader instance.
constructor() {
this.shaderFactory = new ShaderFactory(this.getNick(), (shader) => {
this.shaderFactory = new ShaderFactory(Effect.getNick(), (shader) => {
// We import Clutter in this function as it is not available in the preferences
// process. This creator function of the ShaderFactory is only called within GNOME
// Shell's process.
@@ -57,7 +58,7 @@ export default class Effect {
// ---------------------------------------------------------------------------- metadata
// The effect is available on all GNOME Shell versions supported by this extension.
getMinShellVersion() {
static getMinShellVersion() {
return [3, 36];
}
@@ -65,13 +66,13 @@ export default class Effect {
// required. It should match the prefix of the settings keys which store whether the
// effect is enabled currently (e.g. '*-enable-effect'), and its animation time
// (e.g. '*-animation-time').
getNick() {
static getNick() {
return 'energize-a';
}
// This will be shown in the sidebar of the preferences dialog as well as in the
// drop-down menus where the user can choose the effect.
getLabel() {
static getLabel() {
return _('Energize A');
}
@@ -79,7 +80,7 @@ export default class Effect {
// This is called by the preferences dialog whenever a new effect profile is loaded. It
// binds all user interface elements to the respective settings keys of the profile.
bindPreferences(dialog) {
static bindPreferences(dialog) {
dialog.bindAdjustment('energize-a-animation-time');
dialog.bindAdjustment('energize-a-scale');
dialog.bindColorButton('energize-a-color');
@@ -90,7 +91,7 @@ export default class Effect {
// The getActorScale() is called from extension.js to adjust the actor's size during the
// animation. This is useful if the effect requires drawing something beyond the usual
// bounds of the actor. This only works for GNOME 3.38+.
getActorScale(settings) {
static getActorScale(settings) {
return {x: 1.0, y: 1.0};
}
}
+8 -7
View File
@@ -16,7 +16,8 @@
const _ = imports.gettext.domain('burn-my-windows').gettext;
import {ShaderFactory} from '../ShaderFactory.js';
const ShaderFactory =
typeof global !== 'undefined' ? (await import('../ShaderFactory.js'))?.default : null;
//////////////////////////////////////////////////////////////////////////////////////////
// This effect looks a bit like the transporter effect from TNG. //
@@ -32,7 +33,7 @@ export default class Effect {
// GLSL file in resources/shaders/<nick>.glsl. The callback will be called for each
// newly created shader instance.
constructor() {
this.shaderFactory = new ShaderFactory(this.getNick(), (shader) => {
this.shaderFactory = new ShaderFactory(Effect.getNick(), (shader) => {
// We import Clutter in this function as it is not available in the preferences
// process. This creator function of the ShaderFactory is only called within GNOME
// Shell's process.
@@ -58,7 +59,7 @@ export default class Effect {
// ---------------------------------------------------------------------------- metadata
// The effect is available on all GNOME Shell versions supported by this extension.
getMinShellVersion() {
static getMinShellVersion() {
return [3, 36];
}
@@ -66,13 +67,13 @@ export default class Effect {
// required. It should match the prefix of the settings keys which store whether the
// effect is enabled currently (e.g. '*-enable-effect'), and its animation time
// (e.g. '*-animation-time').
getNick() {
static getNick() {
return 'energize-b';
}
// This will be shown in the sidebar of the preferences dialog as well as in the
// drop-down menus where the user can choose the effect.
getLabel() {
static getLabel() {
return _('Energize B');
}
@@ -80,7 +81,7 @@ export default class Effect {
// This is called by the preferences dialog whenever a new effect profile is loaded. It
// binds all user interface elements to the respective settings keys of the profile.
bindPreferences(dialog) {
static bindPreferences(dialog) {
dialog.bindAdjustment('energize-b-animation-time');
dialog.bindAdjustment('energize-b-scale');
dialog.bindColorButton('energize-b-color');
@@ -91,7 +92,7 @@ export default class Effect {
// The getActorScale() is called from extension.js to adjust the actor's size during the
// animation. This is useful if the effect requires drawing something beyond the usual
// bounds of the actor. This only works for GNOME 3.38+.
getActorScale(settings) {
static getActorScale(settings) {
return {x: 1.0, y: 1.0};
}
}
+8 -7
View File
@@ -18,7 +18,8 @@ import Gio from 'gi://Gio';
const _ = imports.gettext.domain('burn-my-windows').gettext;
import {ShaderFactory} from '../ShaderFactory.js';
const ShaderFactory =
typeof global !== 'undefined' ? (await import('../ShaderFactory.js'))?.default : null;
//////////////////////////////////////////////////////////////////////////////////////////
// This effect is a homage to the good old Compiz days. However, it is implemented //
@@ -38,7 +39,7 @@ export default class Effect {
// GLSL file in resources/shaders/<nick>.glsl. The callback will be called for each
// newly created shader instance.
constructor() {
this.shaderFactory = new ShaderFactory(this.getNick(), (shader) => {
this.shaderFactory = new ShaderFactory(Effect.getNick(), (shader) => {
// We import Clutter in this function as it is not available in the preferences
// process. This creator function of the ShaderFactory is only called within GNOME
// Shell's process.
@@ -78,7 +79,7 @@ export default class Effect {
// ---------------------------------------------------------------------------- metadata
// The effect is available on all GNOME Shell versions supported by this extension.
getMinShellVersion() {
static getMinShellVersion() {
return [3, 36];
}
@@ -86,13 +87,13 @@ export default class Effect {
// required. It should match the prefix of the settings keys which store whether the
// effect is enabled currently (e.g. '*-enable-effect'), and its animation time
// (e.g. '*-animation-time').
getNick() {
static getNick() {
return 'fire';
}
// This will be shown in the sidebar of the preferences dialog as well as in the
// drop-down menus where the user can choose the effect.
getLabel() {
static getLabel() {
return _('Fire');
}
@@ -100,7 +101,7 @@ export default class Effect {
// This is called by the preferences dialog whenever a new effect profile is loaded. It
// binds all user interface elements to the respective settings keys of the profile.
bindPreferences(dialog) {
static bindPreferences(dialog) {
// Bind all properties.
dialog.bindAdjustment('fire-animation-time');
@@ -136,7 +137,7 @@ export default class Effect {
// The getActorScale() is called from extension.js to adjust the actor's size during the
// animation. This is useful if the effect requires drawing something beyond the usual
// bounds of the actor. This only works for GNOME 3.38+.
getActorScale(settings) {
static getActorScale(settings) {
return {x: 1.0, y: 1.0};
}
+8 -7
View File
@@ -16,7 +16,8 @@
const _ = imports.gettext.domain('burn-my-windows').gettext;
import {ShaderFactory} from '../ShaderFactory.js';
const ShaderFactory =
typeof global !== 'undefined' ? (await import('../ShaderFactory.js'))?.default : null;
//////////////////////////////////////////////////////////////////////////////////////////
// This very simple effect fades the window to transparency with subtle 3D effects. //
@@ -32,7 +33,7 @@ export default class Effect {
// GLSL file in resources/shaders/<nick>.glsl. The callback will be called for each
// newly created shader instance.
constructor() {
this.shaderFactory = new ShaderFactory(this.getNick(), (shader) => {
this.shaderFactory = new ShaderFactory(Effect.getNick(), (shader) => {
// Store uniform locations of newly created shaders.
shader._uScale = shader.get_uniform_location('uScale');
shader._uSquish = shader.get_uniform_location('uSquish');
@@ -55,7 +56,7 @@ export default class Effect {
// ---------------------------------------------------------------------------- metadata
// The effect is available on all GNOME Shell versions supported by this extension.
getMinShellVersion() {
static getMinShellVersion() {
return [3, 36];
}
@@ -63,13 +64,13 @@ export default class Effect {
// required. It should match the prefix of the settings keys which store whether the
// effect is enabled currently (e.g. '*-enable-effect'), and its animation time
// (e.g. '*-animation-time').
getNick() {
static getNick() {
return 'glide';
}
// This will be shown in the sidebar of the preferences dialog as well as in the
// drop-down menus where the user can choose the effect.
getLabel() {
static getLabel() {
return _('Glide');
}
@@ -77,7 +78,7 @@ export default class Effect {
// This is called by the preferences dialog whenever a new effect profile is loaded. It
// binds all user interface elements to the respective settings keys of the profile.
bindPreferences(dialog) {
static bindPreferences(dialog) {
dialog.bindAdjustment('glide-animation-time');
dialog.bindAdjustment('glide-scale');
dialog.bindAdjustment('glide-squish');
@@ -90,7 +91,7 @@ export default class Effect {
// The getActorScale() is called from extension.js to adjust the actor's size during the
// animation. This is useful if the effect requires drawing something beyond the usual
// bounds of the actor. This only works for GNOME 3.38+.
getActorScale(settings) {
static getActorScale(settings) {
return {x: 1.0, y: 1.0};
}
}
+8 -7
View File
@@ -16,7 +16,8 @@
const _ = imports.gettext.domain('burn-my-windows').gettext;
import {ShaderFactory} from '../ShaderFactory.js';
const ShaderFactory =
typeof global !== 'undefined' ? (await import('../ShaderFactory.js'))?.default : null;
//////////////////////////////////////////////////////////////////////////////////////////
// This effect applies some intentional graphics issues to your windows. //
@@ -32,7 +33,7 @@ export default class Effect {
// GLSL file in resources/shaders/<nick>.glsl. The callback will be called for each
// newly created shader instance.
constructor() {
this.shaderFactory = new ShaderFactory(this.getNick(), (shader) => {
this.shaderFactory = new ShaderFactory(Effect.getNick(), (shader) => {
// We import Clutter in this function as it is not available in the preferences
// process. This creator function of the ShaderFactory is only called within GNOME
// Shell's process.
@@ -63,7 +64,7 @@ export default class Effect {
// ---------------------------------------------------------------------------- metadata
// The effect is available on all GNOME Shell versions supported by this extension.
getMinShellVersion() {
static getMinShellVersion() {
return [3, 36];
}
@@ -71,13 +72,13 @@ export default class Effect {
// required. It should match the prefix of the settings keys which store whether the
// effect is enabled currently (e.g. '*-enable-effect'), and its animation time
// (e.g. '*-animation-time').
getNick() {
static getNick() {
return 'glitch';
}
// This will be shown in the sidebar of the preferences dialog as well as in the
// drop-down menus where the user can choose the effect.
getLabel() {
static getLabel() {
return _('Glitch');
}
@@ -85,7 +86,7 @@ export default class Effect {
// This is called by the preferences dialog whenever a new effect profile is loaded. It
// binds all user interface elements to the respective settings keys of the profile.
bindPreferences(dialog) {
static bindPreferences(dialog) {
dialog.bindAdjustment('glitch-animation-time');
dialog.bindAdjustment('glitch-scale');
dialog.bindAdjustment('glitch-speed');
@@ -98,7 +99,7 @@ export default class Effect {
// The getActorScale() is called from extension.js to adjust the actor's size during the
// animation. This is useful if the effect requires drawing something beyond the usual
// bounds of the actor. This only works for GNOME 3.38+.
getActorScale(settings) {
static getActorScale(settings) {
return {x: 1.0, y: 1.0};
}
}
+8 -7
View File
@@ -16,7 +16,8 @@
const _ = imports.gettext.domain('burn-my-windows').gettext;
import {ShaderFactory} from '../ShaderFactory.js';
const ShaderFactory =
typeof global !== 'undefined' ? (await import('../ShaderFactory.js'))?.default : null;
//////////////////////////////////////////////////////////////////////////////////////////
// This effect overlays a glowing hexagonal grid over the window. The grid cells then //
@@ -33,7 +34,7 @@ export default class Effect {
// GLSL file in resources/shaders/<nick>.glsl. The callback will be called for each
// newly created shader instance.
constructor() {
this.shaderFactory = new ShaderFactory(this.getNick(), (shader) => {
this.shaderFactory = new ShaderFactory(Effect.getNick(), (shader) => {
// We import Clutter in this function as it is not available in the preferences
// process. This creator function of the ShaderFactory is only called within GNOME
// Shell's process.
@@ -71,7 +72,7 @@ export default class Effect {
// ---------------------------------------------------------------------------- metadata
// The effect is available on all GNOME Shell versions supported by this extension.
getMinShellVersion() {
static getMinShellVersion() {
return [3, 36];
}
@@ -79,13 +80,13 @@ export default class Effect {
// required. It should match the prefix of the settings keys which store whether the
// effect is enabled currently (e.g. '*-enable-effect'), and its animation time
// (e.g. '*-animation-time').
getNick() {
static getNick() {
return 'hexagon';
}
// This will be shown in the sidebar of the preferences dialog as well as in the
// drop-down menus where the user can choose the effect.
getLabel() {
static getLabel() {
return _('Hexagon');
}
@@ -93,7 +94,7 @@ export default class Effect {
// This is called by the preferences dialog whenever a new effect profile is loaded. It
// binds all user interface elements to the respective settings keys of the profile.
bindPreferences(dialog) {
static bindPreferences(dialog) {
dialog.bindAdjustment('hexagon-animation-time');
dialog.bindAdjustment('hexagon-scale');
dialog.bindAdjustment('hexagon-line-width');
@@ -107,7 +108,7 @@ export default class Effect {
// The getActorScale() is called from extension.js to adjust the actor's size during the
// animation. This is useful if the effect requires drawing something beyond the usual
// bounds of the actor. This only works for GNOME 3.38+.
getActorScale(settings) {
static getActorScale(settings) {
return {x: 1.0, y: 1.0};
}
}
+8 -7
View File
@@ -16,7 +16,8 @@
const _ = imports.gettext.domain('burn-my-windows').gettext;
import {ShaderFactory} from '../ShaderFactory.js';
const ShaderFactory =
typeof global !== 'undefined' ? (await import('../ShaderFactory.js'))?.default : null;
//////////////////////////////////////////////////////////////////////////////////////////
// This effect burns windows to ashes. The fire starts at a random position at the //
@@ -33,7 +34,7 @@ export default class Effect {
// GLSL file in resources/shaders/<nick>.glsl. The callback will be called for each
// newly created shader instance.
constructor() {
this.shaderFactory = new ShaderFactory(this.getNick(), (shader) => {
this.shaderFactory = new ShaderFactory(Effect.getNick(), (shader) => {
// We import these modules in this function as they are not available in the
// preferences process. This callback is only called within GNOME Shell's process.
const {Clutter} = imports.gi;
@@ -108,7 +109,7 @@ export default class Effect {
// ---------------------------------------------------------------------------- metadata
// This effect is available on all supported GNOME Shell versions.
getMinShellVersion() {
static getMinShellVersion() {
return [3, 36];
}
@@ -116,13 +117,13 @@ export default class Effect {
// required. It should match the prefix of the settings keys which store whether the
// effect is enabled currently (e.g. '*-enable-effect'), and its animation time
// (e.g. '*-animation-time').
getNick() {
static getNick() {
return 'incinerate';
}
// This will be shown in the sidebar of the preferences dialog as well as in the
// drop-down menus where the user can choose the effect.
getLabel() {
static getLabel() {
return _('Incinerate');
}
@@ -130,7 +131,7 @@ export default class Effect {
// This is called by the preferences dialog whenever a new effect profile is loaded. It
// binds all user interface elements to the respective settings keys of the profile.
bindPreferences(dialog) {
static bindPreferences(dialog) {
dialog.bindAdjustment('incinerate-animation-time');
dialog.bindAdjustment('incinerate-scale');
dialog.bindAdjustment('incinerate-turbulence');
@@ -143,7 +144,7 @@ export default class Effect {
// The getActorScale() is called from extension.js to adjust the actor's size during the
// animation. This is useful if the effect requires drawing something beyond the usual
// bounds of the actor. This only works for GNOME 3.38+.
getActorScale(settings) {
static getActorScale(settings) {
return {x: 1.0, y: 1.0};
}
}
+8 -7
View File
@@ -16,7 +16,8 @@
const _ = imports.gettext.domain('burn-my-windows').gettext;
import {ShaderFactory} from '../ShaderFactory.js';
const ShaderFactory =
typeof global !== 'undefined' ? (await import('../ShaderFactory.js'))?.default : null;
//////////////////////////////////////////////////////////////////////////////////////////
// The Matrix shader multiplies a grid of random letters with some gradients which are //
@@ -36,7 +37,7 @@ export default class Effect {
// GLSL file in resources/shaders/<nick>.glsl. The callback will be called for each
// newly created shader instance.
constructor() {
this.shaderFactory = new ShaderFactory(this.getNick(), (shader) => {
this.shaderFactory = new ShaderFactory(Effect.getNick(), (shader) => {
// We import these modules in this function as they are not available in the
// preferences process. This callback is only called within GNOME Shell's process.
const {Clutter, GdkPixbuf, Cogl} = imports.gi;
@@ -91,7 +92,7 @@ export default class Effect {
// ---------------------------------------------------------------------------- metadata
// This effect is only available on GNOME Shell 40+.
getMinShellVersion() {
static getMinShellVersion() {
return [40, 0];
}
@@ -99,13 +100,13 @@ export default class Effect {
// required. It should match the prefix of the settings keys which store whether the
// effect is enabled currently (e.g. '*-enable-effect'), and its animation time
// (e.g. '*-animation-time').
getNick() {
static getNick() {
return 'matrix';
}
// This will be shown in the sidebar of the preferences dialog as well as in the
// drop-down menus where the user can choose the effect.
getLabel() {
static getLabel() {
return _('Matrix');
}
@@ -113,7 +114,7 @@ export default class Effect {
// This is called by the preferences dialog whenever a new effect profile is loaded. It
// binds all user interface elements to the respective settings keys of the profile.
bindPreferences(dialog) {
static bindPreferences(dialog) {
dialog.bindAdjustment('matrix-animation-time');
dialog.bindAdjustment('matrix-scale');
dialog.bindAdjustment('matrix-randomness');
@@ -127,7 +128,7 @@ export default class Effect {
// The getActorScale() is called from extension.js to adjust the actor's size during the
// animation. This is useful if the effect requires drawing something beyond the usual
// bounds of the actor. This only works for GNOME 3.38+.
getActorScale(settings) {
static getActorScale(settings) {
return {x: 1.0, y: 1.0 + settings.get_double('matrix-overshoot')};
}
}
+8 -7
View File
@@ -16,7 +16,8 @@
const _ = imports.gettext.domain('burn-my-windows').gettext;
import {ShaderFactory} from '../ShaderFactory.js';
const ShaderFactory =
typeof global !== 'undefined' ? (await import('../ShaderFactory.js'))?.default : null;
//////////////////////////////////////////////////////////////////////////////////////////
// This effect paints your windows with a thick paint brush. //
@@ -34,7 +35,7 @@ export default class Effect {
// GLSL file in resources/shaders/<nick>.glsl. The callback will be called for each
// newly created shader instance.
constructor() {
this.shaderFactory = new ShaderFactory(this.getNick(), (shader) => {
this.shaderFactory = new ShaderFactory(Effect.getNick(), (shader) => {
// We import these modules in this function as they are not available in the
// preferences process. This callback is only called within GNOME Shell's process.
const {Clutter, GdkPixbuf, Cogl} = imports.gi;
@@ -79,7 +80,7 @@ export default class Effect {
// ---------------------------------------------------------------------------- metadata
// This effect is only available on GNOME Shell 40+.
getMinShellVersion() {
static getMinShellVersion() {
return [40, 0];
}
@@ -87,13 +88,13 @@ export default class Effect {
// required. It should match the prefix of the settings keys which store whether the
// effect is enabled currently (e.g. '*-enable-effect'), and its animation time
// (e.g. '*-animation-time').
getNick() {
static getNick() {
return 'paint-brush';
}
// This will be shown in the sidebar of the preferences dialog as well as in the
// drop-down menus where the user can choose the effect.
getLabel() {
static getLabel() {
return _('Paint Brush');
}
@@ -101,7 +102,7 @@ export default class Effect {
// This is called by the preferences dialog whenever a new effect profile is loaded. It
// binds all user interface elements to the respective settings keys of the profile.
bindPreferences(dialog) {
static bindPreferences(dialog) {
dialog.bindAdjustment('paint-brush-animation-time');
dialog.bindAdjustment('paint-brush-size');
}
@@ -111,7 +112,7 @@ export default class Effect {
// The getActorScale() is called from extension.js to adjust the actor's size during the
// animation. This is useful if the effect requires drawing something beyond the usual
// bounds of the actor. This only works for GNOME 3.38+.
getActorScale(settings) {
static getActorScale(settings) {
return {x: 1.0, y: 1.0};
}
}
+8 -7
View File
@@ -16,7 +16,8 @@
const _ = imports.gettext.domain('burn-my-windows').gettext;
import {ShaderFactory} from '../ShaderFactory.js';
const ShaderFactory =
typeof global !== 'undefined' ? (await import('../ShaderFactory.js'))?.default : null;
//////////////////////////////////////////////////////////////////////////////////////////
// This simple effect pixelates the window texture and hides the pixels in a wheel-like //
@@ -33,7 +34,7 @@ export default class Effect {
// GLSL file in resources/shaders/<nick>.glsl. The callback will be called for each
// newly created shader instance.
constructor() {
this.shaderFactory = new ShaderFactory(this.getNick(), (shader) => {
this.shaderFactory = new ShaderFactory(Effect.getNick(), (shader) => {
// Store uniform locations of newly created shaders.
shader._uPixelSize = shader.get_uniform_location('uPixelSize');
shader._uSpokeCount = shader.get_uniform_location('uSpokeCount');
@@ -51,7 +52,7 @@ export default class Effect {
// ---------------------------------------------------------------------------- metadata
// The effect is available on all GNOME Shell versions supported by this extension.
getMinShellVersion() {
static getMinShellVersion() {
return [3, 36];
}
@@ -59,13 +60,13 @@ export default class Effect {
// required. It should match the prefix of the settings keys which store whether the
// effect is enabled currently (e.g. '*-enable-effect'), and its animation time
// (e.g. '*-animation-time').
getNick() {
static getNick() {
return 'pixel-wheel';
}
// This will be shown in the sidebar of the preferences dialog as well as in the
// drop-down menus where the user can choose the effect.
getLabel() {
static getLabel() {
return _('Pixel Wheel');
}
@@ -73,7 +74,7 @@ export default class Effect {
// This is called by the preferences dialog whenever a new effect profile is loaded. It
// binds all user interface elements to the respective settings keys of the profile.
bindPreferences(dialog) {
static bindPreferences(dialog) {
dialog.bindAdjustment('pixel-wheel-animation-time');
dialog.bindAdjustment('pixel-wheel-pixel-size');
dialog.bindAdjustment('pixel-wheel-spoke-count');
@@ -84,7 +85,7 @@ export default class Effect {
// The getActorScale() is called from extension.js to adjust the actor's size during the
// animation. This is useful if the effect requires drawing something beyond the usual
// bounds of the actor. This only works for GNOME 3.38+.
getActorScale(settings) {
static getActorScale(settings) {
return {x: 1.0, y: 1.0};
}
}
+8 -7
View File
@@ -16,7 +16,8 @@
const _ = imports.gettext.domain('burn-my-windows').gettext;
import {ShaderFactory} from '../ShaderFactory.js';
const ShaderFactory =
typeof global !== 'undefined' ? (await import('../ShaderFactory.js'))?.default : null;
//////////////////////////////////////////////////////////////////////////////////////////
// This effect pixelates the window texture and hides the pixels radially, starting //
@@ -33,7 +34,7 @@ export default class Effect {
// GLSL file in resources/shaders/<nick>.glsl. The callback will be called for each
// newly created shader instance.
constructor() {
this.shaderFactory = new ShaderFactory(this.getNick(), (shader) => {
this.shaderFactory = new ShaderFactory(Effect.getNick(), (shader) => {
// Store uniform locations of newly created shaders.
shader._uPixelSize = shader.get_uniform_location('uPixelSize');
shader._uStartPos = shader.get_uniform_location('uStartPos');
@@ -78,7 +79,7 @@ export default class Effect {
// ---------------------------------------------------------------------------- metadata
// The effect is available on all GNOME Shell versions supported by this extension.
getMinShellVersion() {
static getMinShellVersion() {
return [3, 36];
}
@@ -86,13 +87,13 @@ export default class Effect {
// required. It should match the prefix of the settings keys which store whether the
// effect is enabled currently (e.g. '*-enable-effect'), and its animation time
// (e.g. '*-animation-time').
getNick() {
static getNick() {
return 'pixel-wipe';
}
// This will be shown in the sidebar of the preferences dialog as well as in the
// drop-down menus where the user can choose the effect.
getLabel() {
static getLabel() {
return _('Pixel Wipe');
}
@@ -100,7 +101,7 @@ export default class Effect {
// This is called by the preferences dialog whenever a new effect profile is loaded. It
// binds all user interface elements to the respective settings keys of the profile.
bindPreferences(dialog) {
static bindPreferences(dialog) {
dialog.bindAdjustment('pixel-wipe-animation-time');
dialog.bindAdjustment('pixel-wipe-pixel-size');
}
@@ -110,7 +111,7 @@ export default class Effect {
// The getActorScale() is called from extension.js to adjust the actor's size during the
// animation. This is useful if the effect requires drawing something beyond the usual
// bounds of the actor. This only works for GNOME 3.38+.
getActorScale(settings) {
static getActorScale(settings) {
return {x: 1.0, y: 1.0};
}
}
+8 -7
View File
@@ -16,7 +16,8 @@
const _ = imports.gettext.domain('burn-my-windows').gettext;
import {ShaderFactory} from '../ShaderFactory.js';
const ShaderFactory =
typeof global !== 'undefined' ? (await import('../ShaderFactory.js'))?.default : null;
//////////////////////////////////////////////////////////////////////////////////////////
// This very simple effect pixelates the window texture and randomly hides pixels until //
@@ -33,7 +34,7 @@ export default class Effect {
// GLSL file in resources/shaders/<nick>.glsl. The callback will be called for each
// newly created shader instance.
constructor() {
this.shaderFactory = new ShaderFactory(this.getNick(), (shader) => {
this.shaderFactory = new ShaderFactory(Effect.getNick(), (shader) => {
// Store uniform locations of newly created shaders.
shader._uNoise = shader.get_uniform_location('uNoise');
shader._uPixelSize = shader.get_uniform_location('uPixelSize');
@@ -51,7 +52,7 @@ export default class Effect {
// ---------------------------------------------------------------------------- metadata
// The effect is available on all GNOME Shell versions supported by this extension.
getMinShellVersion() {
static getMinShellVersion() {
return [3, 36];
}
@@ -59,13 +60,13 @@ export default class Effect {
// required. It should match the prefix of the settings keys which store whether the
// effect is enabled currently (e.g. '*-enable-effect'), and its animation time
// (e.g. '*-animation-time').
getNick() {
static getNick() {
return 'pixelate';
}
// This will be shown in the sidebar of the preferences dialog as well as in the
// drop-down menus where the user can choose the effect.
getLabel() {
static getLabel() {
return _('Pixelate');
}
@@ -73,7 +74,7 @@ export default class Effect {
// This is called by the preferences dialog whenever a new effect profile is loaded. It
// binds all user interface elements to the respective settings keys of the profile.
bindPreferences(dialog) {
static bindPreferences(dialog) {
dialog.bindAdjustment('pixelate-animation-time');
dialog.bindAdjustment('pixelate-noise');
dialog.bindAdjustment('pixelate-pixel-size');
@@ -84,7 +85,7 @@ export default class Effect {
// The getActorScale() is called from extension.js to adjust the actor's size during the
// animation. This is useful if the effect requires drawing something beyond the usual
// bounds of the actor. This only works for GNOME 3.38+.
getActorScale(settings) {
static getActorScale(settings) {
return {x: 1.0, y: 1.0};
}
}
+8 -7
View File
@@ -16,7 +16,8 @@
const _ = imports.gettext.domain('burn-my-windows').gettext;
import {ShaderFactory} from '../ShaderFactory.js';
const ShaderFactory =
typeof global !== 'undefined' ? (await import('../ShaderFactory.js'))?.default : null;
//////////////////////////////////////////////////////////////////////////////////////////
// This ridiculous effect teleports your windows from and to alternative dimensions. //
@@ -33,7 +34,7 @@ export default class Effect {
// GLSL file in resources/shaders/<nick>.glsl. The callback will be called for each
// newly created shader instance.
constructor() {
this.shaderFactory = new ShaderFactory(this.getNick(), (shader) => {
this.shaderFactory = new ShaderFactory(Effect.getNick(), (shader) => {
// We import Clutter in this function as it is not available in the preferences
// process. This creator function of the ShaderFactory is only called within GNOME
// Shell's process.
@@ -65,7 +66,7 @@ export default class Effect {
// ---------------------------------------------------------------------------- metadata
// The effect is available on all GNOME Shell versions supported by this extension.
getMinShellVersion() {
static getMinShellVersion() {
return [3, 36];
}
@@ -73,13 +74,13 @@ export default class Effect {
// required. It should match the prefix of the settings keys which store whether the
// effect is enabled currently (e.g. '*-enable-effect'), and its animation time
// (e.g. '*-animation-time').
getNick() {
static getNick() {
return 'portal';
}
// This will be shown in the sidebar of the preferences dialog as well as in the
// drop-down menus where the user can choose the effect.
getLabel() {
static getLabel() {
return _('Portal');
}
@@ -87,7 +88,7 @@ export default class Effect {
// This is called by the preferences dialog whenever a new effect profile is loaded. It
// binds all user interface elements to the respective settings keys of the profile.
bindPreferences(dialog) {
static bindPreferences(dialog) {
dialog.bindAdjustment('portal-animation-time');
dialog.bindAdjustment('portal-rotation-speed');
dialog.bindAdjustment('portal-whirling');
@@ -100,7 +101,7 @@ export default class Effect {
// The getActorScale() is called from extension.js to adjust the actor's size during the
// animation. This is useful if the effect requires drawing something beyond the usual
// bounds of the actor. This only works for GNOME 3.38+.
getActorScale(settings) {
static getActorScale(settings) {
return {x: 1.0, y: 1.0};
}
}
+8 -7
View File
@@ -16,7 +16,8 @@
const _ = imports.gettext.domain('burn-my-windows').gettext;
import {ShaderFactory} from '../ShaderFactory.js';
const ShaderFactory =
typeof global !== 'undefined' ? (await import('../ShaderFactory.js'))?.default : null;
//////////////////////////////////////////////////////////////////////////////////////////
// This effects dissolves your windows into a cloud of dust. For this, it uses an //
@@ -38,7 +39,7 @@ export default class Effect {
// GLSL file in resources/shaders/<nick>.glsl. The callback will be called for each
// newly created shader instance.
constructor() {
this.shaderFactory = new ShaderFactory(this.getNick(), (shader) => {
this.shaderFactory = new ShaderFactory(Effect.getNick(), (shader) => {
// We import these modules in this function as they are not available in the
// preferences process. This callback is only called within GNOME Shell's process.
const {Clutter, GdkPixbuf, Cogl} = imports.gi;
@@ -91,7 +92,7 @@ export default class Effect {
// ---------------------------------------------------------------------------- metadata
// This effect is only available on GNOME Shell 40+.
getMinShellVersion() {
static getMinShellVersion() {
return [40, 0];
}
@@ -99,13 +100,13 @@ export default class Effect {
// required. It should match the prefix of the settings keys which store whether the
// effect is enabled currently (e.g. '*-enable-effect'), and its animation time
// (e.g. '*-animation-time').
getNick() {
static getNick() {
return 'snap';
}
// This will be shown in the sidebar of the preferences dialog as well as in the
// drop-down menus where the user can choose the effect.
getLabel() {
static getLabel() {
return _('Snap of Disintegration');
}
@@ -113,7 +114,7 @@ export default class Effect {
// This is called by the preferences dialog whenever a new effect profile is loaded. It
// binds all user interface elements to the respective settings keys of the profile.
bindPreferences(dialog) {
static bindPreferences(dialog) {
dialog.bindAdjustment('snap-animation-time');
dialog.bindAdjustment('snap-scale');
dialog.bindColorButton('snap-color');
@@ -124,7 +125,7 @@ export default class Effect {
// The getActorScale() is called from extension.js to adjust the actor's size during the
// animation. This is useful if the effect requires drawing something beyond the usual
// bounds of the actor. This only works for GNOME 3.38+.
getActorScale(settings) {
static getActorScale(settings) {
return {x: 1.2, y: 1.2};
}
}
+8 -7
View File
@@ -16,7 +16,8 @@
const _ = imports.gettext.domain('burn-my-windows').gettext;
import {ShaderFactory} from '../ShaderFactory.js';
const ShaderFactory =
typeof global !== 'undefined' ? (await import('../ShaderFactory.js'))?.default : null;
//////////////////////////////////////////////////////////////////////////////////////////
// This effect tears your windows apart with a series of violent scratches! //
@@ -34,7 +35,7 @@ export default class Effect {
// GLSL file in resources/shaders/<nick>.glsl. The callback will be called for each
// newly created shader instance.
constructor() {
this.shaderFactory = new ShaderFactory(this.getNick(), (shader) => {
this.shaderFactory = new ShaderFactory(Effect.getNick(), (shader) => {
// We import these modules in this function as they are not available in the
// preferences process. This callback is only called within GNOME Shell's process.
const {Clutter, GdkPixbuf, Cogl} = imports.gi;
@@ -89,7 +90,7 @@ export default class Effect {
// ---------------------------------------------------------------------------- metadata
// This effect is only available on GNOME Shell 40+.
getMinShellVersion() {
static getMinShellVersion() {
return [40, 0];
}
@@ -97,13 +98,13 @@ export default class Effect {
// required. It should match the prefix of the settings keys which store whether the
// effect is enabled currently (e.g. '*-enable-effect'), and its animation time
// (e.g. '*-animation-time').
getNick() {
static getNick() {
return 'trex';
}
// This will be shown in the sidebar of the preferences dialog as well as in the
// drop-down menus where the user can choose the effect.
getLabel() {
static getLabel() {
return _('T-Rex Attack');
}
@@ -111,7 +112,7 @@ export default class Effect {
// This is called by the preferences dialog whenever a new effect profile is loaded. It
// binds all user interface elements to the respective settings keys of the profile.
bindPreferences(dialog) {
static bindPreferences(dialog) {
dialog.bindAdjustment('trex-animation-time');
dialog.bindColorButton('trex-scratch-color');
dialog.bindAdjustment('trex-scratch-scale');
@@ -124,7 +125,7 @@ export default class Effect {
// The getActorScale() is called from extension.js to adjust the actor's size during the
// animation. This is useful if the effect requires drawing something beyond the usual
// bounds of the actor. This only works for GNOME 3.38+.
getActorScale(settings) {
static getActorScale(settings) {
const scale = 1.0 + 0.5 * settings.get_double('trex-scratch-warp');
return {x: scale, y: scale};
}
+8 -7
View File
@@ -16,7 +16,8 @@
const _ = imports.gettext.domain('burn-my-windows').gettext;
import {ShaderFactory} from '../ShaderFactory.js';
const ShaderFactory =
typeof global !== 'undefined' ? (await import('../ShaderFactory.js'))?.default : null;
//////////////////////////////////////////////////////////////////////////////////////////
// This effect hides the actor by making it first transparent from top and bottom //
@@ -34,7 +35,7 @@ export default class Effect {
// GLSL file in resources/shaders/<nick>.glsl. The callback will be called for each
// newly created shader instance.
constructor() {
this.shaderFactory = new ShaderFactory(this.getNick(), (shader) => {
this.shaderFactory = new ShaderFactory(Effect.getNick(), (shader) => {
// We import Clutter in this function as it is not available in the preferences
// process. This creator function of the ShaderFactory is only called within GNOME
// Shell's process.
@@ -55,7 +56,7 @@ export default class Effect {
// ---------------------------------------------------------------------------- metadata
// The effect is available on all GNOME Shell versions supported by this extension.
getMinShellVersion() {
static getMinShellVersion() {
return [3, 36];
}
@@ -63,13 +64,13 @@ export default class Effect {
// required. It should match the prefix of the settings keys which store whether the
// effect is enabled currently (e.g. '*-enable-effect'), and its animation time
// (e.g. '*-animation-time').
getNick() {
static getNick() {
return 'tv';
}
// This will be shown in the sidebar of the preferences dialog as well as in the
// drop-down menus where the user can choose the effect.
getLabel() {
static getLabel() {
return _('TV Effect');
}
@@ -77,7 +78,7 @@ export default class Effect {
// This is called by the preferences dialog whenever a new effect profile is loaded. It
// binds all user interface elements to the respective settings keys of the profile.
bindPreferences(dialog) {
static bindPreferences(dialog) {
dialog.bindAdjustment('tv-animation-time');
dialog.bindColorButton('tv-effect-color');
}
@@ -87,7 +88,7 @@ export default class Effect {
// The getActorScale() is called from extension.js to adjust the actor's size during the
// animation. This is useful if the effect requires drawing something beyond the usual
// bounds of the actor. This only works for GNOME 3.38+.
getActorScale(settings) {
static getActorScale(settings) {
return {x: 1.0, y: 1.0};
}
}
+8 -7
View File
@@ -16,7 +16,8 @@
const _ = imports.gettext.domain('burn-my-windows').gettext;
import {ShaderFactory} from '../ShaderFactory.js';
const ShaderFactory =
typeof global !== 'undefined' ? (await import('../ShaderFactory.js'))?.default : null;
//////////////////////////////////////////////////////////////////////////////////////////
// This effect combines the Glitch and the TV Effect. Credits go to Kurt Wilson //
@@ -33,7 +34,7 @@ export default class Effect {
// GLSL file in resources/shaders/<nick>.glsl. The callback will be called for each
// newly created shader instance.
constructor() {
this.shaderFactory = new ShaderFactory(this.getNick(), (shader) => {
this.shaderFactory = new ShaderFactory(Effect.getNick(), (shader) => {
// We import Clutter in this function as it is not available in the preferences
// process. This creator function of the ShaderFactory is only called within GNOME
// Shell's process.
@@ -64,7 +65,7 @@ export default class Effect {
// ---------------------------------------------------------------------------- metadata
// The effect is available on all GNOME Shell versions supported by this extension.
getMinShellVersion() {
static getMinShellVersion() {
return [3, 36];
}
@@ -72,13 +73,13 @@ export default class Effect {
// required. It should match the prefix of the settings keys which store whether the
// effect is enabled currently (e.g. '*-close-effect'), and its animation time
// (e.g. '*-animation-time').
getNick() {
static getNick() {
return 'tv-glitch';
}
// This will be shown in the sidebar of the preferences dialog as well as in the
// drop-down menus where the user can choose the effect.
getLabel() {
static getLabel() {
return _('TV Glitch');
}
@@ -86,7 +87,7 @@ export default class Effect {
// This is called by the preferences dialog whenever a new effect profile is loaded. It
// binds all user interface elements to the respective settings keys of the profile.
bindPreferences(dialog) {
static bindPreferences(dialog) {
dialog.bindAdjustment('tv-glitch-animation-time');
dialog.bindAdjustment('tv-glitch-scale');
dialog.bindAdjustment('tv-glitch-speed');
@@ -99,7 +100,7 @@ export default class Effect {
// The getActorScale() is called from extension.js to adjust the actor's size during the
// animation. This is useful if the effect requires drawing something beyond the usual
// bounds of the actor. This only works for GNOME 3.38+.
getActorScale(settings) {
static getActorScale(settings) {
return {x: 1.0, y: 1.0};
}
}
+8 -7
View File
@@ -16,7 +16,8 @@
const _ = imports.gettext.domain('burn-my-windows').gettext;
import {ShaderFactory} from '../ShaderFactory.js';
const ShaderFactory =
typeof global !== 'undefined' ? (await import('../ShaderFactory.js'))?.default : null;
//////////////////////////////////////////////////////////////////////////////////////////
// This effect lets your windows be carried to the realm of dreams by some little //
@@ -33,7 +34,7 @@ export default class Effect {
// GLSL file in resources/shaders/<nick>.glsl. The callback will be called for each
// newly created shader instance.
constructor() {
this.shaderFactory = new ShaderFactory(this.getNick(), (shader) => {
this.shaderFactory = new ShaderFactory(Effect.getNick(), (shader) => {
// We import Clutter in this function as it is not available in the preferences
// process. This creator function of the ShaderFactory is only called within GNOME
// Shell's process.
@@ -67,20 +68,20 @@ export default class Effect {
// ---------------------------------------------------------------------------- metadata
// The effect is available on all GNOME Shell versions supported by this extension.
getMinShellVersion() {
static getMinShellVersion() {
return [3, 36];
}
// This will be called in various places where a unique identifier for this effect is
// required. It should match the prefix of the settings keys which store whether the
// effect is enabled currently (e.g. the '*-enable-effect').
getNick() {
static getNick() {
return 'wisps';
}
// This will be shown in the sidebar of the preferences dialog as well as in the
// drop-down menus where the user can choose the effect.
getLabel() {
static getLabel() {
return _('Wisps');
}
@@ -88,7 +89,7 @@ export default class Effect {
// This is called by the preferences dialog whenever a new effect profile is loaded. It
// binds all user interface elements to the respective settings keys of the profile.
bindPreferences(dialog) {
static bindPreferences(dialog) {
dialog.bindAdjustment('wisps-animation-time');
dialog.bindAdjustment('wisps-scale');
dialog.bindColorButton('wisps-color-1');
@@ -113,7 +114,7 @@ export default class Effect {
// The getActorScale() is called from extension.js to adjust the actor's size during the
// animation. This is useful if the effect requires drawing something beyond the usual
// bounds of the actor. This only works for GNOME 3.38+.
getActorScale(settings) {
static getActorScale(settings) {
return {x: 1.0, y: 1.0};
}
}