Butler
0.3.0-beta0 · GitHub
More about this app
Fast, private file explorer for power users with tabs, trash bin, regex search, app manager, and root/Shizuku support
Butler - File Explorer
Butler is the file explorer for Android I always wanted, so I built it.
Fast, private, open-source. A little whimsical. Built for power-users.
Features include:
- A browser-like tab system to use any of Butler's features in parallel.
- File exploration with copy/move speed display and performance graphs.
- Deletion with trash bin support.
- Searching for and through files (with regex support).
- Text editor that handles huge files.
- App manager - browse, disable, export APKs, clear cache, uninstall.
- Tablet support with multi-pane layouts.
- Root & Shizuku support.
- Material You theming - dynamic colors, dark mode, AMOLED.
- No ads, no tracking - open source (GPL v3).
Butler is actively being worked on and not feature complete. Feature requests are welcome!
Download
| Source | Status |
|---|---|
| Google Play (Release) | |
| Google Play (Open Testing) | |
| Github (Release) | |
| Github (Pre-Release) |
Support the project
Butler has no ads and doesn't sell your data.
Development is financed by individual user contributions, i.e. you buying the upgrade on Google Play or becoming a sponsor ❤️.
- Upgrade to Butler Pro on Google Play
- Become a sponsor on GitHub
Get help
Screenshots
Phones







7" Tablets








10"+ Tablets








