Voice dictation for GNOME. Press Super+Space, talk, and the words land where your cursor is: browsers, editors, terminals. Realtime transcription with Gemini 3.5 Transcribe Live or Mistral Voxtral, and no companion daemon. Murmur types into the focused field instead of pasting. Clipboard: when no text field is focused, Murmur writes the transcription to the clipboard so the words are not lost.
Note: Binary files aren't shown on the web site. To see all files, please download the extension zipfile.
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:98
this._countdown = new St.Label({style_class: 'murmur-countdown', text: ''})
extension.js:124
this._hint = new St.Label({style_class: 'murmur-hint', text: ''})
extension.js:113
this._scroll = new St.ScrollView({
style_class: 'murmur-scroll',
reactive: true,
hscrollbar_policy: St.PolicyType.NEVER,
vscrollbar_policy: St.PolicyType.AUTOMATIC,
})
extension.js:97
this._status = new St.Label({style_class: 'murmur-status', text: 'Listening…'})
extension.js:105
this._text = new St.Label({style_class: 'murmur-text', text: ''})
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`.
extension.js:98
this._countdown = new St.Label({style_class: 'murmur-countdown', text: ''})
extension.js:124
this._hint = new St.Label({style_class: 'murmur-hint', text: ''})
extension.js:113
this._scroll = new St.ScrollView({
style_class: 'murmur-scroll',
reactive: true,
hscrollbar_policy: St.PolicyType.NEVER,
vscrollbar_policy: St.PolicyType.AUTOMATIC,
})
extension.js:97
this._status = new St.Label({style_class: 'murmur-status', text: 'Listening…'})
extension.js:105
this._text = new St.Label({style_class: 'murmur-text', text: ''})
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:120
this._scrollChangedId = this._scroll.vadjustment.connect('changed', adj => {
adj.value = Math.max(0, adj.upper - adj.page_size);
})
| Version | Status |
|---|---|
| 1.7.1 (20) | Unreviewed |
| 1.7.0 (19) | Rejected |
| 1.6.2 (18) | Rejected |
| 1.6.1 (17) | Rejected |
| 1.6.0 (16) | Rejected |
| 1.5.0 (15) | Rejected |
| 1.4.0 (14) | Rejected |
| 1.3.3 (13) | Rejected |
| 1.3.2 (12) | Rejected |
| 1.3.1 (11) | Rejected |
| 1.3.0 (10) | Rejected |
| 1.2.2 (9) | Rejected |
| 1.2.1 (8) | Rejected |
| 1.2.0 (7) | Rejected |
| 1.1.0 (6) | Rejected |
| 1.0.4 (5) | Rejected |
| 1.0.3 (4) | Rejected |
| 1.0.2 (3) | Rejected |
| 1.0.1 (2) | Rejected |
| 1.0.0 (1) | Rejected |