闲暇时间想学习下 mac os 开发,请问一下学习曲线是怎么样的

2023-01-12 12:40:57 +08:00
 covvee

主要是在使用 mac os 的时候,我一直对 mac 的窗口管理很不爽。现在使用 ubar ,大概满足了需求,但也有一些地方用着不太舒服。

过年了,有段闲暇时间,想学习一下 mac os 开发。我桌面应用开发的经验为 0 ,想问下需要怎么样的学习曲线?

mac os 的资源,感觉好少。还是说我没有找对

求带带路

3506 次点击
所在节点    macOS
33 条回复
halowang1991
2023-01-13 00:55:11 +08:00
虽然 OP 说不是 window management, 不过, 如果真的是窗口管理这种高大上的活儿,

Quartz Window Services

https://developer.apple.com/documentation/coregraphics/quartz_window_services

可以一看
netabare
2023-01-13 01:37:46 +08:00
可以试试看有没有类似的,功能不相同但原理差不多的项目,fork 一下慢慢研究。

不过如果要实现的功能需要用私有 api 的话感觉就够呛…
jay435990054
2023-01-13 08:26:07 +08:00
@objectxiang 能加个微吗 我也是做 mac 开发
objectxiang
2023-01-13 09:53:22 +08:00
@jay435990054 ODUzNjg2NTcwMTg=
covvee
2023-01-13 13:47:55 +08:00
@objectxiang 老哥,能否请教一个问题。

```
let options = CGWindowListOption(arrayLiteral: .excludeDesktopElements, .optionOnScreenOnly)
let windowsListInfo = CGWindowListCopyWindowInfo(options, CGWindowID(0))
let infoList = windowsListInfo as! [[String:Any]]
let visibleWindows = infoList.filter{ $0["kCGWindowLayer"] as! Int == 0 }

```

我观察到,他们用的是同一个 Pid,但是有不同的 kCGWindowNumber


现在我查到能用上面这样子去得到所有打开的 window 窗口,但是有什么的方法,可以指定打开某个 window 吗?

比如说我 vscode 打开了两个窗口,一个 window 写前端,一个写后端。swift 现在有没有哪个 api 可以指定打开某个 window?

查了一个早上,也看到很多人有相同的问题,都没有得到答案。
covvee
2023-01-13 13:56:34 +08:00
songquan
2023-01-15 09:02:40 +08:00
@covvee 看到这一条,我激动得很啊,因为 ubar 这个软件我确实很喜欢,不得不说 window 的任务栏确实是生产力神器,mac 的 dock 虽然优雅,但是无法通过肌肉记忆完成操作,并且窗口识别和切换逻辑混乱。可惜 ubar 已经接近停更了,期待你的作品!
covvee
2023-01-15 17:44:22 +08:00
@songquan 还在尝试,有很多难题在研究。比想像的麻烦太多
objectxiang
2023-01-16 22:35:14 +08:00
@covvee 据我所知,正常很难实现这个,没有现成 API
covvee
2023-01-17 11:04:42 +08:00
@objectxiang 这个我现在勉强搞定了。

还有一个问题,比如说微信,当我点了最小化或者关闭按钮之后,我用 NSWorkspace.shared.runningApplications 就拿不到了。

我想请问一个问题,怎么判断一个应用,是可以收缩在右上角 status bar 的?或者这么说,我可以怎么样去拿到 status bar 上面的应用列表?
objectxiang
2023-01-17 13:13:07 +08:00
@covvee CGWindowListCopyWindowInfo 列表的 window level = 25 就是了,正在运行的程序的话,需要更低级别的 API 才能准确获取
covvee
2023-01-17 14:37:21 +08:00
@objectxiang 非常感谢。我能不能再问最后一个问题,如何监听到有新的通知?比如说微信等应用,我希望能监听到它们来了新消息,可以显示小红点。
squallsdjl
88 天前
哈哈哈,搜 macos 搜到这里,兄弟现在开发能力如何,我最近想求 macos 开发组队,但是找不到人

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/908401

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX