Upgrade tuirealm (3.x -> 4.0.0), tui-realm-stdlib (3 -> 4), tui-term (0.2 -> 0.3). Apply all breaking changes from the 4.0 migration guide across the termscp UI. Key changes: - Root-level re-exports removed; imports moved to module-qualified paths (`tuirealm::application`, `::component`, `::event`, `::props`, `::state`, `::subscription`, `::listener`, `::ratatui`). Same for stdlib component types (`tui_realm_stdlib::components::*`). - `MockComponent` trait renamed to `Component`; old `Component` trait renamed to `AppComponent`. `#[derive(MockComponent)]` is now `#[derive(Component)]`. `Component::on` now takes `&Event<_>`. - `TextSpan` replaced with `SpanStatic`/`LineStatic`/`TextStatic` (ratatui-based); tuple `(String, Alignment)` titles replaced with the new `Title` builder; `Alignment` split into `HorizontalAlignment`/`VerticalAlignment`; stdlib components use `.alignment_horizontal` instead of `.alignment`. - `State::One`/`PropPayload::One` -> `Single`. `CmdResult::None` -> `NoChange`. `Props::get_or` removed; `Props::get` now returns a borrowed `Option<&AttrValue>` (call sites switched to `.and_then(AttrValue::as_*)`). `Component::query` returns `Option<QueryResult<'a>>`. - `Attribute::HighlightedColor` -> `HighlightStyle` (a full `Style`). `.highlighted_*` helpers renamed to `.highlight_*`. - `PollStrategy::UpTo(n)` now requires a `Duration`; tick timeout moved from `EventListenerCfg::poll_timeout` into `PollStrategy`. - `TerminalBridge` removed; `Context` now holds `CrosstermTerminalAdapter` directly and enables raw mode + alternate screen explicitly. The `TerminalAdapter` trait is imported where its methods are used. - `Update` trait removed; activity `update` methods are plain inherent functions. - `ProgressBar` replaced by stdlib `Gauge`. Paragraph `.wrap` renamed to `.wrap_trim`; `.text` now takes an `Into<Text>`. Stdlib `List` row items are now individual lines (`Vec<Span>` per row) rather than a `Table` of spans; custom `FileList`/`Log` convert between the two models. - Radio builders drop `.foreground(color)` so unselected items render with the terminal default foreground, and set `highlight_style(Style::default().fg(color).add_modifier(REVERSED))` so the selected entry is visibly highlighted only with the theme color. - Custom `FileList` keeps the selected row highlighted with the full highlight style when focused and falls back to a foreground-only style when unfocused. - Theme loading is now backwards compatible: `Theme` uses a custom `Deserialize` through an intermediate `ThemeFile` with optional fields, so missing keys, unknown values or legacy aliases (`transfer_progress_bar_full`/`_partial`) fall back to defaults on a per-field basis instead of failing the whole load.
termscp
~ A feature rich terminal file transfer ~
Website · Installation · User manual
Developed by @veeso
Current version: 1.0.0 2025-12-20
About termscp 🖥
Termscp is a feature rich terminal file transfer and explorer, with support for SCP/SFTP/FTP/Kube/S3/WebDAV. So basically is a terminal utility with an TUI to connect to a remote server to retrieve and upload files and to interact with the local file system. It is Linux, MacOS, FreeBSD, NetBSD and Windows compatible.
Features 🎁
- 📁 Different communication protocols
- SFTP
- SCP
- FTP and FTPS
- Kube
- S3
- SMB
- WebDAV
- 🖥 Explore and operate on the remote and on the local machine file system with a handy UI
- Create, remove, rename, search, view and edit files
- ⭐ Connect to your favourite hosts through built-in bookmarks and recent connections
- 📝 View and edit files with your favourite applications
- 💁 SFTP/SCP authentication with SSH keys and username/password
- 🐧 Compatible with Windows, Linux, FreeBSD, NetBSD and MacOS
- 🐚 Embedded terminal for executing commands on the system.
- 🎨 Make it yours!
- Themes
- Custom file explorer format
- Customizable text editor
- Customizable file sorting
- and many other parameters...
- 📫 Get notified via Desktop Notifications when a large file has been transferred
- 🔭 Keep file changes synchronized with the remote host
- 🔐 Save your password in your operating system key vault
- 🦀 Rust-powered
- 👀 Developed keeping an eye on performance
- 🦄 Frequent awesome updates
Get started 🚀
If you're considering to install termscp I want to thank you 💜 ! I hope you will enjoy termscp!
If you want to contribute to this project, don't forget to check out our contribute guide.
If you are a Linux, a FreeBSD or a MacOS user this simple shell script will install termscp on your system with a single command:
curl --proto '=https' --tlsv1.2 -sSLf "https://git.io/JBhDb" | sh
❗ MacOs installation requires Homebrew, otherwise the Rust compiler will be installed
while if you're a Windows user, you can install termscp with Chocolatey:
choco install termscp
NetBSD users can install termscp from the official repositories.
pkgin install termscp
Arch Linux users can install termscp from the official repositories.
pacman -S termscp
For more information or other platforms, please visit termscp.veeso.dev to view all installation methods.
⚠️ If you're looking on how to update termscp just run termscp from CLI with: (sudo) termscp --update ⚠️
Requirements ❗
- Linux users:
- libdbus-1
- pkg-config
- libsmbclient
- FreeBSD or, NetBSD users:
- dbus
- pkgconf
- libsmbclient
Optional Requirements ✔️
These requirements are not forced required to run termscp, but to enjoy all of its features
- Linux/FreeBSD users:
- To open files via
V(at least one of these)- xdg-open
- gio
- gnome-open
- kde-open
- To open files via
- Linux users:
- A keyring manager: read more in the User manual
- WSL users
- To open files via
V(at least one of these)
- To open files via
Support the developer ☕
If you like termscp and you're grateful for the work I've done, please consider a little donation 🥳
You can make a donation with one of these platforms:
User manual 📚
The user manual can be found on the termscp's website or on Github.
Upcoming Features 🧪
See Milestones
Contributing and issues 🤝🏻
Contributions, bug reports, new features and questions are welcome! 😉 If you have any question or concern, or you want to suggest a new feature, or you want just want to improve termscp, feel free to open an issue or a PR.
An appreciated contribution would be a translation of the user manual and readme in other languages
Please follow our contributing guidelines
Changelog ⏳
View termscp's changelog HERE
Powered by 💪
termscp is powered by these awesome projects:
- bytesize
- crossterm
- edit
- keyring-rs
- kube
- open-rs
- pavao
- remotefs
- rpassword
- self_update
- ratatui
- tui-realm
- whoami
- wildmatch
Gallery 🎬
Termscp Home
Bookmarks
Setup
Text editor
License 📃
termscp is licensed under the MIT license.
You can read the entire license HERE




