Review of "Sound Input & Output Device Chooser" version 44

Details Page Preview

Shows a list of sound output and input devices (similar to gnome sound settings) in the status menu below the volume slider. Various active ports like HDMI , Speakers etc. of the same device are also displayed for selection. V20+ needs python as dependency. If you want to continue with the old method without Python, use options to switch off New Port identification. But it works with only English

Extension Homepage
https://github.com/kgshank/gse-sound-output-device-chooser

No comments.

Diff Against

Files

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

Shexli (experimental) error 2 warning 3

Shexli found 5 issues that may need reviewer attention.

EGO015 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

  • base.js:121
                    pItem.connect('activate', () => {
                        _d("Activating Profile:" + id + profileName);
                        this.emit("profile-activated", this.id, profileName);
                    })
  • base.js:351
    obj.connect("device-activated", (item, id) => this._changeDeviceBase(id))
  • base.js:352
    obj.connect("profile-activated", (item, id, name) => this._profileChangeCallback(id, name))

EGO027 warning

owned object references should be released in disable()

Owned references that are cleaned up in `disable()` should also be released with `null` or `undefined`.

Destroy all objects

  • base.js:247
    this._settings = ExtensionUtils.getSettings()
  • base.js:243
    this.menuItem = new PopupMenu.PopupSubMenuMenuItem(_("Extension initialising..."), true)

EGO017 error

deprecated modules must not be imported

Deprecated module `ByteArray` is imported.

Do not use deprecated modules

  • convenience.js:19
    ByteArray = imports.byteArray
  • convenience.js:19
    const ByteArray = imports.byteArray;
  • convenience.js:41
    let input = imports.byteArray.toString(out);

EGO028 warning

extensions should not use synchronous subprocess APIs in shell code

Shell code should avoid synchronous subprocess APIs like `GLib.spawn_command_line_sync()` and `GLib.spawn_sync()`.

Complete Examples

  • convenience.js:40
    GLib.spawn_command_line_sync("pactl list sinks")
  • convenience.js:106
    GLib.spawn_command_line_sync(cmd)
  • convenience.js:144
    GLib.spawn_command_line_sync(pythonExec + " " + pyLocation)
  • convenience.js:170
    GLib.spawn_sync(null, ["pactl", "list", "cards"], env, GLib.SpawnFlags.SEARCH_PATH, null)
  • volumeMixerPopupMenu.js:61
    GLib.spawn_command_line_sync(cmd)

EGO018 error

Gtk, Gdk and Adw must not be imported in shell process files

GTK library `Gtk` must not be imported in shell process files.

Do not import GTK libraries in GNOME Shell

  • prefs.js:19
    { Gio, GObject, Gtk } = imports.gi

All Versions