フレームを半透明にする

Emacs23であれば、Window Managerが半透明に対応していれば、フレームを半透明にする事が可能です。
Linuxだと、Compiz?Beryl?あたり、もしくは、Window Manager(というか、デスクトップ環境?)にXfce4を使えば可能かと思います。
# Xfce4上で試しました。
たぶん、Mac OS Xや、Windows(2000以上)でも、NEWSファイルを見る限りだと対応している風に書いてあるので、できると思います。
# 環境無いので試してません。



フレームのalphaパラメータに0から100、もしくは、0から1の間の値を渡せば良いようです。
既に誰かが作ってる気もしますが、とりあえず、以下のような関数をでっちあげてみました。

(defun my-opacity-change (action)
  (let* ((op (frame-parameter (selected-frame)
                              'alpha))
         val)
    (unless op
      (setq op 100))
    (when (setq val (cond
                     ((eq action 'up)
                      (if (> op 90) 100 (+ op 10)))
                     ((eq action 'down)
                      (if (> 10 op) 10 (- op 10)))
                     ((eq action 'clear)
                      100)
                     ((numberp action)
                      action)
                     (t
                      nil)))
      (set-frame-parameter (selected-frame) 'alpha val))))

関数my-opacity-changeには、0から100の値、もしくは、up、down, clearを渡します。
数値は0に近ければ近いほど、透明に近づきます。
upは、より不透過に近づけさせます(透過ではなくなる)。
downは、より透過に近づけさせます。
clearは、半透明にするをやめます。
また、この関数は、現在選択中のフレームにしか効果を及ぼしません。

(my-opacity-change 80)                  ; 不透過度を80とする
(my-opacity-change 'up)                 ; 不透過度を10上昇させる
(my-opacity-change 'down)               ; 不透過度を10下降させる
(my-opacity-change 'clear)              ; 半透明にするをやめる

なお、NEWSファイルによると、透明度は、変数frame-alpha-lower-limitにより、下限値が決められているようです。
# ユーザが操作を失う事がないようにするためだそうです。
この値をいじって、alphaの値を10、もしくは,それ以下にするのやめといた方が良いと思います。本当に分かんなくなるので。


そんなこんなで。

更新時刻

  • 2009/08/09/20:35