2011年6月10日金曜日

emacsのフレームサイズを画面解像度によって動的に変更する方法

メインの開発環境はmac mini+FlexScanL885なのだが、外出先などではMacbook air 11インチを使用している。emacsのデフォルト フレーム サイズをFlexScanL885にあわせるとMacbook airでは、はみ出てしまう。逆にMacbook airにあわせると、FlexScanL885では狭すぎて開くたびにリサイズするなんてことになる。

じゃあ解像度に合わせて、動的に開くフレームサイズを決めれば良いんじゃねぇ。ということで下記の設定を書いてみた。

;; 画面の解像度によりフレームサイズを変化させる
(when window-system
  (if (>= (x-display-pixel-width) 800) (setq width-gain 0.45) (setq width-gain 0.8))
  (if (>= (x-display-pixel-height) 1000) (setq height-gain 0.7) (setq height-gain 0.87))
  (set-frame-size (selected-frame)
                  (floor (/ (* (x-display-pixel-width) width-gain) (frame-char-width)))
                  (floor (/ (* (x-display-pixel-height) height-gain) (frame-char-height))))

横の解像度が800px以下の場合は、横のフレームサイズを ((横解像度*0.8)/1文字の横ピクセル数)、横の解像度が800px以上の場合は ((横解像度*0.45)/1文字の横ピクセル数) としている。

また、縦の解像度が1000px以下の場合は、縦のフレームサイズを ((縦解像度*0.87)/1文字の縦ピクセル数)、縦の解像度が1000px以上の場合は ((縦解像度*0.7)/1文字の縦ピクセル数) としている。

0 コメント:

コメントを投稿