Skip to content

Commit 6c9ef3a

Browse files
authored
Expand README with Touch Bar customization details
Added detailed Touch Bar customization section including built-in widgets, pinning applications and folders, custom command widgets, layout rearrangement, and current limits.
1 parent 8d0f219 commit 6c9ef3a

1 file changed

Lines changed: 135 additions & 0 deletions

File tree

README.md

Lines changed: 135 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,141 @@ git clone https://github.com/offyotto-sl3/Core-Monitor.git
113113

114114
Open the project in Xcode, select the `Core-Monitor` scheme, and build. The `smc-helper` is a separate target. You can build and run Core Monitor without it — fan control simply won't be available.
115115

116+
## Touch Bar customization
117+
118+
Core Monitor includes a full Touch Bar layout editor in the app's **Touch Bar** section. The editor is no longer limited to toggling a fixed set of built-in widgets. A layout can now mix:
119+
120+
- built-in widgets such as Status, Weather, CPU, Dock, Stats, and Network
121+
- pinned applications
122+
- pinned folders
123+
- custom command widgets
124+
125+
Every item in the active layout is stored in order and rendered live in the Touch Bar preview before you apply or rearrange anything else.
126+
127+
### Built-in widgets
128+
129+
Built-in widgets are the existing Core Monitor Touch Bar modules. You can enable or disable them from the built-in widget list and then reorder them from the **Active Items** section.
130+
131+
These built-ins keep their normal live behavior:
132+
133+
- Weather continues to use WeatherKit
134+
- Status continues to show Wi-Fi, battery, and clock data
135+
- CPU/Stats widgets continue to use the current system snapshot
136+
- Dock continues to reflect the compact launcher strip
137+
138+
### Pinning applications
139+
140+
Use **Pin Applications** in the Touch Bar customization panel to add one or more `.app` bundles directly to the Touch Bar.
141+
142+
How it works:
143+
144+
- the picker accepts macOS application bundles
145+
- each selected app is stored by path, display name, and bundle identifier when available
146+
- pinned apps render as compact icon launchers in the Touch Bar
147+
- tapping a pinned app opens that application through `NSWorkspace`
148+
149+
Practical notes:
150+
151+
- pinned apps are meant to be fast launch targets, not full live widgets
152+
- app icons are pulled from the app bundle on disk each time the item is rebuilt
153+
- if you move or rename a pinned app after saving it, the stored path may go stale and that launcher may stop working until you re-pin it
154+
- if you pin many apps, the estimated width meter in the customization panel will warn when your layout is wider than a full Touch Bar
155+
156+
### Pinning folders
157+
158+
Use **Pin Folders** to add Finder locations to the Touch Bar.
159+
160+
How it works:
161+
162+
- the picker accepts directories only
163+
- each selected folder is stored by path and display name
164+
- pinned folders render as compact launcher buttons just like pinned apps
165+
- tapping a pinned folder opens it in Finder through `NSWorkspace`
166+
167+
Good use cases:
168+
169+
- a project root you open repeatedly
170+
- Downloads, Screenshots, or a working assets folder
171+
- a scripts/tools directory used during development
172+
173+
Folder pinning follows the same persistence rules as app pinning: if the path changes, re-pin it.
174+
175+
### Custom command widgets
176+
177+
The **Custom Widget** form lets you create a simple Touch Bar action backed by your own shell command.
178+
179+
Each custom widget stores:
180+
181+
- a visible title
182+
- an SF Symbol name
183+
- a shell command
184+
- a target width
185+
186+
Current behavior:
187+
188+
- the widget renders as a compact labeled button in the Touch Bar
189+
- tapping it launches `/bin/zsh -lc "<your command>"`
190+
- this is designed for quick actions, scripts, and automations rather than long-running UI
191+
192+
Examples:
193+
194+
```bash
195+
open -a Terminal
196+
```
197+
198+
```bash
199+
open ~/Downloads
200+
```
201+
202+
```bash
203+
shortcuts run "Build Project"
204+
```
205+
206+
```bash
207+
osascript -e 'display notification "Build complete" with title "Core Monitor"'
208+
```
209+
210+
Important caveats:
211+
212+
- commands run with the app's user permissions
213+
- command output is not embedded back into the Touch Bar
214+
- if a command depends on shell setup files, test it directly in `zsh -lc` form first
215+
- keep commands short and deterministic; the current implementation is an action launcher, not a terminal emulator
216+
217+
### Rearranging the layout
218+
219+
The **Active Items** list is the source of truth for Touch Bar order.
220+
221+
From that list you can:
222+
223+
- move any item up
224+
- move any item down
225+
- remove any item
226+
227+
This applies equally to:
228+
229+
- built-in widgets
230+
- pinned apps
231+
- pinned folders
232+
- custom command widgets
233+
234+
The live preview strip above the editor reflects the current order and item widths immediately.
235+
236+
### Presets and persistence
237+
238+
Presets still exist, but they now apply as structured item layouts instead of the older widget-only stack.
239+
240+
Your Touch Bar layout is persisted in user defaults and now migrates older widget-only configurations forward into the richer item model automatically. Existing users should keep their built-in widget layouts, and then add pinned apps, folders, or custom widgets on top.
241+
242+
### Current limits
243+
244+
The new customization system is intentionally practical rather than unlimited. Right now:
245+
246+
- reordering is button-driven, not drag-and-drop
247+
- pinned apps and folders are launcher buttons, not live mini-views
248+
- custom widgets launch commands but do not yet show dynamic script output
249+
- very wide layouts can still exceed the physical Touch Bar width, so use the width meter as the guardrail
250+
116251
## Compatibility
117252

118253
- macOS 12 or later

0 commit comments

Comments
 (0)