# cloudos-docs **Repository Path**: peiiii/cloudos-docs ## Basic Information - **Project Name**: cloudos-docs - **Description**: Documents of cloudos - **Primary Language**: Unknown - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-12-30 - **Last Updated**: 2024-07-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Cloudos-Docs #### **CloudOS** 一个关于Web based OS的实验项目 #### 下一步计划 #### 展望 - 应用系统 - 服务系统 - 学习系统 - 社交系统 - 个人数字中心 - web3中心 #### 上层应用 - 笔记系统 - 基本 - 完善 - IDE - 基本 - 完善 - JupyterLite - 嵌入JupyterLite - 实现自己的JupyterLite - 桌面 - 改造之前的桌面 - 完善 - 应用中心 - 应用商店 - 我的应用 - 小工具 - 导航页 #### 基础服务 - registry - sdk - registry编辑器 - 文件系统 - sdk - 接口与实现分离 - node - browser - promises - 文件资源管理器 - v1:文件浏览 - v2:创建、重命名、移动、上传、下载 - 路由系统(借助service worker实现路由,用户可自定义路由,保存在IndexedDB中) - 本地路由 - 公共路由(实现个人公开页面) #### 文件系统(@cloudos/fs) - 支持挂载多种数据源(浏览器、本地、git系统、其它) - local storage - memory - IndexedDB - gitee - local file system - webdav - github - 开发相应的管理应用进行统一配置和管理(类似于文件系统后台管理界面) - fsmans | fsconfig - 文件资源管理器 - 提供文件系统API @cloudos/fs ,要尽量和Node fs api 保持一致。可以很方便的调用,API的使用方式必须精心设计,具备良好的鲁棒性和稳定性。 - 设计为可拓展架构 - Promises - sync #### 面向web设计的新一代数据系统API - 解决文件系统API的缺陷,无法原子性的获取目录下的所有子项的信息、没有搜索功能等。 ### 参考定位 - 云电脑、个人网盘、云笔记、知识库、导航页、常用网站信息库 - 终身学习平台、元宇宙、个人数字中心 - Microsoft Office全家桶 web版 + 微信小程序 ### 组件介绍 #### 资源管理器 - 文件浏览器|文件选择器 - 调用应用注册中心的sdk,获取应用,跳转特定web应用打开文件 #### 文件系统 - 支持挂载,挂载信息会被保存到浏览器存储,如果清空存储,则需要重新挂载。 - 在apps.eiooie.com域名下的所有应用都能通过`cloudos/fs`库去获取文件系统模块,从而进行相应操作。 - 文件系统中的资源可由统一资源标识符(`URI`)标识,如可用`cfs://gitee.com/peiiii/cfs`作为标识,去挂载gitee.com的相应仓库。如果挂载时提供了`access_token`,则相关文件可以读写,否则如果时公开仓库,则可以进行读,否则将没有任何操作权限。 - 不应将功能和域名进行硬性绑定,需思考此处如何进行解耦,使得再其它域名下也可以照常使用`cloudos/fs`库。这意味着代码库中应尽量避免含有域名的常量。 #### 打开特定应用 - 应用的打开推荐遵循特定的协议`applink`,由`cloudos/applink`库来实现,基于`cloudos/fs`。 - 应用网址+参数如`path=cfs://gitee.com/peiiii/cfs`,如果应用代码调用了`cloudos/applink`库进行了初始化,此库会自动获取path参数,并检测是否具备相应的权限,如果没有权限,则会弹出`cloudos/rsman`提供的资源管理器管理相应的权限,操作完成以后会执行后续的操作,即由应用调用`fs`的接口来操作资源。 如果资源管理器操作失败或被关闭,则将跳转至无参数的应用网址,此时会展示由`applink`提供的导航页面。此导航页类似于`vscode`的起始页,其操作由应用定义,主要是打开资源、创建资源、恢复近期打开记录等选项。 #### 获取可用的应用 - 设计一个规范,规范了如何存储和获取应用的信息。应用的信息被保存于一系列的`json`文件当中。这些文件具有一定的层级结构,可以通过url获取内容。设计一个库用于获取信息`cloudos/appinfo`, 事先提供一个存储app信息的网址根地址,如`https://apps.eiooie.com/appcenter/appinfo/root.json`,库会提取出其中的应用信息。接下来,可通过库获取所有应用信息,如支持`.docx`的应用。 #### 在应用中展示文件树 - 提供一个库`cloudos/fstree`,基于`cloudos/fs`库,提供展示指定路径目录结构的小组件,并支持文件操作。同时通过事件监听和分发,实现应用其余部分和文件树的交互。 #### 终端 - 在`cloudos/fs`提供文件系统的基础上,提供一个终端命令行界面,便不再困难。终端可提供文件操作相关命令,并拓展其它命令。 - 为了获取最大的拓展性,也可以仿照linux和windows系统,将一系列目录作为系统搜索路径,从其中搜索可执行文件。 #### 可执行文件 - 参考linux和windows系统,可定义一直可执行文件格式。如开发一个`cloudos/csh`库,用于运行`.csh`后缀的文件格式。可执行文件有输入和输出,输入即为运行环境和参数,输出是运行环境。运行环境指的是浏览器环境,包括windows,document,地址栏,dom树, 文件系统等。应当设计一个沙盒来运行文件,可参考github上的`sablejs`,`eval5`。 #### 桌面 - 与某一文件夹绑定,可在界面内运行资源管理器,进行文件操作。 - 是一个应用面板。会自动加载系统中的配置,展示相应的用户界面。例如,桌面壁纸,桌面小组件等。桌面的布局信息都保存于文件之中,对应文件系统中的某个文件夹。同时也意味着,通过设置不同的文件夹作为backend,就能获得不同的桌面。 - 便于运行涉及界面的应用程序 #### 资源浏览器 - 本质是另一种资源管理器。其左侧为系统目录树,右侧为文件打开界面,双击点击左侧文件时,如果有多个应用支持打开当前文件,会弹框让用户进行选择。选择完成后就在右侧展示文件打开页面。本质是在iframe中访问其它应用并打开相应资源。 - 目录树的打开状态会被缓存在浏览器之中,这样再次打开时能恢复之前的打开状态。 #### 应用中心 - 展示应用,注册应用。提供关于所有应用的信息,同时可以添加新的应用(仅限管理员)。可以将信息存储在管理员的gitee仓库中,公共读。 ### 应用结构 1. 访问页面,检查页面参数 2. 如果有参数,则按照参数指定方式运行应用,如打开特定资源 3. 资源的形式任意,由统一资源标识符决定,如`http:// , cloudfs://,` ### 示例应用 - 云笔记:参考typera的界面设计和语雀的功能设计 - 导航页:自定义导航页面 - 小工具合集 - 元宇宙:每个人建立自己的虚拟`站点`\-