Browse Source

editor desktop

master
godo 9 months ago
parent
commit
4e8566e893
  1. 8
      frontend/src/components/setting/SetSystem.vue
  2. 39
      frontend/src/components/taskbar/Magnet.vue
  3. 6
      frontend/src/system/applist.ts
  4. 20
      frontend/src/system/index.ts
  5. 4
      frontend/src/system/initBuiltin.ts
  6. 589
      godo/deps/desktop.json
  7. 1
      godo/files/destop.go

8
frontend/src/components/setting/SetSystem.vue

@ -107,10 +107,10 @@ let zipFile: File | undefined = undefined;
const zipFileInput = ref();
const fileName: any = ref("");
const storeList = [
{
title: "浏览器存储",
value: "browser",
},
// {
// title: "",
// value: "browser",
// },
{
title: "本地存储",
value: "local",

39
frontend/src/components/taskbar/Magnet.vue

@ -1,16 +1,9 @@
<template>
<div class="magnet-group scroll-bar">
<div
@click.stop="handle(item)"
class="magnet-item"
:style="{
animationDelay: `${Math.floor(index / 4) * 0.02}s`,
animationDuration: `${Math.floor(index / 4) * 0.04 + 0.1}s`,
}"
v-for="(item, index) in appList"
v-glowing
:key="basename(item.path)"
>
<div @click.stop="handle(item)" class="magnet-item" :style="{
animationDelay: `${Math.floor(index / 4) * 0.02}s`,
animationDuration: `${Math.floor(index / 4) * 0.04 + 0.1}s`,
}" v-for="(item, index) in appList" v-glowing :key="basename(item.path)">
<FileIcon class="magnet-item_img" :file="item" />
<span class="magnet-item_title">{{ getName(item) }}</span>
</div>
@ -20,14 +13,27 @@
import { useAppOpen } from "@/hook/useAppOpen";
import { emitEvent } from "@/system/event";
import { basename } from "@/system/core/Path";
import { OsFileWithoutContent } from "@/system/core/FileSystem";
import { vGlowing } from "@/util/glowingBorder";
import { t } from "@/i18n";
import { BrowserWindow, useSystem } from "@/system";
const { openapp, appList } = useAppOpen("menulist");
function handle(item: OsFileWithoutContent) {
const { appList } = useAppOpen("menulist");
function handle(item: any) {
emitEvent("magnet.item.click", item);
openapp(item);
const sys = useSystem();
const winopt = sys._rootState.windowMap["Menulist"].get(item.title);
if (winopt) {
if (winopt._hasShow) {
return;
} else {
winopt._hasShow = true;
const win = new BrowserWindow(winopt.window);
win.show();
win.on("close", () => {
winopt._hasShow = false;
});
}
}
}
function getName(item: any) {
const name = basename(item.path);
@ -69,6 +75,7 @@ function getName(item: any) {
transition: all 0.2s;
animation: transin both;
position: relative;
.magnet-item_img {
width: 40%;
height: 40%;
@ -89,10 +96,12 @@ function getName(item: any) {
-webkit-line-clamp: 2;
}
}
@keyframes transin {
from {
transform: translateY(40px);
}
to {
transform: translateY(0px);
}

6
frontend/src/system/applist.ts

@ -283,7 +283,7 @@ export const appList = [
center: true,
resizable: true,
isDeskTop: false,
isMenuList: true,
isMenuList: false,
ext: ['mp3']
},
{
@ -308,7 +308,7 @@ export const appList = [
center: true,
resizable: true,
isDeskTop: false,
isMenuList: true,
isMenuList: false,
ext: ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp', 'tiff'],
},
{
@ -320,7 +320,7 @@ export const appList = [
height: 600,
center: true,
isDeskTop: false,
isMenuList: true,
isMenuList: false,
ext: ['mp4']
},
{

20
frontend/src/system/index.ts

@ -91,11 +91,10 @@ export class System {
*/
private async initSystem() {
this._rootState.state = SystemStateEnum.opening;
initBuiltinFileOpener(this); // 注册内建文件打开器
this.fs = useOsFile(); // 初始化文件系统
initBuiltinApp(this);
initBuiltinFileOpener(this); // 注册内建文件打开器
await this.initSavedConfig(); // 初始化保存的配置
// 初始化内建应用
// 判断是否登录
this.isLogin();
initEventListener(); // 初始化事件侦听
@ -156,13 +155,9 @@ export class System {
* @description:
*/
private initEvent() {
/**
*
*/
return initEventer();
}
refershAppList() {
const system = useSystem();
@ -190,8 +185,6 @@ export class System {
});
}
replaceFileSystem(fs: OsFileInterface) {
this.fs = fs;
//this.initAppList();
@ -242,13 +235,18 @@ export class System {
return this._rootState.options[key];
}
private addWindowSysLink(loc: string, options: WinAppOptions, force = false) {
private addWindowSysLink(loc: string, options: any, force = false) {
if (force) {
this.fs.writeFile(
`${this._options.userLocation}${loc}/` + options.name + '.exe',
`link::${loc}::${options.name}::${options.icon}`
);
}
if (typeof options.window.content !== 'string') {
options.window.content = markRaw(options.window.content);
}
// console.log(options.window)
// console.log(options.name)
this._rootState.windowMap[loc].set(options.name, options);
}
@ -372,8 +370,10 @@ export class System {
// 读取文件内容
const fileContent = await this.fs.readFile(path);
// 从_fileOpenerMap中获取文件扩展名对应的函数并调用
const fileName = extname(fileStat?.name || '') || 'link'
//console.log(fileName)
this._flieOpenerMap
.get(extname(fileStat?.path || '') || 'link')
.get(fileName)
?.func.call(this, path, fileContent || '');
}
}

4
frontend/src/system/initBuiltin.ts

@ -103,11 +103,13 @@ export function initBuiltinFileOpener(system: System) {
hiddenInChosen: true,
func: (path: string, content: string) => {
console.log(path)
console.log(content)
console.log(JSON.stringify(system._rootState.windowMap))
const exeContent = content.split("::");
const winopt = system._rootState.windowMap[exeContent[1]].get(
exeContent[2]
);
//console.log(winopt)
console.log(winopt)
if (winopt) {
if (winopt.multiple ?? true) {
const win = new BrowserWindow(winopt.window);

589
godo/deps/desktop.json

@ -1,589 +0,0 @@
{
"updatetime": "2024-08-24T10:42:22.086Z",
"apps": [
{
"isFile": true,
"isDirectory": false,
"isSymlink": false,
"size": 32,
"mtime": "2024-08-24T10:42:22.086Z",
"atime": "2024-08-24T10:42:22.086Z",
"birthtime": "2024-08-24T10:42:22.086Z",
"mode": 511,
"rdev": 0,
"name": "computer.exe",
"path": "/C/Users/Desktop/computer.exe",
"oldPath": "/C/Users/Desktop/computer.exe",
"parentPath": "/C/Users/Desktop",
"content": "link::Desktop::computer::diannao",
"ext": "exe",
"title": "computer",
"isSys": 1,
"id": 28
},
{
"isFile": true,
"isDirectory": false,
"isSymlink": false,
"size": 30,
"mtime": "2024-08-24T10:42:22.095Z",
"atime": "2024-08-24T10:42:22.095Z",
"birthtime": "2024-08-24T10:42:22.095Z",
"mode": 511,
"rdev": 0,
"name": "appstore.exe",
"path": "/C/Users/Desktop/appstore.exe",
"oldPath": "/C/Users/Desktop/appstore.exe",
"parentPath": "/C/Users/Desktop",
"content": "link::Desktop::appstore::store",
"ext": "exe",
"title": "appstore",
"isSys": 1,
"id": 31
},
{
"isFile": true,
"isDirectory": false,
"isSymlink": false,
"size": 29,
"mtime": "2024-08-24T10:42:22.101Z",
"atime": "2024-08-24T10:42:22.101Z",
"birthtime": "2024-08-24T10:42:22.101Z",
"mode": 511,
"rdev": 0,
"name": "document.exe",
"path": "/C/Users/Desktop/document.exe",
"oldPath": "/C/Users/Desktop/document.exe",
"parentPath": "/C/Users/Desktop",
"content": "link::Desktop::document::word",
"ext": "exe",
"title": "document",
"isSys": 1,
"id": 38
},
{
"isFile": true,
"isDirectory": false,
"isSymlink": false,
"size": 27,
"mtime": "2024-08-24T10:42:22.102Z",
"atime": "2024-08-24T10:42:22.102Z",
"birthtime": "2024-08-24T10:42:22.102Z",
"mode": 511,
"rdev": 0,
"name": "excel.exe",
"path": "/C/Users/Desktop/excel.exe",
"oldPath": "/C/Users/Desktop/excel.exe",
"parentPath": "/C/Users/Desktop",
"content": "link::Desktop::excel::excel",
"ext": "exe",
"title": "excel",
"isSys": 1,
"id": 39
},
{
"isFile": true,
"isDirectory": false,
"isSymlink": false,
"size": 33,
"mtime": "2024-08-24T10:42:22.102Z",
"atime": "2024-08-24T10:42:22.102Z",
"birthtime": "2024-08-24T10:42:22.102Z",
"mode": 511,
"rdev": 0,
"name": "markdown.exe",
"path": "/C/Users/Desktop/markdown.exe",
"oldPath": "/C/Users/Desktop/markdown.exe",
"parentPath": "/C/Users/Desktop",
"content": "link::Desktop::markdown::markdown",
"ext": "exe",
"title": "markdown",
"isSys": 1,
"id": 40
},
{
"isFile": true,
"isDirectory": false,
"isSymlink": false,
"size": 31,
"mtime": "2024-08-24T10:42:22.104Z",
"atime": "2024-08-24T10:42:22.104Z",
"birthtime": "2024-08-24T10:42:22.104Z",
"mode": 511,
"rdev": 0,
"name": "mindmap.exe",
"path": "/C/Users/Desktop/mindmap.exe",
"oldPath": "/C/Users/Desktop/mindmap.exe",
"parentPath": "/C/Users/Desktop",
"content": "link::Desktop::mindmap::mindexe",
"ext": "exe",
"title": "mindmap",
"isSys": 1,
"id": 41
},
{
"isFile": true,
"isDirectory": false,
"isSymlink": false,
"size": 26,
"mtime": "2024-08-24T10:42:22.105Z",
"atime": "2024-08-24T10:42:22.105Z",
"birthtime": "2024-08-24T10:42:22.105Z",
"mode": 511,
"rdev": 0,
"name": "ppt.exe",
"path": "/C/Users/Desktop/ppt.exe",
"oldPath": "/C/Users/Desktop/ppt.exe",
"parentPath": "/C/Users/Desktop",
"content": "link::Desktop::ppt::pptexe",
"ext": "exe",
"title": "ppt",
"isSys": 1,
"id": 42
},
{
"isFile": true,
"isDirectory": false,
"isSymlink": false,
"size": 35,
"mtime": "2024-08-24T10:42:22.105Z",
"atime": "2024-08-24T10:42:22.105Z",
"birthtime": "2024-08-24T10:42:22.105Z",
"mode": 511,
"rdev": 0,
"name": "fileEditor.exe",
"path": "/C/Users/Desktop/fileEditor.exe",
"oldPath": "/C/Users/Desktop/fileEditor.exe",
"parentPath": "/C/Users/Desktop",
"content": "link::Desktop::fileEditor::editorbt",
"ext": "exe",
"title": "fileEditor",
"isSys": 1,
"id": 43
},
{
"isFile": true,
"isDirectory": false,
"isSymlink": false,
"size": 28,
"mtime": "2024-08-24T10:42:22.105Z",
"atime": "2024-08-24T10:42:22.105Z",
"birthtime": "2024-08-24T10:42:22.105Z",
"mode": 511,
"rdev": 0,
"name": "board.exe",
"path": "/C/Users/Desktop/board.exe",
"oldPath": "/C/Users/Desktop/board.exe",
"parentPath": "/C/Users/Desktop",
"content": "link::Desktop::board::kanban",
"ext": "exe",
"title": "board",
"isSys": 1,
"id": 44
},
{
"isFile": true,
"isDirectory": false,
"isSymlink": false,
"size": 33,
"mtime": "2024-08-24T10:42:22.106Z",
"atime": "2024-08-24T10:42:22.106Z",
"birthtime": "2024-08-24T10:42:22.106Z",
"mode": 511,
"rdev": 0,
"name": "whiteBoard.exe",
"path": "/C/Users/Desktop/whiteBoard.exe",
"oldPath": "/C/Users/Desktop/whiteBoard.exe",
"parentPath": "/C/Users/Desktop",
"content": "link::Desktop::whiteBoard::baiban",
"ext": "exe",
"title": "whiteBoard",
"isSys": 1,
"id": 45
},
{
"isFile": true,
"isDirectory": false,
"isSymlink": false,
"size": 30,
"mtime": "2024-08-24T10:42:22.107Z",
"atime": "2024-08-24T10:42:22.107Z",
"birthtime": "2024-08-24T10:42:22.107Z",
"mode": 511,
"rdev": 0,
"name": "localchat.exe",
"path": "/C/Users/Desktop/localchat.exe",
"oldPath": "/C/Users/Desktop/localchat.exe",
"parentPath": "/C/Users/Desktop",
"content": "link::Desktop::localchat::chat",
"ext": "exe",
"title": "localchat",
"isSys": 1,
"id": 46
},
{
"isFile": true,
"isDirectory": false,
"isSymlink": false,
"size": 33,
"mtime": "2024-08-24T10:42:22.108Z",
"atime": "2024-08-24T10:42:22.108Z",
"birthtime": "2024-08-24T10:42:22.108Z",
"mode": 511,
"rdev": 0,
"name": "piceditor.exe",
"path": "/C/Users/Desktop/piceditor.exe",
"oldPath": "/C/Users/Desktop/piceditor.exe",
"parentPath": "/C/Users/Desktop",
"content": "link::Desktop::piceditor::picedit",
"ext": "exe",
"title": "piceditor",
"isSys": 1,
"id": 47
},
{
"isFile": true,
"isDirectory": false,
"isSymlink": false,
"size": 26,
"mtime": "2024-08-24T10:42:22.109Z",
"atime": "2024-08-24T10:42:22.109Z",
"birthtime": "2024-08-24T10:42:22.109Z",
"mode": 511,
"rdev": 0,
"name": "gantt.exe",
"path": "/C/Users/Desktop/gantt.exe",
"oldPath": "/C/Users/Desktop/gantt.exe",
"parentPath": "/C/Users/Desktop",
"content": "link::Desktop::gantt::gant",
"ext": "exe",
"title": "gantt",
"isSys": 1,
"id": 48
},
{
"isFile": true,
"isDirectory": false,
"isSymlink": false,
"size": 30,
"mtime": "2024-08-24T10:42:22.112Z",
"atime": "2024-08-24T10:42:22.112Z",
"birthtime": "2024-08-24T10:42:22.112Z",
"mode": 511,
"rdev": 0,
"name": "browser.exe",
"path": "/C/Users/Desktop/browser.exe",
"oldPath": "/C/Users/Desktop/browser.exe",
"parentPath": "/C/Users/Desktop",
"content": "link::Desktop::browser::brower",
"ext": "exe",
"title": "browser",
"isSys": 1,
"id": 53
}
],
"magnet": [
{
"isFile": true,
"isDirectory": false,
"isSymlink": false,
"size": 30,
"mtime": "2024-08-24T10:42:22.083Z",
"atime": "2024-08-24T10:42:22.083Z",
"birthtime": "2024-08-24T10:42:22.083Z",
"mode": 511,
"rdev": 0,
"name": "setting.exe",
"path": "/C/Users/Magnet/setting.exe",
"oldPath": "/C/Users/Magnet/setting.exe",
"parentPath": "/C/Users/Magnet",
"content": "link::Magnet::setting::setting",
"ext": "exe",
"title": "setting",
"isSys": 1,
"id": 26
},
{
"isFile": true,
"isDirectory": false,
"isSymlink": false,
"size": 31,
"mtime": "2024-08-24T10:42:22.090Z",
"atime": "2024-08-24T10:42:22.090Z",
"birthtime": "2024-08-24T10:42:22.090Z",
"mode": 511,
"rdev": 0,
"name": "computer.exe",
"path": "/C/Users/Magnet/computer.exe",
"oldPath": "/C/Users/Magnet/computer.exe",
"parentPath": "/C/Users/Magnet",
"content": "link::Magnet::computer::diannao",
"ext": "exe",
"title": "computer",
"isSys": 1,
"id": 29
},
{
"isFile": true,
"isDirectory": false,
"isSymlink": false,
"size": 29,
"mtime": "2024-08-24T10:42:22.096Z",
"atime": "2024-08-24T10:42:22.096Z",
"birthtime": "2024-08-24T10:42:22.096Z",
"mode": 511,
"rdev": 0,
"name": "appstore.exe",
"path": "/C/Users/Magnet/appstore.exe",
"oldPath": "/C/Users/Magnet/appstore.exe",
"parentPath": "/C/Users/Magnet",
"content": "link::Magnet::appstore::store",
"ext": "exe",
"title": "appstore",
"isSys": 1,
"id": 32
},
{
"isFile": true,
"isDirectory": false,
"isSymlink": false,
"size": 34,
"mtime": "2024-08-24T10:42:22.097Z",
"atime": "2024-08-24T10:42:22.097Z",
"birthtime": "2024-08-24T10:42:22.097Z",
"mode": 511,
"rdev": 0,
"name": "system.version.exe",
"path": "/C/Users/Magnet/system.version.exe",
"oldPath": "/C/Users/Magnet/system.version.exe",
"parentPath": "/C/Users/Magnet",
"content": "link::Magnet::system.version::info",
"ext": "exe",
"title": "system.version",
"isSys": 1,
"id": 34
},
{
"isFile": true,
"isDirectory": false,
"isSymlink": false,
"size": 37,
"mtime": "2024-08-24T10:42:22.099Z",
"atime": "2024-08-24T10:42:22.099Z",
"birthtime": "2024-08-24T10:42:22.099Z",
"mode": 511,
"rdev": 0,
"name": "process.title.exe",
"path": "/C/Users/Magnet/process.title.exe",
"oldPath": "/C/Users/Magnet/process.title.exe",
"parentPath": "/C/Users/Magnet",
"content": "link::Magnet::process.title::progress",
"ext": "exe",
"title": "process.title",
"isSys": 1,
"id": 36
},
{
"isFile": true,
"isDirectory": false,
"isSymlink": false,
"size": 36,
"mtime": "2024-08-24T10:42:22.110Z",
"atime": "2024-08-24T10:42:22.110Z",
"birthtime": "2024-08-24T10:42:22.110Z",
"mode": 511,
"rdev": 0,
"name": "calculator.exe",
"path": "/C/Users/Magnet/calculator.exe",
"oldPath": "/C/Users/Magnet/calculator.exe",
"parentPath": "/C/Users/Magnet",
"content": "link::Magnet::calculator::calculator",
"ext": "exe",
"title": "calculator",
"isSys": 1,
"id": 49
},
{
"isFile": true,
"isDirectory": false,
"isSymlink": false,
"size": 32,
"mtime": "2024-08-24T10:42:22.111Z",
"atime": "2024-08-24T10:42:22.111Z",
"birthtime": "2024-08-24T10:42:22.111Z",
"mode": 511,
"rdev": 0,
"name": "calendar.exe",
"path": "/C/Users/Magnet/calendar.exe",
"oldPath": "/C/Users/Magnet/calendar.exe",
"parentPath": "/C/Users/Magnet",
"content": "link::Magnet::calendar::calendar",
"ext": "exe",
"title": "calendar",
"isSys": 1,
"id": 50
},
{
"isFile": true,
"isDirectory": false,
"isSymlink": false,
"size": 31,
"mtime": "2024-08-24T10:42:22.111Z",
"atime": "2024-08-24T10:42:22.111Z",
"birthtime": "2024-08-24T10:42:22.111Z",
"mode": 511,
"rdev": 0,
"name": "musicStore.exe",
"path": "/C/Users/Magnet/musicStore.exe",
"oldPath": "/C/Users/Magnet/musicStore.exe",
"parentPath": "/C/Users/Magnet",
"content": "link::Magnet::musicStore::music",
"ext": "exe",
"title": "musicStore",
"isSys": 1,
"id": 51
},
{
"isFile": true,
"isDirectory": false,
"isSymlink": false,
"size": 30,
"mtime": "2024-08-24T10:42:22.112Z",
"atime": "2024-08-24T10:42:22.112Z",
"birthtime": "2024-08-24T10:42:22.112Z",
"mode": 511,
"rdev": 0,
"name": "gallery.exe",
"path": "/C/Users/Magnet/gallery.exe",
"oldPath": "/C/Users/Magnet/gallery.exe",
"parentPath": "/C/Users/Magnet",
"content": "link::Magnet::gallery::gallery",
"ext": "exe",
"title": "gallery",
"isSys": 1,
"id": 52
},
{
"isFile": true,
"isDirectory": false,
"isSymlink": false,
"size": 29,
"mtime": "2024-08-24T10:42:22.113Z",
"atime": "2024-08-24T10:42:22.113Z",
"birthtime": "2024-08-24T10:42:22.113Z",
"mode": 511,
"rdev": 0,
"name": "browser.exe",
"path": "/C/Users/Magnet/browser.exe",
"oldPath": "/C/Users/Magnet/browser.exe",
"parentPath": "/C/Users/Magnet",
"content": "link::Magnet::browser::brower",
"ext": "exe",
"title": "browser",
"isSys": 1,
"id": 54
}
],
"menulist": [
{
"isFile": true,
"isDirectory": false,
"isSymlink": false,
"size": 32,
"mtime": "2024-08-24T10:42:22.085Z",
"atime": "2024-08-24T10:42:22.085Z",
"birthtime": "2024-08-24T10:42:22.085Z",
"mode": 511,
"rdev": 0,
"name": "setting.exe",
"path": "/C/Users/Menulist/setting.exe",
"oldPath": "/C/Users/Menulist/setting.exe",
"parentPath": "/C/Users/Menulist",
"content": "link::Menulist::setting::setting",
"ext": "exe",
"title": "setting",
"isSys": 1,
"id": 27
},
{
"isFile": true,
"isDirectory": false,
"isSymlink": false,
"size": 33,
"mtime": "2024-08-24T10:42:22.094Z",
"atime": "2024-08-24T10:42:22.094Z",
"birthtime": "2024-08-24T10:42:22.094Z",
"mode": 511,
"rdev": 0,
"name": "computer.exe",
"path": "/C/Users/Menulist/computer.exe",
"oldPath": "/C/Users/Menulist/computer.exe",
"parentPath": "/C/Users/Menulist",
"content": "link::Menulist::computer::diannao",
"ext": "exe",
"title": "computer",
"isSys": 1,
"id": 30
},
{
"isFile": true,
"isDirectory": false,
"isSymlink": false,
"size": 31,
"mtime": "2024-08-24T10:42:22.096Z",
"atime": "2024-08-24T10:42:22.096Z",
"birthtime": "2024-08-24T10:42:22.096Z",
"mode": 511,
"rdev": 0,
"name": "appstore.exe",
"path": "/C/Users/Menulist/appstore.exe",
"oldPath": "/C/Users/Menulist/appstore.exe",
"parentPath": "/C/Users/Menulist",
"content": "link::Menulist::appstore::store",
"ext": "exe",
"title": "appstore",
"isSys": 1,
"id": 33
},
{
"isFile": true,
"isDirectory": false,
"isSymlink": false,
"size": 36,
"mtime": "2024-08-24T10:42:22.098Z",
"atime": "2024-08-24T10:42:22.098Z",
"birthtime": "2024-08-24T10:42:22.098Z",
"mode": 511,
"rdev": 0,
"name": "system.version.exe",
"path": "/C/Users/Menulist/system.version.exe",
"oldPath": "/C/Users/Menulist/system.version.exe",
"parentPath": "/C/Users/Menulist",
"content": "link::Menulist::system.version::info",
"ext": "exe",
"title": "system.version",
"isSys": 1,
"id": 35
},
{
"isFile": true,
"isDirectory": false,
"isSymlink": false,
"size": 39,
"mtime": "2024-08-24T10:42:22.100Z",
"atime": "2024-08-24T10:42:22.100Z",
"birthtime": "2024-08-24T10:42:22.100Z",
"mode": 511,
"rdev": 0,
"name": "process.title.exe",
"path": "/C/Users/Menulist/process.title.exe",
"oldPath": "/C/Users/Menulist/process.title.exe",
"parentPath": "/C/Users/Menulist",
"content": "link::Menulist::process.title::progress",
"ext": "exe",
"title": "process.title",
"isSys": 1,
"id": 37
}
]
}

1
godo/files/destop.go

@ -34,7 +34,6 @@ var RootAppList = []map[string]string{
{"name": "calendar", "icon": "calendar", "position": "Menulist"},
{"name": "musicStore", "icon": "music", "position": "Menulist"},
{"name": "gallery", "icon": "gallery", "position": "Menulist"},
{"name": "process.title", "icon": "progress", "position": "Menulist"},
}
// GetInitRootList constructs the initial root list.

Loading…
Cancel
Save