DevElCuy/SnapSession

⚡ Blazing fast, hardware-accelerated browser profile and session launcher for Linux desktops (Chromium & Firefox)

★ 0Forks 0PythonGitHub ↗Compare

README

SnapSession Logo

SnapSession

Snappy, hardware-accelerated browser profile and session selector for Linux desktops.

License: MIT Python 3.8+ PyQt5 Platform


⚡ Overview

SnapSession is a lightweight, responsive browser profile and session launcher crafted for Linux desktops (KDE Plasma, GNOME, XFCE, etc.). It enables instant switching between profiles across Chromium and Firefox / Gecko browsers while optimizing launch performance directly in memory.


🌐 Supported Browsers

Chromium Engine

  • Brave Browser
  • Thorium Browser
  • Google Chrome
  • Chromium
  • Vivaldi
  • Microsoft Edge
  • Opera

Firefox / Gecko Engine

  • Mozilla Firefox
  • Firefox Developer Edition
  • LibreWolf
  • Floorp
  • Waterfox
  • Zen Browser

✨ Features

  • 🚀 Dual-Engine Launch Acceleration:
    • Chromium: Direct GPU rasterization, zero-copy buffers, Ozone X11 pipeline, and KDE Wallet lag bypass.
    • Firefox / Gecko: Hardware WebRender pipeline (MOZ_WEBRENDER=1), high-precision XInput2 touch/scrolling (MOZ_USE_XINPUT2=1), and independent concurrent instances (--no-remote).
  • 👁️ True-Paint Window Detection: Replaces fragile fixed timeouts with real-time X11 render detection. The launcher smoothly remains visible while heavy tab sessions restore, dismissing the exact millisecond the web frame paints.
  • 📌 Pin to Top: Pin your most frequent profiles directly to the top-left of the grid.
  • 🎨 16 Web-Safe Color Palettes: Profiles receive a permanent, deterministic gradient based on CRC32 hashing. Custom colors can be chosen using the built-in color picker wheel.
  • 🔍 Instant Search Filter: Quickly filter across dozens of profiles with live search (Enter to launch top match).
  • ⚙️ In-App Settings: Toggle individual optimization parameters on the fly (F2 or gear icon).
  • 🖥️ Responsive Zero-Scroll Layout: Automatically adapts to your display resolution (from 3 to 6 columns) to display all profiles cleanly without unnecessary scrolling.

📋 Requirements

  • Python: 3.8+
  • PyQt5: python3-pyqt5 (or pip install PyQt5 / uv add PyQt5)
  • X11 Utilities: x11-utils (provides xwininfo and xprop)

Ubuntu / Debian:

sudo apt update
sudo apt install python3-pyqt5 x11-utils

Arch Linux:

sudo pacman -S python-pyqt5 xorg-xwininfo xorg-xprop

Fedora:

sudo dnf install python3-qt5 xwininfo xprop

🚀 Installation & Running

Using uv (Recommended):

git clone https://github.com/develcuy/snapsession.git
cd snapsession
uv run snapsession.py

Using standard Python:

git clone https://github.com/develcuy/snapsession.git
cd snapsession
pip install -r requirements.txt
python3 snapsession.py

Install Desktop Launcher:

mkdir -p ~/.local/share/applications ~/.local/share/icons/hicolor/scalable/apps
cp snapsession.svg ~/.local/share/icons/hicolor/scalable/apps/snapsession.svg
cp snapsession.desktop ~/.local/share/applications/
update-desktop-database ~/.local/share/applications/

⌨️ Keyboard Shortcuts

Key Action
Enter Launch highlighted or top-matching profile
F2 Open Acceleration & Settings dialog
Esc Close SnapSession
Tab / Arrows Navigate profile grid

🛠️ Configuration

Settings, custom colors, and pinned profiles are stored locally at:

~/.config/snapsession_config.json

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.


👤 Author

Fernando Paredes García

Contributors

DevElCuy

Issues