License
Butler's code is available under a GPL v3 license, this excludes:
- Butler icons, logos, mascots, marketing materials and assets.
- Butler animations and videos.
- Butler documentation.
- Google Play screenshots.
- Google Play texts & descriptions.
- Translations.
How Shizuku is used
Can browse protected files, manage apps and install APKs silently via Shizuku with `pm` and `appops` commands.
This is an AI-assisted analysis of Shizuku-related usages in the app's public source code. It is best effort, so it may not catch every single usage.
How this app uses Shizuku
Butler uses Shizuku to run elevated file and app operations with shell privileges.
- Access protected files: browse, open, copy, move and delete files in restricted locations, plus create folders and links and change timestamps, permissions and ownership through the Shizuku user service.
- Manage installed apps: force stop, enable or disable apps and components, uninstall, clear data, list per user packages, grant or revoke permissions and set app ops with
pmandappopscommands through Shizuku. - Install apps silently: stage APKs and commit installs without system prompts using
pm install-create,pm install-writeandpm install-commitsession commands through Shizuku.
Android APIs or commands used
android.content.pm.PackageManager.getInstalledPackagesAsUserandroid.content.pm.PackageManager.setApplicationEnabledSettingandroid.content.pm.PackageManager.setComponentEnabledSettingandroid.app.ActivityManager.runningAppProcessesandroid.app.ActivityManager.forceStopPackagelibcore.io.Os.getpwuidlibcore.io.Os.getgrgidpm grantpm revokepm uninstallpm clearpm install-createpm install-writepm install-commitpm install-abandonpm list usersappops setidrm -rf
Notable details
Installs can also use the normal system installer with user confirmation when Shizuku elevation is unavailable.
Changelog
What's new for version 0.3.0-beta0
What's Changed
:rocket: Enhancements
- Bugreport: Collapse the log on the report details screen by @d4rken in https://github.com/d4rken-org/butler/pull/118
- Viewer: Add previous/next file arrows when opened from an Explorer by @d4rken in https://github.com/d4rken-org/butler/pull/120
- Workspace: Remove a tab from a pane without closing it by @d4rken in https://github.com/d4rken-org/butler/pull/121
- Workspace: Color the Butler button's new tab and close actions by @d4rken in https://github.com/d4rken-org/butler/pull/123
- History: Jump from an operation's details to its history entry by @d4rken in https://github.com/d4rken-org/butler/pull/122
- General: Align spacing across screens and use the full pane width by @d4rken in https://github.com/d4rken-org/butler/pull/126
- Explorer: Suggest only openable storage apps and show their icons by @d4rken in https://github.com/d4rken-org/butler/pull/127
- History: Select multiple operations to delete or share them by @d4rken in https://github.com/d4rken-org/butler/pull/128
- General: Show the privacy policy and prefill shared report emails by @d4rken in https://github.com/d4rken-org/butler/pull/119
- Viewer: Preview text files without opening the editor by @d4rken in https://github.com/d4rken-org/butler/pull/131
- Explorer: Show a plus on the add storage location button by @d4rken in https://github.com/d4rken-org/butler/pull/132
- Workspace: Make operation performance graphs a Pro feature by @d4rken in https://github.com/d4rken-org/butler/pull/134
- Explorer: Drag files onto folders, favorites and breadcrumbs by @d4rken in https://github.com/d4rken-org/butler/pull/130
- Workspace: Give the operation description the full sheet width by @d4rken in https://github.com/d4rken-org/butler/pull/136
- History: Reset all filters at once and show chip selection clearly by @d4rken in https://github.com/d4rken-org/butler/pull/137
- Workspace: Always show performance info, and explain when it's empty by @d4rken in https://github.com/d4rken-org/butler/pull/142
- General: Make clipboard configuration a Pro feature by @d4rken in https://github.com/d4rken-org/butler/pull/143
- Workspace: Open a new tab next to the one it came from by @d4rken in https://github.com/d4rken-org/butler/pull/144
- History: Make sharing and deleting history entries a Pro feature by @d4rken in https://github.com/d4rken-org/butler/pull/141
- General: Show how many items a drag is carrying by @d4rken in https://github.com/d4rken-org/butler/pull/145
- Workspace: Grow the tab manager out of the button that opens it by @d4rken in https://github.com/d4rken-org/butler/pull/147
- Workspace: Reveal tab shortcuts from the manager button and add a new-tab card by @d4rken in https://github.com/d4rken-org/butler/pull/139
- Bugreport: Name your bug reports so you can tell them apart by @d4rken in https://github.com/d4rken-org/butler/pull/148
- Workspace: Filter the tab manager by paused tabs and unsaved changes by @d4rken in https://github.com/d4rken-org/butler/pull/149
- Templates: Rename a tab straight from the picker headline by @d4rken in https://github.com/d4rken-org/butler/pull/152
- Workspace: Move the tab rail to the bottom edge in portrait by @d4rken in https://github.com/d4rken-org/butler/pull/156
- Viewer: Remove the inert eye icon from the toolbar by @d4rken in https://github.com/d4rken-org/butler/pull/160
- Workspace: Make the rail's "+" open and focus the Templates picker by @d4rken in https://github.com/d4rken-org/butler/pull/161
- Workspace: Give every workspace toolbar the same minimum height by @d4rken in https://github.com/d4rken-org/butler/pull/162
- General: Add German translation by @d4rken in https://github.com/d4rken-org/butler/pull/163
- General: Obfuscate the Google Play build by @d4rken in https://github.com/d4rken-org/butler/pull/165
- Workspace: Add a single-pane layout with the tab rail by @d4rken in https://github.com/d4rken-org/butler/pull/167
- Workspace: Fit one more tab in the navigation rail by @d4rken in https://github.com/d4rken-org/butler/pull/171
- General: Choose list or grid and how much detail each item shows by @d4rken in https://github.com/d4rken-org/butler/pull/168
- Workspace: Switch the pane layout from the tab rail's Butler menu by @d4rken in https://github.com/d4rken-org/butler/pull/180
- Explorer: Move refresh and folder favoriting into the action bar menu by @d4rken in https://github.com/d4rken-org/butler/pull/182
- Explorer: Calculate how much space each folder uses by @d4rken in https://github.com/d4rken-org/butler/pull/179
- Apps: Show progress and results for app actions in the operations bar by @d4rken in https://github.com/d4rken-org/butler/pull/183
- Apps: Name exported APKs after the app instead of base.apk by @d4rken in https://github.com/d4rken-org/butler/pull/186
- Workspace: Mark tabs with running work in the tab manager and the rail by @d4rken in https://github.com/d4rken-org/butler/pull/193
- Workspace: Show operation speed over time instead of completion by @d4rken in https://github.com/d4rken-org/butler/pull/199
- Workspace: Show what a folder contains on its grid tile by @d4rken in https://github.com/d4rken-org/butler/pull/205
- Explorer: Add an option to hide and show hidden files by @d4rken in https://github.com/d4rken-org/butler/pull/206
- Workspace: Choose which type new tabs open as by @d4rken in https://github.com/d4rken-org/butler/pull/204
- Workspace: Let the Butler button sit at the end of the tab rail by @d4rken in https://github.com/d4rken-org/butler/pull/207
- Templates: Add a tip to the tab picker, fix the Pro restore wording by @d4rken in https://github.com/d4rken-org/butler/pull/208
- Explorer: Give your favorites your own names and manage them by selection by @d4rken in https://github.com/d4rken-org/butler/pull/209
- General: Dress Butler in navy and let you pick his suit color by @d4rken in https://github.com/d4rken-org/butler/pull/213
- Workspace: Explain swiping between tabs and side-by-side panes by @d4rken in https://github.com/d4rken-org/butler/pull/214
- General: Change which features need Butler Pro by @d4rken in https://github.com/d4rken-org/butler/pull/217
- General: Generate themes from a colour you pick by @d4rken in https://github.com/d4rken-org/butler/pull/216
- Explorer: See files that just arrived, wherever they landed by @d4rken in https://github.com/d4rken-org/butler/pull/218
:lady_beetle: Bug fixes
- IO: Stop leaking file handles when previews are cancelled by @d4rken in https://github.com/d4rken-org/butler/pull/117
- IO: Stop treating files that cannot be checked as deleted by @d4rken in https://github.com/d4rken-org/butler/pull/124
- General: Fix long file names wrapping badly in confirmation dialogs by @d4rken in https://github.com/d4rken-org/butler/pull/125
- Workspace: Keep the closed-tab undo bar clear of the navigation rail by @d4rken in https://github.com/d4rken-org/butler/pull/129
- IO: Say a file is gone instead of blaming permissions by @d4rken in https://github.com/d4rken-org/butler/pull/135
- Developer: Generate test files at their advertised size by @d4rken in https://github.com/d4rken-org/butler/pull/140
- Bugreport: Ask before deleting a report and space out its buttons by @d4rken in https://github.com/d4rken-org/butler/pull/138
- Searcher: Install APKs and app bundles straight from search results by @d4rken in https://github.com/d4rken-org/butler/pull/146
- IO: Fix root file operations aborting instead of asking what to do by @d4rken in https://github.com/d4rken-org/butler/pull/151
- Apps: Show the package name for apps with an empty name by @d4rken in https://github.com/d4rken-org/butler/pull/153
- Workspace: Keep the New tab tile with the tabs instead of below the tip card by @d4rken in https://github.com/d4rken-org/butler/pull/155
- IO: Fix empty folder listings on Android 13 by @d4rken in https://github.com/d4rken-org/butler/pull/154
- Editor: Say why a file can't be edited instead of calling it binary by @d4rken in https://github.com/d4rken-org/butler/pull/157
- IO: Stop reporting non-permission file errors as "Permission denied" by @d4rken in https://github.com/d4rken-org/butler/pull/158
- General: Give the mascot a dark theme so he stops vanishing by @d4rken in https://github.com/d4rken-org/butler/pull/150
- Workspace: Show the end of a tab's path in the navigation rail by @d4rken in https://github.com/d4rken-org/butler/pull/159
- Explorer: Fix folder rows never showing item counts and permissions by @d4rken in https://github.com/d4rken-org/butler/pull/164
- Workspace: Stop finished operations from piling up in memory by @d4rken in https://github.com/d4rken-org/butler/pull/166
- IO: Fix files not opening in storage provided by other apps by @d4rken in https://github.com/d4rken-org/butler/pull/169
- Apps: Fix app actions failing silently and not updating the screen by @d4rken in https://github.com/d4rken-org/butler/pull/172
- IO: Fix detection of ShizukuPlus forks by @d4rken in https://github.com/d4rken-org/butler/pull/177
- General: Improve mascot clothing contrast in dark mode by @d4rken in https://github.com/d4rken-org/butler/pull/176
- Explorer: Fix a crash when a folder holds two files with the same name by @d4rken in https://github.com/d4rken-org/butler/pull/174
- Workspace: Prevent operations header labels from overlapping by @d4rken in https://github.com/d4rken-org/butler/pull/181
- General: Confirm rename dialogs with the enter key by @d4rken in https://github.com/d4rken-org/butler/pull/187
- Explorer: Fix revealing saved SMB passwords in the edit dialog by @d4rken in https://github.com/d4rken-org/butler/pull/188
- Workspace: Fix dialogs shrinking for a keyboard in another pane by @d4rken in https://github.com/d4rken-org/butler/pull/189
- General: Fix the sponsor button going dead after a system dialog by @d4rken in https://github.com/d4rken-org/butler/pull/190
- Workspace: Fix the performance graph jumping while an operation runs by @d4rken in https://github.com/d4rken-org/butler/pull/191
- IO: Fix the operation graph starting partway across the plot by @d4rken in https://github.com/d4rken-org/butler/pull/194
- Workspace: Show that an operation is canceling until it stops by @d4rken in https://github.com/d4rken-org/butler/pull/192
- Workspace: Keep the operation details sheet from jumping as the estimate changes by @d4rken in https://github.com/d4rken-org/butler/pull/198
- Workspace: Stop the joke loading message flickering during file operations by @d4rken in https://github.com/d4rken-org/butler/pull/200
- IO: Keep the original file when an overwrite fails partway by @d4rken in https://github.com/d4rken-org/butler/pull/211
- IO: Make Cancel work while a cloud document is still being fetched by @d4rken in https://github.com/d4rken-org/butler/pull/212
:shrug: Other changes
- Release: Wait up to 30 minutes for main's checks before releasing by @d4rken in https://github.com/d4rken-org/butler/pull/116
- General: Rewrite the Play Store "What's new" text by @d4rken in https://github.com/d4rken-org/butler/pull/133
- General: Add a hostile SAF provider for QA by @d4rken in https://github.com/d4rken-org/butler/pull/170
- General: Migrate Claude plugins to Clanker Cafe by @d4rken in https://github.com/d4rken-org/butler/pull/173
- General: Fix the SAF test fixture's shell controls by @d4rken in https://github.com/d4rken-org/butler/pull/175
- Workspace: Let operations keep their tab open and describe their result shape by @d4rken in https://github.com/d4rken-org/butler/pull/178
- General: Remove retired Claude Cafe plugin settings by @d4rken in https://github.com/d4rken-org/butler/pull/184
- IO: Replace the SMB client used for network shares by @d4rken in https://github.com/d4rken-org/butler/pull/185
- General: Fix privacy policy links on GitHub Pages by @d4rken in https://github.com/d4rken-org/butler/pull/195
- General: Stop CI tests failing on a Maven Central outage by @d4rken in https://github.com/d4rken-org/butler/pull/202
- General: Describe network shares and archives in the store listing by @d4rken in https://github.com/d4rken-org/butler/pull/210
- General: Fix a unit test that failed intermittently in CI by @d4rken in https://github.com/d4rken-org/butler/pull/215
- General: Update to the latest Compose release by @d4rken in https://github.com/d4rken-org/butler/pull/219
Full Changelog: https://github.com/d4rken-org/butler/compare/v0.2.0-beta0...v0.3.0-beta0
Permissions
16 permissions requested