Я думал, что такая функциональность поставляется с самой X11, но оказалось, что она поставляется с xbindkeys
, которая является связанной с X11 -программой, которая находится в категории разное .
Чтобы мультимедийные клавиши (громкость, яркость )работали, создайте~/.xbindkeysrc . Чтобы получить полезную информацию (содержимое файла по умолчанию )о том, как составлен файл, вызовитеxbindkeys -d
# ~/.xbindkeysrc
#-----VOLUME-----#
#
# Decrease volume
"pactl set-sink-volume @DEFAULT_SINK@ -1000"
XF86AudioLowerVolume
# Increase volume
"pactl set-sink-volume @DEFAULT_SINK@ +1000"
XF86AudioRaiseVolume
# Mute volume
"pactl set-sink-mute @DEFAULT_SINK@ toggle"
XF86AudioMute
#----BACKLIGHT----#
#
# Increase backlight
"xbacklight -inc 10"
XF86MonBrightnessUp
# Decrease backlight
"xbacklight -dec 10"
XF86MonBrightnessDown
И добавить xbindkeys
в автозапуск. Я добавил его в~/.xinitrc
Такие клавиши, как Воспроизвести, Далее , обрабатываются мультимедийным проигрывателем.
Поскольку это похоже на задание, я дам вам только инструменты и несколько советов:
Если скрипту не был передан аргумент, то$1
(первый аргумент скрипта )будет пустым. Вы можете проверить это с помощью [[ -z $1 ]]
. Если вы хотите отобразить ошибку для слишком много аргументов, проверьте, что количество аргументов с[[ $# -eq 1 ]]
(будет истинным для одного аргумента ).
Команда gentent passwd "$username"
может использоваться для получения записи passwd
для пользователя $username
. Команда завершится ошибкой с нулевым статусом выхода, отличным от -, если пользователь не существует. Это означает, что вы можете использовать if ! getent passwd "$username" >/dev/null; then...; fi
для реагирования на несуществующего -пользователя $username
.
5-е поле записи passwd
для пользователя обычно содержит полное имя пользователя (нет никакой гарантии, что оно будет в форме «имя фамилия» ). В конце записи могут быть лишние запятые, которые необходимо удалить. Вы можете проанализировать вывод getent passwd "$username"
, используя cut -d: -f 5
, чтобы получить пятое поле, а затем удалить первую запятую с помощью name=${name%%,*}
.
В некоторых системах полное имя пользователя может содержать символ &
. В этих системах этот символ &
следует заменить именем пользователя (, чтобы имя System &
для пользователя operator
сталоSystem operator
). Я не уверен, что Linux обычно делает это, но это можно сделать с помощью name=${name/&/$username}
.
Утилита who
выводит список пользователей, которые в данный момент вошли в систему. Чтобы сопоставить $username
с этим, используйте grep -e "^$username\>"
.\>
соответствует концу слова, так что, например. antony
не соответствует при поиске или anton
. grep -q
полезен в операторе if
.
Это соответствует структуре кода:
if
. if
. if
, возможно, с ветвью else
. Я не вижу цикла в этом скрипте, так что это будет рядif
-операторов и присвоений переменных.