Я плохо знаком с Linux, поэтому терпите меня. Я запускаю Ubuntu 16.04 на ноутбуке Vaio Sony, который показывает подсветку клавиатуры. Я могу ввести эту команду в терминал, поместив "0" вместо *value*
выключить подсветку, и "2" для включения его.
sudo su -c "echo *value* > /sys/devices/platform/sony-laptop/kbd_backlight"
Когда я перешел к приложению настроек, чтобы создать пользовательское сочетание клавиш и связать его с простой ctrl привязкой клавиш, оно не работает. Любая справка была бы очень ценивший.
У Вас есть три опции. Выберите того из них, которых Вы любите лучше всего:
Установите gksu
пакет, если не сделанный уже и использование gksudo
получить диалоговое всплывающее окно ввода пароля GUI вместо того, чтобы быть спрошенным относительно терминальной консоли как sudo
делает (который не присутствует, когда Вы выполняете его как сочетание клавиш, и поэтому не работает).
sudo apt install gksu
Команда, которую необходимо связать с ярлыком, была бы этим:
gksudo -- bash -c 'echo VALUE > /sys/devices/platform/sony-laptop/kbd_backlight'
Использовать pkexec
вместо sudo
. Это работает подобное gksudo
и должен быть предварительно установлен, но это только работает на терминальные команды, если Вы хотели запустить приложение GUI как корень с ним, этому была нужна специальная конфигурация. Но для Вашей команды это было бы достаточно.
Команда, которую необходимо связать с ярлыком, была бы этим:
pkexec bash -c 'echo VALUE > /sys/devices/platform/sony-laptop/kbd_backlight'
Запишите короткий сценарий, чтобы изменить яркость и затем настроить sudo
NOPASSWD
опция так, чтобы можно было выполнить его как корень, не попросившись пароля.
Актуальный вопрос: Как я выполняю определенные команды sudo без пароля?
Вот то, что необходимо сделать в конкретном случае:
Запишите файл сценария, который содержит все команды, необходимые для достижения того, что Вы хотите, который будет затем выполнен как корень:
#!/bin/bash
if test "$(id -u)" -ne 0 ; then
sudo "$0" "$1"
exit $?
fi
if test "$1" -gt 0 ; then
echo "$1" > /sys/devices/platform/sony-laptop/kbd_backlight
else
echo "Invalid argument $1"
exit 1
fi
Сценарий выше взятий целое число, больше, чем нуль как параметр командной строки и записи, это к подсветке управляет файлом после выполнения основной проверки работоспособности. Вы могли также изменить проверку, чтобы только позволить значения 0
и 2
если Вы хотите, но я оставлю это до Вас.
Кроме того, это проверяет как, какого пользователя это выполняет и пытается поднять свои полномочия базироваться путем выполнения себя с sudo
при необходимости. Это означает, что можно даже опустить sudo
при выполнении его.
Сохраните этот сценарий как /usr/local/bin/set-kbd-backlight
(можно выбрать другое имя файла, но каталог должен остаться таким же; обратите внимание, что запись в это местоположение требует sudo
)
Удостоверьтесь, что Ваш файл сценария имеет корректное владение и настройки разрешения. Вы собираетесь быть способными запустить этот скрипт как корень без пароля, таким образом, мы должны удостовериться, что он может быть выполнен всеми, но не отредактирован некорневыми пользователями!
sudo chown root:root /usr/local/bin/set-kbd-backlight
sudo chmod 755 /usr/local/bin/set-kbd-backlight
Теперь можно настроить sudo
позволить запускать этот скрипт как корень без пароля:
Отредактируйте Ваш sudo
конфигурационный файл /etc/sudoers
путем выполнения команды ниже (не любой другой путь!):
sudo visudo
Теперь добавьте следующую строку прямо перед строкой, содержащей includedir /etc/sudoers.d
около конца файла, заменяя USERNAME
с корректным именем пользователя, которое Вы предоставите выполнению без пароля как корню:
USERNAME ALL=(root) NOPASSWD: /usr/local/bin/set-kbd-backlight
Выйдите visudo
редактор путем нажатия Ctrl+X, затем Y (или независимо от того, что ключ представляет "Да" в локали) и затем Входит.
Проверьте, что это работает первым выполнением sudo -k
для отмены кэшируемого пароля на всякий случай Вы ввели его в течение прошлых 15 минут на текущей сессии оболочки. Это не нужно, чтобы сценарий работал, он должен только протестировать, настроили ли Вы NOPASSWD
правильно.
Затем выполните команды ниже для включения и выключения подсветки, без sudo
. Вас нельзя требовать на Ваш пароль.
set-kbd-backlight 0
set-kbd-backlight 2
Свяжите команды (set-kbd-backlight 0
выключить свет, set-kbd-backlight 2
включить его) к соответствующим сочетаниям клавиш.