v1.0.0
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 criticalinitramfsrebuild phase, preventing accidental system bricks. - 🚀 Zero Dependencies (No Python needed): Distributed as a single, statically linked binary. It completely bypasses Python's
PEP668restrictions, eliminating allpip installheadaches on modern Debian/Ubuntu systems. - 🧠 Stateless Architecture: The old
cache.jsontracking 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, and386.
⚠️ 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
xrandrrouting scripts manually if needed (see README). - No Automatic X11 Hacks: Features like
ForceCompositionPipeline(for tearing) andCoolbits(for overclocking) are no longer automatically written. --use-nvidia-currentis gone: Replaced by a more flexible environment variable. UseNV_MODULE="nvidia-current" envycontrol -s nvidiainstead.
⬇️ 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/envycontrolNote 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! ❤️