Taskbar puts a start menu and recent apps tray on top of your screen that's accessible at any time

Overview

Taskbar

Taskbar puts a start menu and recent apps tray on top of your screen that's accessible at any time, increasing your productivity and turning your Android tablet (or phone) into a real multitasking machine!

Taskbar supports Android 10's Desktop Mode, allowing you to connect your compatible device to an external display and run apps in resizable windows, for a PC-like experience! On devices running Android 7.0+, Taskbar can also launch apps in freeform windows without an external display. No root required! (see below for instructions)

Taskbar is also supported on Android TV (sideloaded) and Chrome OS - use Taskbar as a secondary Android app launcher on your Chromebook, or turn your Nvidia Shield into an Android-powered PC!

Features

  • Start menu - shows you all applications installed on the device, configurable as a list or as a grid
  • Recent apps tray - shows your most recently used apps and lets you easily switch between them
  • Collapsible and hideable - show it when you need it, hide it when you don't
  • Many different configuration options - customize Taskbar however you want
  • Pin favorite apps or block the ones you don't want to see
  • Designed with keyboard and mouse in mind
  • 100% free, open source, and no ads

Desktop mode (Android 10+, requires external display)

Taskbar supports Android 10's built-in desktop mode functionality. You can connect your compatible Android 10+ device to an external display and run apps in resizable windows, with Taskbar's interface running on your external display and your existing launcher still running on your phone.

Desktop mode requires a USB-to-HDMI adapter (or a lapdock), and a compatible device that supports video output. Additionally, certain settings require granting a special permission via adb.

To get started, open up the Taskbar app and click "Desktop mode". Then, just tick the checkbox and the app will guide you through the setup process. For more information, click the (?) icon in the upper-right hand corner of the screen.

Freeform window mode (Android 7.0+, no external display required)

Taskbar lets you launch apps in freeform floating windows on Android 7.0+ devices. No root access is required, although Android 8.0, 8.1, and 9 devices require an adb shell command to be run during initial setup.

Simply follow these steps to configure your device for launching apps in freeform mode:

  1. Check the box for "Freeform window support" inside the Taskbar app
  2. Follow the directions that appear in the pop-up to enable the proper settings on your device (one-time setup)
  3. Go to your device's recent apps page and clear all recent apps
  4. Start Taskbar, then select an app to launch it in a freeform window

For more information and detailed instructions, click "Help & instructions for freeform mode" inside the Taskbar app.

Changelog

To see some of the major new features in the latest Taskbar release, visit the changelog.

Download

Taskbar can be downloaded as a standalone Android app from:

Google Play F-Droid

Taskbar is also included as part of the following Android distributions for PCs:

How to Build

Prerequisites:

  • Windows / MacOS / Linux
  • JDK 8
  • Android SDK
  • Internet connection (to download dependencies)

Once all the prerequisites are met, make sure that the ANDROID_HOME environment variable is set to your Android SDK directory, then run ./gradlew assembleFreeDebug at the base directory of the project to start the build. After the build completes, navigate to app/build/outputs/apk/free/debug where you will end up with an APK file ready to install on your Android device.

Running tests

Taskbar uses Robolectric as its unit testing framework. The entire test suite can be run with ./gradlew testFreeDebug, or you can generate a Jacoco coverage report using ./gradlew jacocoTestFreeDebugUnitTestReport which will be output to the app/build/jacoco/jacocoHtml directory. If you contribute code improvements such as bug fixes, we recommend writing tests alongside it using Robolectric.

For Third-Party App Developers

Android 10 Desktop Mode support via libtaskbar

Taskbar can now be included as a library inside any third-party launcher, to quickly and easily add Android 10 Desktop Mode support into your existing launcher with no additional setup.

For more information on including Taskbar inside your application, see the libtaskbar documentation.

Icon Pack Support

Taskbar includes support for ADW-style icon packs. If you are an icon pack developer and would like to include support for applying the icon pack from within your app, simply use the following code:

Intent intent = new Intent("com.farmerbb.taskbar.APPLY_ICON_PACK");
intent.putExtra("android.intent.extra.PACKAGE_NAME", "com.iconpack.name");
startActivity(intent);

Contributors

Pull requests are welcome! See the contributor guidelines for more details.

  • Mark Morilla (app logo)
  • naofum (Japanese translation)
  • HardSer (Russian translation)
  • OfficialMITX (German translation)
  • Whale Majida (Chinese translation)
  • Mesut Han (Turkish translation)
  • Zbigniew Zienko (Polish translation)
  • utzcoz (Additional Chinese translation, code cleanup + unit testing)
  • RaspberryPiFan (Additional German translation)
  • Diego Sangunietti (Spanish translation)
  • Tommy He (Chinese translation for Desktop Mode)
  • Aaron Dewes (German translation updates)

