Steamroller

Pulverize distractions

What Steamroller does

Steamroller is a free and open-source Android utility designed to help you gain back control of your time. It locks you out of the apps that distract you and take your time away. You can get it here from the Google Play Store. Its source code is hosted here on GitHub.

The current version only supports blocking apps completely, but blocking specific websites may be added in the future.

Using it is simple: you define your whitelist (the apps you'll be able to use during the session), you decide whether you want to be able to receive phone calls, you set a timer, and you put your device away. The only way you could end the timer early is by erasing your device's data.

How to set up Steamroller

To get complete control over your device, Steamroller uses a reserved Android feature called Device Management/Device Owner (used for setting up, e.g. airport kiosks). The following steps will guide you to give Steamroller the required permissions. Note that the exact process may vary by your device manufacturer. I take no responsibility for what you do by following these instructions. It gave me no problem on more than one device, but I cannot guarantee it will not create issues on other devices. Additionally, Steamroller is incompatible with Dhizuku.

These steps are a bit technical, but fortunately they only need to be performed once, when you install Steamroller. If you have Shizuku, you should be able to use it in place of ADB.

0. Install Steamroller. This is the first thing you should do. You can get it from the Play Store here.

1. Install platform-tools and access your device via ADB. Plenty of tutorials for doing this already exist. This video should explain it sufficiently well. Once your device appears when you type adb devices into the terminal, you are ready to move to the next step.

2. Disable apps with accounts. This is arguably the most delicate step. It is a prerequisite to setting up a Device Owner without resetting your device. Credit to Rootless_tweaks_shizuku on XDA for coming up with this method. First of all, put your device into airplane mode.

With your device plugged in and ADB connected, run the command adb shell "dumpsys account | grep 'Account {'". A list of active accounts on your device will now appear. Note down the apps as you recognize them (these may be WhatsApp, Instagram, Microsoft/Live, Google, as well as others).

Then run adb shell pm list packages. This will output a list of all the installed application packages on your device (the package name is the part after the package: prefix). Now you have to find the package names corresponding to the accounts you found earlier.

For the most common account types, I did the work for you:

Now you have a list of all the package names associated to accounts on your device. For each one of these packages (each and every one separately!), you have to run the following command: adb shell pm disable-user --user 0 com.package.name (replacing with the actual package name). Note that this assumes you are user 0, which you most certainly have. If you have multiple users set up on your device, you have to use the respective ID. Run that command for every package name, then wait a few seconds.

This was the great majority of the work.

3. Set the Device Owner. You can now run adb shell dpm set-device-owner --user 0 me.damix.steamroller/.DeviceOwnerReceiver to activate the Device Owner (again, this assumes you are user 0). If that doesn't work, reboot your device and try again.

4. Reactivate the apps. For each package you disabled, now run the following command: adb shell pm enable com.package.name. Note that you do not need to specify the user here. You can now turn airplane mode off and I suggest you reboot your device.

If everything went to plan, you should now be able to use Steamroller. If you had the app already open during this time, you have to close it from the task switcher and then open it again.

How to uninstall Steamroller

To uninstall Steamroller, you must first remove it as a Device Owner. You'll need to open the app, tap on the three dots in the top-right corner, select "Disable Device Owner", and confirm. You can then uninstall the app normally.

Please note that if you decide to install Steamroller again, you will have to repeat the setup steps.

Privacy policy

Steamroller does not collect, track, store, or share any of your data.

Troubleshooting & Contacts

Something went wrong? Please, please, please let me know! You can shoot me an email here: damiano[d0t]magrini[@t]gmail[d0t]com. You can use the same address if you just want to drop in and say hi! If you like the app and would like to support me and its development, you can do so by chipping in here. Thank you!