[AI Development Lab] 【deepin插件开发活动】DPShell :一站式远程服务器管理工具
Tofloor
poster avatar
士无双
deepin
11 hours ago
Author

说明

最近搞个性化应用有点入魔了,感觉这也用不顺手,那也用不顺手😂 。不过dpshell应该是最后一个了,本来也想弄个顺手的浏览器,摸了摸口袋,还是算了。

remmina:连接windows挺好用,但是连接linux,它不支持上传文件夹,也不支持右键编辑

nxshell:连接linux还行

deepin终端/文件管理器:自己的东西,不太喜欢被别的[污染]

开源的应该也还有很多,但是懒得找了。

一、项目简介

DPShell 是一款面向开发者和运维人员的远程服务器管理桌面应用,集成 SSH 终端、SFTP 文件浏览和 RDP 远程桌面三大核心功能,让用户在一个界面内完成多台服务器的连接、管理和文件操作。

项目定位:方向三 — DTK 创新原生应用

源码仓库https://gitee.com/shiwushuang9/dpshell.git

技术栈:C++17 + Qt6 + DTK6 + libssh + FreeRDP3 + QTermWidget6


二、功能特性

1. 站点管理

  • 功能简洁,满足大部分管理需求
  • 列表多会话管理,双击/右键连接,点击面板跟随切换

2. SSH 协议

  • 基于 QTermWidget6 的完整终端模拟器,支持 vi/htop/ 颜色/IME 等全特性
  • 终端与SFTP 文件管理并列于面板,文件管理支持右键编辑文件【编辑器需要安装notepad--,一开始是支持设置软件的,后来去掉了】、上传多个文件、文件夹,状态栏实时记录
  • TCP keepalive 优化,~5s 快速检测断连
  • 支持域

3. RDP 协议

  • 基于 FreeRDP3 的远程桌面连接
  • 共享文件夹(drive redirection)
  • 双向剪贴板 — 本地与远程之间自由复制粘贴
  • 支持分辨率/色彩深度自定义
  • 支持域

【注:ssh和rdp的域功能未测试,条件有限,以后再测试】

三、截图展示

站点管理

image.png

远程linux
image.png

远程windows

image.png

四、安装方式

deb 包安装

使用deepin25自带软件安装器安装或者

sudo apt install ./dpshell_1.0.0-4_amd64.deb

从源码构建

# 安装构建依赖
sudo apt install cmake pkg-config qt6-base-dev libdtk6core-dev libdtk6gui-dev \
  libdtk6widget-dev libssh-dev libfreerdp3-dev

# 克隆并构建
git clone https://gitee.com/shiwushuang9/dpshell.git
cd dpshell
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build

# 运行
./build/dpshell

使用说明

  1. 站点管理中添加服务器连接
  2. 支持 SSH(端口 22)和 RDP(端口 3389)两种协议
  3. 在左侧已保存站点,双击即可进行连接,绿色🟢标识连接成功,面板区设置连接信息栏、关闭连接按钮、截图[rdp独有]

五、开发过程说明

使用的 deepin Skills

Skill 模块 用途
dtk-development 指导 DTK 桌面应用开发规范,包括 DMainWindow、DDialog、DLineEdit 等控件的使用,以及主题适配、布局结构等
用户开发协作偏好 规范开发流程:先出方案→批准后动手→打包→提交→推送,以及版本号管理、deb 打包规范等

开发历程

第一阶段:SSH + SFTP 基础功能

  • 借助 dtk-development Skill 构建 DTK 桌面应用框架
  • 集成 QTermWidget6 实现终端模拟器
  • 基于 libssh 实现 SSH 连接和 SFTP 文件传输
  • 参考 Skill 中的布局对齐经验,实现站点管理器对话框,优化布局

第二阶段:RDP 远程桌面

  • 集成 FreeRDP3 实现 RDP 远程桌面连接
  • 开发过程中遇到多个技术难点,通过 AI + deepin Skills 逐步排查解决

AI 编程工具中调用 deepin Skills 的对话记录

image.png

六、项目结构

dpshell/
├── CMakeLists.txt              # CMake 构建配置
├── debian/                     # deb 打包配置
│   ├── changelog
│   ├── control
│   ├── copyright
│   ├── rules
│   └── install
├── resources/
│   └── ...                     # 资源文件
└── src/
    ├── main.cpp                # 入口
    ├── mainwindow.cpp/h        # 主窗口(DTK)
    ├── rdpwidget.cpp/h         # RDP 远程桌面组件(FreeRDP3)
    ├── sessionpanel.cpp/h      # 会话面板
    ├── hostmanager.cpp/h       # 主机管理器
    ├── sshconnection.cpp/h     # SSH 连接
    ├── sftptransfer.cpp/h      # SFTP 传输
    ├── simpleterminal.cpp/h    # 终端组件
    └── settingsmanager.cpp/h   # 设置管理

七、开源协议

本项目采用 GPL-3.0 协议开源,欢迎 Star、Fork、Issue。


八、总结与致谢

DPShell 从一个简单的 SSH 终端工具起步,逐步发展为集成 SSH + SFTP + RDP 的远程服务器管理平台。整个开发过程中,deepin Skills 在 DTK 开发规范、界面布局优化、RDP 协议调试等环节提供了关键指导,特别是在 RDP 功能调试最困难的阶段,通过 AI + Skills 的配合,逐一定位并解决了共享文件夹、双向剪贴板、滚轮和键盘映射等底层问题。

Reply Favorite View the author
All Replies
avatar
Feelup
deepin
3 hours ago
#1

哇,这个看起来就很不错,远程虚拟机更方便了。

Reply View the author
avatar
Ligocut光剪视频剪辑软件
deepin
Backbone of ecological co-construction group
23 minutes ago
#2

非局域网的怎么连?

Reply View the author