extension.js 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. import St from 'gi://St';
  2. const DEFAULT_SPEED = 0.75;
  3. import { Extension } from 'resource:///org/gnome/shell/extensions/extension.js';
  4. import * as Settings from './settings.js';
  5. function LOG(m){
  6. console.log("[impatience] " + m);
  7. };
  8. var noop = function() {};
  9. export default class Impatience extends Extension {
  10. constructor(metadata) {
  11. super(metadata);
  12. this.enabled = false;
  13. this.original_speed = St.Settings.get().slow_down_factor;
  14. this.modified_speed = DEFAULT_SPEED;
  15. this.unbind = noop;
  16. };
  17. enable() {
  18. this.enabled = true;
  19. var pref = (new Settings.Prefs(this)).SPEED;
  20. LOG("enabled");
  21. var binding = pref.changed(() => {
  22. this.set_speed(pref.get());
  23. });
  24. this.unbind = () => {
  25. pref.disconnect(binding);
  26. this.unbind = noop;
  27. };
  28. this.set_speed(pref.get());
  29. };
  30. disable() {
  31. this.enabled = false;
  32. this.unbind();
  33. St.Settings.get().slow_down_factor = this.original_speed;
  34. };
  35. set_speed(new_speed) {
  36. if(!this.enabled) {
  37. LOG("NOT setting new speed, since the extension is disabled.");
  38. return;
  39. }
  40. if(new_speed !== undefined) {
  41. this.modified_speed = new_speed;
  42. }
  43. LOG("setting new speed: " + this.modified_speed);
  44. St.Settings.get().slow_down_factor = this.modified_speed;
  45. };
  46. }