1# What is the WindowManager Shell 2 3--- 4 5## Motivation 6 7The primary motivation for the WindowManager Shell (WMShell) library is to effectively scale 8WindowManager by making it easy™ and safe to create windowing features to fit the needs of 9various Android products and form factors. 10 11To achieve this, WindowManager separates the policy of managing windows (WMCore) from the 12presentation of surfaces (WMShell) and provides a minimal interface boundary for the two to 13communicate. 14 15## Who is using the library? 16 17Currently, the WMShell library is used to drive the windowing experience on handheld 18(phones & tablets), TV, Auto, Arc++, and Wear to varying degrees. 19 20## Where does the code live 21 22The core WMShell library code is currently located in the [frameworks/base/libs/WindowManager/Shell](frameworks/base/libs/WindowManager/Shell) 23directory and is included as a part dependency of the host SystemUI apk. 24 25## How do I build the Shell library 26 27The library can be built directly by running (using [go/makepush](http://go/makepush)): 28```shell 29mp :WindowManager-Shell 30``` 31But this is mainly useful for inspecting the contents of the library or verifying it builds. The 32various targets can be found in the Shell library's [Android.bp](frameworks/base/libs/WindowManager/Shell/Android.bp) 33file. 34 35Normally, you would build it as a part of the host SystemUI, for example via commandline: 36```shell 37# Phone SystemUI variant 38mp sysuig 39# Building Shell & SysUI changes along w/ framework changes 40mp core services sysuig 41``` 42 43Or preferably, if you are making WMShell/SysUI only changes (no other framework changes), then 44building via [go/sysui-studio](http://go/sysui-studio) allows for very quick iteration (one click 45build and push of SysUI in < 30s). 46 47If you are making framework changes and are using `aidegen` to set up your platform IDE, make sure 48to include the appropriate directories to build, for example: 49```shell 50# frameworks/base will include base/libs/WindowManager/Shell and base/packages/SystemUI 51aidegen frameworks/base \ 52 vendor/<oem>/packages/SystemUI \ 53 ... 54``` 55 56## Other useful links 57- [go/o-o-summit-20](go/o-o-summit-20) (Video presentations from the WM team) 58- [go/o-o-summit-21](go/o-o-summit-21)