Xubuntu でキーボードバックライトを調整する


はじめに

ASUS のノートパソコン G75VW に Xubuntu (13.10) をインストールしたところ、キーボードのバックライトが点きっぱなしになってしまいました。Windows が載っていたときは Fn + F3/F4 でバックライトが調整できたのですが、Xubuntu ではまったく機能しません。電源をつないだまま使用しているのでバッテリーの消費は気にしなくても良いのですが、やはり精神衛生上よくありません。それで色々と調べてみました。

対処方法は

すると、このサイトで、ASUS G74SX での対処法が紹介されていました。試してみると G75VW でもうまく動作しました。内容は以下の通りです。

/sys/devices/platform/asus-nb-wmi/leds/asus::kbd_backlight/brightness
というファイルを root 権限で開き、そこにある数値を 0 にすればバックライトオフ、3 にすればバックライト最大ということです。
(私の環境では 3 = 最大になっていました。)

スクリプトによる調整

また、Script for controlling the backlight in the ASUS G74SX にあるスクリプトを利用すると、簡単に一段階ずつ調整できます。使い方は以下の通り。

  1. スクリプトを適当なファイル名で保存する (例: kblight.sh)
  2. 実行権限を付与する
  3. 1段階暗くするには、
  4. 1段階明るくするには、

以上で、G75VW のキーボードバックライトを調整できるようになりました。恐らく ASUS の他のノートパソコンにも有効な方法だと思われます。他メーカーの場合は、/sys/devices/platform/ 以下を探して該当するファイルを見つければ対応できるかもしれません。

[参考]
Tim Hentenaar’s Blog

PySide での show メソッドと geometry の挙動


PySide を使って Linux/Windows で動作するアプリケーションを作成しています。最近、QMainWindow の “geometry” プロパティの挙動が Linux と Windows とでは異なるためにいろいろと戸惑ったので、実際に調べてみました。

はじめに

私がやりたかったのは、

メインウインドウを最大化、最小化、フルスクリーン化した後、ウインドウの現在のサイズをコード上で知る

という事です。QWidget.showMaximized/Minimized/FullScreen メソッドを実行することで、表示されるウインドウサイズを変化させる事はできます。(リファレンスでは、showFullScreen() は X Window ではうまく動かない可能性がある旨記述がありますが、私の利用範囲では今のところ不都合ありません。) しかし、以下で述べるように、コードから現在の表示サイズを知るのは、Windows ではうまくいきますが、Linux ではうまくいきませんでした。

調査方法

QMainWindow に対して、show, showMaximized, showMinimized, showFullScreen, showNormal, setGeometry の各メソッドを実行して、”geometry” プロパティがどのように変化するのか表示するプログラムを作成しました。
イベントループに入ってからメソッドを実行しないとウインドウが表示された状態の値を確認できないため、QTimer で 100msec の遅延を発生させてから実行しています。(ウインドウが表示されるため、実行時に多少画面がちらつきます。)

結果

1920×1080 のスクリーンサイズを持つ同一 PC (Windows をホスト、Linux をゲストとした VirtualBox 環境) にて、上記 checkShow.py を Windows7, Xubunutu13.04, Ubunutu13.04 で実行した結果を以下にあげます。各段階での “geometry” プロパティの値を一覧にしています。(実際の表示の冗長な部分は削って有ります。)
※QRect の値は、最初の2つのパラメータが位置(左上の座標)、次の2つが大きさ(横x縦)です。

Windows の場合

Xubuntu/Ubuntu の場合

Xubuntu と Ubuntu では結果は同じでした。

まとめ

上記の結果から、”geometry” プロパティに関して以下の事がわかりました。

  • Windows / Linux 共に、show() の実行前は、仮の値として (0, 0, 640, 480) が入っている(VGA サイズということかと思われます)。
  • show() を実行すると、両者ともサイズは 200×100 に変化する。ただし、表示位置は OS によって異なる。Linux では左上隅に、Windows ではやや右下にシフトした位置になる。
  • Windows では、showMaximized/FullScreen/Normal の実行後、”geometry” は実際に表示されたウインドウのサイズに設定されるが、Linux ではこれらのメソッドは “geometry” を変化させない。(表示そのものは、最大化/フルサイズ/通常化します。つまり、表示されている状態と “geometry” の値が一致しません。)
  • Windows でも (Linux も) showMinimized() は、”geometry” を変化させない。おそらく、ウインドウをただ見えなくしているだけという事だと思われる。
  • もちろん、setGeometry() は、Windows / Linux 共に “geometry” を変化させる。

