web-dev-qa-db-fra.com

Exécuter le script de luminosité de la touche fn sur Macbook pro 11, 5

Ordinateur portable: MacbookPro 11,5 avec AMD gpu

OS: Lubuntu 17.04

J'ai suivi les instructions sur https://wiki.archlinux.org/index.php/MacBookPro11,x et cela a fonctionné.

  1. désactivez le changement automatique de gpu dans MacOS X (vous ne savez pas si cela vous a aidé).
  2. télécharger et compiler https://github.com/problame/gmux_backlight
  3. Sudo setpci -v -H1 -s 00:01.00 BRIDGE_CONTROL=0
  4. Sudo gmux_backlight 120
  5. peut ajuster la luminosité avec le script.

Le problème est que

  1. Doit utiliser Sudo à chaque fois
  2. La touche F1/F2 ne modifie pas la luminosité.

Comment régler ceci?


Mise à jour (après la réponse de terdon )

Déplacé le gmux_backlight compilé vers /usr/sbin/

Utilisez Sudo visudo pour permettre à chaque utilisateur d'exécuter gmux_backlight avec Sudo et sans entrer de mot de passe.

<username1> ALL=NOPASSWD:/usr/sbin/gmux_backlight
<username2> ALL=NOPASSWD:/usr/sbin/gmux_backlight
<username3> ALL=NOPASSWD:/usr/sbin/gmux_backlight

Créez /etc/init.d/gmux_backlight_fix et Sudo chmod +x le script.

#!/bin/bash -e
setpci -v -H1 -s 00:01.00 BRIDGE_CONTROL=0 >/dev/null

Créez un lien symbolique vers le script pour exécuter le niveau 2 (le niveau d'exécution grpahical pour Ubuntu) avec la priorité la plus basse (99) en suivant Comment exécuter un script au démarrage en tant qu'utilisateur root .

Sudo ln -s /etc/init.d/gmux_backlight_fix /etc/rc2.d/S99gmux_backlight_fix

Ajouté à la section de ~/.config/openbox/lubuntu-rc.xml pour chaque utilisateur.

<keyboard>
  <chainQuitKey>C-g</chainQuitKey>

  <!-- My Keys -->
  <keybind key="XF86LaunchA">
    <action name="Execute">
      <command>Sudo gmux_backlight -10</command>
    </action>
  </keybind>
  <keybind key="XF86LaunchB">
    <action name="Execute">
      <command>Sudo gmux_backlight +10</command>
    </action>
  </keybind>

J'utilise Fn-F3 et Fn-F4 car Lubuntu ne peut pas détecter automatiquement Fn-F1 et Fn-F2 sur l'ordinateur portable.

Au départ, j’ai écrit un script bash qui prend des arguments et autorise chaque utilisateur à l’exécuter avec Sudo. Un peu plus tard, je crains que les gens ne puissent briser le script bash et exécuter n'importe quelle commande avec le privilège Sudo. J'utilise donc le binaire compilé à la place de mon script bash.

L'ancien script bash est /usr/sbin/gmux_capped_backlight:

#!/bin/bash -e

# setpci
setpci -v -H1 -s 00:01.00 BRIDGE_CONTROL=0 >/dev/null

# Get current brightness
CB="$( cat /sys/class/backlight/gmux_backlight/brightness )"

# Split characters of argument
arg=$1
first_char=${arg:0:1}
other_char=${arg:1}

# Desired Brightness
if [ $first_char == "+" ]; then 
    Brightness=$(expr $CB + $other_char)
Elif [ $first_char == "-" ]; then
    Brightness=$(expr $CB - $other_char)
else
    Brightness=$arg
fi

# Limit the range of brightness #
Max=1024
Min=0

if [ $Brightness -gt $Max ]; then
    Brightness=$Max
fi
if [ $Brightness -lt $Min ]; then
    Brightness=$Min
fi
2
hamster on wheels

Puisque vous dites que vous pouvez déjà ajuster ceci en utilisant un script, il semble que vous y soyez presque déjà. Vous avez juste besoin de:

  1. Configurez Sudo pour permettre à votre utilisateur d’exécuter ce script particulier sans mot de passe. Commencez par ouvrir un terminal et lancez Sudo visudo. Cela fera apparaître une fenêtre de votre éditeur par défaut. Ajoutez cette ligne au fichier:

    terdon  ALL=NOPASSWD:/path/to/your/script
    

    Évidemment, remplacez terdon par votre nom d'utilisateur et remplacez /path/to/your/script par le chemin d'accès à votre script. Cela vous facilitera la vie si vous pouvez vous assurer que ce chemin ne contient aucun espace. Maintenant, enregistrez le fichier et fermez-le.

  2. Vous pouvez maintenant exécuter le script sans avoir à saisir le mot de passe root. Il vous suffit donc d'affecter les commandes permettant d'augmenter et de réduire la luminosité des touches F1/F2. Je n'utilise pas LXDE, mais j'ai trouvé un fil de discussion ici qui suggère que vous pouvez le faire en éditant ~/.config/openbox/lxde-rc.xml et en ajoutant quelque chose comme ceci:

    <keybind key="F2">
      <action name="Execute">
        <command>/path/to/your/script increaseBrightness</command>
      </action>
    </keybind>
    <keybind key="F1">
      <action name="Execute">
        <command>/path/to/your/script decreaseBrightness</command>
      </action>
    </keybind>
    

    Dans les deux cas, utilisez le paramètre requis par votre script pour augmenter/diminuer la luminosité.

    Vous pouvez également le faire en installant xbindkeys:

    Sudo apt-get install xbindkeys
    

    Créez le fichier de paramètres par défaut:

    xbindkeys --defaults > `~/.xbindkeysrc`
    

    Obtenez les bons codes pour vos clés. Ce sera probablement quelque chose comme F1. Ensuite, éditez ~/.xbindkeysrc et ajoutez-les:

    "/path/to/your/script increaseBrightness"
    F2
    
    "/path/to/your/script decreaseBrightness"
    F1
    

    Enfin, lancez xbindkeys et vos raccourcis devraient fonctionner. Ajoutez-le à votre liste de programmes de démarrage pour qu'il soit toujours exécuté lorsque vous vous connectez.

2
terdon