awesome window manager: choose default layout

awesome window manager 也許多年了,一向都蠻順手,這 陣子單獨用筆電作業的時間比較多,也就是沒外接螢幕跟鍵盤,總覺得卡卡的。原因是筆電 螢幕解析度高,但相對應的 DPI 也調到正確值 210,一行大約 140 個字母。由於習慣一行 最多 80 個字母,所以如果螢幕寬度無法容納 160 個字,視窗就不適合用左右並列的方式。 在 awesome 的 rc.lua 裡原本是這樣寫:

1
2
3
4
5
if s.geometry.width > 1600 then
layout = awful.layout.layouts[1] -- 左右並列
else
layout = awful.layout.layouts[2] -- 上下並列
end

這樣會按照螢幕橫向解析度決定要不要並列,但現在不適用了,因為雖然筆電螢幕寬度是 2560 點,但並不希望是左右並列。解決方法是實際去計算能放幾個字。慣用的 adobe source code pro 10pt, 72pt 是一英吋,然後這字型是設計成寬度大約是字體大小的 60%, 最後加入 0.25pt 當成字距用以微調。

1
2
3
4
5
if (s.geometry.width / s.dpi) / ((10 * 0.6 + 0.25) / 72 )) >= 160 then
layout = awful.layout.layouts[1]
else
layout = awful.layout.layouts[2]
end

實際用幾組不同螢幕規格試算,結果都還符合預期。