掌控你的Mac桌面:Swindler - Swift版窗口管理库

掌控你的Mac桌面:Swindler - Swift版窗口管理库

SwindlermacOS window management library for Swift项目地址:https://gitcode.com/gh_mirrors/sw/Swindler

Swindler,一个专为macOS设计的Swift窗口管理库,旨在帮助开发者重获在Linux和Windows系统中的桌面环境控制权。通过提供强大的API和抽象层,Swindler使创建高效、稳定的窗口管理器变得轻而易举。

项目介绍

当你迁移到macOS时,可能已经享受到了其出色的硬件和流畅的操作系统。但你也失去了对桌面环境的精细控制。Swindler的目标就是弥补这一遗憾,让你在享受macOS的同时,也能体验到类似Linux和Windows的自定义窗口管理功能。

项目技术分析

Swindler主要解决了以下几个技术挑战:

  1. 类型安全:基于Swift的API提供了全面的文档和类型安全性,比C语言的无障碍API更易于理解和使用。
  2. 内存模型:它维护了一个所有应用程序和窗口状态的模型,这意味着读取操作是即时的,因为所有的状态都缓存在本地应用进程中,并保持实时更新。
  3. 异步写入与刷新:多个窗口的调整可以并发执行,避免因某个应用响应慢而导致的整体延迟。Promise-based API使得监控操作状态变得简单。
  4. 事件友好性:Swindler的事件机制保证了事件顺序的一致性,遗漏的事件会得到补充,并能区分由代码触发还是用户操作引发的事件。

应用场景与特点

  • 开发自定义窗口管理器:Swindler为你提供了构建复杂窗口布局的工具,如网格布局或自定义窗口大小调整。
  • 提高工作效率:快速切换和定位窗口,实现一键整理桌面,让工作更加专注。
  • 稳定可靠:Swindler经过深入测试,确保在各种情况下都能保持一致性和稳定性。

示例

以下代码展示了如何利用Swindler将屏幕上的所有窗口分配到网格中:

Swindler.initialize().then { state -> Void in
    let screen = state.screens.first!
    
    let allPlacedOnGrid = screen.knownWindows.enumerate().map { index, window in
        let rect = gridRect(screen, index)
        return window.frame.set(rect)
    }

    when(allPlacedOnGrid) { _ in
        print("all done!")
    }
}.catch { error in
    // ...
}

此外,你还可以轻松实现“吸附”功能,当窗口移动时自动调整至网格位置。

获取权限

为了使用Swindler,你的应用需请求访问受信任的无障碍API。在AppDelegate中加入以下代码:

func applicationDidFinishLaunching(_ aNotification: Notification) {
    guard AXSwift.checkIsProcessTrusted(prompt: true) else {
        print("Not trusted as an AX process; please authorize and re-launch")
        NSApp.terminate(self)
        return
    }

    // your code here
}

项目状态与未来发展

目前,Swindler处于Alpha阶段,大部分核心功能已实现。项目持续发展,未来将添加更多API,包括对Spaces的支持。

加入我们

想要参与讨论或寻求帮助?请加入我们的Gitter聊天室,也可关注项目作者@tmandry的Twitter。

Swindler的开发基于AXSwift,并受到其他优秀开源项目如SilicaMjolnir,以及Hammerspoon的启发。

立即开始使用Swindler,打造属于自己的个性化macOS桌面体验吧!

SwindlermacOS window management library for Swift项目地址:https://gitcode.com/gh_mirrors/sw/Swindler

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

武允倩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值