Project Icon

MTMR

为MacBook Pro定制Touch Bar的强大工具

MTMR是一款MacBook Pro Touch Bar自定义应用,提供丰富的插件平台和自定义选项。支持多种按钮类型、手势控制和原生插件,如时间、电池、CPU监控等功能。用户可创建和分享自定义预设,提升Touch Bar的实用性和个性化程度。MTMR让MacBook Pro用户能够根据个人需求灵活定制Touch Bar界面。

我的触控栏,我做主。GitHub 发布 许可证 最低系统要求 travis

为你的MacBook Pro定制触控栏的应用

我的想法是创建一个平台,用于制作插件来定制触控栏。我非常喜欢BTT并拥有完全自定义的触控栏(我的BTT预设),所以我想创建这个。这是我的第一个MacOS Swift项目 :)

这里分享你的预设

带触控栏的MacBook

Discord Telegram

PayPal捐赠按钮 给我买杯咖啡 My TouchBar My Rules (MTMR)

安装

  • 从GitHub下载最新发布版(.dmg)
  • 或通过Homebrew安装 brew install --cask mtmr
  • Dario Prski在medium上写了一篇精彩的文章,详细介绍了MTMR的安装过程

首次安装时,你需要在辅助功能中允许MTMR访问,否则Esc音量亮度等系统按键将无法工作。

screenshot 2019-02-24 at 23 19 20

🍏→ 系统偏好设置 → 安全性与隐私 → 隐私标签 → 辅助功能 → MTMR

示例

MTMR预设

触控栏预设

自定义

MTMR偏好设置存储在 ~/Library/Application\ Support/MTMR/items.json 中。

预安装的配置可能包含的内容比你需要的多或少,尝试配置:

内置按钮类型:

按钮

  • escape(退出)
  • exitTouchbar(退出触控栏)
  • brightnessUp(提高亮度)
  • brightnessDown(降低亮度)
  • illuminationUp(提高键盘照明)
  • illuminationDown(降低键盘照明)
  • volumeDown(降低音量)
  • volumeUp(提高音量)
  • mute(静音)

原生插件

  • timeButton(时间按钮)
  • battery(电池)
  • cpu(处理器)
  • currency(货币)
  • weather(天气)
  • yandexWeather(Yandex天气)
  • inputsource(输入源)
  • music(音乐,轻触暂停,长按下一曲)
  • dock(程序坞,半长按打开应用,全长按关闭应用)
  • nightShift(夜间模式)
  • dnd(勿扰模式)
  • darkMode(深色模式)
  • pomodoro(番茄钟)
  • network(网络)
  • upnext(即将到来的日历事件)

媒体键

  • previous(上一曲)
  • play(播放)
  • next(下一曲)

AppleScript插件

  • sleep(睡眠)
  • displaySleep(显示器睡眠)

自定义按钮

  • staticButton(静态按钮)
  • appleScriptTitledButton(带标题的AppleScript按钮)
  • shellScriptTitledButton(带标题的Shell脚本按钮)

手势

默认情况下,您可以从应用程序菜单启用基本手势(状态栏 -> MTMR 图标 -> 音量/亮度手势):

  • 双指滑动:改变音量
  • 三指滑动:改变亮度

自定义手势

您可以为两指/三指/四指滑动添加自定义操作。要实现这一点,您需要使用 swipe 类型:

    "type": "swipe",
    "fingers": 2,            // 所需的手指数量(2、3或4)
    "direction": "right",    // 滑动方向(right/left)
    "minOffset": 10,         // 可选:触发事件所需的最小偏移量
    "sourceApple": {         // 可选:要运行的 Apple 脚本
        "inline": "beep"
    },
    "sourceBash": {          // 可选:要运行的 Bash 脚本
        "inline": "touch /Users/lobster/test"
    }

您可以在预设中创建任意数量的 swipe 对象。

内置滑块类型:

  • brightness(亮度)
  • volume(音量)

您还可以使用这些类型制作自定义按钮

staticButton

 "type": "staticButton",
 "title": "esc",

