Review of "Apropos OSK" version 1.0.1 (1)

Details Page Preview

On-screen keyboard for touch devices, inspired by Windows 11, with an optional Gboard-style phone layout. It has a compact TKL layout with Fn, Ctrl, Alt, AltGr and Super keys, or a phone layout with a number row, long-press accents and symbols and a Material look. It opens by itself on text fields, can suggest words (built-in or from ibus-typing-booster), capitalizes sentences, types a period on double space, autocorrects English, moves the cursor when you drag on Space, and has a visual layout editor. It also runs on the lock screen so you can type your password there. Based on Fluent OSK by TbangIT (https://github.com/TbangIT/fluent-osk).

Extension Homepage
https://github.com/BeShO-ShO/apropos-osk

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) warning 6

Shexli found 6 issues that may need reviewer attention.

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

  • keyboard.js:2347
    Gio.File.new_for_path(p).load_contents(null)
  • keyboard.js:2366
    f.load_contents(null)
  • keyboard.js:2396
    f.load_contents(null)
  • layouts.js:181
    file.load_contents(null)

EGO-A-004 warning

extension files should not contain excessive ungated console logging

File contains 12 ungated console.log/warn/error calls (threshold: 5).

No excessive logging

  • keyboard.js:54
    console.warn('[AproposOSK] typing-booster start failed:', e)
  • keyboard.js:60
    console.warn('[AproposOSK] typing-booster stop failed:', e)
  • keyboard.js:110
    console.warn('[AproposOSK] could not restore input engine:', e)
  • keyboard.js:577
    console.warn(`[AproposOSK] Could not register font ${name}:`, e.message)
  • keyboard.js:583
    console.warn('[AproposOSK] Bundled font registration unavailable, using system fonts:', e.message)
  • keyboard.js:1662
    console.warn('[AproposOSK] Overview fallback failed:', e.message)
  • keyboard.js:2178
    console.warn('[AproposOSK] typing-booster bridge unavailable:', err)
  • keyboard.js:2233
    console.warn('[AproposOSK] typing-booster sync failed:', err)
  • keyboard.js:2295
    console.warn('[AproposOSK] typing-booster commit failed:', err)
  • keyboard.js:2353
    console.warn('[AproposOSK] Could not load words-en.txt:', err)

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

  • extension.js:355
            this._icon = new St.Icon({
                icon_name: 'input-keyboard-symbolic',
                style_class: 'system-status-icon',
            })

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

  • extension.js:355
            this._icon = new St.Icon({
                icon_name: 'input-keyboard-symbolic',
                style_class: 'system-status-icon',
            })

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:361
            this._indicator.connect('button-press-event', (actor, event) => {
                if (event.get_button() === 1) {
                    if (this.keyboard) {
                        this.keyboard.toggle();
                    }
                    return Clutter.EVENT_STOP;
                }
                return Clutter
  • extension.js:371
            this._indicator.connect('touch-event', (actor, event) => {
                const type = event.type();
                if (type === Clutter.EventType.TOUCH_BEGIN) {
                    return Clutter.EVENT_STOP;
                }
                if (type === Clutter.EventType.TOUCH_END) {
                    if (thi

EGO-M-008 warning

extensions using unlock-dialog must document it in disable() comments

Extensions using `unlock-dialog` should document the reason in `disable()` comments.

Session Modes

  • extension.js:421
        disable() {
            this._stopAutoShow();
    
            if (this._settingsListener) {
                this._settings.disconnect(this._settingsListener);
                this._settingsListener = null;
            }
    
            if (this._quickToggle) {
                this._quickToggle.destroy();
                this._quickT

All Versions

Version Status
1.1.0 (2) Unreviewed
1.0.1 (1) Rejected

Previous Reviews on this Version

JustPerfection rejected
This code seems to be generated by AI. Please note, we have a rule for that: - [EGO Review Guidelines: AI](https://gjs.guide/extensions/review-guidelines/review-guidelines.html#extensions-must-not-be-ai-generated) - [Extensions Best Practices Guidelines](https://gjs.guide/extensions/review-guidelines/best-practices.html)
BeSho-Sho posted a review
yes, the code is heavily generated by AI, with my instructions. thank you for your time, if the policies change in the future, I would be happy to resubmit.