Special Thanks

  • Mishaal Rahman (xda-developers)
  • Jon West (Team Bliss)
  • Chih-Wei Huang (Android-x86)
Comments
  • Convert test code to kotlin

    Convert test code to kotlin

    1. Use Android Studio tool to convert test code to kotlin.
    2. Fix null checking error, just adding !! and remove some ?.
    3. Fix incompatibility of type between Int and Long in assert.

    Test: ./gradlew test

    Close https://github.com/farmerbb/Taskbar/issues/177

    opened by utzcoz 7
  • If launcher, desktop wallpaper offset at startup

    If launcher, desktop wallpaper offset at startup

    I have android 7.1.2 on several TX92 TV PCs. If Taskbar is the default launcher and loaded at startup, wallpaper will occupy the right two-thirds of the screen, only. If Nova Launcher is opened, then closed, wallpaper will properly align with the entire screen.

    When using Nova Launcher as the default launcher and loaded at startup, wallpaper corrects as soon as Nova Launcher loads.

    This may indicate maintenance needed by Taskbar when it loads as default launcher. Other launchers were tried and they also correct the wallpaper position.

    opened by dmcdivitt 7
  • Building error with android-x86 draft manifest for Android S

    Building error with android-x86 draft manifest for Android S

    Hello,

    I am trying to build s-x86 iso with packages/apps/Taskbar checked out at commit 4652f142731bae59cd9f23c3292a98ed7084a455 I get the following building errors, I saw https://github.com/farmerbb/Taskbar/issues/225, which means some other people were able to build, but could you please help me to complete the build?

    Thank you

    Mauro Rossi android-x86 team

    [ 50% 3108/6178] Target Java: out/target/common/obj/APPS/Taskbar_intermediates/classes-full-debug.jar
    FAILED: out/target/common/obj/APPS/Taskbar_intermediates/classes-full-debug.jar
    /bin/bash -c "(rm -f out/target/common/obj/APPS/Taskbar_intermediates/classes-full-debug.jar ) && (rm -rf out/target/common/obj/APPS/Taskbar_intermediates/classes out/target/common/obj/APPS/Taskbar_intermediates/anno ) && (mkdir -p out/target/common/obj/APPS/Taskbar_intermediates/ ) && (mkdir -p out/target/common/obj/APPS/Taskbar_intermediates/classes out/target/common/obj/APPS/Taskbar_intermediates/anno ) && (out/soong/host/linux-x86/bin/zipsync -d out/target/common/obj/APPS/Taskbar_intermediates/srcjars -l out/target/common/obj/APPS/Taskbar_intermediates/srcjar-list -f \"*.java\"  out/target/common/obj/APPS/Taskbar_intermediates/aapt2.srcjar ) && (if [ -s out/target/common/obj/APPS/Taskbar_intermediates/java-source-list -o -s out/target/common/obj/APPS/Taskbar_intermediates/srcjar-list ] ; then out/soong/host/linux-x86/bin/soong_javac_wrapper  prebuilts/jdk/jdk11/linux-x86/bin/javac  -J-XX:OnError=\"cat hs_err_pid%p.log\" -J-XX:CICompilerCount=6 -J-XX:+UseDynamicNumberOfGCThreads -Xmaxerrs 9999999 -encoding UTF-8 -sourcepath \"\" -g -XDskipDuplicateBridges=true -XDstringConcat=inline -encoding UTF-8   -bootclasspath out/target/common/obj/JAVA_LIBRARIES/android_stubs_current_intermediates/classes-header.jar:out/target/common/obj/JAVA_LIBRARIES/core-lambda-stubs_intermediates/classes-header.jar  -classpath out/target/common/obj/JAVA_LIBRARIES/androidx.legacy_legacy-support-v4_intermediates/classes-header.jar:out/target/common/obj/JAVA_LIBRARIES/androidx.appcompat_appcompat_intermediates/classes-header.jar:out/target/common/obj/JAVA_LIBRARIES/androidx.browser_browser_intermediates/classes-header.jar:out/target/common/obj/JAVA_LIBRARIES/com.google.android.material_material_intermediates/classes-header.jar  -d out/target/common/obj/APPS/Taskbar_intermediates/classes -s out/target/common/obj/APPS/Taskbar_intermediates/anno  -source 1.8 -target 1.8  \\@out/target/common/obj/APPS/Taskbar_intermediates/java-source-list \\@out/target/common/obj/APPS/Taskbar_intermediates/srcjar-list || ( rm -rf out/target/common/obj/APPS/Taskbar_intermediates/classes ; exit 41 ) fi ) && (out/soong/host/linux-x86/bin/soong_zip -jar -o out/target/common/obj/APPS/Taskbar_intermediates/classes-full-debug.jar -C out/target/common/obj/APPS/Taskbar_intermediates/classes -D out/target/common/obj/APPS/Taskbar_intermediates/classes )"
    packages/apps/Taskbar/app/src/androidx86/java/org/lsposed/hiddenapibypass/HiddenApiBypass.java:41: error: cannot find symbol
    import dalvik.system.VMRuntime;
                        ^
      symbol:   class VMRuntime
      location: package dalvik.system
    packages/apps/Taskbar/app/src/androidx86/java/org/lsposed/hiddenapibypass/HiddenApiBypass.java:42: error: package sun.misc does not exist
    import sun.misc.Unsafe;
                   ^
    packages/apps/Taskbar/app/src/androidx86/java/org/lsposed/hiddenapibypass/HiddenApiBypass.java:46: error: cannot find symbol
        private static final Unsafe unsafe;
                             ^
      symbol:   class Unsafe
      location: class HiddenApiBypass
    packages/apps/Taskbar/app/src/androidx86/java/org/lsposed/hiddenapibypass/HiddenApiBypass.java:58: error: cannot find symbol
                unsafe = (Unsafe) Unsafe.class.getDeclaredMethod("getUnsafe").invoke(null);
                          ^
      symbol:   class Unsafe
      location: class HiddenApiBypass
    packages/apps/Taskbar/app/src/androidx86/java/org/lsposed/hiddenapibypass/HiddenApiBypass.java:58: error: cannot find symbol
                unsafe = (Unsafe) Unsafe.class.getDeclaredMethod("getUnsafe").invoke(null);
                                  ^
      symbol:   class Unsafe
      location: class HiddenApiBypass
    packages/apps/Taskbar/app/src/androidx86/java/org/lsposed/hiddenapibypass/HiddenApiBypass.java:124: error: cannot find symbol
            List<Executable> methods = getDeclaredMethods(VMRuntime.class);
                                                          ^
      symbol:   class VMRuntime
      location: class HiddenApiBypass
    6 errors
    
    opened by maurossi 6
  • tapping an icon on the bar causes a system reboot while Taskbar is home screen

    tapping an icon on the bar causes a system reboot while Taskbar is home screen

    ROM: LineageOS 17.1 with Android 10 Device: Samsung Galaxy Tab S5e when the Taskbar is set as default launcher, some times running/opening apps by tapping on them causes an abrupt quick system reboot. some apps are running in fullscreen yet some others are restricted by taskbar (dock). i don't know but may be switching between them is the reason of this crash.

    opened by frknltrk 5
  • Shortcut to Open, Tasker, Placement

    Shortcut to Open, Tasker, Placement

    I have found this app both useful and innovative. I have a couple of requests:

    1. Shortcut to Open: It looks like you recently changed the function of the "Freeform Mode" shortcut. In the past it used to open the taskbar. Now, however, it appears to toggle the freeform mode without opening the taskbar. This change makes perfect sense, but it removes a workaround I used to open taskbar from Tasker or other modes (fingerprint, gesture, etc). Could you please add a widget/shortcut/activity to open taskbar? With this, I could restore the function I had before.

    2. Tasker Integration: Could you add Tasker integration? This would make alternative opening even easier. In addition to a simple open, you may want to add other actions, such as freeform mode, etc.

    3. Specific Placement: I believe this request is already on this list (#25), so consider this a "second." I would like to be able to alter the placement of the collapsed taskbar beyond the options now available, each corner, horizontal or vertical. Each corner is already a common place for some other UI action, so I find myself opening taskbar when I really want the other action, or vice versa. If I could offset taskbar a little, both x and y, I could find a place for it that would interfere less with the other stock actions.

    Thank you!

    opened by SHKaminski 5
  • Freeform Window Mode Not Launching Activities in Freeform Mode

    Freeform Window Mode Not Launching Activities in Freeform Mode

    With Taskbar set to be the home screen, the freeform mode works fine, tested with the built-in Calculator app and one of my book samples. With Taskbar in normal mode, activities do not launch in freeform mode, tested using those same activities, both before and after reboots, from the system home screen. This is on a Nexus 9 running NRD91D (7.0 with October security fixes), from a copy of Taskbar compiled from the master branch.

    Any info you want me to collect?

    opened by commonsguy 5
  • Help: Make a launcher support to android 10 desktop mode

    Help: Make a launcher support to android 10 desktop mode

    I know this isn't a good place to ask something but I found no means to contact you. Sorry.

    I'm working on a responsive launcher app. I want to make it compatible with android 10 desktop mode. I saw your taskbar app doing a great job. So I wanted to know that what steps to be followed in order to get it working.

    I want the launcher in the primary display as phone UI and in the secondary display as desktop UI, just like dex. Do I need to use Screen Manager API or Presentation API or something else. I'm creating this in Flutter and any help in this domain will be highly appreciated but if you could help me in native android, then also it's fine, I will try to create a native platform channel.

    Thanks in advance.

    opened by AjayrajSingh 4
  • Add basic unit test structure

    Add basic unit test structure

    Selecting robolectric as unit test library to test UI on JVM. We use the robolectric version 4.3.1, that supports to latest Android Q(final). But it requires Java 9 to run the tests, so to avoid this problem, we assign the sdk to 28 in robolectric.properties for almost all tests, and leaving Android 10 specific features left to ease the usage of robolectric.

    Now we add a test example for U.java getTaskbarPosition function.

    For check the tests result, we can execute ./gradlew test on the top code directory, or use ctrl + shift + F10 in test file to execute unit test in Android Studio.

    For robolectric Java 9 discussion, we can see the link SO Does Robolectric require Java 9?

    @farmerbb Taskbar is a large app now, maybe we should integrate tests to ensure app function. And unit test is a good start.

    opened by utzcoz 4
  • one app multiple window

    one app multiple window

    4.0.2 can create one app multiple window, 4.0.3 can't. I like taskbar app because it can create one app multiple window, i used this function three years.

    opened by youling257 4
  • Sometimes crashes on screen rotation

    Sometimes crashes on screen rotation

    CM13, Nexus 5X, F-Droid APK. Sometimes the taskbar crashes with a force stop message, usually when I rotate to landscape. Sometimes the icon tensions, only to disappear on a second portrait and landscape.

    opened by nyanpasu64 4
  • Bump Robolectric to 4.7.3

    Bump Robolectric to 4.7.3

    Bump Robolectric to latest 4.7.3.

    I don't bump SDK to 31 for Robolectric, because there are some failed tests when running with SDK 31. Looks like there are some API changes from SDK 31, used by tests. When I have time, I will try to fix it.

    opened by utzcoz 3
  • Donation/Paid version to help with development time?

    Donation/Paid version to help with development time?

    Hi I can imagine that with so many requests for features and bug fixes that its impossible to do everything, perhaps introducing a premium version or donation version on the app store would help? Anyone that would be willing like me to donate a few dollars to help with development of more features add a +1

    opened by x9sim9 0
  • [Feature Request] Foldable phone, different settings for Folded vs UnFolded

    [Feature Request] Foldable phone, different settings for Folded vs UnFolded

    Hi, loving taskbar such a good app, I have one of samsungs foldable phones and replaced the samsung taskbar with this as is alot better.

    The problem I have is that using the Start Button and Having the clock when folded gives me loads of space for switching tasks when unfolded using the big screen, but when the phone is folded using the very narrow screen I literally have enough space to see one app button, rendering the taskbar pretty useless.

    Having different settings for folded vs unfolded would be a big help,

    I hope this is something you can consider, keep up the good work :-)

    opened by x9sim9 0
  • Resize apps at the bottom based on the taskbar size

    Resize apps at the bottom based on the taskbar size

    The taskbar is annoying if you're trying to look for bottom or one-handed button or shortcuts or you just want to open the search bar in your launcher this block anything from the bottom that is reachable at the bottom this would be useful for people if they really needed to access bottom information such as twitter icon or clicking the message box in messaging app such as telegram or discord

    opened by Seandylan123 0
  • Activity memory leak caused by anonymous threads

    Activity memory leak caused by anonymous threads

    An anonymous inner class will hold a reference to the this pointer of the outer class and will not be released until the thread ends. It will hold the Activity and prevent its timely release.

    com.farmerbb.taskbar.activity.PersistentShortcutSelectAppActivity :  onProgressChanged(...)
    com.farmerbb.taskbar.activity.BackupRestoreActivity: void onCreate()
    

    Besides, the while loop in the child thread should check the interrupt status of the thread, and the activity should interrupt the thread to end unnecessary loop execution before destroying it. The anonymous thread can be replaced by static class to eliminate unnecessary references.

    opened by cuixiaoyiyi 0
  • App minimizing needs help.

    App minimizing needs help.

    I'm using a tab s8+ and prefer taskbar to dex mode.

    I do wish minimizing floating apps was done better so that the icons don't just live on screen.

    Also, Please add a tuck window for up to 3 or 4 apps so they don't float on screen while not in use. Similar to slide over by iPad is where apps can be tucked to edge and a gesture brings them up but they are still active.

    Mostly for social media, email. Calendar and notes.

    OneUI has the popup widget function and that's useful.

    If they added the ability to dock popup windows like they do the widgets that would be the idea.

    opened by philliplanos 3
