目前市面上大多数客户端都是基于 Electron 或 HTML 开发,我个人不太喜欢这种“塑料的感觉”(并不是贬义,缺乏真实触感的体验)。因此,我选择使用 Java Swing 开发一个桌面端客户端。
核心部分采用 Kotlin 开发,最终目标是通过 Kotlin Multiplatform 打造一款全平台的 SSH/终端 工具。
目前尚不支持 SFTP/FTP 等
使用 Kotlin 实现了 XTerm 协议(尚未完全实现)。桌面端的渲染层基于 Java Swing ,未来计划将这一部分迁移到 KMP ,从而实现真正的跨平台支持(包括移动端)。
在实现协议的过程中,参考了许多经典的客户端,例如:
这是一个长期发展的项目。
希望大家给点建议 🙏
101
q000q000 17 天前
先 STAR ,以后看看能不能替代 Windows Terminal 。
|
102
noisay 17 天前
界面有点帅啊~ 要是能支持 ftp 文件管理就好了,我这种小白就在家折腾一下,图形界面的文件管理还是很需要
|
103
devh0407 17 天前
@liyanggyang 我之前看过腾讯云的 orca 使用的是 bash-preexec, 仿的 zsh [preexec] 和 [precmd] 钩子, 命令前后插了控制符
#hook fun preexec() { printf "\x1B]1337;PreExecMarker;%s\x7" "$1"; } precmd() { printf "\x1B]1337;PostExecMarker;Exit=$?;CurrentDir=$(pwd);\x7"; } |
104
lasuar 17 天前
增加 赞赏功能,我去包你明天早餐
|
106
ZiLong 17 天前
赞,有句话不知当讲不讲,我还挺喜欢 java 的,还是有人做些有趣的事了,就是楼主考虑过商业化相关的么?感觉投入和产出有可能极不成正比
|
110
liyanggyang 11 天前
@powersee #86 我理解您说的意思,命令肯定是操作系统 bash/zsh 等解释执行的。 我的症结是这个,简单举例:你的程序相当于一个“管道”嘛, 用户 - 程序 <-> linux 服务器 , 我想知道的是,linux 服务器执行命令之后,你在程序界面显示 执行完成后的结果(也就是 程序界面 <- linux 服务器 ) 这一段,何时判断 linux 服务器执行完成了, 你可以显示在程序界面了。
|
111
liyanggyang 11 天前
@powersee #86 那我理解了, 你不涉及 依次同步执行命令, 而是 输入/返回,本身就是 分别的 管道是吧?
我是要同步效果: 命令 1 -执行完成 - 命令 2 - 执行完成 , 不管多少个用户开了多少个窗口,只要命令 1 在执行,命令 2 就需要等命令 1 执行完成后才能开始执行, 你应该是 : 01 、输入监听 -> 放到 linux 执行 02 、返回流监听 -> 放到程序界面显示 01 和 02 这两个是 互相“独立”的。 |
112
liyanggyang 11 天前
@powersee #86
您应该是: 用户 | 程序 / \ 窗口 pty1 窗口 pty2 | | linux 服务器 我是: 用户 1 窗口 用户 2 窗口 \ / 程序 | 窗口 pty | linux 服务器 我是要用户 1 和用户 2 先后输入命令,在用户 1 返回后才能开始执行用户 2 窗口输入的命令,所以我需要判断用户 1 命令是否执行完成 |
113
powersee OP @liyanggyang #111 对于任何 Shell 来说,每次执行命令都是开启一个新的 Process ,那么你执行 “echo hello” 也会开启一个程序,在我印象里似乎是可以判断有没有程序在执行的
|
114
wukairobin 11 天前
rust 写跨平台桌面应用是不是也是一个很好的选择
|
115
powersee OP @wukairobin #114 不太懂,我只会 java 😂
|
116
perfectlife 9 天前
可以加个断开连接/重新连接的按钮,不然每次遇到网络问题连接中断后还得新开个窗口再去选择机器连接
|
117
powersee OP @perfectlife #116 可以通过“右键”标签页,有个重新连接
|