讲师中心 微信公众号
AI工具推荐 视频效率加速

编写 AppleScript 实现 macOS 窗口布局自动化

阿涛酱_4424

阿涛酱_4424

发布时间:2026-06-15 11:11:07

|

877人浏览过

|

来源于php中文网

原创

AppleScript 可通过 bundle ID 精确控制 macOS 应用窗口位置、尺寸与层级,需处理多屏、全屏、最小化等状态并使用 System Events 实现稳定布局自动化。

applescript 可以精确控制 macos 应用窗口的位置、尺寸和层级,配合 system events 实现可靠的窗口布局自动化。关键在于准确获取目标应用、识别窗口、设置坐标与大小,并处理多显示器、全屏、最小化等边界情况。

获取并激活目标应用窗口

先确保应用已运行,再获取其主窗口。推荐使用 bundle identifier 而非名称,避免本地化问题:

  • tell application id "com.apple.Safari" to activate
  • delay 0.2 — 给界面渲染留出时间
  • tell application "System Events" to tell process "Safari"
      set frontWindow to window 1
      set position of frontWindow to {0, 0}
      set size of frontWindow to {1280, 720}
    end tell

适配多显示器与安全区域

macOS 的 bounds of screen 提供当前主屏或指定屏的可用区域(排除菜单栏、Dock)。使用前需确认屏幕索引:

  • tell application "System Events"
      set mainScreenBounds to bounds of first screen
      -- 返回 {x, y, width, height},如 {0, 0, 1680, 1050}
    end tell
  • 若需定位到第二屏,改用 second screen;注意部分 App(如 Finder)可能有多个窗口,用 first window whose subrole is "AXStandardWindow" 更稳妥

处理常见状态:全屏、最小化、无响应

直接设置 position/size 对全屏或最小化窗口无效,需先还原:

macOS Notes
macOS Notes

通过 AppleScript 创建、读取、搜索及管理 macOS 备忘录。适用于用户要求记笔记、记录事项、保存想法、创建会议记录等场景。

下载
  • if value of attribute "AXFullScreen" of frontWindow is true then
      perform action "AXZoom" of frontWindow
    end if
  • if value of attribute "AXMinimized" of frontWindow is true then
      set value of attribute "AXMinimized" of frontWindow to false
    end if
  • 加 timeout 3 包裹关键操作,防止因 App 未就绪卡死脚本

封装为可复用函数(示例:四分之一屏布局)

将常用布局逻辑抽象为 handler,便于组合调用:

  • on placeWindowInQuadrant(appID, quadrant)
      tell application id appID to activate
      delay 0.3
      tell application "System Events" to tell process (name of application id appID)
        set w to first window
        perform action "AXZoom" of w -- 还原窗口
        set b to bounds of first screen
        set {x, y, wW, wH} to b
        if quadrant is "top-left" then set pos to {x, y} & {wW / 2, wH / 2}
        if quadrant is "bottom-right" then set pos to {x + wW / 2, y + wH / 2} & {wW / 2, wH / 2}
        set position of w to items 1 thru 2 of pos
        set size of w to items 3 thru 4 of pos
      end tell
    end placeWindowInQuadrant
  • 调用:placeWindowInQuadrant("com.apple.Safari", "top-left")

不复杂但容易忽略:始终用 bundle ID 启动应用,检查窗口是否存在再操作,对全屏/最小化状态做预处理,多显示器下显式指定 screen 索引。这些细节决定脚本在不同 Mac 上是否稳定生效。

热门AI工具

更多
WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

AionClaw
AionClaw Hot

AionClaw是一款面向办公、创作和编程任务的AI桌面智能体。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

讯飞绘文

讯飞绘文是一款由科大讯飞推出的一站式 AIGC 内容运营平台。

超级简历WonderCV

一款AI办公效率工具,主要用于免费求职简历模版下载制作,应届生职场人必备简历制作神器,适合需要提升相关任务效率的用户。

相关专题

更多
macOS怎么切换用户账户
macOS怎么切换用户账户

在 macOS 系统中,可通过多种方式切换用户账户。如点击苹果图标选择 “系统偏好设置”,打开 “用户与群组” 进行切换;或启用快速用户切换功能,通过菜单栏或控制中心的账户名称切换;还能使用快捷键 “Control+Command+Q” 锁定屏幕后切换。

4464

2025.05.09

PHP 命令行脚本与自动化任务开发
PHP 命令行脚本与自动化任务开发

本专题系统讲解 PHP 在命令行环境(CLI)下的开发与应用,内容涵盖 PHP CLI 基础、参数解析、文件与目录操作、日志输出、异常处理,以及与 Linux 定时任务(Cron)的结合使用。通过实战示例,帮助开发者掌握使用 PHP 构建 自动化脚本、批处理工具与后台任务程序 的能力。

486

2025.12.13

Figma AI自动化智能数据填充与交互生成实战
Figma AI自动化智能数据填充与交互生成实战

告别机械重复,详细演示如何用 AI 填充业务真实数据,并自动为页面添加交互连线,将静态设计稿快速转变为动态原型。

305

2026.05.13

Linux 新手先学哪些命令
Linux 新手先学哪些命令

Linux新手命令专题汇集终端基础、文件目录操作、文本查看、软件安装和权限管理等入门文章,帮助按实际任务练习常用命令并建立命令行操作习惯。

0

2026.10.15

MySQL 忘记密码怎么办
MySQL 忘记密码怎么办

MySQL忘记密码专题汇集不同版本与系统下的root密码重置方法,覆盖MySQL 5.7、8.0、Mac、Linux及本地集成环境,并提示恢复权限与重新登录的检查步骤。

0

2026.10.15

Vue.js 中 ref 和 reactive 的区别
Vue.js 中 ref 和 reactive 的区别

Vue.js中ref和reactive的区别专题汇集两种响应式API的定义、访问方式、对象解构、侦听与性能取舍等文章,帮助结合实际状态类型选择合适写法。

0

2026.10.15

VS Code 怎么配置开发环境
VS Code 怎么配置开发环境

VS Code开发环境专题汇集编辑器安装、语言扩展、编译器、解释器、终端和调试配置文章,覆盖Java、Python、C++和PHP等常见语言的入门设置。

0

2026.10.15

C++ 开发环境怎么搭建
C++ 开发环境怎么搭建

C++开发环境专题汇集Windows、Linux下的编译器与IDE安装配置教程,涵盖GCC、Clang、Visual Studio、CLion和VS Code,以及编译运行首个程序的步骤。

0

2026.10.15

Python 虚拟环境是什么
Python 虚拟环境是什么

Python虚拟环境专题介绍项目依赖隔离的作用,汇集venv与uv创建、激活、退出及解释器切换的相关文章,并覆盖Windows、Linux和VS Code中的常见配置问题。

0

2026.10.15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习

Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Miniconda官方安装文档
Miniconda官方安装文档

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn