280
GitHub - Toxblh/MTMR: My TouchBar. My rules
source link: https://github.com/Toxblh/MTMR
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
README.md
My TouchBar. My rules
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 :)
Roadmap
- 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?)
Installation
- Download last release Releases
- Unzip
- Open MTMR
- Open preset
open ~/Library/Application\ Support/MTMR/items.json
and customize it. Restart MTMR to apply changes.
Preset
File for customize your preset for MTMR: open ~/Library/Application\ Support/MTMR/items.json
Built-in button types:
- escape
- exitTouchbar
- brightnessUp
- brightnessDown
- volumeDown
- volumeUp
- dock
Media Keys
- previous
- play
- next
AppleScript plugins
- weather
- battery
- sleep
- displaySleep
Built-in slider types:
- brightness
- volume
You can also make a custom buttons using these types
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
Actions:
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
Additional paramaters:
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"
Example configuration:
[ { "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" } ]
Author's presets
Credits
Built by @Toxblh and @ReDetection.
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK