Заставьте fn ключ запустить скрипт яркости на Macbook pro 11, 5

Ноутбук: MacbookPro 11,5 с AMD gpu

ОС: Lubuntu 17.04

Я следовал инструкциям в https://wiki.archlinux.org/index.php/MacBookPro11, x, и это работало.

  1. отключите автоматический gpu, переключающийся в MacOS X (не уверенный, если это помогло).
  2. загрузите и скомпилируйте https://github.com/problame/gmux_backlight
  3. sudo setpci -v -H1 -s 00:01.00 BRIDGE_CONTROL=0
  4. sudo gmux_backlight 120
  5. может скорректировать яркость со сценарием.

Проблема - это

  1. Должны использовать sudo каждый раз
  2. Ключ F1/F2 не изменяет яркость.

Как зафиксировать это?


Обновление (после ответа terdon)

Перемещенный скомпилированный gmux_backlight кому: /usr/sbin/

Б/У sudo visudo позволять каждому выполненному пользователю gmux_backlight с sudo и не вводя пароль.

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

Создать /etc/init.d/gmux_backlight_fix и sudo chmod +x сценарий.

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

Символьная ссылка сценарий к уровню выполнения 2 (графический уровень выполнения для Ubuntu) с самым низким приоритетом (99) следующим, Как запустить скрипт во время начальной загрузки как корень.

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

Добавленный к разделу ~/.config/openbox/lubuntu-rc.xml для каждого пользователя.

<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>

Я использую Fn-F3 и Fn-F4, потому что Lubuntu не может автоматически обнаружить Fn-F1 и Fn-F2 на ноутбуке.

Первоначально я записал сценарий удара, который берет аргумент, и предоставьте, что каждый пользователь выполняет его с sudo. Некоторое время позже я волнуюсь, что люди могут повредить сценарий удара и выполнить любую команду с sudo полномочием. Таким образом, я использую скомпилированный двоичный файл вместо своего сценария удара.

Старый сценарий удара /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
задан 16 November 2017 в 14:24

1 ответ

Так как Вы говорите, что можно уже скорректировать это использование сценария, похоже, что Вы уже почти там. Вы просто должны:

  1. Настроить sudo позволить выполнять тот конкретный сценарий Вашего пользователя без пароля. Во-первых, откройте терминал и работайте sudo visudo. Это поднимет окно Вашего редактора по умолчанию. Добавьте эту строку к файлу:

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

    Очевидно, изменение terdon к Вашему имени пользователя и изменению /path/to/your/script к чему путь к Вашему сценарию. Это сделает Вашу жизнь легче, если можно удостовериться, что путь не имеет никаких пробелов. Теперь, сохраните файл и закройте его.

  2. Можно теперь запустить скрипт, не будучи должен ввести пароль корня, таким образом, все, что необходимо сделать, присваивают команды, чтобы повысить и понизить яркость к ключам F1/F2. Я не использую LXDE, но я нашел поток форума здесь, который предполагает, что можно сделать это путем редактирования ~/.config/openbox/lxde-rc.xml и добавление чего-то вроде этого:

    <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>
    

    Для обоих случаев используйте любой параметр, который Ваш сценарий взял бы для повышения/понижения яркости.

    С другой стороны, можно также сделать это путем установки xbindkeys:

    sudo apt-get install xbindkeys
    

    Создайте файл настроек по умолчанию:

    xbindkeys --defaults > `~/.xbindkeysrc`
    

    Получите правильные коды клавиши для своих ключей. Это, вероятно, будет что-то как F1. Затем редактирование ~/.xbindkeysrc и добавьте их:

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

    Наконец, выполненный xbindkeys и Ваши ярлыки должны работать. Добавьте его к своему списку программ запуска, таким образом, это всегда выполняется, когда Вы входите в систему.

2
ответ дан 2 December 2019 в 03:37

Другие вопросы по тегам:

Похожие вопросы: