Package tge core contains interfaces and core implementation for supported targets: TGE Core should not be used directly, it only defines interfaces and is used by TGE Command Line Tool : An App is the main entry point of TGE, the main() function should normally just starts the Runtime, any other code not handled by the Runtime is potenitally not portable: The App interface is described here and the implementation details in the auto generated app.go using tge-cli. The Runtime instance is initialized through the Run(*App) function of main package. At startup, the Runtime looks for registered plugins and initializes them. Then the App instance is initialized and started. The Runtime instance also exposes API for loading assets and subscribing to events in a generic way. Runtime exposes none portable objects like Host (backend) and Renderer (graphical context), they can be used to implement custom behaviour depending on target in Apps or Plugins, the implementations are as follows: TGE uses Go channel mechanism to handle rendering, two loops are running side by side: Both loops are synchronized using a dedicated channel passed in parameter of each method. As this method allows to make CPU/GPU treatments asynchronous, shared objects between contexts must correctly handled to avoid conflicts. The sync channel is typed as interface{}, it can also be used to pass content and select specific treatments based on underlying interface type. See examples for more details. A good candidate for copy if the reflect.Copy() function: If your data is based on something else than slices but its size justifies low level memory copy, you can also put ticker data in a single element slice and use reflect.Copy() on it. Minimal set of events is handled by Runtime at the most possible portable way. Events are then propagated through publish/subscribe: Events are in their raw form (ie modifiers or gestures are not handled). It's up to the application to implement specific needs. The aim of this approach is to keep the runtime generic and fast by limiting treatments. A dedicated plugin to generate advanced events will be available soon. As TGE core is intended to be as light as possible, all heavy treatments are deported to plugins. The goal is to offer a portable API from Plugins by relying on Runtime. Plugins are automatically registered at Go init() step, to use it, just import them as standard Go packages, ex: It's also possible to create custom plugins by implementing Plugin interface and registering it in the Go init() function :
* https://github.com/openatx/uiautomator2#app-management * Device api related https://github.com/openatx/uiautomator2#retrieve-the-device-info * Gesture interaction with the device https://github.com/openatx/uiautomator2#gesture-interaction-with-the-device * https://github.com/openatx/uiautomator2#input-method * Screen api related https://github.com/openatx/uiautomator2#screen-related * Selector is a handy mechanism to identify a specific UI object in the current window. https://github.com/openatx/uiautomator2#selector * https://github.com/openatx/uiautomator2#toast * https://github.com/openatx/uiautomator2#watcher
mrclean is a library and tool to show images on the Tromsø display wall for the purpose of data cleaning. The code is divide in a library, mrclean, and few executables that are the Mr. Clean components. The components must start in the right order: chronicle, core, display and gesture. All the components need a config file, default is config.json, to be properly configured. Using different configurations for the different components will break things. Running all the components form the same directory will, by default, use the same configuration. The mrcrun executable find in the cmd directory is a convenience tool to run all the components in the right order. Different examples of config.json are in the repository. In the cmd/gesture dir there is one with some gesture configuration examples. The config file is a key/value storage. So far there are only two element stored layers, and circles. Layers represent the depth of the watch directory and the name of the metadata assigned by the user. It has to be a string containing the metaata concatenated by a path separator, on unix systems "/". Circles represents the circle gestures recognized by the gesture component. The value of the circles key object is a list of objects containig the parameter of the circles to be recognized, for example: The layout can be for now only Group or Sort. The order has to be a combination of the layers.
mrclean is a library and tool to show images on the Tromsø display wall for the purpose of data cleaning. The code is divide in a library, mrclean, and few executables that are the Mr. Clean components. The components must start in the right order: chronicle, core, display and gesture. All the components need a config file, default is config.json, to be properly configured. Using different configurations for the different components will break things. Running all the components form the same directory will, by default, use the same configuration. The mrcrun executable find in the cmd directory is a convenience tool to run all the components in the right order. Different examples of config.json are in the repository. In the cmd/gesture dir there is one with some gesture configuration examples. The config file is a key/value storage. So far there are only two element stored layers, and circles. Layers represent the depth of the watch directory and the name of the metadata assigned by the user. It has to be a string containing the metaata concatenated by a path separator, on unix systems "/". Circles represents the circle gestures recognized by the gesture component. The value of the circles key object is a list of objects containig the parameter of the circles to be recognized, for example: The layout can be for now only Group or Sort. The order has to be a combination of the layers.
mrclean is a library and tool to show images on the Tromsø display wall for the purpose of data cleaning. The code is divide in a library, mrclean, and few executables that are the Mr. Clean components. The components must start in the right order: chronicle, core, display and gesture. All the components need a config file, default is config.json, to be properly configured. Using different configurations for the different components will break things. Running all the components form the same directory will, by default, use the same configuration. The mrcrun executable find in the cmd directory is a convenience tool to run all the components in the right order. Different examples of config.json are in the repository. In the cmd/gesture dir there is one with some gesture configuration examples. The config file is a key/value storage. So far there are only two element stored layers, and circles. Layers represent the depth of the watch directory and the name of the metadata assigned by the user. It has to be a string containing the metaata concatenated by a path separator, on unix systems "/". Circles represents the circle gestures recognized by the gesture component. The value of the circles key object is a list of objects containig the parameter of the circles to be recognized, for example: The layout can be for now only Group or Sort. The order has to be a combination of the layers.
mrclean is a library and tool to show images on the Tromsø display wall for the purpose of data cleaning. The code is divide in a library, mrclean, and few executables that are the Mr. Clean components. The components must start in the right order: chronicle, core, display and gesture. All the components need a config file, default is config.json, to be properly configured. Using different configurations for the different components will break things. Running all the components form the same directory will, by default, use the same configuration. The mrcrun executable find in the cmd directory is a convenience tool to run all the components in the right order. Different examples of config.json are in the repository. In the cmd/gesture dir there is one with some gesture configuration examples. The config file is a key/value storage. So far there are only two element stored layers, and circles. Layers represent the depth of the watch directory and the name of the metadata assigned by the user. It has to be a string containing the metaata concatenated by a path separator, on unix systems "/". Circles represents the circle gestures recognized by the gesture component. The value of the circles key object is a list of objects containig the parameter of the circles to be recognized, for example: The layout can be for now only Group or Sort. The order has to be a combination of the layers.
* https://github.com/openatx/uiautomator2#app-management * Device api related https://github.com/openatx/uiautomator2#retrieve-the-device-info * Gesture interaction with the device https://github.com/openatx/uiautomator2#gesture-interaction-with-the-device * https://github.com/openatx/uiautomator2#input-method * Screen api related https://github.com/openatx/uiautomator2#screen-related * Selector is a handy mechanism to identify a specific UI object in the current window. https://github.com/openatx/uiautomator2#selector * https://github.com/openatx/uiautomator2#toast * https://github.com/openatx/uiautomator2#watcher