Review of "Media Controls" version 2.4.6 (1)

Details Page Preview

Show controls and information of the currently playing media in the panel.

Extension Homepage
https://github.com/m-obeid/media-controls

No comments.

FAQ

Files

Note: Binary files aren't shown on the web site. To see all files, please download the extension zipfile.

Shexli (experimental) error 1 warning 2

Shexli found 3 issues that may need reviewer attention.

EGO-C49-002 error

extensions targeting GNOME 49 must not use removed Clutter action classes

This extension explicitly targets GNOME Shell 49 but still uses removed `Clutter.ClickAction` or `Clutter.TapAction`.

Clutter.ClickAction() and Clutter.TapAction()

  • helpers/shell/PanelButton.js:387
    new Clutter.ClickAction()
  • helpers/shell/PanelButton.js:470
    new Clutter.ClickAction()
  • helpers/shell/PanelButton.js:831
    new Clutter.ClickAction()
  • helpers/shell/PanelButton.js:1015
    new Clutter.ClickAction()

EGO-P-007 warning

JavaScript files should be reachable from extension.js or prefs.js

Some JavaScript files are not reachable from `extension.js` or `prefs.js` imports.

Don't include unnecessary files

  • types/dbus.js
  • types/misc.js

EGO-L-003 warning

signals connected by extension should be disconnected in disable()

Signals assigned in `enable()` are missing matching disconnect calls in `disable()` or its helper methods.