この結果から、Windows であれば、実際にウインドウが表示されていれば現在のウインドウサイズを “geometry” プロパティから知ることができますが、Linux の場合には “geometry” と現在のウインドウサイズが一致していない可能性があることがわかります。Linux では、自前で大きさを計算して setGeometry() で設定しないと両者を一致させられないようです。

[関連サイト]
junf/checkshow

[関連記事]

[参考にしたサイト]

VirtualBox の仮想マシンに仮想ハードドライブを追加する


VirtualBox で仮想マシンを作成してしばらく使用した後に、ストレージを追加したくなることがあると思います。このような時は、仮想ハードドライブを新たに作成して追加することができます。ここでは、ホスト Windows7、ゲスト Ubuntu/Xubuntu12.10 の環境で、新たに仮想ハードドライブを作成してゲスト OS にマウントする方法について述べます。
大まかな手順は以下の通りです。

  1. 仮想ドライブの作成
  2. パーティションの設定
  3. マウントの設定

仮想ハードドライブを作成する

まず、ホスト OS (Windows) 上で VirtualBox を起動し、仮想マシンの設定 > ストレージ にて、コントローラー:SATA に新しい仮想ドライブを作成します。
01.add
02.new-disk
この後、追加するドライブのタイプや、容量等、仮想マシンを作成する時の要領で指定してください。
06.vhdadded

仮想ハードドライブのパーティション設定

次に、ゲスト OS (Linux) 上で、今追加したハードドライブのパーティションを設定します。パーティションの設定は GUI の方が分かりやすいと思います。ここでは、GParted というソフトウェアを使います。

  1. ソフトウェアセンターにて「パーティション」で検索すると、GParted が見つかるのでインストールします。
    100.software-center
  2. GParted を起動し、右上のデバイスから、追加したドライブを選択します。新規に仮想ドライブを作成したので、パーティションは「未割り当て」になっています。間違えて既存のドライブを選択しないようにしてください。
    102.gparted2
  3. 「デバイス」メニューから「パーティションテーブルの作成」を選択します。
    103.make-table
    今選択しているデバイスに間違いがないことを確認して「適用」します。
    104.make-table2
  4. パーティションを作成します。「未割り当て」となっている行を選択して右クリックし、「新規」を選びます。
    105.new-partition
    サイズやファイルシステムを選択します。ここでは、ext4 で全ての領域を割り当てました。小さな容量を指定して複数のパーティションを割り当てることもできます。
    106.new-partition2
  5. フォーマットします。
    107.format
  6. 最後に、以上の設定を「適用」するためにチェックマークをクリックします。これをしないと、作業が確定しません。
    108.apply
    さらに注意を促されますので、よく確認して「適用」します。
    109.apply2

ドライブのマウントと所有者変更

ここまでのところでデスクトップにドライブのアイコンができていると思いますので、これをクリックすれば自動的にマウントされます。ただし、起動時にマウントさせたい場合は、/etc/fstab に設定を記入します。また、このままでは所有者がルートになっているので変更する必要があります。

  1. まずデバイスを確認します。ドライブのラベルまたは、UUID を確認します。
  2. 適当なエディタで /etc/fstab を開いて編集します。このファイルを編集するにはルート権限が必要です。
    上記 /dev/sdb1 を /home/hoge/new_d にマウントする場合、以下のような定義になると思います。
    パラメータの意味は man fstab で確認してください。
  3. 一旦ログアウトして再度ログインすると、/home/hoge/new_d がマウントされているはずです。ただし、所有者が root.root になっているので、アクセスできるように変更しましょう。hoge.hoge に変えるには

以上で追加したドライブが利用できるようになりました。