私のためにi3ウィンドウマネージャxbacklight
設定、これに似ていますが、キーボードLEDの明るさを制御するコマンドラインツールを探しています。
デフォルトでは、コマンドラインでLEDを設定できますが、ルートが必要です。
# Light off the leds
echo 0 > /sys/class/leds/smc::kbd_backlight/brightness
# Light on the leds (full power)
echo 100 > /sys/class/leds/smc::kbd_backlight/brightness
Gnome3がこれをサポートしているので、これが可能であることを知っていますが、正確にどのように進行するのかわかりません...
今私の~/.config/i3/config
外観は次のとおりです。
# screen brightness controls
bindsym XF86MonBrightnessUp exec xbacklight -inc 10
bindsym XF86MonBrightnessDown exec xbacklight -dec 10
# keyboard backlight controls
#TODO
# XF86KbdBrightnessUp
# XF86KbdBrightnessDown
xbacklight
もしそうなら、キーボードのバックライトを使って画面の明るさと同じことをするのと同じようなツールがありますか?ツールが2つ(画面とキーボード)を同時に制御できる場合は、より良いでしょう。
答え1
ジョージ・クラミダス台本を書いたこれは dbus と UPower に依存します。ほとんどのデスクトップディストリビューションにはdbusとUPowerがインストールされ、実行されます。
/sys/class/...
sudoを介してrootとして実行するか、SUIDを設定してスクリプトを作成する代わりにそれを使用することをお勧めします。これは悪いセキュリティ慣行です。
基本的な使い方はとても簡単です
kbdbacklight up
kbdbacklight down
kbdbacklight [ 0 | 1 | 2 | 3 ]
i3設定にこれを追加する
# increase/decrease keyboard brightness
bindsym XF86KbdBrightnessUp exec kbdbacklight up
bindsym XF86KbdBrightnessDown exec kbdbacklight down
スクリプト自体は非常に簡単です。
#!/bin/sh
# By Giorgos Keramidas
# backlight_get
# Print current keyboard brightness from UPower to stdout.
backlight_get()
{
dbus-send --type=method_call --print-reply=literal --system \
--dest='org.freedesktop.UPower' \
'/org/freedesktop/UPower/KbdBacklight' \
'org.freedesktop.UPower.KbdBacklight.GetBrightness' \
| awk '{print $2}'
}
# backlight_get_max
# Print the maximum keyboard brightness from UPower to stdout.
backlight_get_max()
{
dbus-send --type=method_call --print-reply=literal --system \
--dest='org.freedesktop.UPower' \
'/org/freedesktop/UPower/KbdBacklight' \
'org.freedesktop.UPower.KbdBacklight.GetMaxBrightness' \
| awk '{print $2}'
}
# backlight_set NUMBER
# Set the current backlight brighness to NUMBER, through UPower
backlight_set()
{
value="$1"
if test -z "${value}" ; then
echo "Invalid backlight value ${value}"
fi
dbus-send --type=method_call --print-reply=literal --system \
--dest='org.freedesktop.UPower' \
'/org/freedesktop/UPower/KbdBacklight' \
'org.freedesktop.UPower.KbdBacklight.SetBrightness' \
"int32:${value}}"
}
# backlight_change [ UP | DOWN | NUMBER ]
# Change the current backlight value upwards or downwards, or
# set it to a specific numeric value.
backlight_change()
{
change="$1"
if test -z "${change}" ; then
echo "Invalid backlight change ${change}." \
"Should be 'up' or 'down'." >&2
return 1
fi
case ${change} in
[1234567890]|[[1234567890][[1234567890])
current=$( backlight_get )
max=$( backlight_get_max )
value=$( expr ${change} + 0 )
if test ${value} -lt 0 || test ${value} -gt ${max} ; then
echo "Invalid backlight value ${value}." \
"Should be a number between 0 .. ${max}" >&2
return 1
else
backlight_set "${value}"
notify-send -t 800 "Keyboard brightness set to ${value}"
fi
;;
[uU][pP])
current=$( backlight_get )
max=$( backlight_get_max )
if test "${current}" -lt "${max}" ; then
value=$(( ${current} + 1 ))
backlight_set "${value}"
notify-send -t 800 "Keyboard brightness set to ${value}"
fi
;;
[dD][oO][wW][nN])
current=$( backlight_get )
if test "${current}" -gt 0 ; then
value=$(( ${current} - 1 ))
backlight_set "${value}"
notify-send -t 800 "Keyboard brightness set to ${value}"
fi
;;
*)
echo "Invalid backlight change ${change}." >&2
echo "Should be 'up' or 'down' or a number between" \
"1 .. $( backlight_get_max )" >&2
return 1
;;
esac
}
if test $# -eq 0 ; then
current_brightness=$( backlight_get )
notify-send -t 800 "Keyboard brightness is ${current_brightness}"
else
# Handle multiple backlight changes, e.g.:
# backlight.sh up up down down up
for change in "$@" ; do
backlight_change "${change}"
done
fi
ただどこかに保存しPATH
てお楽しみください。私はこの名前を使用し、kbdbacklight
上記の例とi3構成で使用しました。あなたの名前が異なる場合は、慎重に更新してください。
Giorgioのスクリプトも使用されているので、正しいパッケージがインストールされていることを確認するかnotify-send
(libnotify-bin
DebianとUbuntuで)、スクリプトからこの行をコメントアウトしてください。
答え2
使用light
:
bindsym XF86KbdBrightnessUp exec light -k -A 10
bindsym XF86KbdBrightnessDown exec light -k -U 10
現在、ArchとFedora用のパッケージバージョンがあります。ただし、ソースコードを使用すると、いつでも簡単にビルドできます。ここでgitリポジトリを探してください:https://github.com/haikarainen/light。
答え3
あなたは簡単に自分で書くことができます。
上記のパスのどこか(/usr/localが通常の場所)にエコーラインを含む2つのシェルスクリプトを作成します。 rootが所有する権限を755に設定します。次に、sudoersファイルを編集してrootとして実行することを許可するか、chmod +s
SUIDに設定します。
ただし、この種の作業はセキュリティ上のリスクと見なされます。権限が正しく設定されていることを確認してください。 root権限を持たない人はスクリプトを編集できず、スクリプトで入力を使用したくありません。
明るさレベルのフラグのサポートを追加するのは簡単ではありませんが、経験豊富なシェルスクリプトではなく、コードのバグがセキュリティホールになる可能性があるため、使用しないことをお勧めします。