Releases(204)
Owner
Braden Farmer
Pushing the boundaries of what's possible on Android
Braden Farmer
Make Android screenshots of scrollable screen content

scrollscreenshot Make Android screenshots of scrollable screen content - brought to you by PGS Software SA This tool makes a number of screenshots, sc

PGS Software 714 Dec 7, 2022
This Android app adds splash screen slides to make a great intro for an app.

IntroApp This Android app adds splash screen slides to make a great intro for an app. Short description Adding Welcome / Intro screens in your app is

Vaibhav Khulbe 16 Oct 1, 2020
Tool for create complex morphing animations using VectorDrawables (allows morphing between any pair of SVG images)

VectAlign VectAlign (a.k.a. VectorDrawableAlign) is a developer's tool which automagically aligns two VectorDrawable "pathData" strings (or SVG images

Stefano Bonetta 2k Dec 29, 2022
A library which will save you a lot of time from writing the same intent creation code. it consist of many intent creation codes like Share, Contacts, Email and etc, which you can easily use.

Android-Intent-Library A library which will save you a lot of time from writing the same intent creation code. it consist of many intent creation code

Next 67 Aug 24, 2022
A set of Android tools that facilitate apps development

A set of Android tools that facilitate apps development Well, this repo contains pretty much code used internally at Stanfy to develop Android apps. S

