---
title: Screen
slug: /screen
---
`Screen` is a OSUI structure that allows the program to use osui elements and it's extensions.
### `Screen::new() -> Arc`
Creates a new `Screen` structure with empty widgets and extensions.
### `draw(self: &Arc, element: FnMut() -> WidgetLoad) -> Arc`
Adds a element to the widgets array and returns the widget for extra parameters.
### `extension(&mut self, ext: Extension)`
Implements a extension to the screen.
### `run(&mut self) -> std::io::Result<()>`
Runs the app.
### `render(&self) -> std::io::Result<()>`
> :::warning
> Do not call this function if you don't know what you're doing, this function may cause a mutex deadlock.
### `pub fn draw_box(self: &Arc, element: Box WidgetLoad + Send + Sync>) -> Arc`
Adds a element to the widgets array and returns the widget for extra parameters.
> :::info
> This function is useful in special scenarios.