is there a way to see which apps are accessible via user selection vs services that run in the background?

I know that accessing a list of ALL the installed applications is quite trivial

 var packageManager = getPackageManager()
    var packageList: List<PackageInfo> =
        packageManager.getInstalledPackages(PackageManager.GET_PERMISSIONS)

however I would like to see which apps are accessible either via the home screen or through the standard 'search' list of all apps( ie when user swipes up while on the home screen and sees a list of all the apps installed on the phone.) how can I distinguish the package "com.android.chrome" (which is the chrome app) from say, a different package like "com.google.android.documentsui" (which doesn't have an icon and is most likely some background serviced called from a different app...?)

my "package list" is over 400 items long but I know there are not 400 'apps' in the traditional sense where I launch said app from the home screen (or app list)