Tracking issue for Cephei Status Bar. Yes, it's actually going to be a thing now. I blame @Shade-Zepheri.
My concept of the major points:
cepheid will come into existence, and have dual purpose as the new home of the HBPreferences IPC server and CSB server.
This will coordinate icon adds/removes/updates across all apps, allowing any process (including apps, command line tools, and daemons) to manipulate icons. This matches lsb behavior except that its server is in SpringBoard. Unlike lsb, icons are rendered in the daemon and sent over IPC to each app.
Provide a compatibility mode for libstatusbar API, while also not requiring the user to uninstall libstatusbar if they don't want to.
This seems possible as far as I know so far, but trouble would be with package dependencies. I can't make Provides: libstatusbar work like "Cephei provides libstatusbar but only if libstatusbar isn't installed", so you'd need to install libstatusbar anyway just to fulfill the dependency. So not sure if this is even feasible, unless we decide fuck it everyone with Cephei installed gets CSB whether they like it or not.
Provide a really nice new API. HBStatusBarItem and HBStatusBarController (not yet defined). You can either ask CSB to render icons for you by setting a few properties, including displaying text, or subclass and override some methods to render your own icon. Using images from UIKit.framework is discouraged and we now push you to use your own bundle for your assets.
See if we can integrate more natively with the status bar.
lsb does some hacky stuff to manually add UIStatusBarItemViews to the UIStatusBarForegroundView and shuffle the frame around as necessary. I haven't looked into it but I have a feeling it should be just fine to add it to the UIStatusBar data source. Hopefully this should make it feel just like a native part of the OS. We'll see.
Somehow support iPhone X icons.
How? Who knows! We'll probably have to build some custom UI and make a lot of assumptions, for instance that the icon can replace a current icon, show for a few seconds, and then swap back. That goes against the libstatusbar API assumption that the icon will always be visible if isVisible == YES. As the new API has a fresh start we can add properties for that, but lsb compat API will need to make this assumption. Of course all icons will still show in the "classic" status bar inside the control center.
Cephei supports back to iOS 5, so this must support the old (iOS 5-6), new (iOS 7-10), newer (iOS 11), and newest (iPhone X) status bars.
Also, a longstanding bug I'd want to fix is that iOS 7 uses "Black" as a status bar style for basically everywhere, but iOS 6 and older also use "Black" for the solid color status bar (it was always a black background before iOS 6). There should be some way to differentiate these. I made this handy dandy table that explains it a bit better.
Tracking issue for Cephei Status Bar. Yes, it's actually going to be a thing now. I blame @Shade-Zepheri.
My concept of the major points:
cepheid
will come into existence, and have dual purpose as the new home of the HBPreferences IPC server and CSB server.This will coordinate icon adds/removes/updates across all apps, allowing any process (including apps, command line tools, and daemons) to manipulate icons. This matches lsb behavior except that its server is in SpringBoard. Unlike lsb, icons are rendered in the daemon and sent over IPC to each app.
This seems possible as far as I know so far, but trouble would be with package dependencies. I can't make
Provides: libstatusbar
work like "Cephei provides libstatusbar but only if libstatusbar isn't installed", so you'd need to install libstatusbar anyway just to fulfill the dependency. So not sure if this is even feasible, unless we decide fuck it everyone with Cephei installed gets CSB whether they like it or not.HBStatusBarItem and HBStatusBarController (not yet defined). You can either ask CSB to render icons for you by setting a few properties, including displaying text, or subclass and override some methods to render your own icon. Using images from UIKit.framework is discouraged and we now push you to use your own bundle for your assets.
lsb does some hacky stuff to manually add UIStatusBarItemViews to the UIStatusBarForegroundView and shuffle the frame around as necessary. I haven't looked into it but I have a feeling it should be just fine to add it to the UIStatusBar data source. Hopefully this should make it feel just like a native part of the OS. We'll see.
How? Who knows! We'll probably have to build some custom UI and make a lot of assumptions, for instance that the icon can replace a current icon, show for a few seconds, and then swap back. That goes against the libstatusbar API assumption that the icon will always be visible if
isVisible == YES
. As the new API has a fresh start we can add properties for that, but lsb compat API will need to make this assumption. Of course all icons will still show in the "classic" status bar inside the control center.Cephei supports back to iOS 5, so this must support the old (iOS 5-6), new (iOS 7-10), newer (iOS 11), and newest (iPhone X) status bars.
Also, a longstanding bug I'd want to fix is that iOS 7 uses "Black" as a status bar style for basically everywhere, but iOS 6 and older also use "Black" for the solid color status bar (it was always a black background before iOS 6). There should be some way to differentiate these. I made this handy dandy table that explains it a bit better.