Christian Visintin 6252df2959 build: migrate to tui-realm 4.0
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.
2026-04-19 01:54:46 +05:30
2026-04-19 01:54:46 +05:30
2026-04-19 01:54:46 +05:30
2026-04-19 01:54:46 +05:30
2026-04-19 01:54:46 +05:30
2022-10-15 14:01:00 +02:00
2026-04-19 01:54:46 +05:30
2023-05-09 15:40:28 +02:00
2021-07-23 14:32:50 +02:00
2023-07-05 12:33:17 +02:00

termscp

termscp logo

~ A feature rich terminal file transfer ~

Website · Installation · User manual

English   Brazilian Portuguese   Deutsch   Español   Français   Italiano   简体中文

Developed by @veeso

Current version: 1.0.0 2025-12-20

License-MIT Repo stars Downloads counter Latest version Ko-fi

Linux CI MacOS CI Windows CI


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.

Explorer


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
  • Linux users:
  • WSL users
    • To open files via V (at least one of these)

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:

ko-fi PayPal


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:


Termscp Home

Auth

Bookmarks

Bookmarks

Setup

Setup

Text editor

TextEditor


License 📃

termscp is licensed under the MIT license.

You can read the entire license HERE

Languages
Rust 96.5%
Astro 1.9%
Shell 0.9%
PowerShell 0.4%
CSS 0.2%
Other 0.1%