[AI Development Lab] 【deepin插件开发活动】DPShell :一站式远程服务器管理工具
Tofloor
poster avatar
士无双
deepin
2026-08-21 01:30
Author

说明

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

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

nxshell:连接linux还能凑活[感觉很卡],完全不支持rdp了。

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

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

一、项目简介

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

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

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

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


二、功能特性

1. 站点管理

功能简洁,满足大部分管理需求。

  • 列表多会话管理,双击/右键连接,点击面板跟随切换
  • 支持站点排序、复制、删除,配置持久化存储
  • 支持 SSH 与 RDP 两种协议的统一管理

2. SSH 协议

  • 终端 — 基于 QTermWidget6 的完整终端模拟器,支持 vi/htop/颜色/IME 等全特性

  • SFTP 文件管理 — 内置文件浏览面板,与终端左右分栏并列

    • 目录树:左侧懒加载树,单击导航、双击展开/收起,与右侧文件列表双向联动,新建/删除/重命名后自动刷新
    • 文件列表:支持上传/下载/删除/重命名,多文件批量选择,文件夹递归上传下载
    • 右键编辑:远程文件下载到本地编辑,保存后自动同步回服务器(文本类需安装 notepad--,docx等支持调用本地软件例如wps直接打开编辑)
    • 传输队列:后台线程传输,状态栏实时记录进度
    • 权限反馈:无写权限的文件/目录显示锁图标和灰色文字,右键菜单根据权限动态调整
    • 复制路径:所有文件/目录均支持右键复制完整路径到剪贴板
    • 支持收藏文件夹
    • 支持右键解压
    • 更多右键功能等你发现
  • 连接保活 — TCP keepalive 内核级探测,约 5s 快速检测断连

  • 域登录 — 支持 AD 域登录(DOMAIN\user)

3. RDP 协议

  • 基于 FreeRDP3 的远程桌面连接
  • 共享文件夹(drive redirection),连接后 Windows 端可通过 \\tsclient\share 访问本地文件
  • 双向剪贴板 — 本地与远程之间自由复制粘贴[仅限文字]
  • 支持分辨率、色彩深度自定义
  • 支持截屏并复制到本地剪贴板
  • 支持域登录

注: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
2026-08-21 09:22
#1

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

Reply View the author
avatar
Ligocut光剪视频剪辑软件
deepin
Backbone of ecological co-construction group
2026-08-21 12:01
#2

非局域网的怎么连?

Reply View the author
avatar
士无双
deepin
2026-08-21 12:32
#3
Ligocut光剪视频剪辑软件:

非局域网的怎么连?

这种要在网络层面去解决了,超出了dpsehll的范围

Reply View the author