Disconnect all signals

  • extension.js:480
            this.settings.connect("changed::blacklisted-players", () => {
                this.blacklistedPlayers = this.settings.get_strv("blacklisted-players");
                for (const playerProxy of this.playerProxies.values()) {
                    if (this.isPlayerBlacklisted(playerProxy.identity, playerPro
  • extension.js:477
            this.settings.connect("changed::cache-art", () => {
                this.cacheArt = this.settings.get_boolean("cache-art");
            })
  • extension.js:432
            this.settings.connect("changed::colored-player-icon-menu", () => {
                this.coloredPlayerIconMenu = this.settings.get_boolean("colored-player-icon-menu");
                this.panelBtn?.updateWidgets(WidgetFlags.MENU_PLAYERS);
            })
  • extension.js:428
            this.settings.connect("changed::colored-player-icon", () => {
                this.coloredPlayerIcon = this.settings.get_boolean("colored-player-icon");
                this.panelBtn?.updateWidgets(WidgetFlags.PANEL_ICON);
            })
  • extension.js:436
            this.settings.connect("changed::cover-art-radius", () => {
                this.coverArtRadius = this.settings.get_uint("cover-art-radius");
                this.panelBtn?.updateWidgets(WidgetFlags.MENU_IMAGE);
            })
  • extension.js:451
            this.settings.connect("changed::elements-order", () => {
                this.elementsOrder = /** @type {ElementsOrder} */ (this.settings.get_strv("elements-order"));
                this.panelBtn?.updateWidgets(WidgetFlags.PANEL_NO_REPLACE);
            })
  • extension.js:446
            this.settings.connect("changed::extension-index", () => {
                this.extensionIndex = this.settings.get_uint("extension-index");
                this.removePanelButton();
                this.setActivePlayer();
            })
  • extension.js:440
            this.settings.connect("changed::extension-position", () => {
                const enumIndex = this.settings.get_enum("extension-position");
                this.extensionPosition = enumValueByIndex(ExtensionPositions, enumIndex);
                this.removePanelButton();
                this.setActivePlaye
  • extension.js:372
            this.settings.connect("changed::fixed-label-width", () => {
                this.isFixedLabelWidth = this.settings.get_boolean("fixed-label-width");
                this.panelBtn?.updateWidgets(WidgetFlags.PANEL_LABEL | WidgetFlags.MENU_LABELS | WidgetFlags.MENU_IMAGE);
            })
  • extension.js:388
            this.settings.connect("changed::hide-media-notification", () => {
                this.hideMediaNotification = this.settings.get_boolean("hide-media-notification");
                this.updateMediaNotificationVisiblity();
            })
  • extension.js:368
            this.settings.connect("changed::label-width", () => {
                this.labelWidth = this.settings.get_uint("label-width");
                this.panelBtn?.updateWidgets(WidgetFlags.PANEL_LABEL | WidgetFlags.MENU_LABELS | WidgetFlags.MENU_IMAGE);
            })
  • extension.js:455
            this.settings.connect("changed::labels-order", () => {
                this.labelsOrder = this.settings.get_strv("labels-order");
                this.panelBtn?.updateWidgets(WidgetFlags.PANEL_LABEL);
            })
  • extension.js:468
            this.settings.connect("changed::mouse-action-double", () => {
                this.mouseActionDouble = this.settings.get_enum("mouse-action-double");
            })
  • extension.js:459
            this.settings.connect("changed::mouse-action-left", () => {
                this.mouseActionLeft = this.settings.get_enum("mouse-action-left");
            })
  • extension.js:462
            this.settings.connect("changed::mouse-action-middle", () => {
                this.mouseActionMiddle = this.settings.get_enum("mouse-action-middle");
            })
  • extension.js:465
            this.settings.connect("changed::mouse-action-right", () => {
                this.mouseActionRight = this.settings.get_enum("mouse-action-right");
            })
  • extension.js:474
            this.settings.connect("changed::mouse-action-scroll-down", () => {
                this.mouseActionScrollDown = this.settings.get_enum("mouse-action-scroll-down");
            })
  • extension.js:471
            this.settings.connect("changed::mouse-action-scroll-up", () => {
                this.mouseActionScrollUp = this.settings.get_enum("mouse-action-scroll-up");
            })
  • extension.js:376
            this.settings.connect("changed::scroll-labels", () => {
                this.scrollLabels = this.settings.get_boolean("scroll-labels");
                this.panelBtn?.updateWidgets(WidgetFlags.PANEL_LABEL | WidgetFlags.MENU_LABELS);
            })
  • extension.js:384
            this.settings.connect("changed::scroll-pause-time", () => {
                this.scrollPauseTime = this.settings.get_uint("scroll-pause-time") * 1000;
                this.panelBtn?.updateWidgets(WidgetFlags.PANEL_LABEL | WidgetFlags.MENU_LABELS);
            })
  • extension.js:380
            this.settings.connect("changed::scroll-speed", () => {
                this.scrollSpeed = this.settings.get_uint("scroll-speed");
                this.panelBtn?.updateWidgets(WidgetFlags.PANEL_LABEL | WidgetFlags.MENU_LABELS);
            })
  • extension.js:412
            this.settings.connect("changed::show-control-icons-next", () => {
                this.showControlIconsNext = this.settings.get_boolean("show-control-icons-next");
                this.panelBtn?.updateWidgets(WidgetFlags.PANEL_CONTROLS_NEXT);
            })
  • extension.js:408
            this.settings.connect("changed::show-control-icons-play", () => {
                this.showControlIconsPlay = this.settings.get_boolean("show-control-icons-play");
                this.panelBtn?.updateWidgets(WidgetFlags.PANEL_CONTROLS_PLAYPAUSE);
            })
  • extension.js:416
            this.settings.connect("changed::show-control-icons-previous", () => {
                this.showControlIconsPrevious = this.settings.get_boolean("show-control-icons-previous");
                this.panelBtn?.updateWidgets(WidgetFlags.PANEL_CONTROLS_PREVIOUS);
            })
  • extension.js:424
            this.settings.connect("changed::show-control-icons-seek-backward", () => {
                this.showControlIconsSeekBackward = this.settings.get_boolean("show-control-icons-seek-backward");
                this.panelBtn?.updateWidgets(WidgetFlags.PANEL_CONTROLS_SEEK_BACKWARD);
            })
  • extension.js:420
            this.settings.connect("changed::show-control-icons-seek-forward", () => {
                this.showControlIconsSeekForward = this.settings.get_boolean("show-control-icons-seek-forward");
                this.panelBtn?.updateWidgets(WidgetFlags.PANEL_CONTROLS_SEEK_FORWARD);
            })
  • extension.js:404
            this.settings.connect("changed::show-control-icons", () => {
                this.showControlIcons = this.settings.get_boolean("show-control-icons");
                this.panelBtn?.updateWidgets(WidgetFlags.PANEL_CONTROLS);
            })
  • extension.js:396
            this.settings.connect("changed::show-label", () => {
                this.showLabel = this.settings.get_boolean("show-label");
                this.panelBtn?.updateWidgets(WidgetFlags.PANEL_LABEL);
            })
  • extension.js:400
            this.settings.connect("changed::show-player-icon", () => {
                this.showPlayerIcon = this.settings.get_boolean("show-player-icon");
                this.panelBtn?.updateWidgets(WidgetFlags.PANEL_ICON);
            })
  • extension.js:392
            this.settings.connect("changed::show-track-slider", () => {
                this.showTrackSlider = this.settings.get_boolean("show-track-slider");
                this.panelBtn?.updateWidgets(WidgetFlags.MENU_SLIDER);
            })
  • helpers/shell/PanelButton.js:182
            this.menu.connect("open-state-changed", (_, isOpen) => {
                if (isOpen && this.extension.showTrackSlider && this.menuSlider != null) {
                    this.addMenuSlider().catch(errorLog);
                }
            })
  • helpers/shell/PanelButton.js:710
                this.menuSlider.connect("seeked", (_, position) => {
                    this.playerProxy.setPosition(this.playerProxy.metadata["mpris:trackid"], position);
                })

All Versions

Version Status
2.4.6 (1) Unreviewed