appleScriptTitledButton

  {
    "type": "appleScriptTitledButton",
    "refreshInterval": 60, //可选
    "source": {
      "filePath": "~/Library/Application Support/MTMR/iTunes.nowPlaying.scpt",
      // 或
      "inline": "tell application \"Finder\"\rif not (exists window 1) then\rmake new Finder window\rset target of front window to path to home folder as string\rend if\ractivate\rend tell",
      // 或
      "base64": "以base64编码的字符串"
    },
  }

注意:您可以通过以下步骤更改 appleScriptTitledButton 的图标:

  1. alternativeImages 字段中声明图标字典
  2. 使您的脚本返回包含两个值的数组 - {"标题", "图像标签"}
  3. 确保您的 图像标签alternativeImages 字段中已声明

示例:

  {
    "type": "appleScriptTitledButton",
    "source": {
      "inline": "if (random number from 1 to 2) = 1 then\n\tset val to {\"title\", \"play\"}\nelse\n\tset val to {\"title\", \"pause\"}\nend if\nreturn val"
    },
    "refreshInterval": 1,
    "image": {
      "base64": "iVBORw0KGgoAAAANSUhEUgA..."
    },
    "alternativeImages": {
      "play": {
        "base64": "iVBORw0KGgoAAAANSUhEUgAAAAAA..."
      },
      "pause": {
        "base64": "iVBORw0KGgoAAAANSUhEUgAAAIAA..."
      }
    }
  },

shellScriptTitledButton

