Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
b9e07d5
common(cmd) AsyncTmuxCmd
tony Nov 9, 2025
383b2ea
Server,Session,Window,Pane: Add `.acmd`
tony Nov 9, 2025
5c598c8
AsyncTmuxCmd: Updates for TmuxCmd
tony Nov 9, 2025
50a9217
fix(AsyncTmuxCmd): Handle text decoding manually for async subprocess
tony Nov 9, 2025
5755cb6
tests(async) Basic example
tony Nov 9, 2025
cd9c92f
py(deps[dev]) Add `pytest-asyncio`
tony Nov 9, 2025
8820de9
test(async): Add Server.acmd() tests
tony Nov 9, 2025
233f0cb
test(async): Add Session.acmd() tests
tony Nov 9, 2025
4a0ac84
test(async): Add Window.acmd() and Pane.acmd() tests
tony Nov 9, 2025
34751aa
test(async): Add concurrent operations test
tony Nov 9, 2025
aa1f5c5
test(async): Add error handling tests
tony Nov 9, 2025
e3aa319
test(async): Add integration test & use fixture cleanup
tony Nov 9, 2025
7c0e005
style(test_async): Use set literal instead of tuple
tony Nov 9, 2025
cb1d411
refactor(tests): Reorganize async tests into tests/asyncio/
tony Nov 9, 2025
4df5049
feat(server): Add async wrapper methods ahas_session() and anew_sessi…
tony Nov 9, 2025
87541c6
test(server): Add comprehensive tests for async wrapper methods
tony Nov 9, 2025
46c3a83
feat(session): Add async wrapper methods anew_window() and arename_se…
tony Nov 9, 2025
ea1f818
test(session): Add comprehensive tests for async wrapper methods
tony Nov 9, 2025
28fd731
feat(window): Add async wrapper method akill()
tony Nov 9, 2025
0be56be
test(window): Add comprehensive tests for akill() async wrapper
tony Nov 9, 2025
0fd574e
docs(server): Add comprehensive docstrings for async methods
tony Nov 9, 2025
5f3c870
docs(server): Convert async examples to narrative code blocks
tony Nov 9, 2025
5ba2e3d
docs(session,window): Add comprehensive docstrings for async methods
tony Nov 9, 2025
432d914
docs: Add comprehensive async documentation
tony Nov 9, 2025
f17bb4f
docs: Add bidirectional linking from sync to async methods
tony Nov 9, 2025
2e66b3e
docs: Restore executable async doctests using asyncio.run() pattern
tony Nov 9, 2025
feabf56
feat: Add critical async pane methods (asend_keys, acapture_pane, asp…
tony Nov 9, 2025
11c2936
test: Add comprehensive unit tests for async pane methods (16 tests)
tony Nov 10, 2025
630065d
test: Add integration tests for async pane workflows (3 tests)
tony Nov 10, 2025
e63f07d
docs: Add bidirectional cross-references between sync and async pane …
tony Nov 10, 2025
70d61cd
docs: Additional asyncio docs
tony Nov 10, 2025
3e8ff92
docs: tidy async docstrings and exports
tony Nov 9, 2025
8022d2c
tests(asyncio): strengthen pane typing
tony Nov 9, 2025
24b9987
tests(asyncio): add dataclasses for session typing
tony Nov 9, 2025
125858a
tests(asyncio): harden server typing
tony Nov 9, 2025
3504e6b
tests(asyncio): structure integration helpers
tony Nov 9, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 40 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -246,6 +246,46 @@ Window(@1 1:..., Session($1 ...))
Session($1 ...)
```

# Async support

libtmux provides async versions of key methods for use in async applications:

```python
import asyncio
from libtmux import Server

async def main():
server = Server()

# Create session asynchronously
session = await server.anew_session(
session_name="async_session",
start_directory="~/"
)

# Create windows concurrently
windows = await asyncio.gather(
session.anew_window(window_name="editor"),
session.anew_window(window_name="terminal"),
session.anew_window(window_name="logs"),
)

# Check session exists
exists = await server.ahas_session("async_session")
print(f"Session exists: {exists}") # True

asyncio.run(main())
```

Available async methods (using 'a' prefix convention):
- `Server.ahas_session()` - Check if session exists
- `Server.anew_session()` - Create new session
- `Session.anew_window()` - Create new window
- `Session.arename_session()` - Rename session
- `Window.akill()` - Kill window

See the [async API documentation](https://libtmux.git-pull.com/api/async.html) for details.

# Python support

Unsupported / no security releases or bug fixes:
Expand Down
Loading
Loading