# Launcher - UI Considerations ## App Info/Settings ### UI Password * UI password can be **set**, **updated** and **revoked** for an app ### Different UI Viewing modes * UI can be opened in a more secure tauri window (probably default) * UI can be opened in a browser ### More than one UI per app * Option to install additional UI's to an existing app * Option to open a specific UI * Option to define a "default" UI that's opened when clicking on the "Open app" **Important here:** UI's are compatible with specific coordinator zomes. The ability to update coordinator zomes increases the complexity of this topic. Updating a coordinator zome implies that it will likely break compatibility with other UI's. Also worth thinking how this relates to OS notifications of UI's running in the background --> does it make sense to have multiple UI's running in the background for one app? At some point it might make more sense to have the installation process of an "app" be more like "compose your onion". You can start with "pre-cooked" onions of "integrity zomes/coordinator zomes/UI" or you can start with an "integrity zome bundle" and then add "coordinator zomes/UI" layers on top of it. ### OS Notification Settings * A toggle to allow/dissalow this app to send OS notifications * The option to run an app UI in the background such that it can send OS notifications but it is not opened in a window. ### More Network Info Additional network info like "online peer count" and similar will probably be offered soon by holochain and it's likely going to be on a cell level, not app level. Where/how does that fit in nicely? ### Displaying cells of an app An app can have provisioned and cloned cells, where cloned cells can be in disabled state and are then deletable. * display provisioned cells with network information * display cloned cells * display disabled cloned cells with the option to delete This is currently all implemented already but in cases where there are a lot of cloned cells, it becomes pretty overloaded. I'm thinking about having "tabs" for the different types "Provisioned", "Cloned", "Disabled". ### Displaying Storage Info PR [#2147](https://github.com/holochain/holochain/pull/2147) added an API to retrieved storage info about DNA's. This can be used to display information about disk space taken up by DNA's/hApps. Some of the complexity around that topic has been discussed in GitHub issue [#1660](https://github.com/holochain/holochain/issues/1660). DNA's are shared between apps so having a good UX around that is non-trivial. The storage of an app is comprised of: - shared storage - DNAs: DNAs are shared between hApps. Uninstalling one hApp may therefore not free up any space because the same DNA may be in use by another hApp - "owned" storage - UI assets: Currently, each app has a separate folder where it stores its UI assets. At a later stage, UI assets might get "deduplicated" to reduce unnecessary storage of duplicate UI among multiple instances of the same hApp ### Updating hApps Updating a hApp can involve updating UI and/or updating coordinator zomes. Updating coordinator zomes can be especially tricky in case that a hApp has multiple UIs since UIs depend on specific coordinator zomes. So updating coordinator zomes in order to update UI A may break UI B. Also it would be nice to have the option to update a hApp's UI "manually" from the file system. ### Generating custom keypairs Things like the progenitor pattern require use of a specific public key upon app installation. There should probably be a way to manage one's keypairs and generate new ones. All this with a UX that prevents source chain forks due to use of the same public key twice for the same app. ## Exploration Tabbed view for Launcher: - existing initial view could be an icons only app launching interface, like mobile style - a second tab could be the "settings page", that holds the current first view, with settings for all the installed apps. This could have the key management pieces for each app as well from DeepKey (revoke or replace keys would be here) - Appstore tab - Global settings -- DeepKey import device key -- Launcher Developer mode (access to devhub apps that aren't in appstore) ## Ideas - Generic notifications API allowing apps to send app-specific notification types and those notifications being displayed in the Launcher - have the Launcher be more like "spotlight" on macOS. Press a shortcut and you can immediately start typing to open the app of your liking. To get to all the settings you would open the Launcher Settings "app". --> reducing friction as much as possible to interact with Holochain apps > [mary:]I prefer the keyboard activated "LaunchPad" on MacOS for opening app because it gives the app context. I suppose it would depend if this function were to just open apps or if you imagine it also allowing install. ###### tags: `launcher` `components`