AI-powered voice-to-text dictation for GNOME. Requires the openwispr companion engine service for recording/transcription. Uses clipboard copy/paste for output (optional auto-paste). Optional remote STT/LLM requests are sent only to user-configured providers.
Note: Binary files aren't shown on the web site. To see all files, please download the extension zipfile.
EGO-A-005 manual_review
extensions should not access the clipboard directly
Direct clipboard access via `St.Clipboard.get_default()` requires reviewer scrutiny.
extension.js:684
St.Clipboard.get_default()
extension.js:703
St.Clipboard.get_default()
EGO-A-004 warning
extension files should not contain excessive ungated console logging
File contains 9 ungated console.log/warn/error calls (threshold: 5).
extension.js:100
console.error(`[openwispr-gnome-extension] Failed to load panel logo icon: ${e}`)
extension.js:159
console.error('[openwispr-gnome-extension] Failed to acquire DBus bus name')
extension.js:163
console.error(`[openwispr-gnome-extension] Failed to export DBus control interface: ${e}`)
extension.js:529
console.error(`[openwispr-gnome-extension] Companion start failed: ${e}`)
extension.js:593
console.error(`[openwispr-gnome-extension] Companion stop failed: ${e}`)
extension.js:619
console.error(`[openwispr-gnome-extension] Failed to connect to companion DBus service: ${e}`)
extension.js:696
console.error(`[openwispr-gnome-extension] Injection failed: ${e}`)
extension.js:747
console.error(`[openwispr-gnome-extension] Failed to restore clipboard: ${e}`)
extension.js:756
console.error(`[openwispr-gnome-extension] Injection failed: ${e}`)
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.
extension.js:105
this._icon = new St.Icon(
this._panelLogoGicon
? {
gicon: this._panelLogoGicon,
style_class: 'system-status-icon',
}
: {
icon_name: 'microphone-sensitivity-high-symbolic',
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.
extension.js:119
this._indicator.connect('button-press-event', () => {
this._toggleRecording();
return Clutter.EVENT_PROPAGATE;
})