-
Notifications
You must be signed in to change notification settings - Fork 101
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #766 from klangman/add-focus-effect-0.9.5
[CinnamonBurnMyWindows@klangman] Added new Focus effect by Justin Garza
- Loading branch information
Showing
14 changed files
with
468 additions
and
48 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
114 changes: 114 additions & 0 deletions
114
CinnamonBurnMyWindows@klangman/files/CinnamonBurnMyWindows@klangman/6.2/effects/Focus.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,114 @@ | ||
////////////////////////////////////////////////////////////////////////////////////////// | ||
// ) ( // | ||
// ( /( ( ( ) ( ( ( ( )\ ) ( ( // | ||
// )\()) ))\ )( ( ( )\ ) )\))( )\ ( (()/( ( )\))( ( // | ||
// ((_)\ /((_|()\ )\ ) )\ '(()/( ((_)()((_) )\ ) ((_)))\((_)()\ )\ // | ||
// | |(_|_))( ((_)_(_/( _((_)) )(_)) _(()((_|_)_(_/( _| |((_)(()((_|(_) // | ||
// | '_ \ || | '_| ' \)) | ' \()| || | \ V V / | ' \)) _` / _ \ V V (_-< // | ||
// |_.__/\_,_|_| |_||_| |_|_|_| \_, | \_/\_/|_|_||_|\__,_\___/\_/\_//__/ // | ||
// |__/ // | ||
////////////////////////////////////////////////////////////////////////////////////////// | ||
|
||
// SPDX-FileCopyrightText: Justin Garza [email protected] | ||
// SPDX-License-Identifier: GPL-3.0-or-later | ||
|
||
'use strict'; | ||
|
||
//import * as utils from '../utils.js'; | ||
|
||
// We import the ShaderFactory only in the Shell process as it is not required in the | ||
// preferences process. The preferences process does not create any shader instances, it | ||
// only uses the static metadata of the effect. | ||
//const ShaderFactory = await utils.importInShellOnly('./ShaderFactory.js'); | ||
|
||
//const _ = await utils.importGettext(); | ||
const {ShaderFactory} = require('./ShaderFactory.js'); | ||
|
||
const Gettext = imports.gettext; | ||
const GLib = imports.gi.GLib; | ||
const UUID = "CinnamonBurnMyWindows@klangman"; | ||
|
||
Gettext.bindtextdomain(UUID, GLib.get_home_dir() + "/.local/share/locale"); | ||
|
||
function _(text) { | ||
let locText = Gettext.dgettext(UUID, text); | ||
if (locText == text) { | ||
locText = window._(text); | ||
} | ||
return locText; | ||
} | ||
|
||
////////////////////////////////////////////////////////////////////////////////////////// | ||
// This effect uses a blur effect to allow the window to focus in and out of view. // | ||
////////////////////////////////////////////////////////////////////////////////////////// | ||
|
||
// The effect class can be used to get some metadata (like the effect's name or supported | ||
// GNOME Shell versions), to initialize the respective page of the settings dialog, as | ||
// well as to create the actual shader for the effect. | ||
var Effect = class Effect { | ||
// The constructor creates a ShaderFactory which will be used by extension.js to create | ||
// shader instances for this effect. The shaders will be automagically created using the | ||
// GLSL file in resources/shaders/<nick>.glsl. The callback will be called for each | ||
// newly created shader instance. | ||
constructor() { | ||
this.shaderFactory = new ShaderFactory(Effect.getNick(), (shader) => { | ||
// Store uniform locations of newly created shaders. | ||
shader._uBlurAmount = shader.get_uniform_location('uBlurAmount'); | ||
shader._uBlurQuality = shader.get_uniform_location('uBlurQuality'); | ||
|
||
// Write all uniform values at the start of each animation. | ||
shader.connect('begin-animation', (shader, settings) => { | ||
shader.set_uniform_float(shader._uBlurAmount, 1, [ | ||
settings.getValue('focus-blur-amount'), | ||
]); | ||
|
||
shader.set_uniform_float(shader._uBlurQuality, 1, [ | ||
settings.getValue('focus-blur-quality'), | ||
]); | ||
}); | ||
}); | ||
} | ||
|
||
// ---------------------------------------------------------------------------- metadata | ||
|
||
// The effect is available on all GNOME Shell versions supported by this extension. | ||
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. '*-enable-effect'), and its animation time | ||
// (e.g. '*-animation-time'). Also, the shader file and the settings UI files should be | ||
// named likes this. | ||
static getNick() { | ||
return 'focus'; | ||
} | ||
|
||
// 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. | ||
static getLabel() { | ||
return _('Focus'); | ||
} | ||
|
||
// -------------------------------------------------------------------- API for prefs.js | ||
|
||
// 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. | ||
static bindPreferences(dialog) { | ||
// These connect the settings to the UI elements. Have a look at prefs.js | ||
// on how to bind other types of UI elements. | ||
dialog.bindAdjustment('focus-animation-time'); | ||
dialog.bindAdjustment('focus-blur-amount'); | ||
dialog.bindAdjustment('focus-blur-quality'); | ||
} | ||
|
||
// ---------------------------------------------------------------- API for extension.js | ||
|
||
// 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+. | ||
static getActorScale(settings, forOpening, actor) { | ||
return {x: 1.0, y: 1.0}; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
2 changes: 1 addition & 1 deletion
2
CinnamonBurnMyWindows@klangman/files/CinnamonBurnMyWindows@klangman/metadata.json
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.