Files
community-plugins/gamer-mode/logo.svg
T
RAMAandGitHub 0f64148bea Add gamer-mode plugin (#168)
* feat: add gamer-mode plugin

Live CPU, RAM, swap, GPU, VRAM, load and network readings in the bar and a
panel, plus a one-click mode that suspends background resource hogs and
restores exactly what it suspended.

* chore: rebuild the thumbnail with the upstream generator

Produced by assets.noctalia.dev/plugins/thumbnail-generator.html with the
title, the Gaming tag, the panel screenshot and the Red accent, rather than
composed by hand at the same dimensions.

* fix(gamer-mode): write the session before suspending anything

Enable suspended targets first and dropped the writeSnapshot return, so
a failed write left processes frozen and units stopped with no record to
restore them from, while the service published gamer mode as off and
switched the power profile.

The snapshot now lands on disk first, and a failed write aborts the
enable with the machine untouched and an error notification.

Writing first can record a target whose suspend command then failed.
That direction is safe: thawing is unconditional and SIGCONT to a
running process is a no-op, and a stop target restarts only after a live
probe says it is still down.
2026-07-30 22:32:21 -04:00

61 lines
3.4 KiB
XML

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" width="100%" height="100%">
<defs>
<linearGradient id="outerFlame" x1="0%" y1="100%" x2="0%" y2="0%">
<stop offset="0%" stop-color="#C0392B"/>
<stop offset="100%" stop-color="#E74C3C"/>
</linearGradient>
<linearGradient id="midFlame" x1="0%" y1="100%" x2="0%" y2="0%">
<stop offset="0%" stop-color="#E67E22"/>
<stop offset="100%" stop-color="#F39C12"/>
</linearGradient>
<linearGradient id="innerFlame" x1="0%" y1="100%" x2="0%" y2="0%">
<stop offset="0%" stop-color="#F1C40F"/>
<stop offset="100%" stop-color="#FFEB3B"/>
</linearGradient>
</defs>
<path fill="url(#outerFlame)" d="M 120 280 C 100 220, 110 170, 150 130 C 170 110, 180 70, 170 40 C 210 70, 230 110, 240 150 C 260 100, 290 60, 330 80 C 370 100, 360 150, 390 180 C 410 200, 420 240, 390 290 Z"/>
<path fill="url(#midFlame)" d="M 140 280 C 130 230, 145 190, 175 160 C 195 140, 210 100, 210 80 C 235 115, 250 150, 265 175 C 285 130, 315 105, 340 120 C 370 140, 355 185, 375 210 C 390 230, 395 260, 375 290 Z"/>
<path fill="url(#innerFlame)" d="M 170 280 C 160 240, 180 210, 200 185 C 215 165, 225 130, 230 115 C 245 145, 260 175, 275 195 C 290 160, 310 145, 325 155 C 345 170, 335 210, 350 235 C 360 250, 360 270, 345 280 Z"/>
<rect x="90" y="235" width="16" height="175" rx="4" fill="#7F8C8D"/>
<rect x="84" y="245" width="6" height="25" rx="2" fill="#95A5A6"/>
<rect x="84" y="365" width="6" height="25" rx="2" fill="#95A5A6"/>
<rect x="160" y="395" width="170" height="20" rx="2" fill="#1B2631"/>
<path fill="#F1C40F" d="M 170 398 h 8 v 12 h -8 z M 183 398 h 8 v 12 h -8 z M 196 398 h 8 v 12 h -8 z M 209 398 h 8 v 12 h -8 z M 222 398 h 8 v 12 h -8 z M 235 398 h 8 v 12 h -8 z M 253 398 h 8 v 12 h -8 z M 266 398 h 8 v 12 h -8 z M 279 398 h 8 v 12 h -8 z M 292 398 h 8 v 12 h -8 z M 305 398 h 8 v 12 h -8 z M 318 398 h 8 v 12 h -8 z"/>
<rect x="104" y="245" width="290" height="150" rx="14" fill="#2C3E50"/>
<rect x="114" y="255" width="270" height="130" rx="10" fill="#34495E"/>
<path stroke="#1ABC9C" stroke-width="4" stroke-linecap="round" fill="none" d="M 125 267 L 373 267"/>
<path stroke="#1ABC9C" stroke-width="4" stroke-linecap="round" fill="none" d="M 125 373 L 373 373"/>
<circle cx="185" cy="320" r="48" fill="#1A252F"/>
<circle cx="185" cy="320" r="42" fill="#2C3E50"/>
<g fill="#1A252F">
<path d="M 185 320 L 175 282 A 42 42 0 0 1 195 282 Z"/>
<path d="M 185 320 L 223 310 A 42 42 0 0 1 223 330 Z"/>
<path d="M 185 320 L 195 358 A 42 42 0 0 1 175 358 Z"/>
<path d="M 185 320 L 147 330 A 42 42 0 0 1 147 310 Z"/>
</g>
<circle cx="185" cy="320" r="16" fill="#34495E"/>
<circle cx="185" cy="320" r="8" fill="#7F8C8D"/>
<circle cx="313" cy="320" r="48" fill="#1A252F"/>
<circle cx="313" cy="320" r="42" fill="#2C3E50"/>
<g fill="#1A252F">
<path d="M 313 320 L 303 282 A 42 42 0 0 1 323 282 Z"/>
<path d="M 313 320 L 351 310 A 42 42 0 0 1 351 330 Z"/>
<path d="M 313 320 L 323 358 A 42 42 0 0 1 303 358 Z"/>
<path d="M 313 320 L 275 330 A 42 42 0 0 1 275 310 Z"/>
</g>
<circle cx="313" cy="320" r="16" fill="#34495E"/>
<circle cx="313" cy="320" r="8" fill="#7F8C8D"/>
<circle cx="130" cy="110" r="4" fill="#FFEB3B"/>
<circle cx="380" cy="130" r="5" fill="#F39C12"/>
<circle cx="280" cy="50" r="3" fill="#FFEB3B"/>
<circle cx="200" cy="40" r="4" fill="#E74C3C"/>
</svg>