Floating side panel made of cards you choose: media player (MPRIS), time tracker, to-do list, system monitor, weather, calendar, favourite apps, markets, Pomodoro, network speed, quick note, clock. Enable only the modules you want in the preferences. Network: Weather uses open-meteo.com, Markets uses Yahoo Finance and Google News, only while their card is shown. Everything else is local. The optional "stay awake with the lid closed" button inhibits suspend through logind and gnome-session; this is why the extension also runs in the unlock-dialog session mode (the panel itself is removed while the screen is locked).
Note: Binary files aren't shown on the web site. To see all files, please download the extension zipfile.
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()`.
lib/panel.js:819
GLib.file_get_contents(path)
modules/sysmon.js:17
GLib.file_get_contents(path)
modules/todo.js:578
GLib.file_get_contents(this._file)
modules/tracker.js:645
GLib.file_get_contents(this._file)
modules/weather.js:180
GLib.file_get_contents(this._cacheFile)
EGO-A-004 warning
extension files should not contain excessive ungated console logging
File contains 9 ungated console.log/warn/error calls (threshold: 5).
modules/player.js:766
console.error(`[yuzu] changement de sortie : ${e}`)
modules/player.js:796
console.error(`[yuzu] ListNames: ${e}`)
modules/player.js:902
console.error(`[yuzu] ${method}: ${e}`)
modules/player.js:1086
console.error(`[yuzu] Shuffle : ${e}`)
modules/player.js:1303
console.error(`[yuzu] seek: ${e}`)
modules/player.js:1316
console.error(`[yuzu] LoopStatus : ${e}`)
modules/player.js:998
console.warn(`[yuzu] Gvc indisponible : ${e}`)
modules/player.js:1056
console.warn(`[yuzu] volume : ${e}`)
modules/player.js:1075
console.warn(`[yuzu] activation de ${desktop} : ${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.
modules/calendar.js:57
this._dateLabel = new St.Label({
text: '',
style: `font-size: ${px(12)}px; color: ${MODULE.textDim};`,
})
modules/calendar.js:53
this._dayLabel = new St.Label({
text: '',
style: `font-size: ${px(13)}px; font-weight: bold; color: ${MODULE.accent}; letter-spacing: 1px;`,
})
modules/calendar.js:86
this._grid = new St.BoxLayout({vertical: true, x_expand: true, style: `spacing: ${px(3)}px;`})
modules/calendar.js:70
this._monthBtn = new St.Button({
x_expand: true,
can_focus: true,
style: `background-color: ${MODULE.inset}; border: 2px solid ${MODULE.strokeSoft}; `
+ `border-radius: ${px(3)}px; padding: ${px(4)}px; `
+ `font-size: ${px(1
modules/calendar.js:47
this._timeLabel = new St.Label({
text: '--:--',
y_align: Clutter.ActorAlign.CENTER,
style: `font-size: ${px(40)}px; font-weight: bold; letter-spacing: -1px; color: ${MODULE.text};`,
})
modules/calendar.js:37
this.actor = new St.BoxLayout({
vertical: true,
x_expand: true,
style: `background-color: ${MODULE.surface}; `
+ `border-radius: ${px(MODULE.radius)}px; `
+ `padding: ${px(20)}px; spacing: ${px(12)}px; color: ${MODULE.text};
modules/launcher.js:52
this._countLabel = new St.Label({
text: '0',
y_align: Clutter.ActorAlign.CENTER,
style: `font-size: ${px(11)}px; font-weight: bold; color: ${MODULE.textMuted}; `
+ `background-color: ${MODULE.inset}; border: 2px solid ${MODULE.strokeSoft};
modules/launcher.js:65
this._emptyLabel = new St.Label({
text: 'Aucun favori : épingle des applications dans le dock GNOME.',
style: `font-size: ${px(12)}px; color: ${MODULE.textMuted};`,
})
modules/launcher.js:62
this._grid = new St.BoxLayout({vertical: true, x_expand: true, style: `spacing: ${px(8)}px;`})
modules/launcher.js:36
this.actor = new St.BoxLayout({
vertical: true,
x_expand: true,
style: `background-color: ${MODULE.surface}; `
+ `border-radius: ${px(MODULE.radius)}px; `
+ `padding: ${px(20)}px; spacing: ${px(12)}px; color: ${MODULE.text};
modules/market.js:256
this._arrow = new St.Label({
text: '▾',
y_align: Clutter.ActorAlign.CENTER,
style: `font-size: ${px(10)}px; color: ${MODULE.textMuted};`,
})
modules/market.js:235
this._assetLabel = new St.Label({
text: ASSETS[this._token].name,
x_expand: true,
y_align: Clutter.ActorAlign.CENTER,
style: `font-size: ${px(14)}px; color: ${MODULE.textMuted};`,
})
modules/market.js:310
this._chart = new MarketChart(jsx(70))
modules/market.js:242
this._dropdownBtn = new St.Button({
can_focus: true,
y_align: Clutter.ActorAlign.CENTER,
style: `background-color: ${MODULE.inset}; `
+ `border: 2px solid ${MODULE.stroke}; `
+ `border-radius: ${px(MODULE.radius)}px; `
modules/market.js:378
this._expandBtn = new St.Button({
label: 'Tout afficher',
can_focus: true,
style: `background: none; border: none; `
+ `color: ${MODULE.accent}; font-size: ${px(11)}px; font-weight: bold;`,
})
modules/market.js:443
this._menu = new St.BoxLayout({
vertical: true,
style: `width: ${px(150)}px; `
+ `background-color: ${MODULE.surfaceStrong}; `
+ `border: 2px solid ${MODULE.stroke}; `
+ `border-radius: ${px(MODULE.radius)}px; `
modules/market.js:432
this._menuWrap = new St.BoxLayout({
vertical: true,
visible: false,
x_expand: true, y_expand: false,
x_align: Clutter.ActorAlign.FILL, y_align: Clutter.ActorAlign.START,
})
modules/market.js:401
this._newsList = new St.BoxLayout({
vertical: true, x_expand: true, style: `spacing: ${px(2)}px;`,
})
modules/market.js:404
this._newsScroll = new St.ScrollView({
x_expand: true,
height: jsx(140),
hscrollbar_policy: St.PolicyType.NEVER,
vscrollbar_policy: St.PolicyType.AUTOMATIC,
})
modules/market.js:295
this._priceLabel = new St.Label({
text: '—',
style: `font-size: ${px(34)}px; font-weight: bold; `
+ `letter-spacing: -1px; color: ${MODULE.text};`,
})
modules/market.js:267
this._refreshBtn = new St.Button({
can_focus: true,
y_align: Clutter.ActorAlign.CENTER,
style: `background-color: ${MODULE.inset}; border: 2px solid ${MODULE.strokeSoft}; `
+ `border-radius: ${px(3)}px; padding: ${px(4)}px; margin-right: ${
modules/market.js:334
this._strip = new St.BoxLayout({
vertical: true,
x_expand: true,
style: `spacing: ${px(4)}px;`,
})
modules/market.js:394
this._tickerTrack = new St.BoxLayout({
vertical: true, x_expand: true,
y_align: Clutter.ActorAlign.START,
})
modules/market.js:388
this._tickerViewport = new St.Widget({
clip_to_allocation: true,
x_expand: true,
height: jsx(24),
layout_manager: new Clutter.BinLayout(),
})
modules/market.js:251
this._tokenLabel = new St.Label({
text: this._token,
y_align: Clutter.ActorAlign.CENTER,
style: `font-size: ${px(13)}px; font-weight: bold; color: ${MODULE.text};`,
})
modules/market.js:213
this.actor = new St.Widget({
layout_manager: new Clutter.BinLayout(),
x_expand: true,
y_expand: false,
x_align: Clutter.ActorAlign.FILL,
y_align: Clutter.ActorAlign.START,
})
modules/player.js:358
this._appButton = new St.Button({
child: this._appIcon,
can_focus: true,
y_align: Clutter.ActorAlign.START,
style: 'background: none; border: none; padding: 0;',
})
modules/player.js:353
this._appIcon = new St.Icon({
icon_name: 'audio-x-generic-symbolic',
icon_size: px(30),
})
modules/player.js:329
this._art = new St.Widget({
x_expand: true, y_expand: true,
x_align: Clutter.ActorAlign.FILL, y_align: Clutter.ActorAlign.FILL,
})
modules/player.js:434
this._artistLabel = new St.Label({
text: 'Lance Spotify ou un autre lecteur',
style: `font-size: ${px(15)}px; color: ${MODULE.textDim}; `
+ `padding-top: ${px(4)}px;`,
})
modules/player.js:676
this._deviceList = new St.BoxLayout({
vertical: true, x_expand: true,
style: `spacing: ${px(6)}px; padding-top: ${px(10)}px;`,
})
modules/player.js:649
this._deviceOverlay = new St.BoxLayout({
vertical: true,
visible: false,
x_expand: true, y_expand: true,
x_align: Clutter.ActorAlign.FILL, y_align: Clutter.ActorAlign.FILL,
style: `background-color: ${MODULE.surfaceStrong}; `
modules/player.js:367
this._devicePill = new St.Button({
can_focus: true,
x_align: Clutter.ActorAlign.END,
x_expand: true,
y_align: Clutter.ActorAlign.START,
})
modules/player.js:502
this._elapsedLabel = new St.Label({text: '0:00', style: timeStyle})
modules/player.js:375
this._pillLabel = new St.Label({
text: '—',
y_align: Clutter.ActorAlign.CENTER,
style: `max-width: ${px(150)}px; color: ${INK}; `
+ `font-size: ${px(14)}px; font-weight: bold;`,
})
modules/player.js:442
this._playButton = new St.Button({
width: jsx(72),
height: jsx(72),
can_focus: true,
x_align: Clutter.ActorAlign.CENTER,
y_align: Clutter.ActorAlign.END,
})
modules/player.js:476
this._progress = new ProgressLine(jsx(16))
modules/player.js:503
this._remainingLabel = new St.Label({
text: '-0:00', x_expand: true, x_align: Clutter.ActorAlign.END, style: timeStyle,
})
modules/player.js:337
this._scrim = new St.Widget({
x_expand: true, y_expand: true,
x_align: Clutter.ActorAlign.FILL, y_align: Clutter.ActorAlign.FILL,
})
modules/player.js:412
this._titleClip = new ClipBox({
clip_to_allocation: true,
x_expand: true,
height: jsx(36),
})
modules/player.js:417
this._titleLabel = new St.Label({
text: 'Aucune lecture',
y_align: Clutter.ActorAlign.CENTER,
style: `font-size: ${px(26)}px; font-weight: bold; color: ${MODULE.text}; `
+ `letter-spacing: -0.5px;`,
})
modules/player.js:546
this._volume = new VolumeBlocks(jsx, px, frac => this._setVolume(frac))
modules/player.js:315
this.actor = new St.Widget({
layout_manager: new Clutter.BinLayout(),
width: logicalWidth * s,
height: logicalHeight * s,
x_expand: false,
y_expand: false,
x_align: Clutter.ActorAlign.CENTER,
clip_to_allocati
modules/sysmon.js:102
this._loadLabel = new St.Label({
text: 'charge —',
style: `font-size: ${px(11)}px; color: ${MODULE.textMuted};`,
})
modules/sysmon.js:82
this._uptimeLabel = new St.Label({
text: '—',
y_align: Clutter.ActorAlign.CENTER,
style: `font-size: ${px(11)}px; font-weight: bold; color: ${MODULE.textMuted}; `
+ `background-color: ${MODULE.inset}; border: 2px solid ${MODULE.strokeSoft};
modules/sysmon.js:64
this.actor = new St.BoxLayout({
vertical: true,
x_expand: true,
style: `background-color: ${MODULE.surface}; `
+ `border-radius: ${px(MODULE.radius)}px; `
+ `padding: ${px(20)}px; spacing: ${px(14)}px; `
+ `c
modules/todo.js:463
this._addBtn = new St.Button({
can_focus: true,
y_align: Clutter.ActorAlign.CENTER,
x_align: Clutter.ActorAlign.CENTER,
})
modules/todo.js:470
this._addIcon = new St.Label({
text: '+',
x_align: Clutter.ActorAlign.CENTER,
y_align: Clutter.ActorAlign.CENTER,
style: `font-size: ${px(22)}px; color: ${ACCENT_INK};`,
})
modules/todo.js:424
this._clearBtn = new St.Button({
can_focus: true,
y_align: Clutter.ActorAlign.CENTER,
style: `background-color: ${MODULE.inset}; border: 2px solid ${MODULE.strokeSoft}; `
+ `border-radius: ${px(3)}px; padding: ${px(3)}px; margin-left: ${px(
modules/todo.js:412
this._counterLabel = new St.Label({
text: '0 / 0',
y_align: Clutter.ActorAlign.CENTER,
style: `font-size: ${px(12)}px; color: ${MODULE.textMuted}; `
+ `background-color: ${MODULE.inset}; `
+ `border: 1px solid ${MODULE.strok
modules/todo.js:675
this._emptyLabel = new St.Label({
text: 'Aucune tâche en cours',
x_align: Clutter.ActorAlign.CENTER,
style: `color: ${MODULE.textMuted}; font-size: ${this._px(13)}px; `
+ `padding: ${this._px(24)}px 0;`,
})
modules/todo.js:441
this._entry = new St.Entry({
hint_text: 'Ajouter une tâche…',
x_expand: true,
can_focus: true,
y_align: Clutter.ActorAlign.CENTER,
})
modules/todo.js:512
this._list = new St.BoxLayout({
vertical: true, x_expand: true, style: `spacing: ${px(10)}px;`,
})
modules/todo.js:507
this._scroll = new St.ScrollView({
x_expand: true,
hscrollbar_policy: St.PolicyType.NEVER,
vscrollbar_policy: St.PolicyType.AUTOMATIC,
})
modules/todo.js:390
this.actor = new St.BoxLayout({
vertical: true,
x_expand: true,
y_expand: false,
x_align: Clutter.ActorAlign.FILL,
y_align: Clutter.ActorAlign.START,
style: `background-color: ${MODULE.surface}; `
+ `bord
modules/tracker.js:176
this._emptyLabel = new St.Label({
text: 'Aucune activité enregistrée pour l\'instant.',
style: `font-size: ${px(13)}px; color: ${MODULE.textDim}; `
+ `padding: ${px(16)}px ${px(16)}px;`,
})
modules/tracker.js:169
this._list = new St.BoxLayout({
vertical: true,
x_expand: true,
style: `spacing: ${px(8)}px; padding-top: ${px(20)}px;`,
})
modules/tracker.js:184
this._moreButton = new St.Button({
x_expand: true,
can_focus: true,
style: `background-color: transparent; border: none; `
+ `padding: ${px(12)}px 0 ${px(4)}px 0; `
+ `color: ${MODULE.textDim}; font-size: ${px(13)}px; `
modules/tracker.js:137
this._pauseBtn = new St.Button({
can_focus: true,
y_align: Clutter.ActorAlign.CENTER,
style: `background-color: ${MODULE.inset}; border: 2px solid ${MODULE.strokeSoft}; `
+ `border-radius: ${px(3)}px; padding: ${px(3)}px;`,
})
modules/tracker.js:151
this._totalLabel = new St.Label({
text: '0m',
y_align: Clutter.ActorAlign.END,
style: `font-size: ${px(32)}px; font-weight: bold; `
+ `letter-spacing: -1px; color: ${MODULE.text};`,
})
modules/tracker.js:157
this._weekLabel = new St.Label({
text: '7 J · —',
y_align: Clutter.ActorAlign.END,
style: `font-size: ${px(11)}px; font-weight: bold; color: ${MODULE.textMuted}; `
+ `padding-bottom: ${px(6)}px;`,
})
modules/tracker.js:113
this.actor = new St.BoxLayout({
vertical: true,
x_expand: true,
style: `background-color: ${MODULE.surface}; `
+ `border-radius: ${px(MODULE.radius)}px; `
+ `padding: ${px(24)}px ${px(20)}px; `
+ `color: ${MO
modules/weather.js:78
this._cityLabel = new St.Label({
text: 'MÉTÉO',
x_expand: true,
y_align: Clutter.ActorAlign.CENTER,
style: `font-size: ${px(13)}px; font-weight: bold; letter-spacing: 1px; `
+ `color: ${MODULE.textDim};`,
})
modules/weather.js:128
this._daysRow = new St.BoxLayout({
x_expand: true,
style: `spacing: ${px(4)}px; padding-top: ${px(4)}px;`,
})
modules/weather.js:107
this._descLabel = new St.Label({
text: 'Chargement…',
style: `font-size: ${px(13)}px; color: ${MODULE.textDim};`,
})
modules/weather.js:119
this._detailRow = new St.BoxLayout({x_expand: true, style: `spacing: ${px(6)}px;`})
modules/weather.js:97
this._glyph = new St.Label({
text: '·',
y_align: Clutter.ActorAlign.CENTER,
style: `font-size: ${px(40)}px;`,
})
modules/weather.js:86
this._statusLabel = new St.Label({
text: '',
y_align: Clutter.ActorAlign.CENTER,
style: `font-size: ${px(10)}px; color: ${MODULE.textMuted};`,
})
modules/weather.js:103
this._tempLabel = new St.Label({
text: '—°',
style: `font-size: ${px(34)}px; font-weight: bold; letter-spacing: -1px; color: ${MODULE.text};`,
})
modules/weather.js:68
this.actor = new St.BoxLayout({
vertical: true,
x_expand: true,
style: `background-color: ${MODULE.surface}; `
+ `border-radius: ${px(MODULE.radius)}px; `
+ `padding: ${px(20)}px; spacing: ${px(12)}px; color: ${MODULE.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`.
modules/calendar.js:57
this._dateLabel = new St.Label({
text: '',
style: `font-size: ${px(12)}px; color: ${MODULE.textDim};`,
})
modules/calendar.js:53
this._dayLabel = new St.Label({
text: '',
style: `font-size: ${px(13)}px; font-weight: bold; color: ${MODULE.accent}; letter-spacing: 1px;`,
})
modules/calendar.js:86
this._grid = new St.BoxLayout({vertical: true, x_expand: true, style: `spacing: ${px(3)}px;`})
modules/calendar.js:70
this._monthBtn = new St.Button({
x_expand: true,
can_focus: true,
style: `background-color: ${MODULE.inset}; border: 2px solid ${MODULE.strokeSoft}; `
+ `border-radius: ${px(3)}px; padding: ${px(4)}px; `
+ `font-size: ${px(1
modules/calendar.js:47
this._timeLabel = new St.Label({
text: '--:--',
y_align: Clutter.ActorAlign.CENTER,
style: `font-size: ${px(40)}px; font-weight: bold; letter-spacing: -1px; color: ${MODULE.text};`,
})
modules/calendar.js:37
this.actor = new St.BoxLayout({
vertical: true,
x_expand: true,
style: `background-color: ${MODULE.surface}; `
+ `border-radius: ${px(MODULE.radius)}px; `
+ `padding: ${px(20)}px; spacing: ${px(12)}px; color: ${MODULE.text};
modules/launcher.js:52
this._countLabel = new St.Label({
text: '0',
y_align: Clutter.ActorAlign.CENTER,
style: `font-size: ${px(11)}px; font-weight: bold; color: ${MODULE.textMuted}; `
+ `background-color: ${MODULE.inset}; border: 2px solid ${MODULE.strokeSoft};
modules/launcher.js:65
this._emptyLabel = new St.Label({
text: 'Aucun favori : épingle des applications dans le dock GNOME.',
style: `font-size: ${px(12)}px; color: ${MODULE.textMuted};`,
})
modules/launcher.js:62
this._grid = new St.BoxLayout({vertical: true, x_expand: true, style: `spacing: ${px(8)}px;`})
modules/launcher.js:21
this._shellSettings = new Gio.Settings({schema_id: 'org.gnome.shell'})
modules/launcher.js:36
this.actor = new St.BoxLayout({
vertical: true,
x_expand: true,
style: `background-color: ${MODULE.surface}; `
+ `border-radius: ${px(MODULE.radius)}px; `
+ `padding: ${px(20)}px; spacing: ${px(12)}px; color: ${MODULE.text};
modules/market.js:256
this._arrow = new St.Label({
text: '▾',
y_align: Clutter.ActorAlign.CENTER,
style: `font-size: ${px(10)}px; color: ${MODULE.textMuted};`,
})
modules/market.js:235
this._assetLabel = new St.Label({
text: ASSETS[this._token].name,
x_expand: true,
y_align: Clutter.ActorAlign.CENTER,
style: `font-size: ${px(14)}px; color: ${MODULE.textMuted};`,
})
modules/market.js:310
this._chart = new MarketChart(jsx(70))
modules/market.js:242
this._dropdownBtn = new St.Button({
can_focus: true,
y_align: Clutter.ActorAlign.CENTER,
style: `background-color: ${MODULE.inset}; `
+ `border: 2px solid ${MODULE.stroke}; `
+ `border-radius: ${px(MODULE.radius)}px; `
modules/market.js:378
this._expandBtn = new St.Button({
label: 'Tout afficher',
can_focus: true,
style: `background: none; border: none; `
+ `color: ${MODULE.accent}; font-size: ${px(11)}px; font-weight: bold;`,
})
modules/market.js:443
this._menu = new St.BoxLayout({
vertical: true,
style: `width: ${px(150)}px; `
+ `background-color: ${MODULE.surfaceStrong}; `
+ `border: 2px solid ${MODULE.stroke}; `
+ `border-radius: ${px(MODULE.radius)}px; `
modules/market.js:432
this._menuWrap = new St.BoxLayout({
vertical: true,
visible: false,
x_expand: true, y_expand: false,
x_align: Clutter.ActorAlign.FILL, y_align: Clutter.ActorAlign.START,
})
modules/market.js:401
this._newsList = new St.BoxLayout({
vertical: true, x_expand: true, style: `spacing: ${px(2)}px;`,
})
modules/market.js:404
this._newsScroll = new St.ScrollView({
x_expand: true,
height: jsx(140),
hscrollbar_policy: St.PolicyType.NEVER,
vscrollbar_policy: St.PolicyType.AUTOMATIC,
})
modules/market.js:295
this._priceLabel = new St.Label({
text: '—',
style: `font-size: ${px(34)}px; font-weight: bold; `
+ `letter-spacing: -1px; color: ${MODULE.text};`,
})
modules/market.js:267
this._refreshBtn = new St.Button({
can_focus: true,
y_align: Clutter.ActorAlign.CENTER,
style: `background-color: ${MODULE.inset}; border: 2px solid ${MODULE.strokeSoft}; `
+ `border-radius: ${px(3)}px; padding: ${px(4)}px; margin-right: ${
modules/market.js:334
this._strip = new St.BoxLayout({
vertical: true,
x_expand: true,
style: `spacing: ${px(4)}px;`,
})
modules/market.js:394
this._tickerTrack = new St.BoxLayout({
vertical: true, x_expand: true,
y_align: Clutter.ActorAlign.START,
})
modules/market.js:388
this._tickerViewport = new St.Widget({
clip_to_allocation: true,
x_expand: true,
height: jsx(24),
layout_manager: new Clutter.BinLayout(),
})
modules/market.js:251
this._tokenLabel = new St.Label({
text: this._token,
y_align: Clutter.ActorAlign.CENTER,
style: `font-size: ${px(13)}px; font-weight: bold; color: ${MODULE.text};`,
})
modules/market.js:213
this.actor = new St.Widget({
layout_manager: new Clutter.BinLayout(),
x_expand: true,
y_expand: false,
x_align: Clutter.ActorAlign.FILL,
y_align: Clutter.ActorAlign.START,
})
modules/player.js:358
this._appButton = new St.Button({
child: this._appIcon,
can_focus: true,
y_align: Clutter.ActorAlign.START,
style: 'background: none; border: none; padding: 0;',
})
modules/player.js:353
this._appIcon = new St.Icon({
icon_name: 'audio-x-generic-symbolic',
icon_size: px(30),
})
modules/player.js:329
this._art = new St.Widget({
x_expand: true, y_expand: true,
x_align: Clutter.ActorAlign.FILL, y_align: Clutter.ActorAlign.FILL,
})
modules/player.js:434
this._artistLabel = new St.Label({
text: 'Lance Spotify ou un autre lecteur',
style: `font-size: ${px(15)}px; color: ${MODULE.textDim}; `
+ `padding-top: ${px(4)}px;`,
})
modules/player.js:676
this._deviceList = new St.BoxLayout({
vertical: true, x_expand: true,
style: `spacing: ${px(6)}px; padding-top: ${px(10)}px;`,
})
modules/player.js:649
this._deviceOverlay = new St.BoxLayout({
vertical: true,
visible: false,
x_expand: true, y_expand: true,
x_align: Clutter.ActorAlign.FILL, y_align: Clutter.ActorAlign.FILL,
style: `background-color: ${MODULE.surfaceStrong}; `
modules/player.js:367
this._devicePill = new St.Button({
can_focus: true,
x_align: Clutter.ActorAlign.END,
x_expand: true,
y_align: Clutter.ActorAlign.START,
})
modules/player.js:502
this._elapsedLabel = new St.Label({text: '0:00', style: timeStyle})
modules/player.js:375
this._pillLabel = new St.Label({
text: '—',
y_align: Clutter.ActorAlign.CENTER,
style: `max-width: ${px(150)}px; color: ${INK}; `
+ `font-size: ${px(14)}px; font-weight: bold;`,
})
modules/player.js:442
this._playButton = new St.Button({
width: jsx(72),
height: jsx(72),
can_focus: true,
x_align: Clutter.ActorAlign.CENTER,
y_align: Clutter.ActorAlign.END,
})
modules/player.js:476
this._progress = new ProgressLine(jsx(16))
modules/player.js:503
this._remainingLabel = new St.Label({
text: '-0:00', x_expand: true, x_align: Clutter.ActorAlign.END, style: timeStyle,
})
modules/player.js:337
this._scrim = new St.Widget({
x_expand: true, y_expand: true,
x_align: Clutter.ActorAlign.FILL, y_align: Clutter.ActorAlign.FILL,
})
modules/player.js:412
this._titleClip = new ClipBox({
clip_to_allocation: true,
x_expand: true,
height: jsx(36),
})
modules/player.js:417
this._titleLabel = new St.Label({
text: 'Aucune lecture',
y_align: Clutter.ActorAlign.CENTER,
style: `font-size: ${px(26)}px; font-weight: bold; color: ${MODULE.text}; `
+ `letter-spacing: -0.5px;`,
})
modules/player.js:546
this._volume = new VolumeBlocks(jsx, px, frac => this._setVolume(frac))
modules/player.js:315
this.actor = new St.Widget({
layout_manager: new Clutter.BinLayout(),
width: logicalWidth * s,
height: logicalHeight * s,
x_expand: false,
y_expand: false,
x_align: Clutter.ActorAlign.CENTER,
clip_to_allocati
modules/sysmon.js:102
this._loadLabel = new St.Label({
text: 'charge —',
style: `font-size: ${px(11)}px; color: ${MODULE.textMuted};`,
})
modules/sysmon.js:82
this._uptimeLabel = new St.Label({
text: '—',
y_align: Clutter.ActorAlign.CENTER,
style: `font-size: ${px(11)}px; font-weight: bold; color: ${MODULE.textMuted}; `
+ `background-color: ${MODULE.inset}; border: 2px solid ${MODULE.strokeSoft};
modules/sysmon.js:64
this.actor = new St.BoxLayout({
vertical: true,
x_expand: true,
style: `background-color: ${MODULE.surface}; `
+ `border-radius: ${px(MODULE.radius)}px; `
+ `padding: ${px(20)}px; spacing: ${px(14)}px; `
+ `c
modules/todo.js:463
this._addBtn = new St.Button({
can_focus: true,
y_align: Clutter.ActorAlign.CENTER,
x_align: Clutter.ActorAlign.CENTER,
})
modules/todo.js:470
this._addIcon = new St.Label({
text: '+',
x_align: Clutter.ActorAlign.CENTER,
y_align: Clutter.ActorAlign.CENTER,
style: `font-size: ${px(22)}px; color: ${ACCENT_INK};`,
})
modules/todo.js:424
this._clearBtn = new St.Button({
can_focus: true,
y_align: Clutter.ActorAlign.CENTER,
style: `background-color: ${MODULE.inset}; border: 2px solid ${MODULE.strokeSoft}; `
+ `border-radius: ${px(3)}px; padding: ${px(3)}px; margin-left: ${px(
modules/todo.js:412
this._counterLabel = new St.Label({
text: '0 / 0',
y_align: Clutter.ActorAlign.CENTER,
style: `font-size: ${px(12)}px; color: ${MODULE.textMuted}; `
+ `background-color: ${MODULE.inset}; `
+ `border: 1px solid ${MODULE.strok
modules/todo.js:675
this._emptyLabel = new St.Label({
text: 'Aucune tâche en cours',
x_align: Clutter.ActorAlign.CENTER,
style: `color: ${MODULE.textMuted}; font-size: ${this._px(13)}px; `
+ `padding: ${this._px(24)}px 0;`,
})
modules/todo.js:441
this._entry = new St.Entry({
hint_text: 'Ajouter une tâche…',
x_expand: true,
can_focus: true,
y_align: Clutter.ActorAlign.CENTER,
})
modules/todo.js:512
this._list = new St.BoxLayout({
vertical: true, x_expand: true, style: `spacing: ${px(10)}px;`,
})
modules/todo.js:507
this._scroll = new St.ScrollView({
x_expand: true,
hscrollbar_policy: St.PolicyType.NEVER,
vscrollbar_policy: St.PolicyType.AUTOMATIC,
})
modules/todo.js:390
this.actor = new St.BoxLayout({
vertical: true,
x_expand: true,
y_expand: false,
x_align: Clutter.ActorAlign.FILL,
y_align: Clutter.ActorAlign.START,
style: `background-color: ${MODULE.surface}; `
+ `bord
modules/tracker.js:176
this._emptyLabel = new St.Label({
text: 'Aucune activité enregistrée pour l\'instant.',
style: `font-size: ${px(13)}px; color: ${MODULE.textDim}; `
+ `padding: ${px(16)}px ${px(16)}px;`,
})
modules/tracker.js:169
this._list = new St.BoxLayout({
vertical: true,
x_expand: true,
style: `spacing: ${px(8)}px; padding-top: ${px(20)}px;`,
})
modules/tracker.js:184
this._moreButton = new St.Button({
x_expand: true,
can_focus: true,
style: `background-color: transparent; border: none; `
+ `padding: ${px(12)}px 0 ${px(4)}px 0; `
+ `color: ${MODULE.textDim}; font-size: ${px(13)}px; `
modules/tracker.js:137
this._pauseBtn = new St.Button({
can_focus: true,
y_align: Clutter.ActorAlign.CENTER,
style: `background-color: ${MODULE.inset}; border: 2px solid ${MODULE.strokeSoft}; `
+ `border-radius: ${px(3)}px; padding: ${px(3)}px;`,
})
modules/tracker.js:151
this._totalLabel = new St.Label({
text: '0m',
y_align: Clutter.ActorAlign.END,
style: `font-size: ${px(32)}px; font-weight: bold; `
+ `letter-spacing: -1px; color: ${MODULE.text};`,
})
modules/tracker.js:157
this._weekLabel = new St.Label({
text: '7 J · —',
y_align: Clutter.ActorAlign.END,
style: `font-size: ${px(11)}px; font-weight: bold; color: ${MODULE.textMuted}; `
+ `padding-bottom: ${px(6)}px;`,
})
modules/tracker.js:113
this.actor = new St.BoxLayout({
vertical: true,
x_expand: true,
style: `background-color: ${MODULE.surface}; `
+ `border-radius: ${px(MODULE.radius)}px; `
+ `padding: ${px(24)}px ${px(20)}px; `
+ `color: ${MO
modules/weather.js:78
this._cityLabel = new St.Label({
text: 'MÉTÉO',
x_expand: true,
y_align: Clutter.ActorAlign.CENTER,
style: `font-size: ${px(13)}px; font-weight: bold; letter-spacing: 1px; `
+ `color: ${MODULE.textDim};`,
})
modules/weather.js:128
this._daysRow = new St.BoxLayout({
x_expand: true,
style: `spacing: ${px(4)}px; padding-top: ${px(4)}px;`,
})
modules/weather.js:107
this._descLabel = new St.Label({
text: 'Chargement…',
style: `font-size: ${px(13)}px; color: ${MODULE.textDim};`,
})
modules/weather.js:119
this._detailRow = new St.BoxLayout({x_expand: true, style: `spacing: ${px(6)}px;`})
modules/weather.js:97
this._glyph = new St.Label({
text: '·',
y_align: Clutter.ActorAlign.CENTER,
style: `font-size: ${px(40)}px;`,
})
modules/weather.js:86
this._statusLabel = new St.Label({
text: '',
y_align: Clutter.ActorAlign.CENTER,
style: `font-size: ${px(10)}px; color: ${MODULE.textMuted};`,
})
modules/weather.js:103
this._tempLabel = new St.Label({
text: '—°',
style: `font-size: ${px(34)}px; font-weight: bold; letter-spacing: -1px; color: ${MODULE.text};`,
})
modules/weather.js:68
this.actor = new St.BoxLayout({
vertical: true,
x_expand: true,
style: `background-color: ${MODULE.surface}; `
+ `border-radius: ${px(MODULE.radius)}px; `
+ `padding: ${px(20)}px; spacing: ${px(12)}px; color: ${MODULE.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.
modules/calendar.js:78
this._monthBtn.connect('clicked', () => this._goToday())
modules/market.js:265
this._dropdownBtn.connect('clicked', () => this._toggleDropdown())
modules/market.js:384
this._expandBtn.connect('clicked', () => this._toggleExpanded())
modules/market.js:277
this._refreshBtn.connect('clicked', () => {
this._refreshIcon.remove_all_transitions();
this._refreshIcon.rotation_angle_z = 0;
this._refreshIcon.ease({rotation_angle_z: 360, duration: 600,
mode: Clutter.AnimationMode.EASE_OUT_EXPO});
modules/player.js:365
this._appButton.connect('clicked', () => this._raiseApp())
modules/player.js:392
this._devicePill.connect('clicked', () => this._toggleDeviceChooser())
modules/player.js:387
this._devicePill.connect('notify::hover', () => this._devicePill.ease({
scale_x: this._devicePill.hover ? 1.04 : 1,
scale_y: this._devicePill.hover ? 1.04 : 1,
duration: 180, mode: Clutter.AnimationMode.EASE_OUT_QUAD,
}))
modules/player.js:457
this._playButton.connect('clicked', () => this._call('PlayPause'))
modules/player.js:452
this._playButton.connect('notify::hover', () => this._playButton.ease({
scale_x: this._playButton.hover ? 1.06 : 1,
scale_y: this._playButton.hover ? 1.06 : 1,
duration: 180, mode: Clutter.AnimationMode.EASE_OUT_QUAD,
}))
modules/player.js:478
this._progress.connect('button-press-event', (_a, ev) => {
this._dragging = true;
this._seekFromEvent(ev, false);
return Clutter.EVENT_STOP;
})
modules/player.js:488
this._progress.connect('button-release-event', (_a, ev) => {
if (this._dragging) {
this._dragging = false;
this._seekFromEvent(ev, false);
}
return Clutter.EVENT_STOP;
})
modules/player.js:495
this._progress.connect('leave-event', () => {
this._dragging = false;
return Clutter.EVENT_PROPAGATE;
})
modules/player.js:483
this._progress.connect('motion-event', (_a, ev) => {
if (this._dragging)
this._seekFromEvent(ev, true);
return Clutter.EVENT_PROPAGATE;
})
modules/player.js:432
this._titleClip.connect('notify::width', () => this._updateMarquee())
modules/player.js:548
this._volume.connect('scroll-event', (_a, ev) => {
const dir = ev.get_scroll_direction();
const step = dir === Clutter.ScrollDirection.UP ? 0.05
: dir === Clutter.ScrollDirection.DOWN ? -0.05 : 0;
if (step !== 0)
this._setVo
modules/todo.js:298
this._entry.clutter_text.connect('activate', () => this._commitEdit(true))
modules/todo.js:299
this._entry.clutter_text.connect('key-focus-out', () => this._commitEdit(true))
modules/todo.js:300
this._entry.clutter_text.connect('key-press-event', (_a, event) => {
if (event.get_key_symbol() === Clutter.KEY_Escape) {
this._commitEdit(false);
return Clutter.EVENT_STOP;
}
return Clutter.EVENT_PROPAGATE;
})
modules/todo.js:484
this._addBtn.connect('button-press-event', () => {
this._addBtn.remove_all_transitions();
this._addBtn.ease({
scale_x: 0.95, scale_y: 0.95,
duration: 100, mode: Clutter.AnimationMode.EASE_OUT_QUAD,
});
return Clu
modules/todo.js:492
this._addBtn.connect('button-release-event', () => {
this._onAddHover(this._addBtn.hover);
return Clutter.EVENT_PROPAGATE;
})
modules/todo.js:480
this._addBtn.connect('clicked', () => this._addTask())
modules/todo.js:481
this._addBtn.connect('notify::hover', () => this._onAddHover(this._addBtn.hover))
modules/todo.js:432
this._clearBtn.connect('clicked', () => this._clearCompleted())
modules/todo.js:449
this._entry.clutter_text.connect('activate', () => this._addTask())
modules/todo.js:454
this._entry.connect('button-press-event', () => {
this._panel?.enterEditMode?.(this._entry.clutter_text);
return Clutter.EVENT_PROPAGATE;
})
modules/todo.js:450
this._entry.clutter_text.connect('key-focus-in', () => this._updateEntryStyle())
modules/todo.js:451
this._entry.clutter_text.connect('key-focus-out', () => this._updateEntryStyle())
modules/tracker.js:192
this._moreButton.connect('clicked', () => {
this._expanded = !this._expanded;
this._refresh();
})
modules/tracker.js:146
this._pauseBtn.connect('clicked', () => this._togglePause())
| Version | Status |
|---|---|
| 6.0 (1) | Unreviewed |