My the idea is to create the program like a platform for plugins for customization TouchBar. I very like BTT and a full custom TouchBar (my BTT preset). And I want to create it. And it's my the first Swift project for MacOS :)
- Create the first prototype with TouchBar in Storyboard
- Put in stripe menu on startup the application
- Find how to simulate real buttons like brightness, volume, night shift and etc.
- Time in touchbar!
- First the weather plugin
- Find how to open full-screen TouchBar without the cross and stripe menu
- Find how to add haptic feedback
- Add icon and menu in StatusBar
- Hide from Dock
- Status menu: "preferences", "quit"
- JSON or another approch for save preset, maybe in
~/Library/Application Support/MTMR/
- Custom buttons size, actions by click
- Layout: [always left, NSSliderView for center, always right]
- Overwrite default values from item types (e.g. title for brightness)
- Custom settings for paddings and margins for buttons
- XPC Service for scripts
- UI for settings
- Import config from BTT
- System for autoupdate (maybe https://sparkle-project.org/)
Settings:
- Intarface for plugins and export like presets
- Startup at login
- Show on/off in Dock
- Show on/off in StatusBar
- On/off Haptic Feedback
Maybe:
- Refactoring the application on packages (AppleScript, JavaScript? and Swift?)
- Download last release Releases
- Unzip
- Open MTMR
- Open preset
open ~/Library/Application\ Support/MTMR/items.json
and customize it. Restart MTMR to apply changes.
File for customize your preset for MTMR: open ~/Library/Application\ Support/MTMR/items.json
- escape
- exitTouchbar
- brightnessUp
- brightnessDown
- volumeDown
- volumeUp
- dock
Media Keys
- previous
- play
- next
AppleScript plugins
- weather
- battery
- sleep
- displaySleep
- brightness
- volume
staticButton
"type": "staticButton",
"title": "esc",
appleScriptTitledButton
"type": "appleScriptTitledButton",
"refreshInterval": 60, //optional
"source": {
"filePath": "/Users/toxblh/Library/Application Support/MTMR/iTunes.nowPlaying.scpt",
// or
"inline": "tell application \"Finder\"\rmake new Finder window\rset target of front window to path to home folder as string\ractivate\rend tell",
// or
"base64": "StringInbase64"
},
timeButton
"type": "timeButton",
"formatTemplate": "HH:mm" //optional
hidKey
"action": "hidKey",
"keycode": 53,
keyPress
"action": "keyPress",
"keycode": 1,
appleScript
"action": "appleScript",
"actionAppleScript": {
"inline": "tell application \"Finder\"\rmake new Finder window\rset target of front window to path to home folder as string\ractivate\rend tell"
// "filePath" or "base64" will work as well
},
shellScript
"action": "shellScript",
"executablePath": "/usr/bin/pmset",
"shellArguments": "sleepnow", // optional
width
allow to restrict how much room a particular button will take
"width": 34
align
can stick the item to the side. default is center
"align": "left" //or "right" or "center"
[
{ "type": "escape", "width": 110 },
{ "type": "exitTouchbar", "align": "left" },
{
"type": "brightnessUp",
"align": "left",
"width": 36
},
{
"type": "staticButton",
"align": "left",
"title": "🔆",
"action": "keyPress",
"keycode": 113,
"width": 36
},
{
"type": "appleScriptTitledButton",
"source": {
"filePath": "/Users/toxblh/Library/Application Support/MTMR/iTunes.nowPlaying.scpt"
},
"refreshInterval": 1
},
{
"type": "staticButton",
"align": "left",
"image": { "base64" : "%base64Finder%"},
"action": "appleScript",
"actionAppleScript": {
"inline": "tell application \"Finder\"\rmake new Finder window\rset target of front window to path to home folder as string\ractivate\rend tell"
},
"width": 36
},
{
"type": "appleScriptTitledButton",
"source": {
"inline": "if application \"Safari\" is running then\r\ttell application \"Safari\"\r\t\trepeat with t in tabs of windows\r\t\t\ttell t\r\t\t\t\tif URL starts with \"https:\/\/music.yandex.ru\" and name does not end with \"на Яндекс.Музыке\" then\r\t\t\t\t\treturn name of t as text\r\t\t\t\tend if\r\t\t\tend tell\r\t\tend repeat\r\tend tell\rend if\rreturn \"\""
},
"refreshInterval": 1
},
{ "type": "previous", "width": 36, "align": "right" },
{ "type": "play", "width": 36, "align": "right" },
{ "type": "next", "width": 36, "align": "right" },
{ "type": "sleep", "width": 36 , "align": "right"},
{ "type": "displaySleep", "align": "right" },
{ "type": "weather", "refreshInterval": 1800, "width": 70, "align": "right" },
{ "type": "volumeDown", "width": 36 , "align": "right"},
{ "type": "volumeUp", "width": 36 , "align": "right"},
{ "type": "battery", "refreshInterval": 60 , "align": "right"},
{ "type": "appleScriptTitledButton", "refreshInterval": 1800, "source": { "filePath": "/Users/redetection/Library/Application Support/MTMR/Weather.scpt"} , "align": "right"},
{ "type": "timeButton", "formatTemplate": "HH:mm", "width": 64, "align": "right" }
]
Built by @Toxblh and @ReDetection.