# Building a custom launcher for ChromeOS

DevFeed: [Building a custom launcher for ChromeOS](<https://devfeed.tech/articles/building-a-custom-launcher-for-chromeos-26160.md>)

Original publisher: [Read original article](<https://dev.to/tkuenneth/building-a-custom-launcher-for-chromeos-4fb7>)

Author: Thomas Künneth

Published: 2026-05-14T11:11:33Z

Content type: article

Language: en

Sources: [Thomas Künneth](<https://devfeed.tech/sources/thomas-kunneth.md>)

Topics: [Android](<https://devfeed.tech/topics/android.md>), [App](<https://devfeed.tech/topics/app.md>), [Google](<https://devfeed.tech/topics/google.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [app](<https://devfeed.tech/tags/app.md>), [apps](<https://devfeed.tech/tags/apps.md>), [black-screen](<https://devfeed.tech/tags/black-screen.md>), [chromeos](<https://devfeed.tech/tags/chromeos.md>), [coding](<https://devfeed.tech/tags/coding.md>), [community](<https://devfeed.tech/tags/community.md>), [desktop](<https://devfeed.tech/tags/desktop.md>), [development](<https://devfeed.tech/tags/development.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [google](<https://devfeed.tech/tags/google.md>), [inclusive](<https://devfeed.tech/tags/inclusive.md>), [multitasking](<https://devfeed.tech/tags/multitasking.md>), [programming](<https://devfeed.tech/tags/programming.md>), [software](<https://devfeed.tech/tags/software.md>), [ui](<https://devfeed.tech/tags/ui.md>)

## AI overview

The article describes adapting the Be nice Android launcher to run on ChromeOS. It explains that ChromeOS prevents the app from becoming the system launcher, limiting home-screen, wallpaper, gesture, and task-switching integration. It also reports a black-screen bug when Be nice attempts split-screen multitasking.

## Source excerpt

In this article, I will share some of my experience of enhancing Be nice to be a launcher on ChromeOS. Now, why would I want to do that anyway? I use my ChromeOS detachable more like an Android tablet than a traditional laptop; therefore, I find myself deeply missing the Android goodness that Google's desktop OS tends to strip away. Chief among these missing features is support for app widgets. Be nice has app widget support, so it would be great to run my app on ChromeOS. On a standard Android phone or tablet you can simply swap the home app in settings. fun changeDefaultHomeApp() { val intent = Intent(Settings.ACTION_HOME_SETTINGS).apply { addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) } if (context.packageManager.resolveActivity( intent, PackageManager.MATCH_DEFAULT_ONLY ) != null ) { context.startActivity(intent) } } Unfortunately, ChromeOS forces you to use its native environment. Consequently, the launcher will be treated just like any other Android app. What does this imply? While we can easily launch other apps, core launcher features like returning to the home screen via the system gesture or home button, acting as the dedicated home activity that fills the display with the normal Android home wallpaper visible behind transparent UI, and integration with the system-level overview or task switcher are not available. Instead, the launcher stays contained within its own window, meaning a swipe up or a press of the Everything Button will still take you back to the native ChromeOS shelf rather than your custom interface. And there is another nasty issue. Before Be nice became a genuine launcher, its main goal was to run two apps side by side, utilizing the split-screen capabilities that are present in Android since 7.0 (Nougat). On ChromeOS, this behavior is consistently buggy. Specifically, when the launcher attempts to start another activity in the adjacent window for a side-by-side view, the originating app (Be nice itself) fails to redraw correctly and simply becom