注意:脚本也可以使用转义序列来返回颜色(阅读 https://misc.flogisoft.com/bash/tip_colors_and_formatting 了解更多信息) 目前仅支持"16色"模式。按钮将把自己的背景颜色设置为返回的颜色。 以下是"CPU负载"按钮的示例,该按钮还会根据负载值改变颜色(注意:原生的cpu插件运行效果更好):

{
  "type": "shellScriptTitledButton",
  "width": 80,
  "refreshInterval": 2,
  "source": {
    "inline": "top -l 2 -n 0 -F | egrep -o ' \\d*\\.\\d+% idle' | tail -1 | awk -F% '{p = 100 - $1; if (p > 30) c = \"\\033[33m\"; if (p > 70) c = \"\\033[30;43m\"; printf \"%s%4.1f%%\\n\", c, p}'"
  },
  "actions": [
    {
      "trigger": "singleTap",
      "action": "appleScript",
      "actionAppleScript": {
        "inline": "activate application \"Activity Monitor\"\rtell application \"System Events\"\r\ttell process \"Activity Monitor\"\r\t\ttell radio button \"CPU\" of radio group 1 of group 2 of toolbar 1 of window 1 to perform action \"AXPress\"\r\tend tell\rend tell"
      }
    }
  ],
  "align": "right",
  "image": {
    // 或者在这里指定文件路径。
    // 图像将被调整为24x24。
    // "filePath": "~/myproject/myimage.jpg" // 或 "/fixed/path/to/the.png"
    "base64":
    "iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAA/1BMVEUAAADaACbYACfYACfjABzXACjYACfXACjYACfYACfYACfYACfdACLYACfXACjYACfVACv/AADXACjYACfYACfXACjYACfXACjaACXYACfYACfVACvYACfYACfZACbZACbYACfYACfZACb/AADYACfYACfVACrXACjVACu/AEDYACfYACfYACfXACjXACjYACfXACjYACfYACfYACfXACjYACfXACjYACfYACfZACbYACfYACfMADPYACfYACfYACfYACfYACfZACbXACjYACfYACfRAC7XACjYACfZACbWACnXACjXACjYACfTACzZACb/AADYACfYACfYACcAAAA+zneGAAAAU3RSTlMAItK+CVPjh3xUxPwPiGDQGAMtSKmN3Vk+wPQG/e26oIJBnwJCdiuAHgTmw+6BX+IgfaqLUvKOW8VKnagK+vBwYrhlc/urCznvhSyUbOEXPAFjGh/ektAAAAABYktHRACIBR1IAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH4ggWETQWgEDcSgAAAqVJREFUWMPtl4ly2jAQhsUNNlcw5r4SICEHLSQhCQRyX73T/u//LpUlLIyxbMAznWmn/0ywo5U+27tr7ZoQuwLBUJidRKIxPhKLRtgxHAoGiLfiQIKdKFCTxjGpQmEDCSC+BiAFpNlJBsgaxyyQYQNpIPUf8AcAOzktD+iaoQJQNI5FoMAGdCCv5XZclpfKFXiqUi5Jllf1mvdyQzW96gigd4h6o+mhRp1O0x3vvwa1VSWeqrZU1Jyeogy01ggSVQsoO/i/gjq9/u6u+2LDXq2jshqLHNCgdsCVwO0NILdi0oDmuoAmoImhQDzFRPNnb36L7U43NVfc2EH2D9h5t9OePyIF5IU9uIhvkyN7iiXmQUIOj8x/lB6f0bTaQ3ZA+9iaNCH2Lpg6btsBIRJOpJl0E9ABTvof5kqEGeCjMaN/AnRMgM5XJcI2J1J1gf6S48Tb2Ae6JkAjdgmAeJ1XAOJ1Xg8wGJ6elXwAzkeGjy62BgxG3MuXnoCIkmEq8EQyAUPgajyhPxJAga9SIiRqzwMOuAbGZDrDjQRgKkpiqiPgFphM74B7d4BKy2cyy1RcBvSodUb/HiSAIl+VlEfh8cm4wvPL9nnw+gbc+kkkUVioO95etwe8PBuP8vQoBzg7UQAe5t7syZwoCaMA3AN30wlzh3MYJYkkADeYTckYuJYlkiSVBeCKZtSY/gxlqezlxEt+pdFg6zBesPXn1ih8Aj5vkAels9PhYCkPsl++kg0AQu4dyuqmugIQm+qS5Nv6N+D7wm7d1skPc4xu666Fhd6BxU6r+jub8tNaWNxK29EhsdpR/sVn7FlLm0txPdgni+JrFNd3p+K67MQtyrsp3w2G7xbHd5Plv83z3Wj6b3V9N9ssFv7afaa//ZPn3wD4/vje8PP/N7TebS0hgZhEAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE4LTA4LTIyVDE3OjUyOjIyKzAyOjAwc2qUYAAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxOC0wOC0yMlQxNzo1MjoyMiswMjowMAI3LNwAAAAZdEVYdFNvZnR3YXJlAHd3dy5pbmtzY2FwZS5vcmeb7jwaAAAAAElFTkSuQmCC"
  },
  "bordered": false
}

分组

{
  "type": "group",
  "align": "center", 
  "bordered": true,
  "title": "统计",
  "items": [
    { "type": "play" },
    { "type": "mute" },
    ...
  ]
}

要关闭一个组,使用以下按钮:

{
  "type": "close",
  "width": 64
},

原生插件

cpu

显示当前CPU负载百分比,根据负载值变色。 相比基于shell的解决方案,具有更低的功耗和更高的稳定性。

{
  "type": "cpu",
  "refreshInterval": 3,
  "width": 80
}

timeButton

注意:某些值可能无法正常工作: https://en.wikipedia.org/wiki/List_of_time_zone_abbreviations

formatTemplate 示例: https://www.datetimeformatter.com/how-to-format-date-time-in-swift/

locale 示例: https://gist.github.com/jacobbubu/1836273

{
  "type": "timeButton",
  "formatTemplate": "dd HH:mm",
  "locale": "en_GB",
  "timeZone": "UTC"
}

weather

提供商: https://openweathermap.org
注意: 在 https://openweathermap.org 注册以获取API密钥
注意: 等待约20分钟让Openweathermap激活你的API密钥。
注意: 在系统偏好设置的"安全性与隐私"面板中的"位置服务"中启用MTMR

  "type": "weather",
  "refreshInterval": 600, // 单位:秒
  "units": "metric", // 或 imperial
  "icon_type": "text", // 或 images
  "api_key": "" // 你可以在openweather上获取密钥

yandexWeather (实验性)

提供商: https://yandex.ru/pogoda。单击打开浏览器中的天气预报。\ 注意: 在系统偏好设置的"安全性与隐私"面板中的"位置服务"中启用MTMR

  "type": "yandexWeather",
  "refreshInterval": 600 // 单位:秒

currency

提供商: https://coinbase.com

  "type": "currency",
  "refreshInterval": 600, // 单位:秒
  "align": "right",
  "from": "BTC",
  "to": "USD",
  "full": true // £‣1.29$

music

{
  "type": "music",
  "align": "center",
  "width": 80, // 可选
  "bordered": false, // 可选
  "refreshInterval": 2, // 单位:秒。可选。默认5秒
  "disableMarquee": true // 禁用跑马灯效果。可选。默认false
},

pomodoro

番茄钟插件。单击开始工作计时器,长按开始休息计时器。点击进行中的计时器可重置。

{
  "type": "pomodoro",
  "workTime": 1200, // 设置工作时间(秒)。默认1500 (25分钟)
  "restTime": 600 // 设置休息时间(秒)。默认300 (5分钟)
},

network

网络插件。显示网络使用情况的插件

{
  "type": "network",
  "flip": true,
  "units": "dynamic" // 或 B/s, KB/s, MB/s, GB/s
},

dock

Dock插件

{
  "type": "dock",
  "filter": "(^Xcode$)|(Safari)|(.*player)",
  "autoResize": true
},

upnext

日历下一个事件插件 显示macOS日历中的即将到来的事件。不显示当前事件。

{
  "type": "upnext",
  "from": 0, // 搜索下一个事件的时间范围下限(小时)。        默认0(当前时间)(可以为负数以查看过去的事件)
  "to": 12, // 搜索下一个事件的时间范围上限(小时)。        默认12(未来12小时)
  "maxToShow": 3, // 限制显示的最大事件数。          默认3(显示最近的3个即将到来的事件)
  "autoResize": false // 如果为true,小部件将展开以显示所有事件。 默认false(在"width"内可滚动视图)
},

动作:

示例:

"actions": [
  {
    "trigger": "singleTap",
    "action": "hidKey",
    "keycode": 53
  }
]

触发器:

  • singleTap
  • doubleTap
  • tripleTap
  • longTap

类型

 "action": "hidKey",
 "keycode": 53,
 "action": "keyPress",
 "keycode": 1,
  • appleScript
 "action": "appleScript",
 "actionAppleScript": {
      "inline": "tell application \"Finder\"\rif not (exists window 1) then\rmake new Finder window\rset target of front window to path to home folder as string\rend if\ractivate\rend tell",
    // "filePath" 或 "base64" 也可以使用
 },
  • shellScript
 "action": "shellScript",
 "executablePath": "/usr/bin/pmset",
 "shellArguments": ["sleepnow"], // 可选

  • openUrl
 "action": "openUrl",
 "url": "https://google.com",

附加参数:

  • width 限制特定按钮所占用的空间
  "width": 34
  • align 可以将项目固定在一侧。默认为居中
  "align": "left" // "left", "right" 或 "center"
  • bordered 你可以创建无边框按钮
  "bordered": "false" // "true" 或 "false"
  • background 允许指定按钮背景颜色
  "background": "#FF0000",

通过使用背景色"#000000"和bordered == false,你可以创建一个没有灰色背景但在按下时有背景的按钮

  • title 指定按钮标题
  "title": "hello"
  • image 指定按钮图标
  "image": {
    //可以是以下之一
    "base64": "iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAABGdB...."
    //或
    "filePath": "~/img.png"
  }
  • matchAppId 仅在活动应用程序的ID与给定正则表达式匹配时显示按钮
  "matchAppId": "Safari"

故障排除

如果无法打开首选项:

  • 打开另一个无法编辑文本的程序
    1. 打开终端应用
    2. 输入 open -a TextEdit ~/Library/Application\ Support/MTMR/items.json 命令并按 回车键

按钮或手势不起作用:

  • "上次更新后,我的MTMR不再工作了!"
  • "按钮有时不触发动作"
  • "ESC键不起作用"
  • "手势不起作用"

重新勾选或检查 🍏→ 系统偏好设置 → 安全性与隐私 → 隐私标签 → 辅助功能 → MTMR 的访问权限

致谢

@Toxblh@ReDetection 开发。

分析

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号