Stanfy 183 Dec 3, 2022
This is a Android Studio/ IntelliJ IDEA plugin to localize your Android app, translate your string resources automactically.

#Android Localizationer This is a Android Studio/ IntelliJ IDEA plugin to localize your Android app, translate your string resources automactically. T

Wesley Lin 822 Dec 8, 2022
Android Resource Manager application to manage and analysis your app resources with many features like image resize, Color, Dimens and code Analysis

Android Resource Manager application to manage and analysis your app resources with many features like image resize, Color, Dimens and code Analysis

Amr Hesham 26 Nov 16, 2022
A surgical debugging tool to uncover the layers under your app.

Scalpel DEPRECATED! Android Studio 4.0's layout inspector now includes a live-updating 3D view. Use it! A surgical debugging tool to uncover the layer

Jake Wharton 2.8k Jan 3, 2023
A simple utility to remove unused resources in your Android app to lower the size of the APK. It's based on the Android lint tool output.

android-resource-remover android-resource-remover is utility that removes unused resources reported by Android Lint from your project. The goal is to

Keepsafe 1.3k Dec 16, 2022
An android library that handles the closing of your app interactively.

Shutdown A library that handles the closing of your app interactively. Overview of Shutdown library Shutdown library handles the closing of your app i

Emmanuel Kehinde 56 Oct 5, 2022
The metrics layer for your data

