采用 Java 开发的 SSH/终端工具,希望大家给点建议

为什么要做这个?

目前市面上大多数客户端都是基于 Electron 或 HTML 开发,我个人不太喜欢这种“塑料的感觉”(并不是贬义,缺乏真实触感的体验)。因此,我选择使用 Java Swing 开发一个桌面端客户端。

核心部分采用 Kotlin 开发,最终目标是通过 Kotlin Multiplatform 打造一款全平台的 SSH/终端 工具。

功能特色

  • 支持多标签页
  • 数据加密存储
  • 通过 Gist 同步配置
  • 宏功能
  • 密钥管理
  • Find Everywhere

目前尚不支持 SFTP/FTP 等

XTerm 协议部分

使用 Kotlin 实现了 XTerm 协议(尚未完全实现)。桌面端的渲染层基于 Java Swing ,未来计划将这一部分迁移到 KMP ,从而实现真正的跨平台支持(包括移动端)。

在实现协议的过程中,参考了许多经典的客户端,例如:

预览

后续发展

  • 命令提示(这部分我还在构思,如何准确获取用户输入的命令?)
  • AI 功能
  • 增加团队协同功能
  • 支持 Telnet
  • 支持 X-Server
  • 支持 VNC Viewer
  • SFTP/FTP
  • 串口

这是一个长期发展的项目。


希望大家给点建议 :folded_hands:

项目地址:GitHub - TermoraDev/termora: Termora is a terminal emulator and SSH client for Windows, macOS and Linux.

72 Likes

完全从0开发,最难的是 XTerm 协议部分,因为文档太少了。

XTerm 协议部分从8-9月开始,大概11月底才完成第一版本(就这才实现30%协议标准:sob:),最近1-2个月完成了应用程序的搭建。

这个是协议地址: ctlseqs(ms)

5 Likes

牛比了 点赞

4 Likes

多看看别人的产品,另外我不觉得java 有啥优势,swing 界面能做出美观的东西很困难,另外现在大家频繁使用AI ,多想想AI 补全,AI 提示,比如XTerminal 的功能,别太陷入程序员思维了, 你的工具最终是给人(系统管理员,程序员)用的。

8 Likes

内存占用怎么样?界面看的太简陋了不能直接操作文件?

4 Likes

感谢建议。用 Java 是因为 Java 是我的强项 :rofl:

“命令提示” 我一直没有想好如何获取用户输入的命令,要想实现 AI 功能,必须先实现 “命令提示”。

4 Likes

terminal最麻烦的就是兼容性吧,可以看看windows terminal和其他热门terminal项目,都是几千个issue起步。

4 Likes

1.收藏夹导入导出。
2.配置默认远程登录目录。
3.自定义脚本

3 Likes

起步内存100多MB,因为Java不会及时归还内存,所以导致内存用得越久占用越多。

但是,我通过 JProfiler 调试来看,如果及时GC,占用内存会很小,低于100MB是常态(要频繁GC)。

2 Likes

关于xterm 协议我还真搞过,公司内部的k8s 多集群系统管理和pod和节点 诊断工具 , 前端用的xterm.js , 后端是golang.

3 Likes
  1. 支持配置同步到 Gist,也可以完全导出。(但还不支持导入
  2. 远程登录目录可以通过 Startup Command 设置 “cd xxx” 来进入。(后续加个登录目录也是可以的
  3. 记录了

:pray:

3 Likes

感谢佬分享

2 Likes

太强了大佬

3 Likes

是的。在开发的过程中,我参考了很多 xtermjs 的代码(主要是协议交互部分。整体的 xterm 还是用一个全新思路来实现的。

termora/src/main/kotlin/app/termora/terminal/Terminal.kt at 1.0.0 · TermoraDev/termora

3 Likes

先跑起来再说,用强项实现没毛病.

3 Likes

厉害:+1::+1::+1::+1::+1:

4 Likes

已经跑起来了,可以试试哈

3 Likes

很强很强

3 Likes

有机会体验下.

2 Likes

有毅力,但是我觉得java开发桌面跟Electron 差不多臃肿吧,一个要带chromuim内核,一个要带jre运行库, FinalShell也是java开发的,可以参考下

2 Likes