Name | textual-window JSON |
Version |
0.8.1
JSON |
| download |
home_page | None |
Summary | A Textual widget for a floating, draggable window and included window bar/manager system. |
upload_time | 2025-08-03 10:41:40 |
maintainer | None |
docs_url | None |
author | None |
requires_python | >=3.9 |
license | MIT |
keywords |
python
textual
tui
widget
window
|
VCS |
 |
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
<picture class="only-github">
<source media="(prefers-color-scheme: dark)" srcset="https://ttygroup.github.io/assets/textual-window/banner-dark-theme.png">
<source media="(prefers-color-scheme: light)" srcset="https://ttygroup.github.io/assets/textual-window/banner-light-theme.png">
<img src="https://ttygroup.github.io/assets/textual-window/banner-light-theme.png">
</picture>
<!-- MKDOCS-START


MKDOCS-END -->
# Textual-Window
[](https://pypi.org/project/textual-window/)
[](https://github.com/edward-jazzhands/textual-window/releases/latest)
[](https://python.org)
[](https://mypy-lang.org/)
[](https://opensource.org/license/mit)
Textual-Window is an extension library for [Textual](https://github.com/Textualize/textual).
It provides a Window widget, along with an included WindowBar and WindowSwitcher, that makes it
easy to create a desktop GUI-like experience inside of a TUI built with Textual.
Window widgets are floating, draggable, resizable, snappable, closable, and you can even cycle through them in a manner similar to alt-tab. It's like a mini desktop inside of your terminal. (Is it ridiculous? Yes, yes it is. But is it awesome? Also yes.)
## Features
- Drag, resize, and maximize windows. Close windows with ctrl+w.
- Windows can focus, and highlight to show which one is focused. Controls are passed from the highlighted window to its inner scrolling container.
- Included fully-automatic Window Bar (aka Task Bar). Don't worry about keeping track of the windows. Just compose and go. The library will track them for you.
- Included Window Switcher, to cycle window focus in a manner similar to alt-tab. The most recently focused window is always at the start (left side).
- Set the window's min and max size through Textual CSS as you normally would, and the window will respect those settings when resizing. Resizing can also be disabled per window.
- Windows snap to the terminal by default, toggle this on/off in real-time.
- WindowBar can toggle the dock between top and bottom of the screen in real-time.
- Window Bar has right-click context menus, one for each window, as well as a global context menu with options such as close/open all or snap/unsnap all.
- Set the window's starting location on the screen using plain descriptions (ie. right + bottom), as well as whether to initialize open or closed.
- An optional hamburger menu for custom callbacks - The window has a 'menu_options' argument. Pass in a dictionary of functions (label + callback) and these functions will appear in that window's hamburger menu. (If nothing is passed in, the menu is not shown).
- Smooth fade in/out animation adds a convincing touch.
- Create windows in all 3 ways textual supports - context manager, passing in a list of children, and custom Window objects.
- ...and many small QoL things too numerous to list here.
See the documentation for more details.
Note: This library is under pretty active development and so the API is subject to change. If you find a bug, please report it on the issues page.
## Demo App
If you have [uv](https://docs.astral.sh/uv/) or [pipx](https://pipx.pypa.io/stable/), you can immediately try the demo app:
```sh
uvx textual-window
```
```sh
pipx run textual-window
```
## Documentation
### [Click here for documentation](https://edward-jazzhands.github.io/libraries/textual-window/docs/)
## Video
<video style="width: 100%; height: auto;" controls loop>
<source src="https://ttygroup.github.io/assets/textual-window/demo-0.3.5-handbrake.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
[](https://github.com/user-attachments/assets/2bf5f4d9-f289-4e7f-b9ae-e91fd34c1ce3)
## Questions, Issues, Suggestions?
Use the [issues](https://github.com/edward-jazzhands/textual-window/issues) section for bugs or problems, and post ideas or feature requests on the [TTY group discussion board](https://github.com/orgs/ttygroup/discussions).
Raw data
{
"_id": null,
"home_page": null,
"name": "textual-window",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.9",
"maintainer_email": null,
"keywords": "python, textual, tui, widget, window",
"author": null,
"author_email": "edward-jazzhands <ed.jazzhands@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/f5/47/f3bf99ccce5e6b37ddc397ef6cbcd34dac72b10fa938386d36972cfe5477/textual_window-0.8.1.tar.gz",
"platform": null,
"description": "<picture class=\"only-github\">\n <source media=\"(prefers-color-scheme: dark)\" srcset=\"https://ttygroup.github.io/assets/textual-window/banner-dark-theme.png\">\n <source media=\"(prefers-color-scheme: light)\" srcset=\"https://ttygroup.github.io/assets/textual-window/banner-light-theme.png\"> \n <img src=\"https://ttygroup.github.io/assets/textual-window/banner-light-theme.png\">\n</picture>\n\n<!-- MKDOCS-START\n\n\nMKDOCS-END -->\n\n# Textual-Window\n\n[](https://pypi.org/project/textual-window/)\n[](https://github.com/edward-jazzhands/textual-window/releases/latest)\n[](https://python.org)\n[](https://mypy-lang.org/)\n[](https://opensource.org/license/mit)\n\nTextual-Window is an extension library for [Textual](https://github.com/Textualize/textual).\n\nIt provides a Window widget, along with an included WindowBar and WindowSwitcher, that makes it\neasy to create a desktop GUI-like experience inside of a TUI built with Textual.\n\nWindow widgets are floating, draggable, resizable, snappable, closable, and you can even cycle through them in a manner similar to alt-tab. It's like a mini desktop inside of your terminal. (Is it ridiculous? Yes, yes it is. But is it awesome? Also yes.)\n\n## Features\n\n- Drag, resize, and maximize windows. Close windows with ctrl+w.\n- Windows can focus, and highlight to show which one is focused. Controls are passed from the highlighted window to its inner scrolling container.\n- Included fully-automatic Window Bar (aka Task Bar). Don't worry about keeping track of the windows. Just compose and go. The library will track them for you.\n- Included Window Switcher, to cycle window focus in a manner similar to alt-tab. The most recently focused window is always at the start (left side).\n- Set the window's min and max size through Textual CSS as you normally would, and the window will respect those settings when resizing. Resizing can also be disabled per window.\n- Windows snap to the terminal by default, toggle this on/off in real-time.\n- WindowBar can toggle the dock between top and bottom of the screen in real-time.\n- Window Bar has right-click context menus, one for each window, as well as a global context menu with options such as close/open all or snap/unsnap all.\n- Set the window's starting location on the screen using plain descriptions (ie. right + bottom), as well as whether to initialize open or closed.\n- An optional hamburger menu for custom callbacks - The window has a 'menu_options' argument. Pass in a dictionary of functions (label + callback) and these functions will appear in that window's hamburger menu. (If nothing is passed in, the menu is not shown).\n- Smooth fade in/out animation adds a convincing touch.\n- Create windows in all 3 ways textual supports - context manager, passing in a list of children, and custom Window objects.\n- ...and many small QoL things too numerous to list here.\n\nSee the documentation for more details.\n\nNote: This library is under pretty active development and so the API is subject to change. If you find a bug, please report it on the issues page.\n\n## Demo App\n\nIf you have [uv](https://docs.astral.sh/uv/) or [pipx](https://pipx.pypa.io/stable/), you can immediately try the demo app:\n\n```sh\nuvx textual-window \n```\n\n```sh\npipx run textual-window\n```\n\n## Documentation\n\n### [Click here for documentation](https://edward-jazzhands.github.io/libraries/textual-window/docs/)\n\n## Video\n\n<video style=\"width: 100%; height: auto;\" controls loop>\n <source src=\"https://ttygroup.github.io/assets/textual-window/demo-0.3.5-handbrake.mp4\" type=\"video/mp4\">\n Your browser does not support the video tag.\n</video>\n\n[](https://github.com/user-attachments/assets/2bf5f4d9-f289-4e7f-b9ae-e91fd34c1ce3)\n\n## Questions, Issues, Suggestions?\n\nUse the [issues](https://github.com/edward-jazzhands/textual-window/issues) section for bugs or problems, and post ideas or feature requests on the [TTY group discussion board](https://github.com/orgs/ttygroup/discussions).\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "A Textual widget for a floating, draggable window and included window bar/manager system.",
"version": "0.8.1",
"project_urls": {
"Changelog": "https://github.com/edward-jazzhands/textual-window/blob/master/CHANGELOG.md",
"Repository": "https://github.com/edward-jazzhands/textual-window"
},
"split_keywords": [
"python",
" textual",
" tui",
" widget",
" window"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "57e7a1e34f40cccf6a52fa24ced140aaf5ae278a5afd9d124bb579ba29e61e70",
"md5": "892eee89a7d72d536234826c9ee37873",
"sha256": "3abbf909b3c11a225d08cab79008e8b0171c88b9cedd4568022793d858049892"
},
"downloads": -1,
"filename": "textual_window-0.8.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "892eee89a7d72d536234826c9ee37873",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.9",
"size": 32000,
"upload_time": "2025-08-03T10:41:39",
"upload_time_iso_8601": "2025-08-03T10:41:39.716386Z",
"url": "https://files.pythonhosted.org/packages/57/e7/a1e34f40cccf6a52fa24ced140aaf5ae278a5afd9d124bb579ba29e61e70/textual_window-0.8.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "f547f3bf99ccce5e6b37ddc397ef6cbcd34dac72b10fa938386d36972cfe5477",
"md5": "e0712b3571bae81b25bdf565a10731d0",
"sha256": "1a38e1b8387629716e0297362195de227d96685eabadff0bffdcca9b7a4b1dd2"
},
"downloads": -1,
"filename": "textual_window-0.8.1.tar.gz",
"has_sig": false,
"md5_digest": "e0712b3571bae81b25bdf565a10731d0",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9",
"size": 127768,
"upload_time": "2025-08-03T10:41:40",
"upload_time_iso_8601": "2025-08-03T10:41:40.742648Z",
"url": "https://files.pythonhosted.org/packages/f5/47/f3bf99ccce5e6b37ddc397ef6cbcd34dac72b10fa938386d36972cfe5477/textual_window-0.8.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-08-03 10:41:40",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "edward-jazzhands",
"github_project": "textual-window",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "textual-window"
}