1
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

updated at

Linuxでの画面輝度調整のスクリプト

はじめに

この記事は学生アドベントカレンダー2017の記事です。

上記のアドベントカレンダーを作った張本人であるのにもかかわらず、記事の投稿が遅れてしまい申し訳ありません。
ブログは遅れましたが、引っ越しの片付けは進みました。

作業する場所づくり

まず、PATHが通っているかを確認します。
echo $PATH
で確認できます。
すでに通っているPATH以外を追加したい場合は
export $PATH:追加したいディレクトリの絶対PATH
export $PATH:/usr/local/bin
みたいな感じでできます。

輝度の変更

輝度の変更は

sudo echo 80 > /sys/class/backlight/intel_backlight/brightness

でできます。
また、どのくらいまで輝度をあげられるのかは。

cat /sys/class/backlight/intel_backlight/max_brightness

で見れます。一応最大輝度超えないように気をつけてください。
これでターミナルから輝度調整できますね。

ショートカットキーに割り当てる

ショートカットキーに割り当てて、輝度を調整するためには押した回数だけ輝度が変化する必要があります。
なので上記のように絶対的な数値を入力するのではなく、現在の値からどれだけ変化するかの値を入力する必要があります。

僕が今使ってるxfce4だと、ショートカットキーに割り当てたコマンドに引数渡せないけど、オプションなら行けるっぽいので、わざわざオプションつけてあげました。

#!/bin/bash
#画面輝度調整する奴

readonly BRIGHT_PATH='/sys/class/backlight/intel_backlight/brightness'
readonly MAX_BRIGHT_PATH='/sys/class/backlight/intel_backlight/max_brightness'
readonly MAX_BRIGHTNESS=$(( $(cat $MAX_BRIGHT_PATH) - 10 ))
readonly MIN_BRIGHTNESS=10


usage() {
  echo '頑張って'
  exit 0
}


check_uplim() {
  if [ $1 -ge $MAX_BRIGHTNESS  ]; then
    echo brightness is max now
    exit 1
  fi
  return 0
}

check_lolim() {
  if [ $1 -le $MIN_BRIGHTNESS ]; then
    echo brithness is min now
    exit 1
  fi
  return 0
}


brightness=$(cat $BRIGHT_PATH)

while getopts :udm OPT
do
  case $OPT in
    u) OPTION_u=True;;
    d) OPTION_d=True;;
    m) echo max brightness is $(cat $MAX_BRIGHT_PATH);;
    \?) usage;;
  esac
done

if [ "$OPTION_u" = "True" ]; then
  check_uplim $brightness
  brightness=$(( brightness += 10 ))
  echo $brightness > $BRIGHT_PATH
  echo brightness is $(cat $BRIGHT_PATH) now
  exit 0
fi

if [ "$OPTION_d" = "True" ]; then
  check_lolim $brightness
  brightness=$(( brightness -= 10 ))
  echo $brightness > $BRIGHT_PATH
  echo brightness is $(cat $BRIGHT_PATH) now
  exit 0
fi

これを先ほどのPATHが通ってるディレクトリに配置してください。
その後、sudo chmod 755 ~~~と権限付与をして、
sudo chmod 777 /sys/class/backlight/intel_backlight/brightness
こっちにも権限与えておきます。

これをキーボードショートカットキーに割り当てたら動いてくれました。やったね。

最後に

今回、bashを使ってスクリプト書いたの初めてだったので、新鮮で楽しかったです。なんか間違っているところや、普通こう書くよ。みたいなのがあれば教えてください。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
1
Help us understand the problem. What are the problem?