lcd

前陣子買了可以旋轉的螢幕,想說看漫畫的時候可以改成直立的,看起來會更舒服。

Windows的時候,安裝顯示卡驅動程式時附的工具軟體可以直接在系統列上的圖示按右鍵選擇後就可以旋轉,不過換到macbook後發現好像沒有類似的地方可以這樣做,似乎只能到系統偏好設定裡面的顯示器中修改。

雖然也不會花多少時間,但就是覺得以前不用這麼麻煩現在則得多幾個步驟就是不舒服,於是就開始找有沒有類似的工具。這時候就發現有hammerspoon這工具,可以自己寫點code來做一些事情。

看了下發現是用lua語言,雖然沒有寫過,不過看了些範例後感覺自己要寫的功能應該很簡單於是就嘗試了一下:

hs.hotkey.bind( { "alt" } , "Q" , function()
    local screens = hs.screen.allScreens()

    for i , screen in ipairs(screens) do
        local screen_name   = screen:name()
        local screen_rotate = screen:rotate()

        local is_target_screen = screen_name == "EV2450"

        -- print("[DEBUG] screen name: " .. screen_name .. " , rotate: " .. screen_rotate)

        if is_target_screen then
            local rotate_val = screen_rotate == 90 and 0 or 90
            screen:rotate(rotate_val)
        end
    end
end )

功能上就是:

  1. 設定熱鍵ALT+Q,輸入後執行該方法
  2. 取得放置所有螢幕物件的陣列後,開始跑迴圈尋找需要的螢幕
  3. 如果該螢幕沒有旋轉90度就旋轉,有的話就轉回來

第一次寫lua,雖然有些地方還是不能理解,但還是把功能寫出來了,像是ipairs這方法和or關鍵字感覺就是怪怪的。

不過整體來說寫起來還算蠻愉快的(應該是說hammerspoonAPI看得很舒服),還順手寫了螢幕截圖的功能出來,整個感覺舒服多了。😌