Skip to content

v1.0.0

Choose a tag to compare

@github-actions github-actions released this 23 May 09:54

Welcome to the first official release of EnvyControl (Go Edition)! 🎉

This release marks a massive milestone. EnvyControl has been entirely rewritten in Go from the ground up, evolving from a simple Python script into a robust, enterprise-grade system daemon.

While preserving the core goal of the original tool—making Nvidia Optimus management effortless on Linux—this rewrite aggressively adopts the Unix philosophy: "Do one thing and do it well."

🌟 What's New & Key Highlights

  • 🛡️ Fail-Safe Atomic Transactions: Say goodbye to broken boot states. File modifications are now strictly atomic. If the program fails halfway (e.g., out of disk space), an emergency rollback is automatically triggered to restore your previous working state.
  • 🧱 Anti-Brick Signal Shielding: The tool actively traps and blocks interruption signals (like Ctrl+C) during the critical initramfs rebuild phase, preventing accidental system bricks.
  • 🚀 Zero Dependencies (No Python needed): Distributed as a single, statically linked binary. It completely bypasses Python's PEP668 restrictions, eliminating all pip install headaches on modern Debian/Ubuntu systems.
  • 🧠 Stateless Architecture: The old cache.json tracking mechanism has been removed. The tool now accurately probes your hardware state (PCI Bus IDs, iGPU vendor) in real-time directly from the Linux Kernel SysFS (/sys/bus/pci/).
  • 🔧 Multi-Architecture Support: Native binaries are now provided for amd64, arm64, and 386.

⚠️ Breaking Changes (Important for Legacy Users)

To keep the tool fast, secure, and maintainable in the Wayland era, we have removed all UI-layer interventions:

  • No Automatic Display Manager Configurations: The tool no longer modifies SDDM, LightDM, or GDM configs. You must add the xrandr routing scripts manually if needed (see README).
  • No Automatic X11 Hacks: Features like ForceCompositionPipeline (for tearing) and Coolbits (for overclocking) are no longer automatically written.
  • --use-nvidia-current is gone: Replaced by a more flexible environment variable. Use NV_MODULE="nvidia-current" envycontrol -s nvidia instead.

⬇️ Installation

Download the correct binary for your architecture from the Assets section below, make it executable, and move it to your path:

# Example for standard 64-bit Linux (Intel/AMD)
chmod +x envycontrol-linux-amd64
sudo mv envycontrol-linux-amd64 /usr/local/bin/envycontrol

Note on Uninstallation: Do not just delete the binary manually! Always run sudo envycontrol --reset first to safely revert system configs and rebuild your initramfs.


A massive thank you to Victor (bayasdev) for the original EnvyControl project. This rewrite wouldn't exist without his incredible foundation and research! ❤️