Review of "ddterm" version 63.0.0 97ffe725b (65)

Details Page Preview

Another drop down terminal extension for GNOME Shell. With tabs. Works on Wayland natively

Extension Homepage
https://github.com/ddterm/gnome-shell-extension-ddterm

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 3 warning 5 manual_review 1

Shexli found 9 issues that may need reviewer attention.

EGO-A-005 manual_review

extensions should not access the clipboard directly

Direct clipboard access via `St.Clipboard.get_default()` requires reviewer scrutiny.

Review Guidelines

  • ddterm/shell/notifications.js:116
    St.Clipboard.get_default()

EGO-X-004 warning

extensions should avoid synchronous file IO in shell code

Shell code should avoid synchronous file IO APIs like `GLib.file_get_contents()` and `Gio.File.load_contents()`.

File Operations

  • ddterm/shell/wlclipboard.js:24
    GLib.file_get_contents(`/proc/${pid}/cmdline`)

EGO-C49-004 error

extensions targeting GNOME 49 must not call Meta.Window.get_maximized

This extension explicitly targets GNOME Shell 49 but still calls removed `Meta.Window.get_maximized()`.

Meta.Window

  • ddterm/shell/wm.js:461
    this.window.get_maximized()

EGO-P-001 error

GSettings schema id must use org.gnome.shell.extensions base

GSettings schema id must start with `org.gnome.shell.extensions`.

GSettings Schemas

  • schemas/com.github.amezin.ddterm.gschema.xml
    id='com.github.amezin.ddterm' path='/com/github/amezin/ddterm/'

EGO-P-002 error

GSettings schema path must use /org/gnome/shell/extensions base

GSettings schema path must start with `/org/gnome/shell/extensions`.

GSettings Schemas

  • schemas/com.github.amezin.ddterm.gschema.xml
    id='com.github.amezin.ddterm' path='/com/github/amezin/ddterm/'

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

  • ddterm/app/about.js
  • ddterm/app/application.js
  • ddterm/app/appwindow.js
  • ddterm/app/init.js
  • ddterm/app/meta.js
  • ddterm/app/notebook.js
  • ddterm/app/regex.js
  • ddterm/app/search.js
  • ddterm/app/tablabel.js
  • ddterm/app/tcgetpgrp.js
  • ddterm/app/terminal.js
  • ddterm/app/terminalpage.js
  • ddterm/app/terminalsettings.js
  • ddterm/app/urldetect_patterns.js
  • ddterm/pref/dialog.js

EGO-L-002 warning

objects created by extension should be destroyed in disable()

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

Destroy all objects

  • ddterm/shell/panelicon.js:71
            this.about_item = new PopupMenu.PopupMenuItem(
                gettext_domain.gettext('About ddterm')
            )
  • ddterm/shell/panelicon.js:63
            this.preferences_item = new PopupMenu.PopupMenuItem(
                gettext_domain.gettext('Preferences…')
            )
  • ddterm/shell/panelicon.js:48
            this.toggle_item = new PopupMenu.PopupSwitchMenuItem(
                gettext_domain.gettext('Show'),
                false
            )

EGO-L-005 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

  • ddterm/shell/extension.js:239
    this.settings = this.extension.getSettings()
  • ddterm/shell/panelicon.js:71
            this.about_item = new PopupMenu.PopupMenuItem(
                gettext_domain.gettext('About ddterm')
            )
  • ddterm/shell/panelicon.js:63
            this.preferences_item = new PopupMenu.PopupMenuItem(
                gettext_domain.gettext('Preferences…')
            )
  • ddterm/shell/panelicon.js:48
            this.toggle_item = new PopupMenu.PopupSwitchMenuItem(
                gettext_domain.gettext('Show'),
                false
            )

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

  • ddterm/shell/extension.js:296
            this.service.connect('error', (service, ex) => {
                const log_collector = service.subprocess?.log_collector;
    
                if (!log_collector) {
                    this.notifications.show_error(ex);
                    return;
                }
    
                log_collector.collect().then(output =
  • ddterm/shell/extension.js:285
            this.service.connect('notify::starting', service => {
                if (service.starting) {
                    this.notifications.destroy(
                        MessageTray.NotificationDestroyedReason.EXPIRED
                    );
    
                    if (!this.extension.check_version_match())
               
  • ddterm/shell/extension.js:278
            this.service.connect('notify::subprocess', service => {
                const { subprocess } = service;
    
                if (subprocess)
                    this.extension.watch_app_process(subprocess);
            })
  • ddterm/shell/extension.js:456
    this.window_manager.connect('hide-request', () => this.app_control.hide(false))
  • ddterm/shell/extension.js:377
            this.window_matcher.connect('notify::current-window', () => {
                this.#create_window_manager();
            })
  • ddterm/shell/extension.js:387
            this.window_matcher.connect('notify::current-window', () => {
                this.#set_skip_taskbar();
            })

All Versions

Version Status
63.0.0 97ffe725b (65) Active
62.0.2 402c0b438 (64) Active
62.0.1 58ed3879a (63) Active
62.0.0 f4dbc6d9e (62) Inactive
61 Active
60 Active
59 Active
58 Active
57 Inactive
56 Active
55 Active
54 Active
53 Active
52 Active
51 Active
50 Active
49 Active
48 Active
47 Active
46 Active
45 Active
44 Rejected
43 Active
42 Active
41 Active
40 Active
39 Active
38 Active
37 Active
36 Active
35 Active
34 Active
33 Active
32 Active
31 Rejected
30 Inactive
29 Inactive
28 Inactive
27 Inactive
26 Inactive
25 Inactive
24 Inactive
23 Inactive
22 Rejected
21 Inactive
20 Inactive
19 Inactive
18 Inactive
17 Inactive
16 Inactive
15 Inactive
14 Inactive
13 Rejected
12 Inactive
11 Inactive
10 Inactive
9 Inactive
8 Inactive
7 Inactive
6 Rejected
5 Inactive
4 Inactive
3 Rejected
2 Inactive
1 Rejected

Previous Reviews on this Version

SriramRamkrishna active
reviewed, and approved.