目前市面上大多数客户端都是基于 Electron 或 HTML 开发,我个人不太喜欢这种“塑料的感觉”(并不是贬义,缺乏真实触感的体验)。因此,我选择使用 Java Swing 开发一个桌面端客户端。
核心部分采用 Kotlin 开发,最终目标是通过 Kotlin Multiplatform 打造一款全平台的 SSH/终端 工具。
目前尚不支持 SFTP/FTP 等
使用 Kotlin 实现了 XTerm 协议(尚未完全实现)。桌面端的渲染层基于 Java Swing ,未来计划将这一部分迁移到 KMP ,从而实现真正的跨平台支持(包括移动端)。
在实现协议的过程中,参考了许多经典的客户端,例如:
这是一个长期发展的项目。
希望大家给点建议 🙏
1
shuangbiaog 2 天前
点个星星支持一下,个人觉得 ai 功能不太合适
|
2
powersee OP @shuangbiaog #1 感谢。我也觉得 AI 不合适,因为“太花里胡哨”了,这个优先级不会太高。但是,我对 X-Server 挺感兴趣的,可能会尝试实现一下,会完全采用 Kotlin 开发,后续跨平台也好兼容。
|
3
XDiLa 2 天前
感觉和 Termius 差别不大 但是管理主机方便 Termius 更加便捷吧。还有就是这种 ssh 终端工具太多了 很少能有非常吸引人的地方。我看你和 Wave 很像
|
4
XDiLa 2 天前
等你证书下来了我在安装体验一下,从你发的截图看 UI ,感觉是尚可的
|
5
XDiLa 2 天前
感觉你后续发展的目标非常和 Warp 类似
|
6
powersee OP @XDiLa
#3 目前来说,Termius 是更加方便的 #4 苹果这个证书有点麻烦,我被限制了,苹果团队还在处理中; UI 参考了 IDEA 的 #5 我个人是比较反对终端 “美化” 的,其实我更喜欢 XShell 这种原生质感 |
7
czhh 2 天前
和 finalshell 啥区别
|
9
yellowstrong 2 天前 1
下载体验了一下,跟作者观点一致,比一众 chrome 套壳应用体验可好太多了,后续希望能长期发展下去
|
10
bobobobob 2 天前
Java Swing ,想起我的大学时光了。。。
|
11
powersee OP @yellowstrong #9 感谢。会持续维护的,个人觉得 JVM 的性能还是比 Electron 的效率高一些。
|
14
shewhen 2 天前
|
15
liansishen 2 天前
star 了,等后续更新
|
16
iyiluo 2 天前
ssh 客户端加 ai 功能感觉挺离谱的,这不是把命令隐私都泄露了吗,没必要。ftp 的功能反倒优先级更高
|
17
shewhen 2 天前 1
期待加入 SFTP ,干翻 Termius ,FinalShell ,XShell !✨✨✨
|
18
powersee OP @shewhen #14 感谢使用。我通过 history 生成过百万行,也依然非常流畅。
可以通过 “设置 - 终端” 修改历史行数。 我采用全新思路设计了终端渲染和终端协议处理,无论数据再多也不会影响渲染效率,具体可以参考: https://github.com/TermoraDev/termora/blob/1.0.0/src/main/kotlin/app/termora/terminal/Terminal.kt |
19
powersee OP @iyiluo #16 是这样,我觉得 AI 比较鸡肋,我个人是比较反对的,后续我会考虑如何以 “方便、效率、易用” 的方面来接入 AI 。我比较倾向于: https://plugins.jetbrains.com/plugin/14823-full-line-code-completion 这种,完全本地化运行,但是我没有这方面的经验
|
20
lozzow 2 天前
希望加入 Quake Mode
|
22
thetbw 2 天前 1
java 之光
|
23
molezznet 2 天前
先 star 再试用
比起 ai 什么, 还是期待 trzsz 之类或 sftp 之类的优先级 |
25
ZeroDu 2 天前
win 测试了一下不错,丝滑,比用 Electron 的好多了 ,终端用来用去还是 xshell 顺手,功能全。不过 Termius 的这种 ui 其实还可以的
|
30
XiLingHost 2 天前
似乎没有支持 24 位深度色彩(TrueColor)终端,使用 btop 的 truecolor 模式会渲染出错,就像 xshell 一样,应该是只做了 256 色支持
|
31
powersee OP |
32
powersee OP @XiLingHost #30 我会进行测试。是 https://github.com/aristocratos/btop 吗?
|
33
szdev 2 天前
作为苹果用户,真的比较抵触 java 开发的软件,占用内存太严重了,之前比较喜欢用 FinalShell 运行久一点就是好几个 G 内存,后面接触到了 termius 一直在用就是因为内存占用好太多了~
|
34
yannxia 2 天前
不错不错,这个还挺快的,已经 star ,帮
|
35
randomstream 2 天前
|
36
Loku 2 天前
SFTP 优先级高一点,AI 是没必要吧?
|
37
powersee OP @szdev #33 Finalshell 我研究过,我不知道它为什么启动就占用 1G ,可能哪里有问题。不过我开发的这个内存占用好很多,Java 的缺点就是不会及时归还内存给操作系统。
|
39
XiLingHost 2 天前
@powersee 是,可以尝试使用任意在终端渲染真彩色的应用测试
|
40
Cooky 2 天前
支持,只要够快,够省内存就好
|
41
qianchengv 2 天前
@shewhen #14 老哥,你这个录屏 gif 的工具叫啥名,求一个
|
42
qianchengv 2 天前
Java 之光,挺美观; 我觉得如果可以参考 warp 加入一点 AI ,然后支持 macOS 上的 brew install 方式安装就更完美
|
43
powersee OP @qianchengv #42 后续会加入,因为苹果开发者证书还没下来,所以需要一段时间
|
44
minami 2 天前
只要不是 Electron/CEF 就点赞
|
46
w292614191 2 天前
|
47
powersee OP @w292614191 #46
相比于 xterminal 、termius 、electerm 这类的最大区别是前者使用 electron 开发,而 termora 使用 java 开发,个人觉得在丝滑程度略层一筹。 相比于 finalshell ,虽然与 termora 都是 java 开发,前者渲染基于 jediterm ,在性能和易用性不如 termora (通过调用输入法可以对比出来),finalshell 的内存占用异常的高,termora 就好很多。但不可否认的是,finalshell 目前的功能是比 termora 多的。 |
48
Lowae 2 天前 via Android
居然看到 kmp 的项目了,star 了。
不过要迁移的话可能改动也不小,ui 层基本需要替换为 compose |
49
powersee OP @Lowae 后续有开发移动端的计划,主要是核心渲染部分。会抽象出 VisualTerminalDisplay ,然后底层使用 skiko 绑定到各个平台就好,改动的确不会太小
|
50
lscho 2 天前 2
Java 和 Electron 谁也别说谁,半斤对八两。。。。
|
51
sn0wdr1am 2 天前
x11 Forwarding.
|
52
Ccf 2 天前
等 macos 正式版
|
53
w3cll 2 天前
Swing 的 UI 你是从哪里找的
|
54
willgyw 2 天前
太棒了,已 star
换了 macOS 之后一直想找一个像 Xshell 一样支持 Zmodem 的客户端,无奈只能用 item2 。 刚才试用了一下发现体验很棒,应该会继续用一段时间。 |
55
smilenceX 2 天前
下载试用了,很不错。
试用的感受: 首页的输入框可以加一个说明性的文字,我直接写 `ssh [email protected]` 按回车没反应,应该是我的用法不对。 proxy 功能 12 星好评 希望可以自定义配置文件的路径,这样就可以用 one drive 同步配置文件了。 |
56
powersee OP @sn0wdr1am #51 我对这个协议很感兴趣,我会尝试实现的
@w3cll #53 flatlaf @willgyw #54 感谢🙏 @smilenceX #55 其实是可以的。打开 app 目录 有一个 termora.cfg 文件,在后面加个 -Dtermora.base-data-dir=目录 https://github.com/TermoraDev/termora/blob/470b95cc426ce31e2d67c9e0f77e80154ac28aae/src/main/kotlin/app/termora/Application.kt#L69 |
57
Remember 2 天前
你这缺了太多功能,怎么敢直接 release 1.0.0 啊?
不说没实现的 sftp/trzsz 那些,最基础的 key 认证也只支持 rsa ,另外也不支持任何 key agent 。 只能是先 star 了。 不过打开看了一下 win11 占用 300M 不到内存,这在 java 里很优秀了啊。 |
58
powersee OP @Remember #57 的确缺了很多功能,所以要慢慢完善嘛。因为我只测试了 rsa ,后面会扩展更多,另外,您说的 key agent 是指?
|
60
willgyw 2 天前
还有一个小的需求,好像 item2 里面不需要任何插件就可以实现 tmux 和 vim 以及系统剪切板之间共享内容,请问这个功能可以实现吗?
|
61
Lowae 2 天前
@powersee 不过好在 kmp 的迁入是可以做到渐进的,而且也不是重 UI 的项目
我推荐个项目,看看能不能给你带来一些灵感。 https://github.com/JakeWharton/mosaic |
62
macaodoll 2 天前 via Android
插眼等更新
|
63
windfalls 2 天前
R 门, 贫僧这就用 rust 给你重写😂
|
64
caola 2 天前 1
xterminal 是我用过最好用的 SSH 工具了,但它是用 Electron 的,流畅度上一般,如果有可能的话,建议可以抄一下他们的功能和界面
|
65
zhiyu1998 2 天前
看着不错,已 star😁
|
68
Hconk 2 天前 via iPhone
列几个希望能有的,前面几个功能有了应该能日常使用了,如果比其他软件流畅那应该能吸引更多人切过去:
1. SFTP/FTP/SCP 文件管理,trzsz 2. 串口,串口自动登陆 3. 快捷指令按钮,按钮命令分组 4. x-server 5. 支持 cmd/poweshell ,类似 clink 的命令提示,自动提示 6. 代理,多层跳板 7. log 记录 8. 字符高亮,自定义主题 9. 自定义插件 |
69
Hconk 2 天前 via iPhone 1
可以参考参考 WindTerm 的功能
|
71
sn0wdr1am 1 天前
终端主题,参考同行的。
|
72
shewhen 1 天前
@qianchengv #41 pixpin
|
74
cowcomic 1 天前
JAVA 的内存占用真的是硬伤,期待以后的 JVM 能优化这个
功能上提供几个个人感受 xshell 个人离不开的功能主要有下面几个 1 ,和 xftp 联动 2 ,目录同步,虽然比较简陋,但也够了 3 ,屏幕搜索 |
75
zhongjun96 1 天前
|
77
Greendays 1 天前
挺好看的。如果支持 SFTP ,我就用这个来替代现在的 Windterm 了
|
78
Poko 1 天前
用起来挺快的,颜值也不错,优先加入 SFTP 吧
|
79
kalman03 1 天前
Kotlin + Swing 有点意思,新瓶装旧酒
|
80
liuzhedash 1 天前
看了下挺好的,star 了。
不过现在用 xshell ,暂时不打算真用 lz 的,JAVA 再怎么说也比 electron 省资源。 |
81
ripperdev 1 天前
在 mac 上试用了下,启动挺慢的,比使用 Electron 的 Tabby 还要慢。习惯性的用 ctrl+d 退出当前终端时,tab 没有关闭,得手动点一下
|
82
powersee OP |
83
liyanggyang 1 天前
大佬,有个疑问想请教下,您是如何判断 linux 命令已经直接完毕的,然后返回渲染?
我之前在网上找了些方案: 一、看 io 输入是否还有, 弊端:1 、有时候网络波动,io 没有输入但是命令还没返回完; 2 、类似 sleep 10 echo 1 这种命令,10 秒内 io 没返回直接 return 了不行 二、根据换行后的 #、$ 等标识( 比如 [root@localhost ~]# ) ,弊端:不够优雅,而且如果是 cat xxx.txt ,xxx.txt 文本中有 # 等在末尾,恰好有可能碰撞到返回 三、 用户输入命令自行拼接,比如 输入 ls , 变为 ls , echo end , 根据 返回 end 判断。弊端 :不够优雅,且有同样“二”问题 等等 |
84
NowTime 1 天前
@powersee 感觉我经常使用的一些快捷键似乎在这个软件失效了,比如:
- `Ctrl + W` 删除光标前一个单词,结果是关闭终端且没有任何提示 😂 - `Ctrl + 左右方向键` 光标跳跃单词移动 ... |
85
lyp92nlf 1 天前
SSH client is opening...
SSH client opened successfully. Session established. Session created. 通过代理连接主机会在这里卡 15 秒左右, 其它的还不错,正常连接挺快的,希望可以自定义字体,不然中文不太协调 |
86
powersee OP @liyanggyang #83 pty 可以理解为是网络流,它是无边的。终端只负责渲染和输入,并不是涉及到 “执行” ,执行命令是由底层的 zsh/bash/sh 来操作的。我们无法获取到用户输入的命令,这个正是我有疑虑的地方,如果无法准确的获取到用户输入的命令是没办法做到 “命令提示” 的。
@NowTime #84 是的,这些快捷键还没有实现,和 #83 的回答一样,目前我还没有好的思路如何获取用户输入的命令。 |
87
powersee OP @willgyw #60 “vim 以及系统剪切板之间共享内容” 可以提个 https://github.com/TermoraDev/termora/issues/new 详细描述一下嘛?
|
88
Lunrry 1 天前
请问和 Windterm 相比有什么优势呢
|
89
lloveinmypacket 1 天前
@powersee 可以做一个假的输入 UI 给用户,各种提示都可以实现,最后再给底层执行
|
90
blankmiss 1 天前
有点像 termius 不过 java 内存占用不大吗
|
91
zoharSoul 1 天前
不错啊 挺漂亮的
|
92
zhongjun96 1 天前
常用的快捷键 Ctrl+D 关闭当前窗口,Ctrl+N 新增窗口
没实现 |
93
zeusho871 1 天前
干翻 FinalShell 那个玩意儿很反人类 多窗口在 mac 里 轻轻一拖就多了
|
95
monkeyWie 1 天前 via Android
为啥不直接上 flutter 呢
|
96
molezznet 1 天前
发现没有 import ? export 完, 不知道如何使用 json 了
|
97
lululau 1 天前
这两年程序员都跟 Terminal 软件干上了?反正不管什么 Warp / wezterm / ghostty ,我觉得还是 iTerm2 功能最强大
|
98
powersee OP |
99
lvrvfv 1 天前
支持,最近刚用 kmp 开发了一个客户端,向楼主学习
|
100
liuliuliuliu 1 天前
我觉得可以试试用 .net 写,aot 编译,跨平台还不需要运行时,内存占用也小
|