cxreiff.ttysvr/README.md

104 lines
3.2 KiB
Markdown
Raw Normal View History

2024-08-03 01:14:49 -07:00
# ttysvr
2024-10-02 16:55:04 -07:00
Screensavers for your terminal. Start immediately or after a period of inactivity within a shell.
2024-10-02 17:10:16 -07:00
<p float="left">
<img src="https://assets.cxreiff.com/github/ttysvr_logo.gif?" width="30%">
<img src="https://assets.cxreiff.com/github/ttysvr_bubbles.gif?" width="30%">
<img src="https://assets.cxreiff.com/github/ttysvr_maze.gif?" width="30%">
<p>
2024-08-04 22:44:51 -07:00
Uses [bevy_ratatui_render](https://github.com/cxreiff/bevy_ratatui_render), my
bevy plugin that allows you to render a bevy application to the terminal using
[ratatui](https://github.com/ratatui-org/ratatui) and
[ratatui-image](https://github.com/benjajaja/ratatui-image).
Triggering the screensaver immediately works in any shell, triggering after a set period of
inactivity is currently Zsh only.
2024-08-04 22:44:51 -07:00
## installation
```sh
2024-08-15 18:38:48 -07:00
# cargo
cargo install --locked ttysvr
```
```sh
# homebrew
brew install cxreiff/tap/ttysvr
2024-08-04 22:44:51 -07:00
```
2024-10-04 15:47:08 +03:00
```sh
# arch linux
pacman -S ttysvr
```
> [!IMPORTANT]
> If you are on Linux and install using the cargo method, or otherwise build from source, you
> will first need to refer to
> [docs/linux_dependencies.md](https://github.com/bevyengine/bevy/blob/main/docs/linux_dependencies.md)
> in the bevy repo for your distro's instructions on making sure bevy's required linux dependencies
> are installed.
2024-08-04 22:44:51 -07:00
## usage
Starts the screensaver immediately. If no variant is specified, one is randomly selected.
```sh
ttysvr [VARIANT]
```
2024-08-15 18:38:48 -07:00
Some variants have subvariants.
```sh
ttysvr [VARIANT] [SUBVARIANT]
```
2024-08-04 22:44:51 -07:00
Sets up the screensaver to activate after `DELAY` seconds of inactivity in your current shell session.
```sh
eval `ttysvr [VARIANT] --init [DELAY]`
```
Cancels the screensaver in your current shell session.
```sh
eval `ttysvr --cancel`
```
> [!NOTE]
2024-08-04 22:44:51 -07:00
> Note that the `--init` and `--cancel` options require being wrapped in `eval` and backticks.
> This is because activating the screensaver after a set period of inactivity relies on setting
> the TMOUT environment variable in your _current shell_, instead of the child shell created by
> the `ttysvr` process. Issues/PRs are greatly appreciated if somebody is aware of a better way
> of doing this!
## variants
2024-10-03 13:31:10 -07:00
| variant | subvariants? | description |
|---------|------------------|--------------------------------------------|
| bubbles | | Colorful bubbles bounce around the screen. |
| logo | `dvd`, `tty` | DVD player style bouncing logo. |
| maze | `brick`, `hedge` | 3D randomly generated maze. |
2024-08-04 22:44:51 -07:00
## compatibility
### zsh only
The screensaver delay works based on setting a session timeout and catching the
ALRM signal in a way only compatible with ZSH. If you know a way to achieve something
similar in another shell, please open an issue!
### terminal
This requires that your terminal:
1. Supports 24bit color.
2. Has reasonably efficient rendering.
This includes a decent variety of terminals, but I have personally confirmed good results in the following:
- Alacritty (macOS, linux)
- Kitty (macOS)
- WezTerm (macOS)
- iTerm2 (macOS)
### ssh
2024-10-09 18:08:32 -07:00
I have recently added a change that has allowed me to run the screensavers over SSH. This is not very well
tested however, so please open an issue if you run into problems!