Skip to content

Repository files navigation

cardwire

A GPU manager for Linux for laptops and multi-GPU desktops, using eBPF LSM hooks.

Packaging status

GitHub License

Cardwire GUI screenshot

Creator and main maintainer: @luytan

Important

This project is in early development. Expect bugs and breakage.

Wayland only, X11 is not supported.

Benefits

  • Instant App Startup: Prevents applications (like Electron apps or GTK apps) from attempting to initialize the GPU, this eliminates the 3–4 second "hang" typically caused by waiting for a sleeping GPU to power up
  • Power Efficiency: By blocking access at the syscall level, the GPU is never woken from its lowest power state (D3cold), extending battery life on laptops
  • Non-Invasive: Unlike traditional methods that might require driver unloading, risky unbind or complex Wayland setups, this approach is transparent to the rest of the system and easy to toggle
  • Application Forcing: Launch any app on the GPU you choose with cardwire launch <APP>
  • Application Policy (Smart Mode) Keep the dGPU blocked by default, and gran access only to the ones you allow

Getting Started

Head to the docs to see how to install and use Cardwire on your system

Modes

Modes are available depending on your system type: Laptop:

  • Integrated
  • Hybrid
  • Smart

Desktop

  • Hybrid(kept as a default mode, everything goes back to unblocked)
  • Manual

How it works

Cardwire uses eBPF with LSM hooks to intercept file operations on GPU device nodes, such as /dev/dri/renderDX, /dev/dri/cardX, sysfs config, nvidiaX and other GPU-related files.

When a GPU is "blocked," the eBPF program returns -ENOENT for any syscall targeting that device, effectively hiding it from apps.

Community projects:

for issues related to these projects, please report to their respective repo

GNOME extension (by Moxuz): https://extensions.gnome.org/extension/9919/cardwire-gpu-toggle/

KDE Plasmoid: https://github.com/Neo-AzTeK/cardwire-plasmoid

Discord

Need help or have a question about Cardwire? Join us on the OGC Discord: https://discord.gg/4K2pZ6abQm

Credits

  • Huge thanks to the asus-linux community for their guidance and for suggesting the eBPF approach.

License

This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.

About

A GPU Manager for linux that uses eBPF LSM hooks to block GPUs

Topics

Resources

Contributing

Stars

160 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages