惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

aimingoo的专栏
aimingoo的专栏
Y
Y Combinator Blog
云风的 BLOG
云风的 BLOG
Microsoft Azure Blog
Microsoft Azure Blog
腾讯CDC
T
The Blog of Author Tim Ferriss
P
Proofpoint News Feed
Hugging Face - Blog
Hugging Face - Blog
博客园_首页
小众软件
小众软件
美团技术团队
Martin Fowler
Martin Fowler
爱范儿
爱范儿
有赞技术团队
有赞技术团队
博客园 - 【当耐特】
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Microsoft Security Blog
Microsoft Security Blog
宝玉的分享
宝玉的分享
J
Java Code Geeks
B
Blog
V
V2EX
Stack Overflow Blog
Stack Overflow Blog
B
Blog RSS Feed
博客园 - Franky

LanYunのBlog

解决macOS全屏模式下某些情况显示原始鼠标指针的问题 Yarn从Classic迁移到Modern nginx自编译 用santa对二进制进行监控和授权 ESXI 8.0安装黑群晖DSM 7.x openwrt编译过程记录 编译monero For macOS ARM 自建busuanzi不蒜子平台统计平台 浅记博客更新日志 (机翻)Kubo配置文件 修改brew services中服务的启动参数 技术杂记📝 解决Surge模块不能同步问题 为Arch Linux配置邮件服务 自编译NutClient-ESXI,更改邮件逻辑 解决ESXI和群晖使用SSH密钥登录问题 为J4125软路由ESXI中群晖提供UPS服务 在arch linux上搭建rustdesk server 解决虚拟机扩容中GPT PMBR大小不符问题 搭建Tuic V5 优雅地为macOS提供python多版本的支持 修复root路径下文件权限问题 解决macOS 14上利用Whisky运行steam时有关问题 在macOS中用PhpStorm配置Xdebug调试 利用CloudFlare Workers快速自建一个IP获取器 如何自动续期证书? 从0开始速配VPS用于网站等 搭建一个基于ChatGPT的QQ机器人(Yunzai-Bot) For Mac 010 Editor For Mac 13.0.1 Crack 破解 关于部署Cloudflare Zero Trust遇到的问题浅记录📝
优化macOS Dock栏的显示与隐藏
LanYun · 2025-07-27 · via LanYunのBlog

备注: 此文章可能并不能很好地解决问题,推荐看更新的文章(修复某些游戏在macOS上的全屏相关缺陷)

前言

我在全新macOS Tahoe 26系统并在外接显示器体验过程中,dock栏(中文名:程序坞,后续不再解释)中的应用保留比较少,同时dock栏大小调整的比较大,虽然看着很舒服了,但是所占的空间可不小,我希望dock栏能智能显示或隐藏,比如在使用非全屏大窗口应用(比如:系统设置,访达等)时(即窗口未与dock栏区域接触{只要窗口底边>=dock栏最上边的纵坐标就算接触})dock栏能自动显示,否则自动隐藏。在互联网中发现有个应用(intellidock)能基本满足我的需求,但它在我这个系统中不能正常工作(能自动隐藏,但不能自动显示),故本人写一个swift二进制程序来实现需求。

已知bug/macOS特性:

  1. (这其实并非我编写程序的bug,而是macOS特性,我有一些方法可以解决/完善,但都不够优雅(主要是有点复杂+懒),没想好怎么修算比较好)
    在 Dock 显示状态下,当点击一个最小化的全覆盖屏幕窗口(minimized to Dock),macOS 会尝试让窗口不遮挡 Dock,所以系统会自动调整窗口位置,把它“挤”在 Dock 上方,下边界会被强制上移。

目前不足:

  1. (✅已优化,采用池管理)当前程序性能开销总体来说非常低了,但依然还有改进的空间,比如:避免频繁注册/卸载事件。
  2. (✅已优化,采用私有API)采用AppleScript来控制 Dock 自动隐藏控制开销还是有点高
  3. (目前没能力做.)无GUI可视化
  4. (懒的搞.)目前只对单屏幕有优化模式
  5. 单屏幕时,程序会缓存dock栏高度,这会导致当dock栏高度变化时不能及时处理
  6. 程序被kill时应该发出通知并启动一个新进程fork

本程序优点:

  1. 速度非常快,性能开销非常低
  2. 命令行运行,支持不同的参数
  3. 兼容性极好,支持不同macOS

部署

建议懒人(比如我😂)使用此方式(自定义用户可作为参考).

将下面命令在 终端 中运行.

1
2
3
4
5
6
7
8
9
user=$(whoami);
eval savepath="/Users/${user}/Documents/SmartDock";mkdir -p $savepath;
download_path='https://lanyun.pages.dev/download_file/SmartDock';
urls=("${download_path}/SmartDock" "${download_path}/SmartDock运行状态切换.command");
for url in "${urls[@]}"; do
wget -P "${savepath}" "${url}" || curl -L -o "${savepath}/$(basename "${url}")" "${url}"
done
sed -i '' "s/user=\$(whoami)/user='${user}'/g" "${savepath}/SmartDock运行状态切换.command";chmod -R 777 "${savepath}";
open "${savepath}"

启动或停止双击 SmartDock运行状态切换.command 文件即可.

备注:

你需要在 系统设置 中 隐私与安全性 中 辅助功能 中添加 终端 应用(需要给权限)

默认使用参数 --fast-pid :同一进程的不同窗口跳过聚焦切换处理,如果不需要请自行修改 SmartDock运行状态切换.command 脚本

如果下载失败,你可以选择通过代理下载或者将 lanyun.pages.dev 替换为 lanyundev.com 并在浏览器的无痕模式中进行下载。

手动在无痕模式文件下载链接:SmartDock SmartDock运行状态切换.command

可以手动验证一下一些文件的完整性,避免因网络缓存等原因导致与预期不符。

1
2
3
sha512sum *
32b444b5e8c055c7904961cc04a84e4858bf11b3b0be78f61a51cb82372b0a751fbe79fe7658ecf86cd0980f2258fef2bd47babb1c57460128f64a15cac75548 SmartDock
cb79465313d4bfd41e28c8515d8368360caa8621f0b5b2e102f6fa81fb7ae6779fb6b6b1403dadb199d781f73ed76c497220989bafdc60b8410f962de49dea3c SmartDock运行状态切换.command

更新说明

优化不足1和2.

  • WeChat

    WeChat

  • AliPay

    AliPay