New widget, that fits inside the container (if possible).
+
+
+
+
+
+
+
+
+
+
+
+
+
contains
@@ -11732,19 +11991,20 @@
The x_axis and y_axis parameters define which direction to move the region.
A positive value will move the region right or down, a negative value will move
the region left or up. A value of 0 will leave that axis unmodified.
+
If a margin is provided, it will add space between the resulting region.
+
Note that if margin is specified it overlaps, so the space will be the maximum
+of two edges, and not the total.
A selector to specify a widget that should be used as the reference
+
A widget or selector used as an origin
for the click offset. If this is not specified, the offset is interpreted
relative to the screen. You can use this parameter to try to click on a
specific widget. However, if the widget is currently hidden or obscured by
@@ -7365,7 +7365,7 @@
-
The offset to click. The offset is relative to the selector provided
+
The offset to click. The offset is relative to the widget / selector provided
or to the screen, if no selector is provided.
A selector to specify a widget that should be used as the reference
+
A widget or selector used as an origin
for the hover offset. If this is not specified, the offset is interpreted
relative to the screen. You can use this parameter to try to hover a
specific widget. However, if the widget is currently hidden or obscured by
@@ -7591,7 +7591,7 @@
-
The offset to hover. The offset is relative to the selector provided
+
The offset to hover. The offset is relative to the widget / selector provided
or to the screen, if no selector is provided.
A selector to specify a widget that should be used as the reference
+
A widget or selector used as an origin
for the event offset. If this is not specified, the offset is interpreted
relative to the screen. You can use this parameter to try to target a
specific widget. However, if the widget is currently hidden or obscured by
@@ -7721,7 +7721,7 @@
-
The offset for the event. The offset is relative to the selector
+
The offset for the event. The offset is relative to the selector / widget
provided or to the screen, if no selector is provided.
A selector to specify a widget that should be used as the reference
+
A widget or selector used as an origin
for the event offset. If this is not specified, the offset is interpreted
relative to the screen. You can use this parameter to try to target a
specific widget. However, if the widget is currently hidden or obscured by
@@ -7899,7 +7899,7 @@
-
The offset for the event. The offset is relative to the selector
+
The offset for the event. The offset is relative to the widget / selector
provided or to the screen, if no selector is provided.
A selector for the widgets (direct children of Screen) that are allowed in the maximized view (in addition to maximized widget).
+
A selector for the widgets (direct children of Screen) that are allowed in the maximized view (in addition to maximized widget). Or
+None to default to App.ALLOW_IN_MAXIMIZED_VIEW
Force an absolute offset for the widget (used by tooltips).
+
+
+
+
+
+
+
+
allow_horizontal_scroll
diff --git a/blog/images/compositor/cuts.excalidraw.svg b/blog/images/compositor/cuts.excalidraw.svg
new file mode 100644
index 0000000000..454ac2943c
--- /dev/null
+++ b/blog/images/compositor/cuts.excalidraw.svg
@@ -0,0 +1,21 @@
+
diff --git a/feed_rss_created.xml b/feed_rss_created.xml
index 66d3d1cba7..0f4393f1d9 100644
--- a/feed_rss_created.xml
+++ b/feed_rss_created.xml
@@ -1 +1 @@
-Textualhttps://textual.textualize.io/https://github.com/textualize/textual/enThu, 03 Oct 2024 10:06:32 -0000Thu, 03 Oct 2024 10:06:32 -00001440MkDocs RSS plugin - v1.15.0Anatomy of a Textual User InterfacewillmcguganDevLog<h1>Anatomy of a Textual User Interface</h1><p>!!! note "My bad 🤦"</p><pre><code>The date is wrong on this post&mdash;it was actually published on the 2nd of September 2024.I don't want to fix it, as that would break the URL.</code></pre><p>I recently wrote a <a href="https://en.wikipedia.org/wiki/Text-based_user_interface">TUI</a> to chat to an AI agent in the terminal.I'm not the first to do this (shout out to <a href="https://github.com/darrenburns/elia">Elia</a> and <a href="https://github.com/villekr/paita">Paita</a>), but I <em>may</em> be the first to have it reply as if it were the AI from the Aliens movies?</p><p>Here's a video of it in action:</p><iframe width="100%" style="aspect-ratio:1512 / 982" src="https://www.youtube.com/embed/hr5JvQS4d_w" title="Mother AI" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe><p>Now let's dissect the code like Bishop dissects a facehugger.</p>https://textual.textualize.io/blog/2024/09/15/anatomy-of-a-textual-user-interface/ Sun, 15 Sep 2024 00:00:00 +0000Textualhttps://textual.textualize.io/blog/2024/09/15/anatomy-of-a-textual-user-interface/Towards Textual Web ApplicationsdarrenburnsDevLog<p>In this post we'll look at some new functionality available in Textual apps accessed via a browser and how it helps provide a more equal experience across platforms.</p>https://textual.textualize.io/blog/2024/09/08/towards-textual-web-applications/ Sun, 08 Sep 2024 00:00:00 +0000Textualhttps://textual.textualize.io/blog/2024/09/08/towards-textual-web-applications/Behind the Curtain of Inline Terminal ApplicationswillmcguganDevLog<h1>Behind the Curtain of Inline Terminal Applications</h1><p>Textual recently added the ability to run <em>inline</em> terminal apps.You can see this in action if you run the <a href="https://github.com/Textualize/textual/blob/main/examples/calculator.py">calculator example</a>:</p><p><img alt="Inline Calculator" src="../images/calcinline.png"></p><p>The application appears directly under the prompt, rather than occupying the full height of the screen—which is more typical of TUI applications.You can interact with this calculator using keys <em>or</em> the mouse.When you press ++ctrl+c++ the calculator disappears and returns you to the prompt.</p><p>Here's another app that creates an inline code editor:</p><p>=== "Video"</p><pre><code><div class="video-wrapper"> <iframe width="852" height="525" src="https://www.youtube.com/embed/Dt70oSID1DY" title="Inline app" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></div></code></pre><p>=== "inline.py" ```python from textual.app import App, ComposeResult from textual.widgets import TextArea</p><pre><code>class InlineApp(App): CSS = """ TextArea { height: auto; max-height: 50vh; } """ def compose(self) -> ComposeResult: yield TextArea(language="python")if __name__ == "__main__": InlineApp().run(inline=True)```</code></pre><p>This post will cover some of what goes on under the hood to make such inline apps work.</p><p>It's not going to go in to too much detail.I'm assuming most readers will be more interested in a birds-eye view rather than all the gory details.</p>https://textual.textualize.io/blog/2024/04/20/behind-the-curtain-of-inline-terminal-applications/ Sat, 20 Apr 2024 00:00:00 +0000Textualhttps://textual.textualize.io/blog/2024/04/20/behind-the-curtain-of-inline-terminal-applications/Remote memory profiling with MemraywillmcguganDevLog<h1>Remote memory profiling with Memray</h1><p><a href="https://github.com/bloomberg/memray">Memray</a> is a memory profiler for Python, built by some very smart devs at Bloomberg.It is a fantastic tool to identify memory leaks in your code or other libraries (down to the C level)!</p><p>They recently added a <a href="https://github.com/textualize/textual/">Textual</a> interface which looks amazing, and lets you monitor your process right from the terminal:</p><p><img alt="Memray" src="https://raw.githubusercontent.com/bloomberg/memray/main/docs/_static/images/live_animated.webp"></p>https://textual.textualize.io/blog/2024/02/20/remote-memory-profiling-with-memray/ Tue, 20 Feb 2024 00:00:00 +0000Textualhttps://textual.textualize.io/blog/2024/02/20/remote-memory-profiling-with-memray/File magic with the Python standard librarywillmcguganDevLog<h1>File magic with the Python standard library</h1><p>I recently published <a href="https://github.com/textualize/toolong">Toolong</a>, an app for viewing log files.There were some interesting technical challenges in building Toolong that I'd like to cover in this post.</p>https://textual.textualize.io/blog/2024/02/11/file-magic-with-the-python-standard-library/ Sun, 11 Feb 2024 00:00:00 +0000Textualhttps://textual.textualize.io/blog/2024/02/11/file-magic-with-the-python-standard-library/Announcing textual-plotextdavepDevLog<h1>Announcing textual-plotext</h1><p>It's no surprise that a common question on the <a href="https://discord.gg/Enf6Z3qhVr">Textual Discordserver</a> is how to go about producing plots inthe terminal. A popular solution that has been suggested is<a href="https://github.com/piccolomo/plotext">Plotext</a>. While Plotext doesn'tdirectly support Textual, it is <a href="https://github.com/piccolomo/plotext/blob/master/readme/environments.md#rich">easy to use withRich</a>and, because of this, we wanted to make it just as easy to use in yourTextual applications.</p>https://textual.textualize.io/blog/2023/10/04/announcing-textual-plotext/ Wed, 04 Oct 2023 00:00:00 +0000Textualhttps://textual.textualize.io/blog/2023/10/04/announcing-textual-plotext/Textual 0.38.0 adds a syntax aware TextAreawillmcguganRelease<h1>Textual 0.38.0 adds a syntax aware TextArea</h1><p>This is the second big feature release this month after last week's <a href="./release0.37.0.md">command palette</a>.</p>https://textual.textualize.io/blog/2023/09/21/textual-0380-adds-a-syntax-aware-textarea/ Thu, 21 Sep 2023 00:00:00 +0000Textualhttps://textual.textualize.io/blog/2023/09/21/textual-0380-adds-a-syntax-aware-textarea/Things I learned while building Textual's TextAreadarrenburnsDevLog<h1>Things I learned building a text editor for the terminal</h1><p><code>TextArea</code> is the latest widget to be added to Textual's <a href="https://textual.textualize.io/widget_gallery/">growing collection</a>.It provides a multi-line space to edit text, and features optional syntax highlighting for a selection of languages.</p><p><img alt="text-area-welcome.gif" src="../images/text-area-learnings/text-area-welcome.gif"></p><p>Adding a <code>TextArea</code> to your Textual app is as simple as adding this to your <code>compose</code> method:</p><p><code>pythonyield TextArea()</code></p><p>Enabling syntax highlighting for a language is as simple as:</p><p><code>pythonyield TextArea(language="python")</code></p><p>Working on the <code>TextArea</code> widget for Textual taught me a lot about Python and my generalapproach to software engineering. It gave me an appreciation for the subtle functionality behindthe editors we use on a daily basis — features we may not even notice, despitesome engineer spending hours perfecting it to provide a small boost to our development experience.</p><p>This post is a tour of some of these learnings.</p>https://textual.textualize.io/blog/2023/09/18/things-i-learned-while-building-textuals-textarea/ Mon, 18 Sep 2023 00:00:00 +0000Textualhttps://textual.textualize.io/blog/2023/09/18/things-i-learned-while-building-textuals-textarea/Textual 0.37.0 adds a command palettewillmcguganRelease<h1>Textual 0.37.0 adds a command palette</h1><p>Textual version 0.37.0 has landed!The highlight of this release is the new command palette.</p>https://textual.textualize.io/blog/2023/09/15/textual-0370-adds-a-command-palette/ Fri, 15 Sep 2023 00:00:00 +0000Textualhttps://textual.textualize.io/blog/2023/09/15/textual-0370-adds-a-command-palette/What is Textual Web?willmcguganNews<h1>What is Textual Web?</h1><p>If you know us, you will know that we are the team behind <a href="https://github.com/Textualize/rich">Rich</a> and <a href="https://github.com/Textualize/textual">Textual</a> — two popular Python libraries that work magic in the terminal.</p><p>!!! note</p><pre><code>Not to mention [Rich-CLI](https://github.com/Textualize/rich-cli), [Trogon](https://github.com/Textualize/trogon), and [Frogmouth](https://github.com/Textualize/frogmouth)</code></pre><p>Today we are adding one project more to that lineup: <a href="https://github.com/Textualize/textual-web">textual-web</a>.</p>https://textual.textualize.io/blog/2023/09/06/what-is-textual-web/ Wed, 06 Sep 2023 00:00:00 +0000Textualhttps://textual.textualize.io/blog/2023/09/06/what-is-textual-web/Pull Requests are cake or puppieswillmcguganDevLog<h1>Pull Requests are cake or puppies</h1><p>Broadly speaking, there are two types of contributions you can make to an Open Source project.</p>https://textual.textualize.io/blog/2023/07/29/pull-requests-are-cake-or-puppies/ Sat, 29 Jul 2023 00:00:00 +0000Textualhttps://textual.textualize.io/blog/2023/07/29/pull-requests-are-cake-or-puppies/Using Rich Inspect to interrogate Python objectswillmcguganDevLog<h1>Using Rich Inspect to interrogate Python objects</h1><p>The <a href="https://github.com/Textualize/rich">Rich</a> library has a few functions that are admittedly a little out of scope for a terminal color library. One such function is <code>inspect</code> which is so useful you may want to <code>pip install rich</code> just for this feature.</p>https://textual.textualize.io/blog/2023/07/27/using-rich-inspect-to-interrogate-python-objects/ Thu, 27 Jul 2023 00:00:00 +0000Textualhttps://textual.textualize.io/blog/2023/07/27/using-rich-inspect-to-interrogate-python-objects/Textual 0.30.0 adds desktop-style notificationswillmcguganRelease<h1>Textual 0.30.0 adds desktop-style notifications</h1><p>We have a new release of Textual to talk about, but before that I'd like to cover a little Textual news.</p>https://textual.textualize.io/blog/2023/07/17/textual-0300-adds-desktop-style-notifications/ Mon, 17 Jul 2023 00:00:00 +0000Textualhttps://textual.textualize.io/blog/2023/07/17/textual-0300-adds-desktop-style-notifications/Textual 0.29.0 refactors dev toolswillmcguganRelease<h1>Textual 0.29.0 refactors dev tools</h1><p>It's been a slow week or two at Textualize, with Textual devs taking well-earned annual leave, but we still managed to get a new version out.</p>https://textual.textualize.io/blog/2023/07/03/textual-0290-refactors-dev-tools/ Mon, 03 Jul 2023 00:00:00 +0000Textualhttps://textual.textualize.io/blog/2023/07/03/textual-0290-refactors-dev-tools/To TUI or not to TUIwillmcguganDevLog<h1>To TUI or not to TUI</h1><p>Tech moves pretty fast.If you don’t stop and look around once in a while, you could miss it.And yet some technology feels like it has been around forever.</p><p>Terminals are one of those forever-technologies.</p>https://textual.textualize.io/blog/2023/06/06/to-tui-or-not-to-tui/ Tue, 06 Jun 2023 00:00:00 +0000Textualhttps://textual.textualize.io/blog/2023/06/06/to-tui-or-not-to-tui/Textual adds Sparklines, Selection list, Input validation, and tool tipswillmcguganRelease<h1>Textual adds Sparklines, Selection list, Input validation, and tool tips</h1><p>It's been 12 days since the last Textual release, which is longer than our usual release cycle of a week.</p><p>We've been a little distracted with our "dogfood" projects: <a href="https://github.com/Textualize/frogmouth">Frogmouth</a> and <a href="https://github.com/Textualize/trogon">Trogon</a>. Both of which hit 1000 Github stars in 24 hours. We will be maintaining / updating those, but it is business as usual for this Textual release (and it's a big one). We have such sights to show you.</p>https://textual.textualize.io/blog/2023/06/01/textual-adds-sparklines-selection-list-input-validation-and-tool-tips/ Thu, 01 Jun 2023 00:00:00 +0000Textualhttps://textual.textualize.io/blog/2023/06/01/textual-adds-sparklines-selection-list-input-validation-and-tool-tips/Textual 0.24.0 adds a Select controlwillmcguganRelease<h1>Textual 0.24.0 adds a Select control</h1><p>Coming just 5 days after the last release, we have version 0.24.0 which we are crowning the King of Textual releases.At least until it is deposed by version 0.25.0.</p>https://textual.textualize.io/blog/2023/05/08/textual-0240-adds-a-select-control/ Mon, 08 May 2023 00:00:00 +0000Textualhttps://textual.textualize.io/blog/2023/05/08/textual-0240-adds-a-select-control/Textual 0.23.0 improves message handlingwillmcguganRelease<h1>Textual 0.23.0 improves message handling</h1><p>It's been a busy couple of weeks at Textualize.We've been building apps with <a href="https://github.com/Textualize/textual">Textual</a>, as part of our <em>dog-fooding</em> week.The first app, <a href="https://github.com/Textualize/frogmouth">Frogmouth</a>, was released at the weekend and already has 1K GitHub stars!Expect two more such apps this month.</p>https://textual.textualize.io/blog/2023/05/03/textual-0230-improves-message-handling/ Wed, 03 May 2023 00:00:00 +0000Textualhttps://textual.textualize.io/blog/2023/05/03/textual-0230-improves-message-handling/Textual 0.18.0 adds API for managing concurrent workerswillmcguganRelease<h1>Textual 0.18.0 adds API for managing concurrent workers</h1><p>Less than a week since the last release, and we have a new API to show you.</p>https://textual.textualize.io/blog/2023/04/04/textual-0180-adds-api-for-managing-concurrent-workers/ Tue, 04 Apr 2023 00:00:00 +0000Textualhttps://textual.textualize.io/blog/2023/04/04/textual-0180-adds-api-for-managing-concurrent-workers/Textual 0.17.0 adds translucent screens and Option ListwillmcguganRelease<h1>Textual 0.17.0 adds translucent screens and Option List</h1><p>This is a surprisingly large release, given it has been just 7 days since the last version (and we were down a developer for most of that time).</p><p>What's new in this release?</p>https://textual.textualize.io/blog/2023/03/29/textual-0170-adds-translucent-screens-and-option-list/ Wed, 29 Mar 2023 00:00:00 +0000Textualhttps://textual.textualize.io/blog/2023/03/29/textual-0170-adds-translucent-screens-and-option-list/
\ No newline at end of file
+Textualhttps://textual.textualize.io/https://github.com/textualize/textual/enThu, 10 Oct 2024 13:55:22 -0000Thu, 10 Oct 2024 13:55:22 -00001440MkDocs RSS plugin - v1.15.0Anatomy of a Textual User InterfacewillmcguganDevLog<h1>Anatomy of a Textual User Interface</h1><p>!!! note "My bad 🤦"</p><pre><code>The date is wrong on this post&mdash;it was actually published on the 2nd of September 2024.I don't want to fix it, as that would break the URL.</code></pre><p>I recently wrote a <a href="https://en.wikipedia.org/wiki/Text-based_user_interface">TUI</a> to chat to an AI agent in the terminal.I'm not the first to do this (shout out to <a href="https://github.com/darrenburns/elia">Elia</a> and <a href="https://github.com/villekr/paita">Paita</a>), but I <em>may</em> be the first to have it reply as if it were the AI from the Aliens movies?</p><p>Here's a video of it in action:</p><iframe width="100%" style="aspect-ratio:1512 / 982" src="https://www.youtube.com/embed/hr5JvQS4d_w" title="Mother AI" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe><p>Now let's dissect the code like Bishop dissects a facehugger.</p>https://textual.textualize.io/blog/2024/09/15/anatomy-of-a-textual-user-interface/ Sun, 15 Sep 2024 00:00:00 +0000Textualhttps://textual.textualize.io/blog/2024/09/15/anatomy-of-a-textual-user-interface/Towards Textual Web ApplicationsdarrenburnsDevLog<p>In this post we'll look at some new functionality available in Textual apps accessed via a browser and how it helps provide a more equal experience across platforms.</p>https://textual.textualize.io/blog/2024/09/08/towards-textual-web-applications/ Sun, 08 Sep 2024 00:00:00 +0000Textualhttps://textual.textualize.io/blog/2024/09/08/towards-textual-web-applications/Behind the Curtain of Inline Terminal ApplicationswillmcguganDevLog<h1>Behind the Curtain of Inline Terminal Applications</h1><p>Textual recently added the ability to run <em>inline</em> terminal apps.You can see this in action if you run the <a href="https://github.com/Textualize/textual/blob/main/examples/calculator.py">calculator example</a>:</p><p><img alt="Inline Calculator" src="../images/calcinline.png"></p><p>The application appears directly under the prompt, rather than occupying the full height of the screen—which is more typical of TUI applications.You can interact with this calculator using keys <em>or</em> the mouse.When you press ++ctrl+c++ the calculator disappears and returns you to the prompt.</p><p>Here's another app that creates an inline code editor:</p><p>=== "Video"</p><pre><code><div class="video-wrapper"> <iframe width="852" height="525" src="https://www.youtube.com/embed/Dt70oSID1DY" title="Inline app" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></div></code></pre><p>=== "inline.py" ```python from textual.app import App, ComposeResult from textual.widgets import TextArea</p><pre><code>class InlineApp(App): CSS = """ TextArea { height: auto; max-height: 50vh; } """ def compose(self) -> ComposeResult: yield TextArea(language="python")if __name__ == "__main__": InlineApp().run(inline=True)```</code></pre><p>This post will cover some of what goes on under the hood to make such inline apps work.</p><p>It's not going to go in to too much detail.I'm assuming most readers will be more interested in a birds-eye view rather than all the gory details.</p>https://textual.textualize.io/blog/2024/04/20/behind-the-curtain-of-inline-terminal-applications/ Sat, 20 Apr 2024 00:00:00 +0000Textualhttps://textual.textualize.io/blog/2024/04/20/behind-the-curtain-of-inline-terminal-applications/Remote memory profiling with MemraywillmcguganDevLog<h1>Remote memory profiling with Memray</h1><p><a href="https://github.com/bloomberg/memray">Memray</a> is a memory profiler for Python, built by some very smart devs at Bloomberg.It is a fantastic tool to identify memory leaks in your code or other libraries (down to the C level)!</p><p>They recently added a <a href="https://github.com/textualize/textual/">Textual</a> interface which looks amazing, and lets you monitor your process right from the terminal:</p><p><img alt="Memray" src="https://raw.githubusercontent.com/bloomberg/memray/main/docs/_static/images/live_animated.webp"></p>https://textual.textualize.io/blog/2024/02/20/remote-memory-profiling-with-memray/ Tue, 20 Feb 2024 00:00:00 +0000Textualhttps://textual.textualize.io/blog/2024/02/20/remote-memory-profiling-with-memray/File magic with the Python standard librarywillmcguganDevLog<h1>File magic with the Python standard library</h1><p>I recently published <a href="https://github.com/textualize/toolong">Toolong</a>, an app for viewing log files.There were some interesting technical challenges in building Toolong that I'd like to cover in this post.</p>https://textual.textualize.io/blog/2024/02/11/file-magic-with-the-python-standard-library/ Sun, 11 Feb 2024 00:00:00 +0000Textualhttps://textual.textualize.io/blog/2024/02/11/file-magic-with-the-python-standard-library/Announcing textual-plotextdavepDevLog<h1>Announcing textual-plotext</h1><p>It's no surprise that a common question on the <a href="https://discord.gg/Enf6Z3qhVr">Textual Discordserver</a> is how to go about producing plots inthe terminal. A popular solution that has been suggested is<a href="https://github.com/piccolomo/plotext">Plotext</a>. While Plotext doesn'tdirectly support Textual, it is <a href="https://github.com/piccolomo/plotext/blob/master/readme/environments.md#rich">easy to use withRich</a>and, because of this, we wanted to make it just as easy to use in yourTextual applications.</p>https://textual.textualize.io/blog/2023/10/04/announcing-textual-plotext/ Wed, 04 Oct 2023 00:00:00 +0000Textualhttps://textual.textualize.io/blog/2023/10/04/announcing-textual-plotext/Textual 0.38.0 adds a syntax aware TextAreawillmcguganRelease<h1>Textual 0.38.0 adds a syntax aware TextArea</h1><p>This is the second big feature release this month after last week's <a href="./release0.37.0.md">command palette</a>.</p>https://textual.textualize.io/blog/2023/09/21/textual-0380-adds-a-syntax-aware-textarea/ Thu, 21 Sep 2023 00:00:00 +0000Textualhttps://textual.textualize.io/blog/2023/09/21/textual-0380-adds-a-syntax-aware-textarea/Things I learned while building Textual's TextAreadarrenburnsDevLog<h1>Things I learned building a text editor for the terminal</h1><p><code>TextArea</code> is the latest widget to be added to Textual's <a href="https://textual.textualize.io/widget_gallery/">growing collection</a>.It provides a multi-line space to edit text, and features optional syntax highlighting for a selection of languages.</p><p><img alt="text-area-welcome.gif" src="../images/text-area-learnings/text-area-welcome.gif"></p><p>Adding a <code>TextArea</code> to your Textual app is as simple as adding this to your <code>compose</code> method:</p><p><code>pythonyield TextArea()</code></p><p>Enabling syntax highlighting for a language is as simple as:</p><p><code>pythonyield TextArea(language="python")</code></p><p>Working on the <code>TextArea</code> widget for Textual taught me a lot about Python and my generalapproach to software engineering. It gave me an appreciation for the subtle functionality behindthe editors we use on a daily basis — features we may not even notice, despitesome engineer spending hours perfecting it to provide a small boost to our development experience.</p><p>This post is a tour of some of these learnings.</p>https://textual.textualize.io/blog/2023/09/18/things-i-learned-while-building-textuals-textarea/ Mon, 18 Sep 2023 00:00:00 +0000Textualhttps://textual.textualize.io/blog/2023/09/18/things-i-learned-while-building-textuals-textarea/Textual 0.37.0 adds a command palettewillmcguganRelease<h1>Textual 0.37.0 adds a command palette</h1><p>Textual version 0.37.0 has landed!The highlight of this release is the new command palette.</p>https://textual.textualize.io/blog/2023/09/15/textual-0370-adds-a-command-palette/ Fri, 15 Sep 2023 00:00:00 +0000Textualhttps://textual.textualize.io/blog/2023/09/15/textual-0370-adds-a-command-palette/What is Textual Web?willmcguganNews<h1>What is Textual Web?</h1><p>If you know us, you will know that we are the team behind <a href="https://github.com/Textualize/rich">Rich</a> and <a href="https://github.com/Textualize/textual">Textual</a> — two popular Python libraries that work magic in the terminal.</p><p>!!! note</p><pre><code>Not to mention [Rich-CLI](https://github.com/Textualize/rich-cli), [Trogon](https://github.com/Textualize/trogon), and [Frogmouth](https://github.com/Textualize/frogmouth)</code></pre><p>Today we are adding one project more to that lineup: <a href="https://github.com/Textualize/textual-web">textual-web</a>.</p>https://textual.textualize.io/blog/2023/09/06/what-is-textual-web/ Wed, 06 Sep 2023 00:00:00 +0000Textualhttps://textual.textualize.io/blog/2023/09/06/what-is-textual-web/Pull Requests are cake or puppieswillmcguganDevLog<h1>Pull Requests are cake or puppies</h1><p>Broadly speaking, there are two types of contributions you can make to an Open Source project.</p>https://textual.textualize.io/blog/2023/07/29/pull-requests-are-cake-or-puppies/ Sat, 29 Jul 2023 00:00:00 +0000Textualhttps://textual.textualize.io/blog/2023/07/29/pull-requests-are-cake-or-puppies/Using Rich Inspect to interrogate Python objectswillmcguganDevLog<h1>Using Rich Inspect to interrogate Python objects</h1><p>The <a href="https://github.com/Textualize/rich">Rich</a> library has a few functions that are admittedly a little out of scope for a terminal color library. One such function is <code>inspect</code> which is so useful you may want to <code>pip install rich</code> just for this feature.</p>https://textual.textualize.io/blog/2023/07/27/using-rich-inspect-to-interrogate-python-objects/ Thu, 27 Jul 2023 00:00:00 +0000Textualhttps://textual.textualize.io/blog/2023/07/27/using-rich-inspect-to-interrogate-python-objects/Textual 0.30.0 adds desktop-style notificationswillmcguganRelease<h1>Textual 0.30.0 adds desktop-style notifications</h1><p>We have a new release of Textual to talk about, but before that I'd like to cover a little Textual news.</p>https://textual.textualize.io/blog/2023/07/17/textual-0300-adds-desktop-style-notifications/ Mon, 17 Jul 2023 00:00:00 +0000Textualhttps://textual.textualize.io/blog/2023/07/17/textual-0300-adds-desktop-style-notifications/Textual 0.29.0 refactors dev toolswillmcguganRelease<h1>Textual 0.29.0 refactors dev tools</h1><p>It's been a slow week or two at Textualize, with Textual devs taking well-earned annual leave, but we still managed to get a new version out.</p>https://textual.textualize.io/blog/2023/07/03/textual-0290-refactors-dev-tools/ Mon, 03 Jul 2023 00:00:00 +0000Textualhttps://textual.textualize.io/blog/2023/07/03/textual-0290-refactors-dev-tools/To TUI or not to TUIwillmcguganDevLog<h1>To TUI or not to TUI</h1><p>Tech moves pretty fast.If you don’t stop and look around once in a while, you could miss it.And yet some technology feels like it has been around forever.</p><p>Terminals are one of those forever-technologies.</p>https://textual.textualize.io/blog/2023/06/06/to-tui-or-not-to-tui/ Tue, 06 Jun 2023 00:00:00 +0000Textualhttps://textual.textualize.io/blog/2023/06/06/to-tui-or-not-to-tui/Textual adds Sparklines, Selection list, Input validation, and tool tipswillmcguganRelease<h1>Textual adds Sparklines, Selection list, Input validation, and tool tips</h1><p>It's been 12 days since the last Textual release, which is longer than our usual release cycle of a week.</p><p>We've been a little distracted with our "dogfood" projects: <a href="https://github.com/Textualize/frogmouth">Frogmouth</a> and <a href="https://github.com/Textualize/trogon">Trogon</a>. Both of which hit 1000 Github stars in 24 hours. We will be maintaining / updating those, but it is business as usual for this Textual release (and it's a big one). We have such sights to show you.</p>https://textual.textualize.io/blog/2023/06/01/textual-adds-sparklines-selection-list-input-validation-and-tool-tips/ Thu, 01 Jun 2023 00:00:00 +0000Textualhttps://textual.textualize.io/blog/2023/06/01/textual-adds-sparklines-selection-list-input-validation-and-tool-tips/Textual 0.24.0 adds a Select controlwillmcguganRelease<h1>Textual 0.24.0 adds a Select control</h1><p>Coming just 5 days after the last release, we have version 0.24.0 which we are crowning the King of Textual releases.At least until it is deposed by version 0.25.0.</p>https://textual.textualize.io/blog/2023/05/08/textual-0240-adds-a-select-control/ Mon, 08 May 2023 00:00:00 +0000Textualhttps://textual.textualize.io/blog/2023/05/08/textual-0240-adds-a-select-control/Textual 0.23.0 improves message handlingwillmcguganRelease<h1>Textual 0.23.0 improves message handling</h1><p>It's been a busy couple of weeks at Textualize.We've been building apps with <a href="https://github.com/Textualize/textual">Textual</a>, as part of our <em>dog-fooding</em> week.The first app, <a href="https://github.com/Textualize/frogmouth">Frogmouth</a>, was released at the weekend and already has 1K GitHub stars!Expect two more such apps this month.</p>https://textual.textualize.io/blog/2023/05/03/textual-0230-improves-message-handling/ Wed, 03 May 2023 00:00:00 +0000Textualhttps://textual.textualize.io/blog/2023/05/03/textual-0230-improves-message-handling/Textual 0.18.0 adds API for managing concurrent workerswillmcguganRelease<h1>Textual 0.18.0 adds API for managing concurrent workers</h1><p>Less than a week since the last release, and we have a new API to show you.</p>https://textual.textualize.io/blog/2023/04/04/textual-0180-adds-api-for-managing-concurrent-workers/ Tue, 04 Apr 2023 00:00:00 +0000Textualhttps://textual.textualize.io/blog/2023/04/04/textual-0180-adds-api-for-managing-concurrent-workers/Textual 0.17.0 adds translucent screens and Option ListwillmcguganRelease<h1>Textual 0.17.0 adds translucent screens and Option List</h1><p>This is a surprisingly large release, given it has been just 7 days since the last version (and we were down a developer for most of that time).</p><p>What's new in this release?</p>https://textual.textualize.io/blog/2023/03/29/textual-0170-adds-translucent-screens-and-option-list/ Wed, 29 Mar 2023 00:00:00 +0000Textualhttps://textual.textualize.io/blog/2023/03/29/textual-0170-adds-translucent-screens-and-option-list/
\ No newline at end of file
diff --git a/feed_rss_updated.xml b/feed_rss_updated.xml
index a0362467a2..2881084968 100644
--- a/feed_rss_updated.xml
+++ b/feed_rss_updated.xml
@@ -1 +1 @@
-Textualhttps://textual.textualize.io/https://github.com/textualize/textual/enThu, 03 Oct 2024 10:06:32 -0000Thu, 03 Oct 2024 10:06:32 -00001440MkDocs RSS plugin - v1.15.0Anatomy of a Textual User InterfacewillmcguganDevLog<h1>Anatomy of a Textual User Interface</h1><p>!!! note "My bad 🤦"</p><pre><code>The date is wrong on this post&mdash;it was actually published on the 2nd of September 2024.I don't want to fix it, as that would break the URL.</code></pre><p>I recently wrote a <a href="https://en.wikipedia.org/wiki/Text-based_user_interface">TUI</a> to chat to an AI agent in the terminal.I'm not the first to do this (shout out to <a href="https://github.com/darrenburns/elia">Elia</a> and <a href="https://github.com/villekr/paita">Paita</a>), but I <em>may</em> be the first to have it reply as if it were the AI from the Aliens movies?</p><p>Here's a video of it in action:</p><iframe width="100%" style="aspect-ratio:1512 / 982" src="https://www.youtube.com/embed/hr5JvQS4d_w" title="Mother AI" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe><p>Now let's dissect the code like Bishop dissects a facehugger.</p>https://textual.textualize.io/blog/2024/09/15/anatomy-of-a-textual-user-interface/ Sun, 08 Sep 2024 12:17:42 +0000Textualhttps://textual.textualize.io/blog/2024/09/15/anatomy-of-a-textual-user-interface/Towards Textual Web ApplicationsdarrenburnsDevLog<p>In this post we'll look at some new functionality available in Textual apps accessed via a browser and how it helps provide a more equal experience across platforms.</p>https://textual.textualize.io/blog/2024/09/08/towards-textual-web-applications/ Sun, 08 Sep 2024 12:17:42 +0000Textualhttps://textual.textualize.io/blog/2024/09/08/towards-textual-web-applications/Behind the Curtain of Inline Terminal ApplicationswillmcguganDevLog<h1>Behind the Curtain of Inline Terminal Applications</h1><p>Textual recently added the ability to run <em>inline</em> terminal apps.You can see this in action if you run the <a href="https://github.com/Textualize/textual/blob/main/examples/calculator.py">calculator example</a>:</p><p><img alt="Inline Calculator" src="../images/calcinline.png"></p><p>The application appears directly under the prompt, rather than occupying the full height of the screen—which is more typical of TUI applications.You can interact with this calculator using keys <em>or</em> the mouse.When you press ++ctrl+c++ the calculator disappears and returns you to the prompt.</p><p>Here's another app that creates an inline code editor:</p><p>=== "Video"</p><pre><code><div class="video-wrapper"> <iframe width="852" height="525" src="https://www.youtube.com/embed/Dt70oSID1DY" title="Inline app" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></div></code></pre><p>=== "inline.py" ```python from textual.app import App, ComposeResult from textual.widgets import TextArea</p><pre><code>class InlineApp(App): CSS = """ TextArea { height: auto; max-height: 50vh; } """ def compose(self) -> ComposeResult: yield TextArea(language="python")if __name__ == "__main__": InlineApp().run(inline=True)```</code></pre><p>This post will cover some of what goes on under the hood to make such inline apps work.</p><p>It's not going to go in to too much detail.I'm assuming most readers will be more interested in a birds-eye view rather than all the gory details.</p>https://textual.textualize.io/blog/2024/04/20/behind-the-curtain-of-inline-terminal-applications/ Sun, 21 Apr 2024 13:21:53 +0000Textualhttps://textual.textualize.io/blog/2024/04/20/behind-the-curtain-of-inline-terminal-applications/File magic with the Python standard librarywillmcguganDevLog<h1>File magic with the Python standard library</h1><p>I recently published <a href="https://github.com/textualize/toolong">Toolong</a>, an app for viewing log files.There were some interesting technical challenges in building Toolong that I'd like to cover in this post.</p>https://textual.textualize.io/blog/2024/02/11/file-magic-with-the-python-standard-library/ Sun, 03 Mar 2024 13:32:04 +0000Textualhttps://textual.textualize.io/blog/2024/02/11/file-magic-with-the-python-standard-library/Remote memory profiling with MemraywillmcguganDevLog<h1>Remote memory profiling with Memray</h1><p><a href="https://github.com/bloomberg/memray">Memray</a> is a memory profiler for Python, built by some very smart devs at Bloomberg.It is a fantastic tool to identify memory leaks in your code or other libraries (down to the C level)!</p><p>They recently added a <a href="https://github.com/textualize/textual/">Textual</a> interface which looks amazing, and lets you monitor your process right from the terminal:</p><p><img alt="Memray" src="https://raw.githubusercontent.com/bloomberg/memray/main/docs/_static/images/live_animated.webp"></p>https://textual.textualize.io/blog/2024/02/20/remote-memory-profiling-with-memray/ Tue, 20 Feb 2024 15:54:07 +0000Textualhttps://textual.textualize.io/blog/2024/02/20/remote-memory-profiling-with-memray/Announcing textual-plotextdavepDevLog<h1>Announcing textual-plotext</h1><p>It's no surprise that a common question on the <a href="https://discord.gg/Enf6Z3qhVr">Textual Discordserver</a> is how to go about producing plots inthe terminal. A popular solution that has been suggested is<a href="https://github.com/piccolomo/plotext">Plotext</a>. While Plotext doesn'tdirectly support Textual, it is <a href="https://github.com/piccolomo/plotext/blob/master/readme/environments.md#rich">easy to use withRich</a>and, because of this, we wanted to make it just as easy to use in yourTextual applications.</p>https://textual.textualize.io/blog/2023/10/04/announcing-textual-plotext/ Sat, 07 Oct 2023 13:42:11 +0000Textualhttps://textual.textualize.io/blog/2023/10/04/announcing-textual-plotext/Things I learned while building Textual's TextAreadarrenburnsDevLog<h1>Things I learned building a text editor for the terminal</h1><p><code>TextArea</code> is the latest widget to be added to Textual's <a href="https://textual.textualize.io/widget_gallery/">growing collection</a>.It provides a multi-line space to edit text, and features optional syntax highlighting for a selection of languages.</p><p><img alt="text-area-welcome.gif" src="../images/text-area-learnings/text-area-welcome.gif"></p><p>Adding a <code>TextArea</code> to your Textual app is as simple as adding this to your <code>compose</code> method:</p><p><code>pythonyield TextArea()</code></p><p>Enabling syntax highlighting for a language is as simple as:</p><p><code>pythonyield TextArea(language="python")</code></p><p>Working on the <code>TextArea</code> widget for Textual taught me a lot about Python and my generalapproach to software engineering. It gave me an appreciation for the subtle functionality behindthe editors we use on a daily basis — features we may not even notice, despitesome engineer spending hours perfecting it to provide a small boost to our development experience.</p><p>This post is a tour of some of these learnings.</p>https://textual.textualize.io/blog/2023/09/18/things-i-learned-while-building-textuals-textarea/ Sat, 23 Sep 2023 14:06:20 +0000Textualhttps://textual.textualize.io/blog/2023/09/18/things-i-learned-while-building-textuals-textarea/Textual 0.38.0 adds a syntax aware TextAreawillmcguganRelease<h1>Textual 0.38.0 adds a syntax aware TextArea</h1><p>This is the second big feature release this month after last week's <a href="./release0.37.0.md">command palette</a>.</p>https://textual.textualize.io/blog/2023/09/21/textual-0380-adds-a-syntax-aware-textarea/ Thu, 21 Sep 2023 13:27:43 +0000Textualhttps://textual.textualize.io/blog/2023/09/21/textual-0380-adds-a-syntax-aware-textarea/Textual 0.37.0 adds a command palettewillmcguganRelease<h1>Textual 0.37.0 adds a command palette</h1><p>Textual version 0.37.0 has landed!The highlight of this release is the new command palette.</p>https://textual.textualize.io/blog/2023/09/15/textual-0370-adds-a-command-palette/ Fri, 15 Sep 2023 17:01:09 +0000Textualhttps://textual.textualize.io/blog/2023/09/15/textual-0370-adds-a-command-palette/What is Textual Web?willmcguganNews<h1>What is Textual Web?</h1><p>If you know us, you will know that we are the team behind <a href="https://github.com/Textualize/rich">Rich</a> and <a href="https://github.com/Textualize/textual">Textual</a> — two popular Python libraries that work magic in the terminal.</p><p>!!! note</p><pre><code>Not to mention [Rich-CLI](https://github.com/Textualize/rich-cli), [Trogon](https://github.com/Textualize/trogon), and [Frogmouth](https://github.com/Textualize/frogmouth)</code></pre><p>Today we are adding one project more to that lineup: <a href="https://github.com/Textualize/textual-web">textual-web</a>.</p>https://textual.textualize.io/blog/2023/09/06/what-is-textual-web/ Wed, 06 Sep 2023 17:53:31 +0000Textualhttps://textual.textualize.io/blog/2023/09/06/what-is-textual-web/Pull Requests are cake or puppieswillmcguganDevLog<h1>Pull Requests are cake or puppies</h1><p>Broadly speaking, there are two types of contributions you can make to an Open Source project.</p>https://textual.textualize.io/blog/2023/07/29/pull-requests-are-cake-or-puppies/ Sat, 29 Jul 2023 17:05:04 +0000Textualhttps://textual.textualize.io/blog/2023/07/29/pull-requests-are-cake-or-puppies/Using Rich Inspect to interrogate Python objectswillmcguganDevLog<h1>Using Rich Inspect to interrogate Python objects</h1><p>The <a href="https://github.com/Textualize/rich">Rich</a> library has a few functions that are admittedly a little out of scope for a terminal color library. One such function is <code>inspect</code> which is so useful you may want to <code>pip install rich</code> just for this feature.</p>https://textual.textualize.io/blog/2023/07/27/using-rich-inspect-to-interrogate-python-objects/ Thu, 27 Jul 2023 12:34:46 +0000Textualhttps://textual.textualize.io/blog/2023/07/27/using-rich-inspect-to-interrogate-python-objects/Textual 0.30.0 adds desktop-style notificationswillmcguganRelease<h1>Textual 0.30.0 adds desktop-style notifications</h1><p>We have a new release of Textual to talk about, but before that I'd like to cover a little Textual news.</p>https://textual.textualize.io/blog/2023/07/17/textual-0300-adds-desktop-style-notifications/ Mon, 17 Jul 2023 14:08:32 +0000Textualhttps://textual.textualize.io/blog/2023/07/17/textual-0300-adds-desktop-style-notifications/Textual 0.29.0 refactors dev toolswillmcguganRelease<h1>Textual 0.29.0 refactors dev tools</h1><p>It's been a slow week or two at Textualize, with Textual devs taking well-earned annual leave, but we still managed to get a new version out.</p>https://textual.textualize.io/blog/2023/07/03/textual-0290-refactors-dev-tools/ Mon, 03 Jul 2023 16:09:24 +0000Textualhttps://textual.textualize.io/blog/2023/07/03/textual-0290-refactors-dev-tools/To TUI or not to TUIwillmcguganDevLog<h1>To TUI or not to TUI</h1><p>Tech moves pretty fast.If you don’t stop and look around once in a while, you could miss it.And yet some technology feels like it has been around forever.</p><p>Terminals are one of those forever-technologies.</p>https://textual.textualize.io/blog/2023/06/06/to-tui-or-not-to-tui/ Mon, 05 Jun 2023 17:51:19 +0000Textualhttps://textual.textualize.io/blog/2023/06/06/to-tui-or-not-to-tui/Textual adds Sparklines, Selection list, Input validation, and tool tipswillmcguganRelease<h1>Textual adds Sparklines, Selection list, Input validation, and tool tips</h1><p>It's been 12 days since the last Textual release, which is longer than our usual release cycle of a week.</p><p>We've been a little distracted with our "dogfood" projects: <a href="https://github.com/Textualize/frogmouth">Frogmouth</a> and <a href="https://github.com/Textualize/trogon">Trogon</a>. Both of which hit 1000 Github stars in 24 hours. We will be maintaining / updating those, but it is business as usual for this Textual release (and it's a big one). We have such sights to show you.</p>https://textual.textualize.io/blog/2023/06/01/textual-adds-sparklines-selection-list-input-validation-and-tool-tips/ Thu, 01 Jun 2023 17:41:08 +0000Textualhttps://textual.textualize.io/blog/2023/06/01/textual-adds-sparklines-selection-list-input-validation-and-tool-tips/Textual 0.24.0 adds a Select controlwillmcguganRelease<h1>Textual 0.24.0 adds a Select control</h1><p>Coming just 5 days after the last release, we have version 0.24.0 which we are crowning the King of Textual releases.At least until it is deposed by version 0.25.0.</p>https://textual.textualize.io/blog/2023/05/08/textual-0240-adds-a-select-control/ Thu, 01 Jun 2023 11:33:54 +0000Textualhttps://textual.textualize.io/blog/2023/05/08/textual-0240-adds-a-select-control/Textual 0.23.0 improves message handlingwillmcguganRelease<h1>Textual 0.23.0 improves message handling</h1><p>It's been a busy couple of weeks at Textualize.We've been building apps with <a href="https://github.com/Textualize/textual">Textual</a>, as part of our <em>dog-fooding</em> week.The first app, <a href="https://github.com/Textualize/frogmouth">Frogmouth</a>, was released at the weekend and already has 1K GitHub stars!Expect two more such apps this month.</p>https://textual.textualize.io/blog/2023/05/03/textual-0230-improves-message-handling/ Wed, 03 May 2023 13:22:22 +0000Textualhttps://textual.textualize.io/blog/2023/05/03/textual-0230-improves-message-handling/Textual 0.11.0 adds a beautiful Markdown widgetwillmcguganRelease<h1>Textual 0.11.0 adds a beautiful Markdown widget</h1><p>We released Textual 0.10.0 25 days ago, which is a little longer than our usual release cycle. What have we been up to?</p>https://textual.textualize.io/blog/2023/02/15/textual-0110-adds-a-beautiful-markdown-widget/ Sat, 08 Apr 2023 15:35:49 +0000Textualhttps://textual.textualize.io/blog/2023/02/15/textual-0110-adds-a-beautiful-markdown-widget/Textual 0.18.0 adds API for managing concurrent workerswillmcguganRelease<h1>Textual 0.18.0 adds API for managing concurrent workers</h1><p>Less than a week since the last release, and we have a new API to show you.</p>https://textual.textualize.io/blog/2023/04/04/textual-0180-adds-api-for-managing-concurrent-workers/ Tue, 04 Apr 2023 13:12:51 +0000Textualhttps://textual.textualize.io/blog/2023/04/04/textual-0180-adds-api-for-managing-concurrent-workers/
\ No newline at end of file
+Textualhttps://textual.textualize.io/https://github.com/textualize/textual/enThu, 10 Oct 2024 13:55:22 -0000Thu, 10 Oct 2024 13:55:22 -00001440MkDocs RSS plugin - v1.15.0Anatomy of a Textual User InterfacewillmcguganDevLog<h1>Anatomy of a Textual User Interface</h1><p>!!! note "My bad 🤦"</p><pre><code>The date is wrong on this post&mdash;it was actually published on the 2nd of September 2024.I don't want to fix it, as that would break the URL.</code></pre><p>I recently wrote a <a href="https://en.wikipedia.org/wiki/Text-based_user_interface">TUI</a> to chat to an AI agent in the terminal.I'm not the first to do this (shout out to <a href="https://github.com/darrenburns/elia">Elia</a> and <a href="https://github.com/villekr/paita">Paita</a>), but I <em>may</em> be the first to have it reply as if it were the AI from the Aliens movies?</p><p>Here's a video of it in action:</p><iframe width="100%" style="aspect-ratio:1512 / 982" src="https://www.youtube.com/embed/hr5JvQS4d_w" title="Mother AI" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe><p>Now let's dissect the code like Bishop dissects a facehugger.</p>https://textual.textualize.io/blog/2024/09/15/anatomy-of-a-textual-user-interface/ Sun, 08 Sep 2024 12:17:42 +0000Textualhttps://textual.textualize.io/blog/2024/09/15/anatomy-of-a-textual-user-interface/Towards Textual Web ApplicationsdarrenburnsDevLog<p>In this post we'll look at some new functionality available in Textual apps accessed via a browser and how it helps provide a more equal experience across platforms.</p>https://textual.textualize.io/blog/2024/09/08/towards-textual-web-applications/ Sun, 08 Sep 2024 12:17:42 +0000Textualhttps://textual.textualize.io/blog/2024/09/08/towards-textual-web-applications/Behind the Curtain of Inline Terminal ApplicationswillmcguganDevLog<h1>Behind the Curtain of Inline Terminal Applications</h1><p>Textual recently added the ability to run <em>inline</em> terminal apps.You can see this in action if you run the <a href="https://github.com/Textualize/textual/blob/main/examples/calculator.py">calculator example</a>:</p><p><img alt="Inline Calculator" src="../images/calcinline.png"></p><p>The application appears directly under the prompt, rather than occupying the full height of the screen—which is more typical of TUI applications.You can interact with this calculator using keys <em>or</em> the mouse.When you press ++ctrl+c++ the calculator disappears and returns you to the prompt.</p><p>Here's another app that creates an inline code editor:</p><p>=== "Video"</p><pre><code><div class="video-wrapper"> <iframe width="852" height="525" src="https://www.youtube.com/embed/Dt70oSID1DY" title="Inline app" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></div></code></pre><p>=== "inline.py" ```python from textual.app import App, ComposeResult from textual.widgets import TextArea</p><pre><code>class InlineApp(App): CSS = """ TextArea { height: auto; max-height: 50vh; } """ def compose(self) -> ComposeResult: yield TextArea(language="python")if __name__ == "__main__": InlineApp().run(inline=True)```</code></pre><p>This post will cover some of what goes on under the hood to make such inline apps work.</p><p>It's not going to go in to too much detail.I'm assuming most readers will be more interested in a birds-eye view rather than all the gory details.</p>https://textual.textualize.io/blog/2024/04/20/behind-the-curtain-of-inline-terminal-applications/ Sun, 21 Apr 2024 13:21:53 +0000Textualhttps://textual.textualize.io/blog/2024/04/20/behind-the-curtain-of-inline-terminal-applications/File magic with the Python standard librarywillmcguganDevLog<h1>File magic with the Python standard library</h1><p>I recently published <a href="https://github.com/textualize/toolong">Toolong</a>, an app for viewing log files.There were some interesting technical challenges in building Toolong that I'd like to cover in this post.</p>https://textual.textualize.io/blog/2024/02/11/file-magic-with-the-python-standard-library/ Sun, 03 Mar 2024 13:32:04 +0000Textualhttps://textual.textualize.io/blog/2024/02/11/file-magic-with-the-python-standard-library/Remote memory profiling with MemraywillmcguganDevLog<h1>Remote memory profiling with Memray</h1><p><a href="https://github.com/bloomberg/memray">Memray</a> is a memory profiler for Python, built by some very smart devs at Bloomberg.It is a fantastic tool to identify memory leaks in your code or other libraries (down to the C level)!</p><p>They recently added a <a href="https://github.com/textualize/textual/">Textual</a> interface which looks amazing, and lets you monitor your process right from the terminal:</p><p><img alt="Memray" src="https://raw.githubusercontent.com/bloomberg/memray/main/docs/_static/images/live_animated.webp"></p>https://textual.textualize.io/blog/2024/02/20/remote-memory-profiling-with-memray/ Tue, 20 Feb 2024 15:54:07 +0000Textualhttps://textual.textualize.io/blog/2024/02/20/remote-memory-profiling-with-memray/Announcing textual-plotextdavepDevLog<h1>Announcing textual-plotext</h1><p>It's no surprise that a common question on the <a href="https://discord.gg/Enf6Z3qhVr">Textual Discordserver</a> is how to go about producing plots inthe terminal. A popular solution that has been suggested is<a href="https://github.com/piccolomo/plotext">Plotext</a>. While Plotext doesn'tdirectly support Textual, it is <a href="https://github.com/piccolomo/plotext/blob/master/readme/environments.md#rich">easy to use withRich</a>and, because of this, we wanted to make it just as easy to use in yourTextual applications.</p>https://textual.textualize.io/blog/2023/10/04/announcing-textual-plotext/ Sat, 07 Oct 2023 13:42:11 +0000Textualhttps://textual.textualize.io/blog/2023/10/04/announcing-textual-plotext/Things I learned while building Textual's TextAreadarrenburnsDevLog<h1>Things I learned building a text editor for the terminal</h1><p><code>TextArea</code> is the latest widget to be added to Textual's <a href="https://textual.textualize.io/widget_gallery/">growing collection</a>.It provides a multi-line space to edit text, and features optional syntax highlighting for a selection of languages.</p><p><img alt="text-area-welcome.gif" src="../images/text-area-learnings/text-area-welcome.gif"></p><p>Adding a <code>TextArea</code> to your Textual app is as simple as adding this to your <code>compose</code> method:</p><p><code>pythonyield TextArea()</code></p><p>Enabling syntax highlighting for a language is as simple as:</p><p><code>pythonyield TextArea(language="python")</code></p><p>Working on the <code>TextArea</code> widget for Textual taught me a lot about Python and my generalapproach to software engineering. It gave me an appreciation for the subtle functionality behindthe editors we use on a daily basis — features we may not even notice, despitesome engineer spending hours perfecting it to provide a small boost to our development experience.</p><p>This post is a tour of some of these learnings.</p>https://textual.textualize.io/blog/2023/09/18/things-i-learned-while-building-textuals-textarea/ Sat, 23 Sep 2023 14:06:20 +0000Textualhttps://textual.textualize.io/blog/2023/09/18/things-i-learned-while-building-textuals-textarea/Textual 0.38.0 adds a syntax aware TextAreawillmcguganRelease<h1>Textual 0.38.0 adds a syntax aware TextArea</h1><p>This is the second big feature release this month after last week's <a href="./release0.37.0.md">command palette</a>.</p>https://textual.textualize.io/blog/2023/09/21/textual-0380-adds-a-syntax-aware-textarea/ Thu, 21 Sep 2023 13:27:43 +0000Textualhttps://textual.textualize.io/blog/2023/09/21/textual-0380-adds-a-syntax-aware-textarea/Textual 0.37.0 adds a command palettewillmcguganRelease<h1>Textual 0.37.0 adds a command palette</h1><p>Textual version 0.37.0 has landed!The highlight of this release is the new command palette.</p>https://textual.textualize.io/blog/2023/09/15/textual-0370-adds-a-command-palette/ Fri, 15 Sep 2023 17:01:09 +0000Textualhttps://textual.textualize.io/blog/2023/09/15/textual-0370-adds-a-command-palette/What is Textual Web?willmcguganNews<h1>What is Textual Web?</h1><p>If you know us, you will know that we are the team behind <a href="https://github.com/Textualize/rich">Rich</a> and <a href="https://github.com/Textualize/textual">Textual</a> — two popular Python libraries that work magic in the terminal.</p><p>!!! note</p><pre><code>Not to mention [Rich-CLI](https://github.com/Textualize/rich-cli), [Trogon](https://github.com/Textualize/trogon), and [Frogmouth](https://github.com/Textualize/frogmouth)</code></pre><p>Today we are adding one project more to that lineup: <a href="https://github.com/Textualize/textual-web">textual-web</a>.</p>https://textual.textualize.io/blog/2023/09/06/what-is-textual-web/ Wed, 06 Sep 2023 17:53:31 +0000Textualhttps://textual.textualize.io/blog/2023/09/06/what-is-textual-web/Pull Requests are cake or puppieswillmcguganDevLog<h1>Pull Requests are cake or puppies</h1><p>Broadly speaking, there are two types of contributions you can make to an Open Source project.</p>https://textual.textualize.io/blog/2023/07/29/pull-requests-are-cake-or-puppies/ Sat, 29 Jul 2023 17:05:04 +0000Textualhttps://textual.textualize.io/blog/2023/07/29/pull-requests-are-cake-or-puppies/Using Rich Inspect to interrogate Python objectswillmcguganDevLog<h1>Using Rich Inspect to interrogate Python objects</h1><p>The <a href="https://github.com/Textualize/rich">Rich</a> library has a few functions that are admittedly a little out of scope for a terminal color library. One such function is <code>inspect</code> which is so useful you may want to <code>pip install rich</code> just for this feature.</p>https://textual.textualize.io/blog/2023/07/27/using-rich-inspect-to-interrogate-python-objects/ Thu, 27 Jul 2023 12:34:46 +0000Textualhttps://textual.textualize.io/blog/2023/07/27/using-rich-inspect-to-interrogate-python-objects/Textual 0.30.0 adds desktop-style notificationswillmcguganRelease<h1>Textual 0.30.0 adds desktop-style notifications</h1><p>We have a new release of Textual to talk about, but before that I'd like to cover a little Textual news.</p>https://textual.textualize.io/blog/2023/07/17/textual-0300-adds-desktop-style-notifications/ Mon, 17 Jul 2023 14:08:32 +0000Textualhttps://textual.textualize.io/blog/2023/07/17/textual-0300-adds-desktop-style-notifications/Textual 0.29.0 refactors dev toolswillmcguganRelease<h1>Textual 0.29.0 refactors dev tools</h1><p>It's been a slow week or two at Textualize, with Textual devs taking well-earned annual leave, but we still managed to get a new version out.</p>https://textual.textualize.io/blog/2023/07/03/textual-0290-refactors-dev-tools/ Mon, 03 Jul 2023 16:09:24 +0000Textualhttps://textual.textualize.io/blog/2023/07/03/textual-0290-refactors-dev-tools/To TUI or not to TUIwillmcguganDevLog<h1>To TUI or not to TUI</h1><p>Tech moves pretty fast.If you don’t stop and look around once in a while, you could miss it.And yet some technology feels like it has been around forever.</p><p>Terminals are one of those forever-technologies.</p>https://textual.textualize.io/blog/2023/06/06/to-tui-or-not-to-tui/ Mon, 05 Jun 2023 17:51:19 +0000Textualhttps://textual.textualize.io/blog/2023/06/06/to-tui-or-not-to-tui/Textual adds Sparklines, Selection list, Input validation, and tool tipswillmcguganRelease<h1>Textual adds Sparklines, Selection list, Input validation, and tool tips</h1><p>It's been 12 days since the last Textual release, which is longer than our usual release cycle of a week.</p><p>We've been a little distracted with our "dogfood" projects: <a href="https://github.com/Textualize/frogmouth">Frogmouth</a> and <a href="https://github.com/Textualize/trogon">Trogon</a>. Both of which hit 1000 Github stars in 24 hours. We will be maintaining / updating those, but it is business as usual for this Textual release (and it's a big one). We have such sights to show you.</p>https://textual.textualize.io/blog/2023/06/01/textual-adds-sparklines-selection-list-input-validation-and-tool-tips/ Thu, 01 Jun 2023 17:41:08 +0000Textualhttps://textual.textualize.io/blog/2023/06/01/textual-adds-sparklines-selection-list-input-validation-and-tool-tips/Textual 0.24.0 adds a Select controlwillmcguganRelease<h1>Textual 0.24.0 adds a Select control</h1><p>Coming just 5 days after the last release, we have version 0.24.0 which we are crowning the King of Textual releases.At least until it is deposed by version 0.25.0.</p>https://textual.textualize.io/blog/2023/05/08/textual-0240-adds-a-select-control/ Thu, 01 Jun 2023 11:33:54 +0000Textualhttps://textual.textualize.io/blog/2023/05/08/textual-0240-adds-a-select-control/Textual 0.23.0 improves message handlingwillmcguganRelease<h1>Textual 0.23.0 improves message handling</h1><p>It's been a busy couple of weeks at Textualize.We've been building apps with <a href="https://github.com/Textualize/textual">Textual</a>, as part of our <em>dog-fooding</em> week.The first app, <a href="https://github.com/Textualize/frogmouth">Frogmouth</a>, was released at the weekend and already has 1K GitHub stars!Expect two more such apps this month.</p>https://textual.textualize.io/blog/2023/05/03/textual-0230-improves-message-handling/ Wed, 03 May 2023 13:22:22 +0000Textualhttps://textual.textualize.io/blog/2023/05/03/textual-0230-improves-message-handling/Textual 0.11.0 adds a beautiful Markdown widgetwillmcguganRelease<h1>Textual 0.11.0 adds a beautiful Markdown widget</h1><p>We released Textual 0.10.0 25 days ago, which is a little longer than our usual release cycle. What have we been up to?</p>https://textual.textualize.io/blog/2023/02/15/textual-0110-adds-a-beautiful-markdown-widget/ Sat, 08 Apr 2023 15:35:49 +0000Textualhttps://textual.textualize.io/blog/2023/02/15/textual-0110-adds-a-beautiful-markdown-widget/Textual 0.18.0 adds API for managing concurrent workerswillmcguganRelease<h1>Textual 0.18.0 adds API for managing concurrent workers</h1><p>Less than a week since the last release, and we have a new API to show you.</p>https://textual.textualize.io/blog/2023/04/04/textual-0180-adds-api-for-managing-concurrent-workers/ Tue, 04 Apr 2023 13:12:51 +0000Textualhttps://textual.textualize.io/blog/2023/04/04/textual-0180-adds-api-for-managing-concurrent-workers/
\ No newline at end of file
diff --git a/guide/reactivity/index.html b/guide/reactivity/index.html
index 3ad97468ca..b9c5a5c18b 100644
--- a/guide/reactivity/index.html
+++ b/guide/reactivity/index.html
@@ -8152,132 +8152,131 @@