Commit 94738e5
Eric Bower
·
2026-06-12 19:49:51 -0400 EDT
parent ce66992
docs: readme
1 files changed,
+4,
-7
+4,
-7
| ... | ... | @@ -4,7 +4,7 @@ | |
| 4 | 4 | <br>zmx | |
| 5 | 5 | </h1> | |
| 6 | 6 | <p align="center"> | |
| 7 | - | Session persistence for terminal processes. | |
| 7 | + | Session attach/detach for the terminal. | |
| 8 | 8 | <br /> | |
| 9 | 9 | <a href="https://zmx.sh">Docs</a> | |
| 10 | 10 | ยท |
| ... | ... | @@ -16,7 +16,7 @@ | |
| 16 | 16 | ## features | |
| 17 | 17 | ||
| 18 | 18 | - Persist terminal shell sessions | |
| 19 | - | - Ability to attach and detach from a shell session without killing it | |
| 19 | + | - Ability to attach and detach from a shell session it being killed | |
| 20 | 20 | - Native terminal scrollback | |
| 21 | 21 | - Multiple clients can connect to the same session | |
| 22 | 22 | - Re-attaching to a session restores previous terminal state and output |
| ... | ... | @@ -461,10 +461,6 @@ This is particularly useful when running `zmx` as a system service with a shared | |
| 461 | 461 | ||
| 462 | 462 | We store global logs for cli commands in `{socket_dir}/logs/zmx.log`. We store session-specific logs in `{socket_dir}/logs/{session_name}.log`. Right now they are enabled by default and cannot be disabled. The idea here is to help with initial development until we reach a stable state. | |
| 463 | 463 | ||
| 464 | - | ## a note on configuration | |
| 465 | - | ||
| 466 | - | We are evaluating what should be configurable and what should not. Every configuration option is a burden for us maintainers. For example, being able to change the default detach shortcut is difficult in a terminal environment. | |
| 467 | - | ||
| 468 | 464 | ## a smol contract | |
| 469 | 465 | ||
| 470 | 466 | - Write programs that solve a well defined problem. |
| ... | ... | @@ -478,13 +474,14 @@ We are evaluating what should be configurable and what should not. Every configu | |
| 478 | 474 | - When upgrading versions of `zmx` where we make changes to the underlying IPC communication, it will kill all your sessions because it cannot communicate through the daemon socket properly | |
| 479 | 475 | - Terminal state restoration with nested `zmx` sessions through SSH: host A `zmx` -> SSH -> host B `zmx` | |
| 480 | 476 | - Specifically cursor position gets corrupted | |
| 477 | + | - Essentially this is unspecified and unsupported behavior | |
| 481 | 478 | - When re-attaching and kitty keyboard mode was previously enable, we try to re-send that CSI query to re-enable it | |
| 482 | 479 | - Some programs don't know how to handle that CSI query (e.g. `psql`) so when you type it echos kitty escape sequences erroneously | |
| 483 | 480 | ||
| 484 | 481 | ## impl | |
| 485 | 482 | ||
| 486 | 483 | - The `daemon` and client processes communicate via a unix socket | |
| 487 | - | - Both `daemon` and `client` loops leverage `poll()` | |
| 484 | + | - Both `daemon` and `client` loops leverage `poll(2)` | |
| 488 | 485 | - Each session creates its own unix socket file | |
| 489 | 486 | - We restore terminal state and output using `libghostty-vt` | |
| 490 | 487 |