Dynamic Island on iPhone 14 Pro implementation on Mac using SketchyBar
NOTE: Majority of the code are hardcoded. This is my first time making a project using Shell Scripts. Some features require constantly rewriting a file instead of relying on a event system. With that being said, I have yet experienced a large impact on performance on my machine. This project is yet to be used daily and be functional. It's more of a concept.
- Homebrew
- SketchyBar
- sf-symbols (
brew install --cask sf-symbols
) - biplist (
pip3 install biplist
) (only required for notification feature)
- Clone the repository inside
~/.config/sketchybar/plugins
, take the defaultsketchybarrc
and restartsketchybar
,
mkdir -p ~/.config/sketchybar/plugins
cd ~/.config/sketchybar/plugins
git clone https://github.com/crissNb/Dynamic-Island-Sketchybar.git
mv Dynamic-Island-Sketchybar/sketchybarrc.example ../sketchybarrc
brew services restart sketchybar
Add this line of code to the beginning of your sketchybarrc
file.
PLUGIN_DIR="$HOME/.config/sketchybar/plugins"
source "$PLUGIN_DIR/Dynamic-Island-Sketchybar/config.sh"
Add this line of code alongside your other items
source "$PLUGIN_DIR/Dynamic-Island-Sketchybar/item.sh"
You can to adjust default settings with sketchybar --default
.
See sketchybarrc.example
of this repository for example on how to set up Dynamic-Island-Sketchybar.
Just go into the Dynamic-Island-Sketchybar
and pull the changes.
cd ~/.config/sketchybar/plugins/Dynamic-Island-Sketchybar
git pull
I highly suggest you to use SketchyBar and the dynamic island config files with Yabai.
If you have been using the macOS's default menu bar, I suggest you to enable the "Automatically hide and show the menu bar"
option (located in System Preferences -> Dock & Menu Bar
) and completely relying on the SketchyBar to handle the macOS menu. This repository only includes the SketchyBar configuration for Dynamic Island plugin. See my dotfiles or Sketchybar setups for preconfigured SketchyBar setups to fully replace macOS menu bar.
*If you are using my dotfiles for sketchybar, dynamic island is already included in the dotfiles. Otherwise, you will need to repeat the process above. Also see "For existing SketchyBar users".
All Dynamic Island configuration files can be found in ~/.config/sketchybar/plugins/Dynamic-Island-Sketchybar/configs/
.
general.sh
contains settings to adjust the notch size. As of right now, users need to manually adjust the notch size in pixels. If you have found an optimal notch size for MacBook with a notch, please let me know. Once enough data has been gathered, preset system will be implemented.
For module specific configurations (e.g. module sizes) can be configured individually (also in configs folder).
The default configuration files are meant for 2021 MacBook Pro 14.
Unwanted dynamic island features can be disabled in ~/.config/sketchybar/plugins/Dynamic-Island-Sketchybar/scripts/configs/general.sh
.
Setting [module_name]_ENABLED=0
will disable the module. Setting the value to 1 will enable the module.
The following table describes the capabilities of this dynamic island project (working islands). Some islands do not work properly just yet. Thus, you may experience some glitches when using them.
*saves the artwork temporarily to display it on the dynamic island.
Some features (islands) rely on a script that gets called every second instead of using NSDistributedNotficationCenter. In other words, these islands will have slower response times compared to those using the event system.
Some features (islands) rely on making a "cache" file inside of a SketchyBar config directory.
Volume feature has been disabled by default until a more optimal solution is found.
For the best experience, I suggest you to use the following features (for now):
- General Notifications
- Music
- App Switch
For General Notification feature, I suggest you to turn on the "Do Not Disturb" on your macOS settings. This way the notifications will only be shown via the dynamic island.
- Make GitHub Wiki
- Hide the notch on non-notched laptops
- Less hardcoded system...
- Lock / Unlock
- Bluetooth status
- Do not disturb
- ...and more!
If you encounter any bugs, feel free to open up an issue! Pull requests are also welcome
- 2021 MacBook Pro 14
Q: Can I use this on MacBook without a notch?
A: Yes, it should work, using this config will create a notch on your device.
Q: Can I use this with multi monitors?
A: It's possible, but there will be a notch on all displays. The dynamic island will only appear on one active display, though. This project is not intended to be used with multiple monitors.
Base sketchybarrc was taken from FelixKratz's dotfiles.
Python script to get all notifications from the macOS's database.