bzd
(bzd)
1
为什么要做这个?
目前市面上大多数客户端都是基于 Electron 或 HTML 开发,我个人不太喜欢这种“塑料的感觉”(并不是贬义,缺乏真实触感的体验)。因此,我选择使用 Java Swing 开发一个桌面端客户端。
核心部分采用 Kotlin 开发,最终目标是通过 Kotlin Multiplatform 打造一款全平台的 SSH/终端 工具。
功能特色
目前尚不支持 SFTP/FTP 等
XTerm 协议部分
使用 Kotlin 实现了 XTerm 协议(尚未完全实现)。桌面端的渲染层基于 Java Swing ,未来计划将这一部分迁移到 KMP ,从而实现真正的跨平台支持(包括移动端)。
在实现协议的过程中,参考了许多经典的客户端,例如:
预览
后续发展
- 命令提示(这部分我还在构思,如何准确获取用户输入的命令?)
- AI 功能
- 增加团队协同功能
- 支持 Telnet
- 支持 X-Server
- 支持 VNC Viewer
- SFTP/FTP
- 串口
- …
这是一个长期发展的项目。
希望大家给点建议 
项目地址:GitHub - TermoraDev/termora: Termora is a terminal emulator and SSH client for Windows, macOS and Linux.
72 Likes
bzd
(bzd)
3
完全从0开发,最难的是 XTerm 协议部分,因为文档太少了。
XTerm 协议部分从8-9月开始,大概11月底才完成第一版本(就这才实现30%协议标准
),最近1-2个月完成了应用程序的搭建。
这个是协议地址: ctlseqs(ms)
5 Likes
多看看别人的产品,另外我不觉得java 有啥优势,swing 界面能做出美观的东西很困难,另外现在大家频繁使用AI ,多想想AI 补全,AI 提示,比如XTerminal 的功能,别太陷入程序员思维了, 你的工具最终是给人(系统管理员,程序员)用的。
8 Likes
ldo
(ldo)
6
内存占用怎么样?界面看的太简陋了不能直接操作文件?
4 Likes
bzd
(bzd)
7
感谢建议。用 Java 是因为 Java 是我的强项
。
“命令提示” 我一直没有想好如何获取用户输入的命令,要想实现 AI 功能,必须先实现 “命令提示”。
4 Likes
yuki1
(yuki1)
8
terminal最麻烦的就是兼容性吧,可以看看windows terminal和其他热门terminal项目,都是几千个issue起步。
4 Likes
1.收藏夹导入导出。
2.配置默认远程登录目录。
3.自定义脚本
3 Likes
bzd
(bzd)
10
起步内存100多MB,因为Java不会及时归还内存,所以导致内存用得越久占用越多。
但是,我通过 JProfiler 调试来看,如果及时GC,占用内存会很小,低于100MB是常态(要频繁GC)。
2 Likes
关于xterm 协议我还真搞过,公司内部的k8s 多集群系统管理和pod和节点 诊断工具 , 前端用的xterm.js , 后端是golang.
3 Likes
bzd
(bzd)
15
3 Likes
Revivable
(Revivable)
21
有毅力,但是我觉得java开发桌面跟Electron 差不多臃肿吧,一个要带chromuim内核,一个要带jre运行库, FinalShell也是java开发的,可以参考下
2 Likes