|
|
1 tydzień temu | |
|---|---|---|
| android | 1 tydzień temu | |
| assets | 1 tydzień temu | |
| docs | 1 tydzień temu | |
| lib | 1 tydzień temu | |
| test | 1 tydzień temu | |
| tool | 1 tydzień temu | |
| .gitignore | 1 tydzień temu | |
| .metadata | 1 tydzień temu | |
| AGENTS.md | 1 tydzień temu | |
| README.md | 1 tydzień temu | |
| analysis_options.yaml | 1 tydzień temu | |
| pubspec.lock | 1 tydzień temu | |
| pubspec.yaml | 1 tydzień temu |
A calm, configurable Android car dashboard launcher, built with Flutter.
CarDash replaces the tablet home screen with one landscape page: a large clock, battery and Wi-Fi status, the main media-volume control, and up to 16 buttons — Navigation, Music, Radio, Settings, All apps, plus any apps you pin from All Apps. The first three can be shown, hidden and assigned to installed apps. External apps open full-screen using the normal Android launcher mechanism. No overlays, no root, no kiosk setup.
Verified on Android 15 and Android 10 tablet emulators at 1280×800 and 1024×600. Runs on a physical Android 17 HyperOS tablet. Landscape only.
| Light | Dark |
|---|---|
![]() |
![]() |
Also: 16-button home · 16 buttons at 1024×600 · All apps · app picker · Settings · accent & buttons · Blue accent · user-app icon on Home · pinned-app menu · change-icon grid · PIN lock · 1024×600 layout
The Android application ID is com.wasp.cardash_launcher. Android package
segments cannot contain hyphens, so the requested com.wasp.cardash-launcher
spelling is normalized to an underscore.
export JAVA_HOME=/usr/lib/jvm/java-21-openjdk
export ANDROID_HOME=/opt/android-sdk
export PATH="$ANDROID_HOME/platform-tools:$PATH"
flutter pub get
./tool/check.sh
# Boot the prepared 10.1" 1280×800 Android 15 tablet (headless)
./tool/emulator.sh 35
# Build, install, and make CarDash the HOME app
./tool/install.sh debug
If the emulator does not yet exist on another machine, create it with:
sdkmanager "system-images;android-35;google_apis;x86_64"
avdmanager create avd -n cardash_tablet_api35 \
-k "system-images;android-35;google_apis;x86_64" \
-d "10.1in WXGA (Tablet)"
The repository also has an Android 10 AVD (cardash_tablet_api29) for
minimum-version checks.
flutter build apk --release
adb install -r build/app/outputs/flutter-apk/app-release.apk
adb shell cmd role add-role-holder android.app.role.HOME com.wasp.cardash_launcher
adb shell am start -a android.intent.action.MAIN -c android.intent.category.HOME
On a real tablet, use Settings → General → Home app → Set as default and accept the system prompt. Android will not let an app force itself into the home role silently. CarDash no longer keeps a home-role banner on the dashboard; the first run shows a one-time tip pointing to this setting.
| Action | Result |
|---|---|
| Tap Navigation / Music / Radio | Open the assigned app full-screen |
| Long-press Navigation / Music / Radio | Pick a different installed app |
| Tap an unassigned shortcut | Open the app picker |
| Settings → Accent | Pick Green, Blue, Amber, Rose, Violet or Teal |
| Settings → Battery & charging | Show or hide battery level and charging bolt |
| Settings → Home buttons switches | Show or hide Navigation, Music, Radio |
| Long-press an app in All Apps | Add it to Home (up to 16 buttons) |
| Long-press an added app on Home | Rename, Change icon or Remove |
| Settings | Theme, accent, battery, home buttons, default-home role, PIN |
| All apps | Search every launchable app; tap to open, hold to pin |
| Music tile while media is active | Shows the selected app icon + equalizer |
| Screen | Stays awake while CarDash is in front |
| Volume ring / mute | Toggle media mute |
| Slider or − / + | Set media volume |
| Hardware volume keys | Adjust the dashboard's media volume; the ring follows |
The app hides the Android status and navigation bars while CarDash is in the foreground. Swipe from an edge to reveal them temporarily; they hide again when the app resumes.
General
Security
lib/
core/ design tokens, theme controller, icons, shared widgets
data/ models, platform services, SettingsRepository (single source of truth)
features/
home/ home page, shortcut grid, volume card, controllers
apps/ All Apps, app-picker sheet
settings/ General + Security
lock/ PIN pad, cold-start lock screen
android/... MainActivity, LauncherBridge, SystemBridge (Kotlin)
tool/ emulator, install, check scripts
docs/ implementation plan, design notes
MethodChannels.SettingsRepository is the only persistence path. Controllers are
ChangeNotifiers injected with provider.flutter analyze
flutter test
./tool/check.sh
The 23 tests cover PIN hashing/persistence, settings persistence, theme and accent resolution, battery visibility, first-run state, slot visibility, pinned apps, custom labels/icons, the 16-button cap, the dense shortcut grid and the equalizer animation. Native package enumeration, system/user app flags, the HOME role, volume, app launching and PIN flows were verified on API 35 and API 29 emulators, including the release APK. The home-button, pinning, menu, custom-icon, user-icon and keep-awake flows were checked at 1280×800 and 1024×600. Release 0.4.0 is installed on the emulator and the physical Android 17 HyperOS tablet.
The prepared AVDs use the host GPU (-gpu host), which is the verified setup on
this machine. Software rendering with SwiftShader segfaulted on the API 35 image.
If your machine has no usable GPU, you can try:
CARDASH_GPU=swiftshader_indirect ./tool/emulator.sh 35
The prepared AVD resolution is 1280×800. If the emulator is already running,
./tool/emulator.sh stop shuts it down before starting a different one. The
Android 15 AVD is left running headlessly after development; use
./tool/emulator.sh 35 window for a visible window.
sensorLandscape). The home page is designed for
1280×800 and remains usable at 1024×600.QUERY_ALL_PACKAGES is used to list all launchable apps. It is reasonable
for a launcher but requires a Play policy declaration if the app is ever
distributed; this is a local/sideload build for now.The visual language is inspired by the TrailCurrent Godwit head unit (MIT): warm neutral surfaces, a selectable instrument accent, large numerals and quiet line icons. It is not a copy of that UI.
lib/core/theme/app_colors.dart.This repository is in local development and has not been pushed or published. A project license has not been chosen yet. Third-party asset licenses: Manrope (OFL) and Lucide (ISC). The design is inspired by TrailCurrent Godwit (MIT).