diff --git a/JieqiangHe/screenshot.md b/JieqiangHe/screenshot.md new file mode 100644 index 0000000..16f3679 --- /dev/null +++ b/JieqiangHe/screenshot.md @@ -0,0 +1 @@ +![](https://hejieqiang-1257582781.cos.ap-nanjing.myqcloud.com/202303130146260.png) diff --git a/README.md b/README.md index 7e99262..5fa9117 100644 --- a/README.md +++ b/README.md @@ -1149,6 +1149,42 @@ Comment out 2 lines in items.json configuration to get the Extended version with --- +[@thdctrt preset](thdctrt/items.json) + +### Advanced preset with Smart Home controls + +Home +![](thdctrt/thdctrt-mtmr__home.png) + +Dock Page +![](thdctrt//thdctrt-mtmr__dock.png) + +HomeKit Page +![](thdctrt//thdctrt-mtmr__homekit.png) + +*Features* +- Dock on a separate page +- Dedicated HomeKit Page — control your Smart Home from Touch Bar! (requires set up HomeKit controlling Shortcuts, i.e. simple conditional switch on/off). +- Active Noise Cancelling control via pressing the Headphones button (works with AirPods Pro or Beats Solo Pro via NoiseBuddy) +- Spotify widget — single tap for play/pause, long tap to open Spotify window, plus next track button (prev track button also available, uncomment it in configs to use it). Thanks to [@bobrosoft](https://github.com/bobrosoft) for [Spotify script](https://github.com/Toxblh/MTMR-presets/blob/master/bobrosoft). +- Input source icon +- MTMR native battery/charging widget +- Date & Time widget with two timezones (actually it's two widgets side by side). Set desired timezones in config (by default your computer timezone and Moscow Time). Tap on the first widget opens Calendar, and tap on the second launches the native macOS Countdown Timer through the 'Start Timer' Shortcut. +- Keyboard illumination controls +- Sound mute button +- Show Desktop button — alternative for 'spread with 4 fingers' touchpad gesture and ⌘+F4 shortcuts on non-Touch Bar Macs. Very useful for dragging&dropping files to full-screen apps (Safari, VSCode, Photoshop, etc). + + +*How To* +- Install NoiseBuddy: https://github.com/insidegui/NoiseBuddy +- Install iStats: https://github.com/Chris911/iStats +- Create /Users/Shared/MTMR/ older and drop there `spotify.scpt` +- Of course, add `items.json` as MTMR preset +- Set up the NoiseBuddy shortcut on `⌃ ⌥ ⇧ ⌘ + {` as [shown here](thdctrt/noisebuddy-settings.png). The main idea is to use a hotkey you won't definitely ever need. If you want to change it, don't forget to tweak it in preset as well. +- To use the Timer function, you need to add Start Timer Shortcut to your Shortcuts by launching it. + +--- + [@JieqiangHe](JieqiangHe/JieqiangHe.json) ![](https://hejieqiang-1257582781.cos.ap-nanjing.myqcloud.com/202303130146260.png) diff --git a/klaus_preset/README.md b/klaus_preset/README.md new file mode 100644 index 0000000..b9e1227 --- /dev/null +++ b/klaus_preset/README.md @@ -0,0 +1,13 @@ +# Klaus' minimalist Configuration + +## The bar. + +![The Bar](images/klausMTMRpreset.png) + +- Backwards/pause-play/forwards Spotify music bar +- Space for emojis <3 +- Brightness up/down +- CPU +- Battery percentage + time remaining +- Local time +- Light/dark mode diff --git a/klaus_preset/images/klausMTMRpreset.png b/klaus_preset/images/klausMTMRpreset.png new file mode 100644 index 0000000..c342ae4 Binary files /dev/null and b/klaus_preset/images/klausMTMRpreset.png differ diff --git a/klaus_preset/items.json b/klaus_preset/items.json new file mode 100644 index 0000000..a975865 --- /dev/null +++ b/klaus_preset/items.json @@ -0,0 +1,62 @@ +[ + { "type":"staticButton", "action": "appleScript", "bordered": false, "width": 120, "title": "༉‧₊˚🕯️🖤❀༉‧₊˚.","align": "right"}, + { + "type": "appleScriptTitledButton", + "source": { + // put your path here! + "filePath": "/Users/Library/Application Support/MTMR/spotify.scpt" + }, + "action": "appleScript", + "actionAppleScript": { + "inline": "tell application \"Spotify\"\rplaypause\rend tell" + }, + "refreshInterval": 5, + "image": { + "base64": "iVBORw0KGgoAAAANSUhEUgAAAEAAAABABAMAAABYR2ztAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAYUExURUdwTB3WXx3UXh3VXx7XYBkXFRpVLRyURmIaeAQAAAAEdFJOUwDDO3fSqUUkAAABbklEQVRIx61VbW6DMAztoAeYNA7ApB6gkzhAWS24wIAL0HABaK6/pHFNEhy8TXu/kPzkPD/8cTj8K7KPAqB+K5NhQPCUrABCXe7HOUYYZxgVRLiG8RfY4DUgFFtC7cffAfZTFBwBdhWEKfgEq4ocEjgj4ZQifO6/QG9kkETp1dDeVWfRKx3XYSW0LoqY5kCElXDrQkyeCCuh6WL0M4nIWQIyzqixdfKU1koFDKvyCA8NJMzU4xiD+b4kfHRpsIyKc6hBwjVptFHVY51EMAINNDFGJITKDNQcdpX74Hz0CQ3rY5qwMp4EIxrlafzrsYZ2Veb0DkRgfNCUok4Y1fqEijfyi2b8RE9beWqa48Y/uvCNMcH9btfUi+/CGLR1vhL6Zz9N/vBlaCU+7lwY/cmJ67Ryen/2tj23PLqJBodZH8vgj544vOL4pxfI5acrSFxi8hrkU9TSKr78ZpnL50A8KPJJEo+afBblwyqf5j/iGys5j6ScrST2AAAAAElFTkSuQmCC" + }, + "longAction": "openUrl", + "longUrl": "spotify://" + }, + { "type": "previous", "width": 40, "align": "left"}, + { "type": "play", "width": 40, "align": "left"}, + { "type": "next", "width": 40, "align": "left"}, + { + "type": "brightnessDown", + "bordered": false, + "align": "right", + "width": 36 + }, + { + "type": "brightnessUp", + "bordered": false, + "align": "right", + "width": 36 + }, + { + "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}'" + }, + "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": { + "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": "battery", "align": "right", "bordered": false }, + { + "type": "timeButton", + "align": "right", + "formatTemplate": "h:mm a", + "bordered": false + }, + { "type": "darkMode", "align": "right"} + ] \ No newline at end of file diff --git a/lnugraha/items.json b/lnugraha/items.json index 6b58f91..1a40998 100644 --- a/lnugraha/items.json +++ b/lnugraha/items.json @@ -16,10 +16,7 @@ "refreshInterval": 1, "actions": [ {"trigger": "singleTap", "action": "appleScript", - "actionAppleScript": { "inline": "do shell script \"/usr/sbin/networksetup -setairportpower en0 on\"" } - }, - {"trigger": "doubleTap", "action": "appleScript", - "actionAppleScript": { "inline": "do shell script \"/usr/sbin/networksetup -setairportpower en0 off\"" } + "actionAppleScript": { "inline": "inline": "set state to do shell script \"/usr/sbin/networksetup -getairportpower en0\"\nif state=\"Wi-Fi Power (en0): On\" then\n\tset val to \"off\"\nelse\n\tset val to \"on\"\nend if\ndo shell script (\"/usr/sbin/networksetup -setairportpower en0 \" & val)" } }, {"trigger": "tripleTap", "action": "appleScript", "actionAppleScript": { "inline": "tell application \"System Preferences\" to activate reveal pane id \"com.apple.preference.network\"" } diff --git a/patcheco/README.md b/patcheco/README.md new file mode 100644 index 0000000..905ce72 --- /dev/null +++ b/patcheco/README.md @@ -0,0 +1,41 @@ +# Patcheco's Configuration for Silicon M1 Macbook + +## Main Bar + +![Main Bar](images/main_bar.png) + +- M1 SOC temperature script - shows the 3 temperature sensors of the SOC (getSOCTemp) +- Ram script - shows the used ram / total ram (used%) swap (freeRam) +- Pomodoro - custom build of MTMR where the tomato 🍅 was replaced by the two balls +- SMC control group +- Turn off display with bike icon +- Night light +- IlluminationDown +- IlluminationUp +- BrightnessDown +- BrightnessUp +- Mute +- VolumeDown +- VolumeUp +- Battery - long press sleep +- Clock +- Delete key - custom cloud image + +## SMC control group + +![SMC control group](images/smc_bar.png) + +- Close +- Show fan control status script (fanStatus) +- Enable manual fan control button script (fanManual) +- Enable auto fan control button script (fanAuto) +- Show battery charging configuration (statusCharging) +- Enable battery charging when plugged in (enableCharging) +- Disable battery charging when plugged in (disableCharging) + + +## Info + +I've added all my custom compiled tools in the scrips folder: +- SMC tool that supports setting a custom fan speed for silicon macbooks (custom build based on this repo https://github.com/hholtmann/smcFanControl) +- temp_sensor2 that shows all temperature sensors every 5 seconds (custom build based on this repo https://github.com/fermion-star/apple_sensors) diff --git a/patcheco/images/main_bar.png b/patcheco/images/main_bar.png new file mode 100644 index 0000000..2493159 Binary files /dev/null and b/patcheco/images/main_bar.png differ diff --git a/patcheco/images/smc_bar.png b/patcheco/images/smc_bar.png new file mode 100644 index 0000000..98cab20 Binary files /dev/null and b/patcheco/images/smc_bar.png differ diff --git a/patcheco/items.json b/patcheco/items.json new file mode 100644 index 0000000..65cfb9e --- /dev/null +++ b/patcheco/items.json @@ -0,0 +1,188 @@ +[ + ////RESET ACESSIBILITY: sudo tccutil reset Accessibility `osascript -e 'id of app "MTMR"'` + + + { + "type": "group", + "align": "center", + "title": "", + "items": [ + { "type": "close", "align": "left", "bordered": false, "width": 64}, + { + "type": "shellScriptTitledButton", + "refreshInterval": 200, // in seconds + "source": { + "inline": "/Users/balele/Documents/m1Binaries/fanStatus" + }, + "align": "right", + "bordered": false + }, + { + "type": "staticButton", + "title": "fan manual", + "align": "right", + "bordered": true, + "actions": [ + { + "trigger": "singleTap", + "action": "shellScript", + "executablePath": "/Users/balele/Documents/m1Binaries/fanManual", + } + ], + }, + { + "type": "staticButton", + "title": "fan auto", + "align": "right", + "bordered": true, + "actions": [ + { + "trigger": "singleTap", + "action": "shellScript", + "executablePath": "/Users/balele/Documents/m1Binaries/fanAuto", + } + ], + }, + { + "type": "shellScriptTitledButton", + //"width": 200, + "refreshInterval": 200, // in seconds + "source": { + "inline": "/Users/balele/Documents/m1Binaries/statusCharging" + }, + "align": "right", + "bordered": false + }, + { + "type": "staticButton", + "title": "enable charging", + "align": "right", + "bordered": true, + "actions": [ + { + "trigger": "singleTap", + "action": "shellScript", + "executablePath": "/Users/balele/Documents/m1Binaries/enableCharging", + } + ], + }, + { + "type": "staticButton", + "title": "disable charging", + "align": "right", + "bordered": true, + "actions": [ + { + "trigger": "singleTap", + "action": "shellScript", + "executablePath": "/Users/balele/Documents/m1Binaries/disableCharging", + } + ], + }, + ] + }, + + { + "type": "shellScriptTitledButton", + //"width": 200, + "refreshInterval": 20, // in seconds + "source": { + "inline": "/Users/balele/Projects/MTMR_scripts/getSOCTemp" + //"filePath": "/Users/balele/Projects/apple_sensors/getSOCTemp" + }, + "align": "left", + "bordered": false + }, + + { + "type": "shellScriptTitledButton", + //"width": 200, + "refreshInterval": 200, // in seconds + "source": { + "inline": "/Users/balele/Projects/MTMR_scripts/freeRam" + //"filePath": "/Users/balele/Projects/apple_sensors/getSOCTemp" + }, + "align": "left", + "bordered": false + }, + + + /* + { + "type": "staticButton", + "title": "conf", + "width": 55, + "bordered": true, + "align": "left", + "action": "shellScript", + "executablePath": "/opt/homebrew/bin/subl", + //"shellArguments": " ~/.config/yabai/yabairc ~/.config/skhd/skhdrc ~/.config/mpv/mpv.conf ~/.qutebrowser/config.py ~/Library/Application\\ Support/MTMR/items.json", + }, + */ + { "type": "pomodoro", "width": 80, "bordered": false, "align": "left", + "workTime": 2700, // set time work in seconds. Default 1500 (25 min) + "restTime": 900, // set time rest in seconds. Default 300 (5 min) +}, + + { "type": "displaySleep", "width": 40, "bordered": false, "align": "right", "title": "", "image": { + // Or you can specify a filePath here. + // Images will be resized to 24x24. + // "filePath": "~/myproject/myimage.jpg" // or "/fixed/path/to/the.png" + "base64": + "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zmpRr4I8leXLfV7t4rTiDrnooosCfjZbk/NCvbBs2bLQu3dvC1UzAYQoYsAFbiRoYnx6/vnnJ7tkh55wwgm2gJII/xRqx8c4vtznYzx9VxQIwli0aFGbHtwIUUs/p4S86667mueiCROzbZF6mpqga665JqkaUU+45s8++6x1TWRXh9nW8kII5vHHH6/YrKJAoJCaNFFmgH379jX9y+on4ukNHXh+EvBcNt100/Dggw9a6Fp0fLrlllvapybM19Wbh6bn56abbioLl0CfUMhLL70UCJ0QHjn44IMtXIIwONhOmjQpoMoUaudgiF2RC6+TO5FsgqtEJw444ID6BOKZ9pOArh0yZEjYYostTJX5OuWHDx9uWQz2p59+Gu677z5V2fb/7rvvwvfff192j5AhlDKoicMOOyzz731da/N544DOjTfeGDp1Kl+TnNZlSy677DJbjITeufsA4J3yPGDMaBQ8SBYnQDxMwstrp/JybkqlDADwqxPDy2EIQUj6hlThB7XEqrruuuvMa2L7Yx8YECtTgGqIvSmpLeHUmvpxiAZleE6xreKQJ2GAi8DgndAPCwhg1xQBY+aPMXLYnTx5sqEzxmoAK93sEencD4LDGoxjiFOe1h9//BF+/PFH+yNgiNpicmM1N3PmTNv67733Xthpp52C1JLuElhB7DoBgyLA1wgYN26cXYx52vAxcuRIK+Lscemll5oqZjyoItQsAoNH1BBjZDcUjZm53HHHHcMXX3wRNtlkk6p2fIsdgjC0zQlJL1y4MOy9997h5Zdfzk7S3FngBipk4Afm8xymWOkIdIcddrATOXcdxIsEMnSEUehH0JZqSzRJWfHS9Spn9eLaA0QPFFZnUUydOtW+t9pqq/Doo4/a4bDI/UXVMmbwPdCH5tWXx/mOJaRmRWNVyUpobm62+wsCZ9gNbAHblmgoBu/DDz8Uem5K9Pa5554Ln332mdkEzhcYOKk9dOuECROy9v369bPQvArA4+4BYDAxn8KrNs07T11//fWBRcadzZ577llGDiH079/fdsSSJUtsormwYsengHl58cUXbXcjFHbWV199FTbccEOLIhN+mT59ujVlTMy1hyavnkAAxo4dmxkhbAdqhvT222/P2go3K3AZ6nw9K4rtjWGEQQG77uKLL9an9ZN9lDKbb765fYqW59XjFeXVljGx4mO4++67jS90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" + },}, + + { "type": "nightShift", "align": "right", "width": 38,}, + { "type": "illuminationDown", "width": 32, "bordered": false, "align": "right" }, + { "type": "illuminationUp", "width": 32, "bordered": false, "align": "right" }, + { "type": "brightnessDown", "width": 32, "bordered": false, "align": "right" }, + { "type": "brightnessUp", "width": 32, "bordered": false, "align": "right" }, + + { + "type": "mute", + "bordered": false, + "align": "right", + "width": 28 + }, + { + "type": "volumeDown", + "bordered": false, + "align": "right", + "width": 28 + }, + { + "type": "volumeUp", + "bordered": false, + "align": "right", + "width": 28 + }, + { + "type": "battery", + "align": "right", + "refreshInterval": 200, + "bordered": false, + "longAction": "shellScript", + "longExecutablePath": "/usr/bin/pmset", + "longShellArguments": ["sleepnow"] + }, + { + "type": "timeButton", + "formatTemplate": "HH:mm", + "align": "right", + "bordered": false, + }, + { + "type": "delete", + "title": "", + "width": 60, + "align": "right", + "bordered": false, + "image": { + // Or you can specify a filePath here. + // Images will be resized to 24x24. + // "filePath": "~/myproject/myimage.jpg" // or "/fixed/path/to/the.png" + "base64": + "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" + } + }, +] diff --git a/patcheco/scripts/disableCharging b/patcheco/scripts/disableCharging new file mode 100755 index 0000000..804e189 --- /dev/null +++ b/patcheco/scripts/disableCharging @@ -0,0 +1,3 @@ +#!/bin/bash + +sudo /usr/local/bin/smcMod -k CH0B -w 02 && sudo /usr/local/bin/smcMod -k CH0C -w 02 \ No newline at end of file diff --git a/patcheco/scripts/enableCharging b/patcheco/scripts/enableCharging new file mode 100755 index 0000000..8ca2012 --- /dev/null +++ b/patcheco/scripts/enableCharging @@ -0,0 +1,3 @@ +#!/bin/bash + +sudo /usr/local/bin/smcMod -k CH0B -w 00 && sudo /usr/local/bin/smcMod -k CH0C -w 00 \ No newline at end of file diff --git a/patcheco/scripts/fanAuto b/patcheco/scripts/fanAuto new file mode 100755 index 0000000..6f50b4e --- /dev/null +++ b/patcheco/scripts/fanAuto @@ -0,0 +1,3 @@ +#!/bin/bash + +sudo /usr/local/bin/smcMod -k F0Md -w 00 \ No newline at end of file diff --git a/patcheco/scripts/fanManual b/patcheco/scripts/fanManual new file mode 100755 index 0000000..a3ec9a7 --- /dev/null +++ b/patcheco/scripts/fanManual @@ -0,0 +1,3 @@ +#!/bin/bash + +sudo /usr/local/bin/smcMod -k F0Md -w 01 && sudo /usr/local/bin/smcMod -k F0Tg -p 3000 \ No newline at end of file diff --git a/patcheco/scripts/fanStatus b/patcheco/scripts/fanStatus new file mode 100755 index 0000000..27f7ce5 --- /dev/null +++ b/patcheco/scripts/fanStatus @@ -0,0 +1,11 @@ +#!/bin/bash + +value=$(/usr/local/bin/smcMod -k F0Md -r | sed -n 's/.*\[ui8 \] \([A-Za-z0-9]\).*/\1/p') + +if [[ "$value" == "0" ]]; then + echo "fan auto" +else + echo "fan manual" +fi + + diff --git a/patcheco/scripts/freeHdd b/patcheco/scripts/freeHdd new file mode 100755 index 0000000..b78b3fe --- /dev/null +++ b/patcheco/scripts/freeHdd @@ -0,0 +1,17 @@ +#!/bin/bash + +# Get the total and available disk space in bytes +total_space=$(df -k . | awk 'NR==2{print $2}') +available_space=$(df -k . | awk 'NR==2{print $4}') +occupied_space=$(df -k . | awk 'NR==2{print $3}') + +# Calculate the percentage of free space +percentage_occupied=$(awk -v total="$total_space" -v occupied="$occupied_space" 'BEGIN { printf("%.0f", (occupied/total) * 100) }') + +# Calculate the occupied space in GB +occupied_space_gb=$(awk -v occupied="$occupied_space" 'BEGIN { printf("%.2f", occupied / 1024 / 1024) }') + +# Output the results +#echo "HDD Free Space: $percentage_free%" +#echo "HDD Occupied Space: $occupied_space_gb GB" +echo "$occupied_space_gb($percentage_occupied%)" \ No newline at end of file diff --git a/patcheco/scripts/freeRam b/patcheco/scripts/freeRam new file mode 100755 index 0000000..ea6b8c3 --- /dev/null +++ b/patcheco/scripts/freeRam @@ -0,0 +1,46 @@ +#!/bin/bash + +# Get the memory statistics +memory_stats=$(vm_stat) + +# Get the memory used in bytes +memory_used=$(echo "$memory_stats" | awk '/Pages active/ {print $3 * 16384}') + +# Get the cached files size in bytes +cached_files=$(echo "$memory_stats" | awk '/Pages speculative/ {print $3 * 16384}') + +# Get the swap used in bytes +swap_used=$(echo "$memory_stats" | awk '/Swapouts/ {print $3 * 16384}') + +# Calculate the total memory +total_memory=$(sysctl -n hw.memsize 2>/dev/null) + +# Check if total_memory is empty +if [ -z "$total_memory" ]; then + echo "Failed to retrieve total memory." + exit 1 +fi + +# Calculate the free memory +free_memory=$((total_memory - memory_used)) + +# Calculate memory usage percentage +memory_usage_percentage=$(awk -v used="$memory_used" -v total="$total_memory" 'BEGIN{ printf "%.1f", (used/total)*100 }') + +# Convert bytes to gigabytes with one decimal place +memory_used_gb=$(echo "scale=1; $memory_used / 1024^3" | bc) +cached_files_gb=$(echo "scale=1; $cached_files / 1024^3" | bc) +swap_used_gb=$(echo "scale=1; $swap_used / 1024^3" | bc) +free_memory_gb=$(echo "scale=1; $free_memory / 1024^3" | bc) +total_memory_gb=$(echo "scale=1; $total_memory / 1024^3" | bc) + +# Print the results +#echo "Memory Used: $memory_used_gb GB ($memory_usage_percentage%)" +#echo "Cached Files: $cached_files_gb GB" +#echo "Swap Used: $swap_used_gb GB" +#echo "Free Memory: $free_memory_gb GB" +#echo "Total Memory: $total_memory_gb GB" + + +echo "$free_memory_gb/$total_memory_gb($memory_usage_percentage%) $swap_used_gb" + diff --git a/patcheco/scripts/getSOCTemp b/patcheco/scripts/getSOCTemp new file mode 100755 index 0000000..cb6e672 --- /dev/null +++ b/patcheco/scripts/getSOCTemp @@ -0,0 +1,3 @@ +#!/bin/bash + +/Users/balele/Projects/MTMR_scripts/temp_sensor2 | awk -F ', ' '{print $(NF-26) "/" $(NF-36) "/" $(NF-45)}' diff --git a/patcheco/scripts/smcInstructions b/patcheco/scripts/smcInstructions new file mode 100644 index 0000000..efb5bec --- /dev/null +++ b/patcheco/scripts/smcInstructions @@ -0,0 +1,105 @@ +https://github.com/hholtmann/smcFanControl/tree/master/smc-command +https://github.com/actuallymentor/battery/issues/20#issuecomment-1364540704 + +--------COMMANDS-------- +fan mode manual -> sudo smc -k F0Md -w 01 +fan mode auto -> sudo smc -k F0Md -w 00 +set fan speed 3000rpm -> sudo smc -k F0Tg -p 3000 + +enable battery charging when connected to power (use both commands) -> sudo smc -k CH0B -w 00 && sudo smc -k CH0C -w 00 +disable battery charging when connected to power (use both commands) -> sudo smc -k CH0B -w 02 && sudo smc -k CH0C -w 02 +set force discharge battery even when connected to power -> sudo smc -k CH0I -w 01 +restore normal behavior (use power connector for power instead of battery) -> sudo smc -k CH0I -w 00 + + + +Cmnd_Alias BATTERYOFF = /usr/local/bin/smcMod -k CH0B -w 02, /usr/local/bin/smcMod -k CH0C -w 02, /usr/local/bin/smcMod -k CH0B -r, /usr/local/bin/smcMod -k CH0C -r +Cmnd_Alias BATTERYON = /usr/local/bin/smcMod -k CH0B -w 00, /usr/local/bin/smcMod -k CH0C -w 00 +Cmnd_Alias DISCHARGEOFF = /usr/local/bin/smcMod -k CH0I -w 00, /usr/local/bin/smcMod -k CH0I -r +Cmnd_Alias DISCHARGEON = /usr/local/bin/smcMod -k CH0I -w 01 +ALL ALL = NOPASSWD: BATTERYOFF +ALL ALL = NOPASSWD: BATTERYON +ALL ALL = NOPASSWD: DISCHARGEOFF +ALL ALL = NOPASSWD: DISCHARGEON + + + + + +-----Investigation----- + +F0Mn - Fan minimum speed +F0Mx - Fan maximum speed +F0Sf - Fan safe speed +F0Tg - Fan target speed +FS! - See if fans are in automatic or forced mode +F0Md - AUTOMATIC or FORCED for m1 mac + + +Cmnd_Alias BATTERYOFF = /usr/local/bin/smcMod -k CH0B -w 02, /usr/local/bin/smcMod -k CH0C -w 02, /usr/local/bin/smcMod -k CH0B -r, /usr/local/bin/smcMod -k CH0C -r +Cmnd_Alias BATTERYON = /usr/local/bin/smcMod -k CH0B -w 00, /usr/local/bin/smcMod -k CH0C -w 00 +Cmnd_Alias DISCHARGEOFF = /usr/local/bin/smcMod -k CH0I -w 00, /usr/local/bin/smcMod -k CH0I -r +Cmnd_Alias DISCHARGEON = /usr/local/bin/smcMod -k CH0I -w 01 + + + +# Re:discharging, we're using keys uncovered by @howie65: https://github.com/actuallymentor/battery/issues/20#issuecomment-1364540704 +# CH0I seems to be the "disable the adapter" key +function enable_discharging() { + log "🔽🪫 Enabling battery discharging" + sudo smc -k CH0I -w 01 +} + +function disable_discharging() { + log "🔼🪫 Disabling battery discharging" + sudo smc -k CH0I -w 00 +} + +# Re:charging, Aldente uses CH0B https://github.com/davidwernhart/AlDente/blob/0abfeafbd2232d16116c0fe5a6fbd0acb6f9826b/AlDente/Helper.swift#L227 +# but @joelucid uses CH0C https://github.com/davidwernhart/AlDente/issues/52#issuecomment-1019933570 +# so I'm using both since with only CH0B I noticed sometimes during sleep it does trigger charging +function enable_charging() { + log "🔌🔋 Enabling battery charging" + sudo smc -k CH0B -w 00 + sudo smc -k CH0C -w 00 + disable_discharging +} + +function disable_charging() { + log "🔌🪫 Disabling battery charging" + sudo smc -k CH0B -w 02 + sudo smc -k CH0C -w 02 +} + +function get_smc_charging_status() { + hex_status=$( smc -k CH0B -r | awk '{print $4}' | sed s:\):: ) + if [[ "$hex_status" == "00" ]]; then + echo "enabled" + else + echo "disabled" + fi +} + +function get_smc_discharging_status() { + hex_status=$( smc -k CH0I -r | awk '{print $4}' | sed s:\):: ) + if [[ "$hex_status" == "0" ]]; then + echo "not discharging" + else + echo "discharging" + fi +} + +function get_battery_percentage() { + battery_percentage=`pmset -g batt | tail -n1 | awk '{print $3}' | sed s:\%\;::` + echo "$battery_percentage" +} + +function get_remaining_time() { + time_remaining=`pmset -g batt | tail -n1 | awk '{print $5}'` + echo "$time_remaining" +} + +function get_maintain_percentage() { + maintain_percentage=$( cat $maintain_percentage_tracker_file 2> /dev/null ) + echo "$maintain_percentage" +} diff --git a/patcheco/scripts/smcMod b/patcheco/scripts/smcMod new file mode 100755 index 0000000..f643987 Binary files /dev/null and b/patcheco/scripts/smcMod differ diff --git a/patcheco/scripts/statusCharging b/patcheco/scripts/statusCharging new file mode 100755 index 0000000..5dc7d8d --- /dev/null +++ b/patcheco/scripts/statusCharging @@ -0,0 +1,9 @@ +#!/bin/bash + +hex_status=$(/usr/local/bin/smcMod -k CH0B -r | awk '{print $4}' | sed 's/://; s/)$//') + +if [[ "$hex_status" == "00" ]]; then + echo "charging enabled" +else + echo "charging disabled" +fi diff --git a/patcheco/scripts/temp_sensor2 b/patcheco/scripts/temp_sensor2 new file mode 100755 index 0000000..ef85fdc Binary files /dev/null and b/patcheco/scripts/temp_sensor2 differ diff --git a/thdctrt/README.md b/thdctrt/README.md new file mode 100644 index 0000000..7818b52 --- /dev/null +++ b/thdctrt/README.md @@ -0,0 +1,32 @@ +# thdctrt-mtmr-preset +### Advanced preset with Smart Home controls + +Home +![](thdctrt-mtmr__home.png) + +Dock Page +![](/thdctrt-mtmr__dock.png) + +HomeKit Page +![](/thdctrt-mtmr__homekit.png) + +*Features* +- Dock on a separate page +- Dedicated HomeKit Page — control your Smart Home from Touch Bar! (requires set up HomeKit controlling Shortcuts, i.e. simple conditional switch on/off). +- Active Noise Cancelling control via pressing the Headphones button (works with AirPods Pro or Beats Solo Pro via NoiseBuddy) +- Spotify widget — single tap for play/pause, long tap to open Spotify window, plus next track button (prev track button also available, uncomment it in configs to use it). Thanks to [@bobrosoft](https://github.com/bobrosoft) for [Spotify script](https://github.com/Toxblh/MTMR-presets/blob/master/bobrosoft). +- Input source icon +- MTMR native battery/charging widget +- Date & Time widget with two timezones (actually it's two widgets side by side). Set desired timezones in config (by default your computer timezone and Moscow Time). Tap on the first widget opens Calendar, and tap on the second launches the native macOS Countdown Timer through the 'Start Timer' Shortcut. +- Keyboard illumination controls +- Sound mute button +- Show Desktop button — alternative for 'spread with 4 fingers' touchpad gesture and ⌘+F4 shortcuts on non-Touch Bar Macs. Very useful for dragging&dropping files to full-screen apps (Safari, VSCode, Photoshop, etc). + + +*How To* +- Install NoiseBuddy: https://github.com/insidegui/NoiseBuddy +- Install iStats: https://github.com/Chris911/iStats +- Create /Users/Shared/MTMR/ older and drop there `spotify.scpt` +- Of course, add `items.json` as MTMR preset +- Set up the NoiseBuddy shortcut on `⌃ ⌥ ⇧ ⌘ + {` as [shown here](/noisebuddy-settings.png). The main idea is to use a hotkey you won't definitely ever need. If you want to change it, don't forget to tweak it in preset as well. +- To use the Timer function, you need to add Start Timer Shortcut to your Shortcuts by launching it. diff --git a/thdctrt/Start Timer.shortcut b/thdctrt/Start Timer.shortcut new file mode 100644 index 0000000..2e2168c Binary files /dev/null and b/thdctrt/Start Timer.shortcut differ diff --git a/thdctrt/items.json b/thdctrt/items.json new file mode 100644 index 0000000..e07fd30 --- /dev/null +++ b/thdctrt/items.json @@ -0,0 +1,197 @@ +[ + { + "type": "group", + "align": "left", + "bordered": false, + "title": "🚀", + "background": "#000000", + "width": 40, + "items": [ + { + "type": "close", + "align": "left", + "width": 100 + }, + { + "type": "dock", + "flip": false, + "align": "left", + "bordered": false, + "autoResize": false, + "refreshInterval": 5 + } + ] + }, + { + "type": "group", + "align": "left", + "bordered": false, + "title": "🛋️", + "width": 40, + "items": [ + { + "type": "close", + "width": 100, + "align": "left" + }, + { + "type": "appleScriptTitledButton", + "source": { + "inline": "return {\"🎄 Jingle Bells\"}" //SET YOUR NAME + }, + "refreshInterval": 1, + "action": "appleScript", + "actionAppleScript": { + "inline": "tell application \"Shortcuts Events\" to run the shortcut named \"$NAME$\"" //CHANGE $NAME$ TO YOUR SHORTCUT NAME + }, + "align": "left" + }, + { + "type": "appleScriptTitledButton", + "source": { + "inline": "return {\"🍳 Kitchen\"}" //SET YOUR NAME + }, + "refreshInterval": 1, + "action": "appleScript", + "actionAppleScript": { + "inline": "tell application \"Shortcuts Events\" to run the shortcut named \"$NAME$\"" //CHANGE $NAME$ TO YOUR SHORTCUT NAME + }, + "align": "left" + }, + { + "type": "appleScriptTitledButton", + "source": { + "inline": "return {\"🛋️ Bra\"}" //SET YOUR NAME + }, + "refreshInterval": 1, + "action": "appleScript", + "actionAppleScript": { + "inline": "tell application \"Shortcuts Events\" to run the shortcut named \"$NAME$\"" //CHANGE $NAME$ TO YOUR SHORTCUT NAME + }, + "align": "left" + }, + { + "type": "appleScriptTitledButton", + "source": { + "inline": "return {\"🍿 Cinema Mode\"}" //SET YOUR NAME + }, + "refreshInterval": 1, + "action": "appleScript", + "actionAppleScript": { + "inline": "tell application \"Shortcuts Events\" to run the shortcut named \"$NAME$\"" //CHANGE $NAME$ TO YOUR SHORTCUT NAME + }, + "title": "🍿 Cinema Mode", + "align": "left" + } + ] + }, + { + // ANC control + "type": "staticButton", + "title": " 🎧 ", + "width": 40, + "action": "appleScript", + "actionAppleScript": { + "inline": "tell application \"System Events\" to key code 33 using {command down, shift down, option down, control down}" + }, + "bordered": true, + "align": "left" + }, + //SPOTIFY Start + { + "type": "appleScriptTitledButton", + "align": "left", + "source": { + "filePath": "/Users/Shared/MTMR/spotify.scpt" + }, + "action": "appleScript", + "actionAppleScript": { + "inline": "tell application \"Spotify\"\rplaypause\rend tell" + }, + "refreshInterval": 5, + "image": { + "base64": "iVBORw0KGgoAAAANSUhEUgAAAEAAAABABAMAAABYR2ztAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAYUExURUdwTB3WXx3UXh3VXx7XYBkXFRpVLRyURmIaeAQAAAAEdFJOUwDDO3fSqUUkAAABbklEQVRIx61VbW6DMAztoAeYNA7ApB6gkzhAWS24wIAL0HABaK6/pHFNEhy8TXu/kPzkPD/8cTj8K7KPAqB+K5NhQPCUrABCXe7HOUYYZxgVRLiG8RfY4DUgFFtC7cffAfZTFBwBdhWEKfgEq4ocEjgj4ZQifO6/QG9kkETp1dDeVWfRKx3XYSW0LoqY5kCElXDrQkyeCCuh6WL0M4nIWQIyzqixdfKU1koFDKvyCA8NJMzU4xiD+b4kfHRpsIyKc6hBwjVptFHVY51EMAINNDFGJITKDNQcdpX74Hz0CQ3rY5qwMp4EIxrlafzrsYZ2Veb0DkRgfNCUok4Y1fqEijfyi2b8RE9beWqa48Y/uvCNMcH9btfUi+/CGLR1vhL6Zz9N/vBlaCU+7lwY/cmJ67Ryen/2tj23PLqJBodZH8vgj544vOL4pxfI5acrSFxi8hrkU9TSKr78ZpnL50A8KPJJEo+afBblwyqf5j/iGys5j6ScrST2AAAAAElFTkSuQmCC" + }, + "longAction": "openUrl", + "longUrl": "spotify://", + "tripleAction": "appleScript" + }, + { + "type": "next", + "width": 44, + "align": "left", + "bordered": false + }, + //UNCOMMENT TO HAVE PREV BUTTON + // { "type": "previous", "width": 44, "align": "left" }, + //SPOTIFY End + { + "type": "inputsource", + "align": "right", + "bordered": false + }, + //UNCOMMENT TO HAVE CPU TEMP + // { + // "type": "appleScriptTitledButton", + // "source": { + // "inline": "set temp to do shell script \"/usr/local/bin/iStats cpu --no-graphs --no-labels\"\rreturn temp" + // }, + // "refreshInterval": 50, + // "align": "right", + // "width": 56 + // }, + { + "type": "battery", + "align": "right", + "bordered": false + }, + { + "type": "timeButton", + "formatTemplate": " MMM dd E HH:mm", + "align": "right", + "bordered": false, + "action": "openUrl", + "url": "ical://" + }, + { + "type": "timeButton", + "formatTemplate": "HH:mm", + "align": "right", + "timeZone": "UTC+3", + "bordered": false, + "width": 40, + "action": "appleScript", + "actionAppleScript": { + "inline": "tell application \"Shortcuts Events\" to run the shortcut named \"Start Timer\"" + } + }, + { + "type": "illuminationDown", + "width": 40, + "bordered": false, + "align": "right" + }, + { + "type": "illuminationUp", + "width": 40, + "bordered": false, + "align": "right" + }, + { + "type": "mute", + "width": 40, + "align": "right", + "bordered": false + }, + { + "type": "staticButton", + "title": " 👀 ", + "action": "keyPress", + "keycode": 103, + "width": 40, + "align": "right", + "bordered": false + } + //UNCOMMENT TO HAVE DARK MODE BUTTON + // , { "type": "darkMode", "align": "right"} +] \ No newline at end of file diff --git a/thdctrt/noisebuddy-settings.png b/thdctrt/noisebuddy-settings.png new file mode 100644 index 0000000..ba67dd2 Binary files /dev/null and b/thdctrt/noisebuddy-settings.png differ diff --git a/thdctrt/spotify.scpt b/thdctrt/spotify.scpt new file mode 100644 index 0000000..20009b6 Binary files /dev/null and b/thdctrt/spotify.scpt differ diff --git a/thdctrt/thdctrt-mtmr__dock.png b/thdctrt/thdctrt-mtmr__dock.png new file mode 100644 index 0000000..6a1fb48 Binary files /dev/null and b/thdctrt/thdctrt-mtmr__dock.png differ diff --git a/thdctrt/thdctrt-mtmr__home.png b/thdctrt/thdctrt-mtmr__home.png new file mode 100644 index 0000000..01af296 Binary files /dev/null and b/thdctrt/thdctrt-mtmr__home.png differ diff --git a/thdctrt/thdctrt-mtmr__homekit.png b/thdctrt/thdctrt-mtmr__homekit.png new file mode 100644 index 0000000..2bc17dd Binary files /dev/null and b/thdctrt/thdctrt-mtmr__homekit.png differ