Screeny is a terminal tool for quickly and easily listing, creating, attaching, and deleting GNU Screen sessions.
- Run
screenyinstead ofscreen. It will list screen sessions. - Use the arrow keys to select a session, then press Enter to attach to it.
- Press Delete to terminate a session.
- Press R to refresh the list immediately.
- After you exit a session, you return to the menu.
- Press Esc or Ctrl+C to exit screeny
Download the package for your system from GitHub Releases.
Choose x86_64 for Intel/AMD PCs or aarch64 for ARM64 machines. The builds use Ubuntu 22.04 and require glibc 2.35 or newer, including Ubuntu 22.04+, Debian 12+, and recent Fedora releases.
For Debian or Ubuntu, download the .deb:
sudo apt install ./screeny-0.1.0-linux-x86_64.deb
screenyFor Fedora, download the .rpm:
sudo dnf install ./screeny-0.1.0-linux-x86_64.rpm
screenyBoth package managers also install GNU Screen.
Choose macos-aarch64 for Apple Silicon or macos-x86_64 for Intel. Builds target macOS 13 or newer. Download the .pkg and open it to install screeny in /usr/local/bin. Run screeny from Terminal. If that directory is missing from your PATH, add it in your shell configuration.
The installer is unsigned and not notarized, so macOS may require approval in System Settings > Privacy & Security. GNU Screen must be available as screen; if needed, install it with brew install screen. The installer does not install Homebrew or GNU Screen.
A .tar.gz is also available for manual installation. Extract it, then copy its screeny executable to a directory on your PATH, such as ~/.local/bin.
Use Screeny inside a Linux terminal under WSL. Install Ubuntu with wsl --install from an administrator PowerShell, then follow the Linux instructions inside Ubuntu. Choose the package matching the WSL architecture, shown by uname -m. Screeny manages Screen sessions inside that Linux environment. There is no native Windows build, and WSL has not been separately tested.
Each release includes SHA256SUMS. Download it alongside the package, then verify your package's entry with sha256sum --ignore-missing -c SHA256SUMS on Linux, or compare shasum -a 256 <filename> with the entry on macOS.
Install a current stable Rust toolchain and GNU Screen. From this directory:
cargo install --path . --locked
screenyCargo installs the executable in ~/.cargo/bin by default. Keep that directory on your PATH. Run the same install command after pulling or editing the source to update the installed version.
cargo run
cargo fmt --check
cargo clippy --all-targets --locked -- -D warnings
cargo test --locked
cargo build --release --lockedUnit tests cover parsing, selection stability, name editing, key handling, and rendering at small terminal sizes. The additional PTY tests exercise real GNU Screen sessions, including creation, attachment, deletion, shared attachment, refresh, resize, and terminal restoration:
sudo apt install python3-pexpect
cargo build --locked
python3 tests/pty_smoke.pyThe PTY tests use temporary private SCREENDIR and SCREENRC paths and clean up their own sessions. They need permission to create Unix sockets and PTYs; restrictive sandboxes may prevent GNU Screen from starting. They never operate on your normal session directory.
Terminal raw mode, cursor visibility, and bracketed paste are restored on normal exit, errors, and panics. SIGINT, SIGTERM, and SIGHUP are handled in the menu. The menu waits while an attached Screen client owns the terminal.
To publish a release, update version in Cargo.toml, run cargo check to update Cargo.lock, then commit and push to master. After all four builds pass, GitHub Actions creates the matching vX.Y.Z tag and publishes the packages, archives, and checksums. No manual tagging is needed.
Pushes with an already released version run the build checks but leave the release unchanged. Packaging currently accepts stable x.y.z versions only. You can still push a matching version tag to release a specific commit, or use Run workflow on master or a version tag to retry. An existing tag must point to the commit being built; the workflow never moves tags or replaces release assets.
The workflow uses GitHub's built-in token; no release token or signing secrets are required. macOS signing and notarization are not configured.
To build packages locally, run cargo build --release --locked followed by bash scripts/package.sh. Linux packaging needs dpkg-dev and rpm; macOS packaging needs Apple's pkgbuild tool. Outputs go to dist/.