metriql metriql lets you define your business metrics and share them across different data tools. It uses dbt for the transformation layer and integra

metriql 227 Dec 29, 2022
A tool to install components of the Android SDK into a Maven repository or repository manager to use with the Android Maven Plugin, Gradle and other tools.

Maven Android SDK Deployer Original author including numerous fixes and changes: Manfred Moser [email protected] at simpligility technologies i

simpligility 1.4k Dec 27, 2022
Library that makes it possible to read, edit and write CSV files

AdaptiveTableLayout Welcome the new CSV Library AdaptiveTableLayout for Android by Cleveroad Pay your attention to our new library that makes it possi

Cleveroad 1.9k Jan 6, 2023
Simple library to generate and view PDF in Android

PDFCreatorAndroid Simple library to generate and view PDF in Android A simple library to create and view PDF with zero dependency Or native code. Add

Tej Pratap Singh 234 Dec 11, 2022
Enhance the adb shell using busybox, supporting vi、grep and awk etc. No need root.

super-adb 用busybox加持的功能更加强大的adb shell;不需要root。 使用方法 准备工作 安装 python,注意选择安装python 2.x 安装pexpect这个python库: pip install pexpect 下载super_adb,把它放到系统路径 cp su

weishu 273 Dec 7, 2022
A tool to install components of the Android SDK into a Maven repository or repository manager to use with the Android Maven Plugin, Gradle and other tools.

Maven Android SDK Deployer Original author including numerous fixes and changes: Manfred Moser [email protected] at simpligility technologies i

simpligility 1.4k Dec 27, 2022