• Stars
    star
    308
  • Rank 135,712 (Top 3 %)
  • Language Logos
  • Created almost 10 years ago
  • Updated over 9 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Runs the CarPlay UI directly on top of SpringBoard on an iOS device, no need for a car!

Ignition

Negates the need for a "CarPlay supportedâ„¢" car, and runs the CarPlay UI directly on top of SpringBoard on an iOS device.

Works great for iPads mounted on the dash!

Note: This is primarily meant for an iPad, and iPhones aren't really supported (however you "can" use it with an iPhone 6 Plus if you really want to).

Also, I'll be sure to do a formal write-up on how it all works once all of this is finished and useable.

Vroom vroom.

Screenshot1
Screenshot2
Screenshot3
Screenshot4

Explanation

To be honest a lot of this nonsense could be completely avoided if a secondary "fake" FBSDisplay could be created and then used. That way SBApplications could create / own proper carScenes and there'd be a lot less things that were broken...

Most of the CarPlay checking logic involves checking for both multiple UIScreens, the UIScreen interfaceIdiom, and FBSDisplay -> FBScene lookups. However, creating a fake FBSDisplay requires creating a fake CADisplay which isn't a lot of fun :P

Basically here's how it works (I think... some parts are probably wrong or off):

FrontBoard associates one FBSDisplay as the main display and has a bunch of FBScenes which are each SBApplication's mainScene. Once there's a second FBSDisplay available it can then generate a carScene for each SBApplication who's deemed capable. These carScenes would then be presented onto any externally connected screens (secondary FBSDisplay).

Originally, I had tried high-jacking a FBSDisplay whenever it was created and just duplicating that screen into a secondary FBSDisplay object with the same CADisplay object... and then shoving that FBSDisplay object into it's own lookup table to make it appear as if multiple screens were available. However. this causes UIScreen to freak out as it deems both those screens as the same. Also loads of the OS did not like this :P

What I'm doing is just making all UIScreens appear as CarPlay screens as well as forcing all applications to render in landscape (as CarPlay on external screens is forced to portrait). In addition this means that each SBApplication's carScene is the mainScene, which doesn't guarantee success.

Creating a local AirPlay server and then hacking touches to work on a view (who's contents are a secondary screen projected locally, using the device to AirPlay + mirroring) could be a neat solution to this, but I haven't tried it yet. That would grant us a legitimate second FBSDisplay to play with.

How do I compile?

I used Theos for this. You'll need to install them and setup the appropriate environment variables etc as well as configuring. Info on that here.

ARM64 support is enabled by default and if you need help setting that up check here.

I'm using my own fork of theos, which is in-turn forked from @rpetrich's fork.

If you edit the Makefile you can specify your iOS device's ip and such to build and run using make package install. Otherwise you can simply make package to generate a .deb file and install that by any means.

Price?

Totally free! If you'd like to support my continuation of this project (and others!), feel free to donate! It'd be much appreciated :D

License?

Pretty much the BSD license, just don't repackage it and call it your own please!

Also if you do make some changes, feel free to make a pull request and help make things more awesome!

Contact Info?

Feel free to follow me on twitter: @b3ll!
Though I don't really like to handle support requests there...

Special Thanks

Travis Beckham for the vectorized car image!

More Repositories

1

Motion

Animation engine for gesturally-driven user interfaces, animations, and interactions on iOS, macOS, and tvOS.
Swift
1,426
star
2

Decomposed

CATransform3D manipulation made easy.
Swift
262
star
3

SwiftyGestureRecognition

Aids with prototyping UIGestureRecognizers in Xcode Playgrounds
Swift
162
star
4

Pseudo3DTouch

Mimicking Apple's 3D touch on hardware that doesn't have it.
Objective-C
118
star
5

NyanCat

Puts Nyan Cat in the iOS 8 Notification Center :D
Objective-C
92
star
6

MessageBox-olde

Chat Heads everywhere in iOS!
Objective-C
73
star
7

SetNeedsDisplay

A Swift Property Wrapper to invalidate your view's layout or display based on property changes.
Swift
70
star
8

Adjustable

Swift property wrapper to automatically add sliders to adjust values and aid in refining user interfaces, animations, and interactions without the need to recompile.
Swift
63
star
9

DarkCode

Always makes Xcode use Dark Mode on macOS Mojave
Objective-C
57
star
10

Xcode-Theos

Attempts to use Theos/Logos with Xcode
Objective-C
53
star
11

tryswift2016

All the material from my talk at try! Swift 2016 in Tokyo Japan.
Swift
50
star
12

MessageBox

Break Facebook's Chat Heads out of the iOS Sandbox!
Logos
50
star
13

Tunetable

Stream your LPs over AirPlay
Swift
40
star
14

fan.cy

Collection of useful helpers I've found / written that help make working with cycript a bit more awesome.
Shell
39
star
15

Spectral

Make the iOS lockscreen proper with blurred album artwork!
Logos
33
star
16

ClickWheelKeyboard

Brings back the classic iPod click wheel as a keyboard for iOS 8!
Objective-C
24
star
17

try-swift-2019

Presentation and demo for my talk "Shaping Sounds in Swift" at try! Swift 2019 in Tokyo
Swift
23
star
18

DarkDock

Make Yosemite's Dock always Dark
Objective-C
21
star
19

JailbreakCon2013

Presentation stuff from JailbreakCon 2013!
21
star
20

Springshot

Add a little WebOS to iOS!
JavaScript
18
star
21

StarshipConfig

My starship prompt config.
18
star
22

PostOffice

Post Office
Objective-C
15
star
23

NSSpain2022

Presentation and demo for my talk "Crafting Responsive and Playful Interfaces" at NSSpain 2022 in Logroño
Swift
14
star
24

F1TV

A tvOS Client for F1TV
Swift
12
star
25

DynamicDoge

Flappy Bird clone written in UIKit and UIDynamics!
Objective-C
10
star
26

dynamiciospreviews

UX Demo for the iOS 7 App Switcher
Objective-C
9
star
27

NSString-Doge

Very Category
Objective-C
8
star
28

Twerk

Pile of hack that lets you create/share GIF images that I wrote for the iOSDevCamp 2013 Hackathon
Objective-C
7
star
29

EmojiLand

Making the Objective-C Runtime <3 Emoji
Objective-C
6
star
30

GottaCatchMALL

Add Missingno as an obtainable pokémon in the Google Maps' Pokémon Challenge!
Logos
5
star
31

SimpleXcodeIcon

Xcode plug-in to remove the build number on the Xcode dock icon.
Objective-C
5
star
32

SheepShell

oh-my-zsh theme with emoji!
3
star
33

warningsaserrorsissue

Swift
2
star
34

b3ll.github.io

b3ll.github.io
HTML
2
star
35

nou

no u
1
star