V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
v7eeaU2MLyWNvp
V2EX  ›  macOS

用 Hammerspoon 也算是解决了陌生 Finder 窗口(没有记忆的窗口)太小的问题

  •  
  •   v7eeaU2MLyWNvp · 5 天前 · 730 次点击

    我总算是弄清楚了,似乎是 mac 窗口逻辑是这样的,你调整窗口,然后就会记住窗口大小,这是苹果的逻辑这很好。

    但是,如果你是用 spotlight 打开一个你从未访问过的文件夹打开的窗口,这个窗口是没有记忆大小的,则这种的就会变成默认的很小很小的,700 多 x400 多?的大小???反正特别小,尤其 4k 屏幕这么点大小每次都要调整,简直了。。。尤其某些情况下那些 DS_Store 文件发生意外,也弄弄得窗口大小很乱

    然后这个值似乎是写在 finder 的主程序而不是配置 plist ,甚至 plist 也没有给默认修改窗口大小的值。。。我还以为有只是我没找到,好像是真没有,反正我没找到。

    既然没有,那就 hs 来解决吧,hs 算是泛用性最合适的了,各种情况都能用上。我是没找到好方法,你有么???

    local RESIZE_MIN_WIDTH = 1400
    local RESIZE_MIN_HEIGHT = 800
    local RESIZE_TARGET_APP = "访达"
    
    local function resizeTargetWindow(window)
        if not window or not window:isVisible() then return end
    
        local app = window:application()
        if not (app and app:name() == RESIZE_TARGET_APP) then
            return
        end
    
        local frame = window:frame()
        local needsResize = false
    
        if frame.w < RESIZE_MIN_WIDTH then
            frame.w = RESIZE_MIN_WIDTH
            needsResize = true
        end
        if frame.h < RESIZE_MIN_HEIGHT then
            frame.h = RESIZE_MIN_HEIGHT
            needsResize = true
        end
    
        if needsResize then
            hs.alert.show("正在调整 '" .. RESIZE_TARGET_APP .. "' 窗口...")
            window:setFrame(frame)
        end
    end
    
    local finderResizeFilter = hs.window.filter.new(RESIZE_TARGET_APP)
    finderResizeFilter:subscribe({hs.window.filter.windowCreated, hs.window.filter.windowFocused}, resizeTargetWindow)
    
    jorneyr
        1
    jorneyr  
       5 天前
    这个做法挺好
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   1136 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 17:51 · PVG 01:51 · LAX 09:51 · JFK 12:51
    ♥ Do have faith in what you're doing.