# Technical Documentation: NaoTu/DesktopNaotu

> ℹ️ **Provenance:** Multi-Tier Ingestion · [CodeWiki Reference](https://codewiki.google/github.com/NaoTu/DesktopNaotu)

### Overview (`README.md`)

# 桌面版脑图(DesktopNaotu) [](https://gitter.im/DesktopNaotu/DesktopNaotu) [](https://shang.qq.com/wpa/qunwpa?idkey=cbd6fbc32adbe20c99c005bc559ec45bf3c9bfe581f9226ed14bd0951ae95739)

> **【推荐】 欢迎大家关注我的新项目，一个AI时代的思维导图 [MindMap MT](https://github.com/topcss/mindmap) 简约而不简单；她已成为我们内部百人团队的事实标准，彻底取代了 XMind、MindMaster 等传统工具——纯文本 .mt 格式、AI 原生、开源免费、无节点限制、性能极致，真正为智能体时代而生。支持在线 PC端、移动端、VSCode插件的方式运行。**

## 1、中文介绍

### 软件介绍 [--> **English introduction**](README.md)

桌面版脑图是基于百度脑图的本地化版本，帮助你在没有互联网环境的情况下，依然可以使用脑图工具。

### 如何下载

- 方法1：通过 [**百度云下载**](http://pan.baidu.com/s/1jHNBL7C)
- 方法2：通过 [**Github 的 Releases 下载**](https://github.com/NaoTu/DesktopNaotu/releases)

### 各版本对应的系统

| 操作系统  | 位数    |  对应文件 |  大小  | 支持情况 |
| --------  | -----: | -----: | :----  | -- |
| MacOS | 64位 | DesktopNaotu-macOS-x64 | < 50M | 支持全部功能 |
| Linux | 64位 | DesktopNaotu-linux-x64 | < 50M | 支持全部功能 |
| Windows 7/10 | 64位 | DesktopNaotu-win32-x64 | < 50M | 支持全部功能 |
| Windows 7/10 | 32位 | DesktopNaotu-win32-ia32 | < 50M | 支持全部功能 |
| Windows XP  | 32位 | DesktopNaotu-Windows-mini | < 8M | 不支持调试 |

### 功能特征

- 包含百度脑图的基本功能
- 本地km文件的操作
- 支持拖拽打开km文件
- 支持关联打开km文件
- 支持自动保存功能
- [提供 **百度脑图** 文件的下载方式](https://github.com/NaoTu/DesktopNaotu/wiki/%E4%B8%8B%E8%BD%BD%E6%89%80%E6%9C%89%E7%99%BE%E5%BA%A6%E8%84%91%E5%9B%BE%E6%96%87%E4%BB%B6)


### 软件截图

- Windows 截图



- Mac OS X 截图



- Linux 截图



### 如何编译

#### 1. 安装所有依赖

```bash
# 安装必备工具
npm install gulp
npm install bower

# 自动安装依赖
npm install
bower install
```

#### 2. 更换graceful-fs版本（对于Node `v10.x`及以上版本）

```bash
npm install graceful-fs

# 如果仍出现"ReferenceError: primordials is not defined" 的错误，
# 则删掉cnpm安装的旧版本
rm -rf node_modules/_graceful-fs@3.0.12@graceful-fs

# 如果某个子模块依赖旧版本graceful-fs，则请根据报错信息，
# 切换到该模块目录下更新。
cd node_modules/<PATH_TO_MODULE_USING_DEPRECATED_GRACEFUL_FS>
npm install graceful-fs@4.x
```

#### 3. 更换`@types/node`版本

```bash
npm install @types/node@12.x
```

#### 4. 开始编译

```bash
gulp
```

#### 5. 测试运行

```bash
npm run demo
```

### 联系我们

问题和建议反馈：

- [Github issues](https://github.com/NaoTu/DesktopNaotu/issues)
- [加入讨论组](https://gitter.im/DesktopNaotu/DesktopNaotu)
- QQ群：330722928

### 捐赠项目

感谢您的慷慨捐赠。



Code released under the [GPL-2.0 License](LICENSE).

## 2、英文介绍

### Software introduction [--> **中文介绍**](doc/README-zh.md)

The desktop version of Mind Mapping is a localized version of Baidu Mind Mapping, which helps you to use Mind Mapping Tool without Internet.

### Special Sponsors

<p align="center"><a href="https://documentnode.io/?utm_source=github&utm_medium=sponsor&utm_campaign=desktopnaotu" target="_blank" rel="noopener noreferrer"><img src="https://user-images.githubusercontent.com/2252451/65103852-16463380-da02-11e9-8b58-bea4a84c2e31.png" alt="Document Node logo"></a><br>
Open Document Node, Inspiration Unfold</p>

### How to download

- Method 1：Download through [**Baidu Cloud**](http://pan.baidu.com/s/1jHNBL7C)
- Method 2：Download through [**Github's Releases**](https://github.com/NaoTu/DesktopNaotu/releases)

### System corresponding to each version

| Operating System | Bit | Corresponding File | Size | Support |
| --------  | -----: | -----: | :----  | -- |
| MacOS | 64 bit | DesktopNaotu - macOS - x64 | < 50M | Supports all functions |
| Linux | 64 bit | DesktopNaotu-linux-x64 | < 50M | Supports all functions |
| Windows 7/10 | 64 bit | DesktopNaotu-win32-x64 | < 50M | Supports all functions |
| Windows 7/10 | 32 bits | DesktopNaotu-win32-ia32 | < 50M | Supports all functions |
| Windows XP | 32 bits | DesktopNaotu-Windows-mini | < 8M | Debugging is not supported |

### Functional characteristics

- Basic functions of Baidu Mind Mapping
- Operation of local km files
- Support dragging open km files
- Support association to open km files
- Support for automatic saving
- [Provide **Baidu Mind Mapping** File Download Method](doc/Help.md)
- [Provide **ProcessOn** Mind Map Download Method](doc/Help.md)
- [View Historical Version](doc/History.md)

### Software screenshots

- Windows screenshot



- Mac OS X screenshot



- Linux screenshot



### How to compile

#### 1. Install dependencies

```bash
# Install prerequisites
npm install gulp
npm install bower

# Install dependencies
npm install
bower install
```

#### 2. Change graceful-fs version (For Node `v10.x` or newer)

```bash
npm install graceful-fs

# If error "ReferenceError: primordials is not defined" still occurs, remove the old edition installed by cnpm
rm -rf node_modules/_graceful-fs@3.0.12@graceful-fs

# If a submodule relies on old graceful-fs, please follow the log, locate to its directory, 
# then manually update
cd node_modules/<PATH_TO_MODULE_USING_DEPRECATED_GRACEFUL_FS>
npm install graceful-fs@4.x
```

#### 3. Change `@types/node` to v12.x

```bash
npm install @types/node@12.x
```

#### 4. Build

```bash
gulp
```

#### 5. Try running

```bash
npm run demo
```

### Contact us

Questions and suggestion feedback:

- [Github issues](https://github.com/NaoTu/DesktopNaotu/issues)
- [Join the discussion group](https://gitter.im/DesktopNaotu/DesktopNaotu)
- QQ group：330722928

### License

Code released under the [GPL-2.0 License](LICENSE).

---

### Doc CompileLog (`doc/CompileLog.md`)

# AnClark的编译探索过程

## 系统环境
- **Node.js**: 
  - **Windows下**：v14.13.1
  - **Arch Linux下，NVM切换**：9.0.0/12（LTS版）/14.13
- **NPM**: v6.14.8

## 第一次尝试

### 最初的编译步骤

1. 克隆源码后，`cnpm install`、`bower install`安装所有依赖
2. `npm run start`开始编译
3. 新版本Node.js下我手动更新了graceful-fs到`@^4.2`，否则报错。在9.0版本Node.js中该组件不存在此问题，可忽略。

### 配置文件

- Windows下，根据文档Dev.md一路安装各种组件。<del>走弯路了。。。</del>
- Arch Linux下重来，没有修改`package.json`。直接`npm install`安装全部依赖，不再逐一安装。

最终两系统都出现了同样的编译错误。

### 结果卡在这地方。。。

```
/* Detailed source-code truncated for AI context efficiency. */
```

## 第二次尝试

前文中出现的这一系列日志，实际上是因为新版本Electron暂不支持`@types/node`的最新版本（v14）：

```
error TS2689: Cannot extend an interface 'NodeJS.EventEmitter'. Did you mean 'implements'?
```

更换`@types/node`为`12.x`版本，即可解决。

```bash
cnpm install @types/node@12.x
```

同时注意保持TypeScript为`3.9.x`版本（最新的`4.x`也可），Node.js为`9.x`（或更新了graceful-fs后的`14.x`）。

### 于是，新的编译错误出现了。。。

```
/* Detailed source-code truncated for AI context efficiency. */
```

## 最后一弹。。刚刚猛然发现

思来想去，还是参考下最新版release。用`asar`解开release安装目录的`resources/app.asar`，阅读`package.json`，发现用了以下版本的库：

```json
...
"devDependencies": {
    "@babel/core": "^7.1.2",
    "@types/byline": "^4.2.31",
    "browserify": "^16.2.3",
    "del": "^3.0.0",
    "electron": "^3.0.11",
    "electron-packager": "^12.2.0",
    "electron-prebuilt": "^1.4.13",
    "grunt": "^1.0.3",
    "grunt-electron-installer": "^2.1.0",
    "gulp": "^3.9.1",
    "gulp-autoprefixer": "^6.0.0",
    "gulp-babel": "^8.0.0",
    "gulp-cache": "^1.0.2",
    "gulp-clean-css": "^3.10.0",
    "gulp-concat": "^2.6.1",
    "gulp-connect": "^5.6.1",
    "gulp-filter": "^5.1.0",
    "gulp-imagemin": "^4.1.0",
    "gulp-jshint": "^2.1.0",
    "gulp-livereload": "^4.0.0",
    "gulp-main-bower-files": "^1.6.3",
    "gulp-minify-css": "^1.2.4",
    "gulp-notify": "^3.2.0",
    "gulp-obfuscate": "^0.2.9",
    "gulp-rename": "^1.4.0",
    "gulp-ruby-sass": "^3.0.0",
    "gulp-tsc": "^1.3.2",
    "gulp-uglify": "^3.0.1",
    "js-beautify": "^1.8.6",
    "jshint": "^2.9.6",
    "run-sequence": "^2.2.1",
    "tsify": "^4.0.1",
    "typescript": "^3.2.2",
    "vinyl-source-stream": "^2.0.0",
    "wiredep": "^4.0.0"
  },
  "dependencies": {
    "hotkeys-js": "^3.3.8",
    "moment": "^2.23.0",
    "winston": "^3.1.0"
  }
...

```

**其中Electron居然是`3.x`的版本。安装这个版本试试看，保持其他依赖不变**：

```
cnpm install electron@3.x
gulp
```

**果然顺利编译！**

最后运行测试。再在工程`package.json`中添加一行：

```diff
@@ -5,6 +5,7 @@
   "main": "dist/main.js",
   "scripts": {
     "start": "gulp default",
+    "demo": "electron .",
     "packwin32": "cross-var electron-packager ./ DesktopNaotu --asar --platform=win32 --arch=ia32 --out=../OutApp --icon=app/static/favicon.ico --electron-version=3.0.10 --app-version=$npm_package_version --ignore=\"(.git|screenshot|doc|src|app|bower_components|electron-packager)\" --overwrite --prune",
     "packwin32dev": "cross-var electron-packager ./ DesktopNaotu --platform=win32 --arch=ia32 --out=../OutApp --icon=app/static/favicon.ico --electron-version=3.0.10 --app-version=$npm_package_version --ignore=\"(.git|screenshot|doc|bower_components|electron-packager)\" --overwrite --prune",
     "packwin64": "cross-var electron-packager ./ DesktopNaotu --asar --platform=win32 --arch=x64 --out=../OutApp --icon=app/static/favicon.ico --electron-version=3.0.10 --app-version=$npm_package_version --ignore=\"(.git|screenshot|doc|src|app|bower_components|electron-packager)\" --overwrite --prune",
```

然后

```
npm run demo
```

**成功运行了起来！**

---

## 关于打包速度慢的问题

使用`npm run packwin64`进行打包时，发现打包速度非常慢，起码要等几个小时。CMD下设置环境变量DEBUG（`set DEBUG=*`）时，可看到electron-packager在不断遍历`node_modules`文件夹。

后来参考了[这篇问答](https://segmentfault.com/q/1010000006197710)里[苹果小萝卜](https://segmentfault.com/u/xrene)的解决办法，才得知**使用`cnpm`安装软件包是问题所在**。它属于**扁平化安装**，会把所有依赖全部展开到`node_modules`文件夹中，这样赢得了速度，却导致文件夹下有超过1,800个项目，怪不得要遍历那么久。

于是删掉`node_modules`文件夹，用npm再重新安装。由于npm采用树形结构处理依赖，最终`node_modules`非常简洁，只有723个项目。打包速度快了不少。

---

## 可适用的编译教程

### 软件版本

- **Node.js**: `v9.x`、 `v12.x LTS`、 `v14.x`
  - `v10.x`在运行`gulp-tsc`时会提示语法错误，不选。
  - 建议`v9.x`。模块`graceful-js`不兼容高版本的Node.js，但你可以手动更新。
- **TypeScript**: `v3.9.x`、`v4.0.x`

### 1. 安装所有依赖

```bash
# 自动安装依赖
npm install
bower install

# 安装编译工具 Gulp
npm install gulp
```

### 2. 更换graceful-fs版本（对于Node `v10.x`及以上版本）

```bash
npm install graceful-fs

# 如果仍出现"ReferenceError: primordials is not defined" 的错误，
# 则删掉旧版本
rm -rf node_modules/_graceful-fs@3.0.12@graceful-fs

# 如果某个子模块依赖旧版本graceful-fs，则请根据报错信息，
# 切换到该模块目录下更新。
cd node_modules/<PATH_TO_MODULE_USING_DEPRECATED_GRACEFUL_FS>
npm install graceful-fs@4.x


cd node_modules/vinyl-fs
yarn add graceful-fs@4.x
cd ../../

cd node_modules/gulp-tsc
yarn add graceful-fs@4.x
cd ../../

cd node_modules/gulp-tsc/node_modules/vinyl-fs
yarn add graceful-fs@4.x
cd ../../../../
```

### 3. 更换`@types/node`版本

```bash
npm install @types/node@12.x
```

### 4. 开始编译

```bash
gulp
```

### 5. 测试运行

```bash
npm run demo
```

---

### Doc Dev (`doc/Dev.md`)

# 开发日志

## 开发环境
VSCode


## electron 用于对node程序进行打包。
```
npm install electron --save-dev
npm install electron-prebuilt --save-dev
npm install grunt-electron-installer --save-dev
npm install kityminder-core --save
```
- grunt-electron-installer 用于Windows平台的自动升级


## bower解决了前端库及其依赖安装的问题。
``` bower
bower init

bower install kityminder-editor --save
```

## bower 升级
``` bower
bower update kityminder-editor
bower update kityminder-core
```


## gulp 是前端项目构建工具，用来压缩js和css代码，甚至压缩图片。[相关介绍](http://markpop.github.io/2014/09/17/Gulp入门教程)
创建 gulpfile.js 文件
```
npm install gulp --save-dev

npm install gulp-ruby-sass gulp-autoprefixer gulp-clean-css gulp-jshint gulp-concat gulp-uglify gulp-imagemin gulp-notify gulp-rename gulp-livereload gulp-cache del --save-dev
npm install --save-dev run-sequence
npm install --save-dev gulp-connect
npm install --save-dev js-beautify
```
- LiveReload 当文件修改时自动刷新页面
- gulp.watch 监听文件的是否修改以便执行相应的任务
- gulp-connect [web服务器](https://github.com/AveVlad/gulp-connect/)
- gulp-atom-electron 


## 使用 wiredep 把依赖的文件引入到html文件中。[相关介绍](http://www.tuicool.com/articles/2qQbMnN)
创建 .bowerrc 文件，并且修改 bower.json 中的 overrides 节点进行重新引用。
```
npm install wiredep --save-dev
```


## jshint 是Javascript代码验证工具，这种工具可以检查你的代码并提供相关的代码改进意见。
``` 
npm install jshint
npm install --save-dev jshint
``` 



## 问题解决
[解决 electron 与 jquery 的冲突](http://stackoverflow.com/questions/30271011/electron-jquery-errors)


-- 安装编译工具
cnpm install gulp-main-bower-files --save-dev
cnpm install gulp-filter --save-dev

-- 自动更新
安装electron-squirrel-startup：
cnpm install electron-squirrel-startup

安装grunt-electron-installer：
cnpm install grunt-cli
cnpm install grunt grunt-electron-installer --save-dev

升级
npm install npm

-- 文件夹创建
https://nodejs.org/api/fs.html#fs_fs_exists_path_callback

-- electron 有专门的userData
https://segmentfault.com/q/1010000006187286?_ea=1042220

mac 编译
/Users/apple/.npm-global/lib/node_modules/electron-packager/cli.js ./ DesktopNaotu --platform=darwin --arch=x64 --out=../OutApp --icon=favicon.icns --app-version=1.6.15 --ignore="(.git|node_modules|screenshot|doc|src|bower_components|electron-packager)" --overwrite --prune

## 加入msg插件

bower install bootbox --save

添加本地 git tag v1.0.1
查看 git tag
推送到远程 git push origin --tags

修改远程仓库的地址
git remote rm origin
git remote add origin https://github.com/NaoTu/DesktopNaotu.git

新的版本号规则：
Major_Version_Number.Minor_Version_Number.Year.Build_Number

## 重新梳理依赖关系

npm uninstall jshint --save
npm uninstall kityminder-core --save
npm uninstall npm --save

npm install jshint --save-dev
npm install kityminder-core --save-dev
npm install log4js --save-dev

npm install gulp-babel --save-dev
npm install @babel/core --save-dev

### 新增日志的依赖包

npm install log4js --save
~~npm uninstall debug --save~~

### 依赖检查

npm install dependency-check -g

删除了多余的代码

### 发布文件 app 目录需要压缩为 app.asar 不应该出现代码文件

安装 asar

npm install asar

解压缩
在asar文件所在的根目录执行asar extract app.asar ./指令

打包项目
asar pack app/ app.asar

``` text
// OS X
electron/Electron.app/Contents/Resources/
└── app.asar

// Windows & Linux
electron/resources/
└── app.asar
```

### 遇到问题 加入 log4js 之后，报错找不到 debug 的模块

经过调试发现，debug 模块的查找路径有问题。

从 `.\resources\app\node_modules\log4js\node_modules\debug\dist\debug.js` 移动到 `.\resources\app\node_modules\debug.js` 即可。

另外，依赖 log4js 后，需要用到 node_modules ，所以要把 node_modules 从排除文件列表中移除

python 处理文件移动和打包

## 安装自定义的包

bower install git://github.com/NaoTu/kityminder-core.git#dev --save

## ts dev

npm uninstall fs-extra --save
npm uninstall @types/fs-extra --save-dev
npm uninstall @types/event-kit --save-dev

https://www.cnblogs.com/zqzjs/p/6160205.html

npm install log4js --save

https://74th.github.io/vscode-debug-specs/javascript_electron/

ts debugger

https://www.jianshu.com/p/d906dfaeddc5

高版本有bug，需要指定到这个版本。
npm install typescript --save-dev
npm install gulp-tsc --save-dev

---

### Doc Future (`doc/Future.md`)

# 功能

## Future

- 优化提示效果和内容；
- 新增自动更新功能；
- 新增可执行文件的下载；
- 图片上传的处理；
- 重构代码变量和方法不污染全局；
- 加入格式转换；
- 加入贡献方式；
- 拖动打开文件高亮窗口；
- 添加状态栏；
- 添加 Chrome App 版本
- 添加保持窗口的大小和位置

## Complete

- 添加导出多种格式；
- 增加快捷键说明；
- app中加入更新日志；
- 加入图片导出；
- 打开的文件保存时不弹对话框；
- 添加图标；
- 加入版本自动生成功能；
- 新增另存为功能；
- 加入新建窗口；
- 添加注册表值，右键菜单可以，选择打开；
- 加入开发文档；
- 完善md；
- 减小可执行文件的尺寸（找文章）；
- 加入新建文件；
- 添加最近打开记录；

---

### Doc Help (`doc/Help.md`)

# 帮助文档

## 一、下载所有百度脑图文件

场景：

百度脑图的文件是存放在百度的服务器上的，如果想在本地计算机上保留一份，那么可以用下面的方法进行批量下载。

通过下面的代码来备份，可以保留在线版的目录结构。建议定期备份你的脑图文件到本地。

步骤：

1. 在谷歌浏览器中，打开在线脑图的列表页 [http://naotu.baidu.com/home](http://naotu.baidu.com/home)
2. 当前，前提是你得先登陆。^_^
3. 按下`F12`进入调试模式，切换到`Console`标签页
4. 粘贴下面的代码，回车键执行
5. 等待数秒后，浏览器自动下载压缩文件

```
/* Detailed source-code truncated for AI context efficiency. */
```



## 二、如何下载单个百度脑图文件到本地？

### 方法1：

- 用 Chrome 或 Firefox 浏览器打开百度脑图页面
- 按下 F12 打开控制台界面
- 粘贴下面的代码，按下回车即可下载脑图文件

```javascript
eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('h{l 4(a,b){3 c=6.i(\'r://t.y.z/B/F\',\'a\');f(c){c.g=\'2:5/j,\'+b;c.k=a;3 d=6.m(\'n\');d.o(\'p\',q,1,s,0,0,0,0,0,1,1,1,1,0,u);c.v(d)}}3 2=w.x(7.8.A());3 9=7.8.C().2.5+\'.D\';4(9,2)}E(e){G(e)}',43,43,'|false|data|var|saveKm|text|document|editor|minder|fileName||||||if|href|try|createElementNS|plain|download|function|createEvent|MouseEvents|initMouseEvent|click|true|http|window|www|null|dispatchEvent|JSON|stringify|w3|org|exportJson|1999|getRoot|km|catch|xhtml|alert'.split('|'),0,{}))
```

### 方法2：

- 在浏览器书签栏的空白处，右键“添加网页”输入“脑图下载”，在“网址”文本框中粘贴下面的代码，点击“保存”就可以长期使用了：

``` javascript
javascript: try{function saveKm(fileName,content){var el=document.createElementNS('http://www.w3.org/1999/xhtml','a');if(el){el.href='data:text/plain,'+content;el.download=fileName;var event=document.createEvent('MouseEvents');event.initMouseEvent('click',true,false,window,0,0,0,0,0,false,false,false,false,0,null);el.dispatchEvent(event)}}var data=JSON.stringify(editor.minder.exportJson());var fileName=editor.minder.getRoot().data.text+'.km';saveKm(fileName,data)}catch(e){alert(e)}; void (0);
```

## 三、如何下载 **[ProcessOn](https://www.processon.com/diagrams/new#temp-system)** 上的思维导图呢？

### 操作方法和下载百度脑图一样。在浏览器中按 F12 并在控制台中粘贴下面的代码即可下载。

- 例如：如果你想下载 [《未来简史》思维导图](https://www.processon.com/view/598c3af7e4b020989e5b84d2) ，只需要三步：
- 1、打开页面
- 2、按下 F12
- 3、粘贴下面的代码

```javascript
eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('W{2 o(e){2 6(b){1 d={4:{7:b.7,9:b.s.v(/<w>/g,\'\\n\')}};f(b.h!=u){d.4.h=b.h}f(b.5==i||b.5.z==0){8 d}1 c=[];b.5.12(2(a){c.t(6(a))});d.5=c;8 d}8{j:6(e)}}2 k(a,b){1 c=l.x(\'y://r.A.B/C/D\',\'a\');f(c){c.E=\'4:9/F,\'+b;c.G=a;1 d=l.H(\'I\');d.J(\'K\',L,3,M,0,0,0,0,0,3,3,3,3,0,i);c.N(d)}}$.O({P:"/Q/R?p="+p,S:\'T\',4:{7:U},V:2(c){1 a=q.X(c.Y);1 b=o(a);1 d=b.j.4.9+\'.Z\';k(d,q.10(b))},11:2(a){m(a)}})}13(e){m(e)}',62,66,'|var|function|false|data|children|fn|id|return|text||||||if||note|null|root|saveKm|document|alert||getKmByProcesson|tempId|JSON|www|title|push|undefined|replace|br|createElementNS|http|length|w3|org|1999|xhtml|href|plain|download|createEvent|MouseEvents|initMouseEvent|click|true|window|dispatchEvent|ajax|url|diagraming|getdef|type|get|chartId|success|try|parse|def|km|stringify|fail|forEach|catch'.split('|'),0,{}))
```

## 四、如何在打印的时候，去掉节点前面的“展开或关闭”的小圆圈

- 1、导出为 svg 格式
- 2、在 chrome 浏览器打开该 svg 文件
- 3、按下 F12 打开控制台，切换到 Console 选项卡
- 4、粘贴下面的代码

```javascript
document.querySelectorAll('g[id^="node_expander"]').forEach(n => n.remove());
```



## 五、怎么重选默认保存路径

在菜单栏中，点击 `文件` 下的 `重选自动保存的目录` 菜单，或按 Ctrl+R 快捷键重选目录。

## 六、Linux 中如何运行

需要添加运行权限，如下命令
```
sudo chmod a+x DesktopNaotu && ./DesktopNaotu
```

---

### Doc History (`doc/History.md`)

# 项目介绍

[**桌面版脑图**](https://github.com/NaoTu/DesktopNaotu) 是百度脑图的离线版，帮助你在没有互联网环境的情况下，依然可以使用脑图工具。

## 各版本对应的系统

| 操作系统  | 位数    |  对应文件 |  大小  | 支持情况 |
| --------  | -----: | -----: | :----  | -- |
| MacOS | 64位 | DesktopNaotu-macOS-x64 | < 50M | 支持全部功能 |
| Linux | 64位 | DesktopNaotu-linux-x64 | < 50M | 支持全部功能 |
| Windows 7/10 | 64位 | DesktopNaotu-win32-x64 | < 50M | 支持全部功能 |
| Windows 7/10 | 32位 | DesktopNaotu-win32-ia32 | < 50M | 支持全部功能 |
| Windows XP  | 32位 | DesktopNaotu-Windows-mini | < 8M | 不支持调试 |

## 更新记录

### 3.2.3 / 2019-04-17

- 修复 备注中出现超链接打开错误的的问题；

### 3.2.2 / 2019-02-27

- 新增 粘贴图片的功能；
- 修复 部分linux打开空白的问题；

### 3.2.1-Beta / 2018-12-27

- 新增 记录内容日志
- 修复 关闭文件时产生新文件
- 修复 开启自动保存后，产生新文件
- 修复 关闭文件时，标题显示不正确

### 3.2.0-Beta / 2018-12-24

- 采用新技术(typescript)重构软件以提高稳定性
- 支持 Mac 版退出程序的标准快捷键Cmd+Q
- 修复无法切换语言的问题，目前通过配置文件
- 完善软件的备份功能
- 加入关闭文件的功能
- 加入创建副本的功能
- 新建文档改为正在新窗口打开
- 允许关闭默认保存功能，下次打开同样生效
- 修复其他若干问题

### 3.1.0 / 2018-11-30

- 新增 窗口新窗口的功能
- 修复 无法保存的问题
- 修复 默认打开是英文界面的问题
  - 自动升级配置文件
- 优化 程序的若干细节

### 3.0.0 / 2018-11-28

- 正式支持多语言。`鸣谢：涛`
  - 初版支持中文简体、中文繁体、英文
  - 软件的语言默认基于系统语言设置，也可以通过修改配置文件来强制改变
- 修复其他小问题

### 2.1.1 / 2018-11-22

- 修复 上传本地图片后无法导出png的问题。
- 修复 帮助地址出错的问题。
- 加入 下载百度脑图到本地的介绍。

### 2.0.2018 / 2018-10-22

- 新增 恢复图片上传功能。`鸣谢：涛`
  - 通过 base64 的方式存储到 km 文件中
- 新增 日志记录功能。
  - 当文件意外关闭或损坏时，有迹可循。
- 新增 自定义默认保存路径。
  - 加入新菜单 重选自动保存的目录。

### 1.5.2018 / 2018-10-8

- 修复 优化高分辨率下的菜单图标的显示。`鸣谢：Yuanw、偏执♬`
- 修复 MAC 版复制和粘贴快捷键无法使用 `鸣谢：jjeejj`
- 文档的完善。`鸣谢：家和`
- 启用新的版本号规则。
- 新增 `DesktopNaotu-Windows` 版本，基于 `miniblink` 的提供的 chrome 精简版内核

### 1.0.3 / 2018-8-31

- 修复 导出文件不出现在`最近的文件`中
- 修复 另存为时默认采用`根节点的文字`为文件名称
- 修复 新建文件弹出的提示从`覆盖当前文件`改为`关闭当前文件`
- 新增 导出默认采用`根节点的文字`为文件名称

### 1.0.2 / 2018-8-30

- 新增 图片双击放大

### 1.0.1 / 2018-8-14

- 新增 加入最近打开的文件
- 新增 打开文件所在文件夹，一般情况下还会选中它。（有用户说不好找文件的位置）
- 优化 替换系统的提示框，为内部消息提示。
- 修复 Mac/Linux 标题栏文件名显示为路径的问题

### 1.0.0 / 2018-5-28

- 显示当前编辑文件的名称
- 解决 Windows 下图标锯齿的问题
- 隐藏上传图片功能
- 将 kityminder-editor 的依赖，调整到自建分支上（方便更高级的定制）
- 开启默认保存功能（保存到用户文件夹中）

### 0.1.7 / 2018-1-25

- 解决 导出 Freemind 错误的问题
- 修改 默认取消了自动保存的功能

### 0.1.6 / 2017-10-31

- 新增 应用程序的窗口小图标
- 新增 Linux 任务栏的图标
- 新增 窗口最大化和最小化（解决 Linux 下无法窗口最大化的问题）
- 优化 资源加载完成之后再显示程序
- 解决 macOS 上无法撤销、重做、复制、粘贴

### 0.1.5 / 2017-10-19

- 修改打包方式
- 减小了打包尺寸
- 大大提高了程序打开效率

### 0.1.4 / 2017-10-17

- 修复检查更新的异常
- kityminder-editor 升级到最新版
- 加入编辑菜单：剪切、复制、粘贴

### 0.1.3 / 2017-10-16

- 自动保存功能可以在菜单中修改，默认自动保存

### 0.1.2 / 2017-10-9

- 支持绑定km文件类型，直接打开程序
- 添加自动保存功能

### 0.1.1 / 2017-8-10

- 添加新建功能

### 0.1.0 / 2016-11-14

- 支持导出多种格式的文件
- 版本号自动生成
- 下载地址取消密码

### 0.0.2 / 2016-11-11

- 添加百度在线脑图下载的方法
- 可执行文件下载的方法
- 添加另存为方法
- 添加快捷键说明

### 0.0.1 / 2016-11-9

- 实现基本功能

---

### Doc README Zh (`doc/README-zh.md`)

# 桌面版脑图(DesktopNaotu) [](https://gitter.im/DesktopNaotu/DesktopNaotu) [](https://shang.qq.com/wpa/qunwpa?idkey=cbd6fbc32adbe20c99c005bc559ec45bf3c9bfe581f9226ed14bd0951ae95739)

## 软件介绍 [--> **English introduction**](../README.md)

桌面版脑图是基于百度脑图的本地化版本，帮助你在没有互联网环境的情况下，依然可以使用脑图工具。

## 如何下载

- 方法1：通过 [**百度云下载**](http://pan.baidu.com/s/1jHNBL7C)
- 方法2：通过 [**Github 的 Releases 下载**](https://github.com/NaoTu/DesktopNaotu/releases)

## 各版本对应的系统

| 操作系统  | 位数    |  对应文件 |  大小  | 支持情况 |
| --------  | -----: | -----: | :----  | -- |
| MacOS | 64位 | DesktopNaotu-macOS-x64 | < 50M | 支持全部功能 |
| Linux | 64位 | DesktopNaotu-linux-x64 | < 50M | 支持全部功能 |
| Windows 7/10 | 64位 | DesktopNaotu-win32-x64 | < 50M | 支持全部功能 |
| Windows 7/10 | 32位 | DesktopNaotu-win32-ia32 | < 50M | 支持全部功能 |
| Windows XP  | 32位 | DesktopNaotu-Windows-mini | < 8M | 不支持调试 |

## 功能特征

- 包含百度脑图的基本功能
- 本地km文件的操作
- 支持拖拽打开km文件
- 支持关联打开km文件
- 支持自动保存功能
- [提供 **百度脑图** 文件的下载方式](Help.md)
- [提供 **ProcessOn** 思维导图的下载方式](Help.md)
- [查看历史版本](History.md)

## 软件截图

- Windows 截图



- Mac OS X 截图



- Linux 截图



## 联系我们

问题和建议反馈：

- [Github issues](https://github.com/NaoTu/DesktopNaotu/issues)
- [加入讨论组](https://gitter.im/DesktopNaotu/DesktopNaotu)
- QQ群：330722928

## 捐赠项目

感谢您的慷慨捐赠。



## License

Code released under the [GPL-2.0 License](LICENSE).

---

--- METRICS ---
- Files Extracted: 7
- Estimated Token Budget: ~5539 tokens
- Canonical Reference: https://codewiki.google/github.com/NaoTu/DesktopNaotu
