Official Website: vladislavtsytrikov.github.io/frostbyte
Install β’ Live Monitor β’ How It Works β’ Configuration β’ CLI
Modern apps are hungry. Firefox, Slack, VS Code, Spotify sit on 4+ GB of RAM while you're not looking at them. Linux won't reclaim pages that apps are technically "using" just by being alive.
FrostByte puts idle apps into cold storage:
- Freeze β Idle apps above a RAM threshold get
SIGSTOP. The kernel instantly reclaims their physical pages. - Thaw β Focus or click a frozen window β the GNOME extension fires
SIGCONT. Instant. Transparent.
Tip
Your system stays snappy, swap stays empty, battery lasts longer.
| β‘ | Instant Wake-up | Zero-latency thawing via native GNOME Shell extension |
| β | Live TUI | Real-time dashboard β frozen apps, candidates, RAM saved |
| β» | Smart Thaw | Wakes entire process trees including child processes (TUI apps in terminals) |
| β | Auto-Freeze | Scans /proc for RAM-heavy apps idle beyond threshold |
| π΅ | Audio-Aware | Skips freezing apps that are currently playing audio |
| π | Per-App Rules | Regex patterns with custom freeze timeouts per application |
| π | Notifications | Desktop notifications when apps are frozen or thawed |
| π | Hot Reload | Config changes apply instantly β no daemon restart needed |
| π± | Mouse-Friendly | Click frozen windows to thaw, even without focus |
| β | Panel Indicator | GNOME top bar snowflake with live frozen count + quick-thaw menu |
| π | Bilingual | English / Russian β toggle with L |
| π¦ | Single File | One Python script. No deps. Daemon + TUI + extension + installer |
curl -fsSL https://raw.githubusercontent.com/VladislavTsytrikov/frostbyte/main/install.sh | bashNote
One command. Downloads a single Python script and runs frostbyte install which sets up the daemon, GNOME Shell extension, and systemd service.
Alternative methods
Direct download:
curl -fsSL https://github.com/VladislavTsytrikov/frostbyte/raw/main/frostbyte -o /tmp/frostbyte
python3 /tmp/frostbyte installFrom source:
git clone https://github.com/VladislavTsytrikov/frostbyte.git
cd frostbyte
python3 frostbyte installUninstall
frostbyte uninstall # keeps config
frostbyte uninstall --purge # removes everythingfrostbyte monitor| Key | Action |
|---|---|
Up Down |
Navigate processes |
Enter |
Freeze / Thaw selected |
e |
Exclude from auto-freezing |
f / t |
Quick-search freeze / thaw by name |
Tab |
Switch tab: Frozen / Candidates / Exclusions |
L |
Toggle language (EN / RU) |
q |
Quit |
flowchart LR
subgraph daemon [" Daemon (Python)"]
direction TB
scan["Scan /proc\ntrack CPU time"]
freeze["SIGSTOP\nidle app"]
thaw["SIGCONT\nwake app"]
end
subgraph ext [" GNOME Extension (JS)"]
focus["Window\nfocused"]
end
scan -- "idle > N min\nRSS > threshold" --> freeze
focus -- "$XDG_RUNTIME_DIR/frostbyte-focus" --> thaw
style daemon fill:#1a1a2e,stroke:#00b4d8,color:#e0e0e0
style ext fill:#1a1a2e,stroke:#7c3aed,color:#e0e0e0
style scan fill:#0d1b2a,stroke:#00b4d8,color:#e0e0e0
style freeze fill:#0d1b2a,stroke:#e63946,color:#e0e0e0
style thaw fill:#0d1b2a,stroke:#2ec4b6,color:#e0e0e0
style focus fill:#0d1b2a,stroke:#7c3aed,color:#e0e0e0
What's in the box:
frostbyte (single Python file)
βββ daemon β polls /proc, sends SIGSTOP / SIGCONT
βββ TUI monitor β curses dashboard with 3 tabs
βββ GNOME ext β embedded JS, tracks focused window PID
βββ installer β writes extension + systemd service from embedded resources
Important
Self-coupling β the daemon auto-enables the extension on startup. The extension auto-starts the daemon via systemd if not running. They can't get out of sync.
Freeze / thaw in detail
Freeze cycle: the daemon polls /proc every second, tracking CPU time per process. If a process with RSS above the threshold shows no CPU activity for N minutes, it gets SIGSTOP. The kernel reclaims the physical memory pages.
Thaw cycle: the GNOME Shell extension writes the focused window's PID to $XDG_RUNTIME_DIR/frostbyte-focus. The daemon reads this file, finds the frozen ancestor and stopped descendants (for TUI apps inside terminals), and sends SIGCONT.
Process tree awareness: when you focus a terminal, FrostByte thaws both the terminal itself (ancestor search) and any stopped child processes like vim, htop, or mc inside it (descendant search).
~/.config/frostbyte/config.json
| Option | Default | Description |
|---|---|---|
freeze_after_minutes |
10 |
Idle time before auto-freeze |
min_rss_mb |
100 |
Minimum RSS (MB) to consider freezing |
poll_interval |
1 |
Seconds between CPU polls |
scan_interval |
30 |
Seconds between full /proc scans |
max_freeze_hours |
4 |
Auto-thaw after this many hours |
notifications |
true |
Desktop notifications on freeze / thaw |
whitelist |
[] |
Extra process names to never freeze |
rules |
[] |
Per-app rules (see below) |
Note
FrostByte ships with a built-in whitelist (gnome-shell, pipewire, terminals, systemd, etc.). Your whitelist entries are merged on top β you only need to add app-specific names.
Per-app rules
Rules let you set custom freeze thresholds for specific apps using regex patterns:
"rules": [
{ "pattern": "firefox", "freeze_after_minutes": 30 }, // give Firefox more time
{ "pattern": "code", "min_rss_mb": 200 }, // only freeze VS Code above 200 MB
{ "pattern": "slack|discord", "freeze_after_minutes": 5 } // freeze chat apps faster
]Each rule supports pattern (regex, case-insensitive), freeze_after_minutes, and min_rss_mb. The first matching rule wins. Unset fields fall back to global defaults.
Audio protection
FrostByte automatically detects apps playing audio via PulseAudio / PipeWire and skips freezing them. No configuration needed β if Spotify is playing music, it won't be frozen even if idle.
frostbyte run start daemon (foreground)
frostbyte monitor live TUI dashboard
frostbyte status show frozen & candidate processes
frostbyte freeze <name> manually freeze by name
frostbyte thaw [name] thaw by name (or all)
frostbyte install install everything
frostbyte uninstall remove everything
| FrostByte | Nyrna | XSuspender | |
|---|---|---|---|
| Wayland | yes | no | no |
| GNOME 45β48 | yes | yes | yes |
| Auto-freeze (RAM-aware) | yes | no | no |
| Instant thaw on focus | yes | no | yes |
| Child process thawing | yes | no | no |
| Audio-aware (skip playing) | yes | no | no |
| Per-app rules (regex) | yes | no | no |
| Config hot reload | yes | no | no |
| Desktop notifications | yes | no | no |
| Zero dependencies | yes | no | yes |
| TUI dashboard | yes | no | no |
| Single file install | yes | no | no |
MIT License β’ Made for Linux desktops that deserve better memory management

{ "freeze_after_minutes": 10, // idle time before auto-freeze "min_rss_mb": 100, // minimum RSS to consider "scan_interval": 30, // seconds between /proc scans "notifications": true, // desktop notifications on freeze/thaw "whitelist": ["chrome"], // your additions "rules": [ // per-app overrides (regex) { "pattern": "firefox", "freeze_after_minutes": 30 }, { "pattern": "code", "min_rss_mb": 200 } ] }