# pylint: disable=C0111,R0903 """Displays and changes the current selected prime video card Left click will call 'sudo prime-select nvidia' Right click will call 'sudo prime-select nvidia' Running these commands without a password requires editing your sudoers file (always use visudo, it's very easy to make a mistake and get locked out of your computer!) sudo visudo -f /etc/sudoers.d/prime Then put a line like this in there: user ALL=(ALL) NOPASSWD: /usr/bin/prime-select If you can't figure out the sudoers thing, then don't worry, it's still really useful. Parameters: * prime.nvidiastring: String to use when nvidia is selected (defaults to "intel") * prime.intelstring: String to use when intel is selected (defaults to "intel") Requires the following executable: * prime-select """ import bumblebee.util import bumblebee.input import bumblebee.output import bumblebee.engine class Module(bumblebee.engine.Module): def __init__(self, engine, config): super(Module, self).__init__(engine, config, bumblebee.output.Widget(full_text=self.query) ) engine.input.register_callback(self, button=bumblebee.input.LEFT_MOUSE, cmd=self._chooseNvidia) engine.input.register_callback(self, button=bumblebee.input.RIGHT_MOUSE, cmd=self._chooseIntel) self.nvidiastring = self.parameter("nvidiastring", "nv") self.intelstring = self.parameter("intelstring", "it") def _chooseNvidia(self, event): bumblebee.util.execute("sudo prime-select nvidia") def _chooseIntel(self, event): bumblebee.util.execute("sudo prime-select intel") def _prev_keymap(self, event): self._set_keymap(-1) def query(self, widget): try: res = bumblebee.util.execute("prime-select query") except RuntimeError: return "n/a" for line in res.split("\n"): if not line: continue if "nvidia" in line: return self.nvidiastring if "intel" in line: return self.intelstring return "n/a" # vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4