@@ -2,14 +2,14 @@
|
|||||||
Mainsail is a lightweight & responsive web interface for the [Klipper](https://github.com/KevinOConnor/klipper)
|
Mainsail is a lightweight & responsive web interface for the [Klipper](https://github.com/KevinOConnor/klipper)
|
||||||
3D printer firmware. It communicates with the [Moonraker (Klipper-API)](https://github.com/arksine/moonraker) from [Arksine](https://github.com/arksine).
|
3D printer firmware. It communicates with the [Moonraker (Klipper-API)](https://github.com/arksine/moonraker) from [Arksine](https://github.com/arksine).
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
To begin using Mainsail start by [installing](https://github.com/meteyou/mainsail/wiki/Installation) it or read the [Wiki Pages](https://github.com/meteyou/mainsail/wiki) for more informations.
|
To begin using Mainsail start by [installing](https://github.com/meteyou/mainsail/wiki/Installation) it or read the [Wiki Pages](https://github.com/meteyou/mainsail/wiki) for more informations.
|
||||||
|
|
||||||
## Credit, sources and inspiration
|
## Credit, sources and inspiration
|
||||||
* [Kevin O'Connor](https://github.com/KevinOConnor) for the awesome 3D printer firmware [Klipper](https://github.com/KevinOConnor/klipper)
|
* [Kevin O'Connor](https://github.com/KevinOConnor) for the awesome 3D printer firmware [Klipper](https://github.com/KevinOConnor/klipper)
|
||||||
* [Eric Callahan (arksine)](https://github.com/Arksine) for [Moonraker (Klipper API)](https://github.com/Arksine/moonraker). Without Moonraker, Mainsail would not be possible.
|
* [Eric Callahan (arksine)](https://github.com/Arksine) for [Moonraker (Klipper API)](https://github.com/Arksine/moonraker). Without Moonraker, Mainsail would not be possible.
|
||||||
* [lixxbox](https://github.com/lixxbox) for the Mainsail logo
|
* [lixxbox](https://github.com/lixxbox) for the Mainsail logo & Docs
|
||||||
* [Vue.js](https://vuejs.org/): The Progressive JavaScript Framework
|
* [Vue.js](https://vuejs.org/): The Progressive JavaScript Framework
|
||||||
* [Vuetify](https://vuetifyjs.com/): Material Design Component Framework for Vue.js
|
* [Vuetify](https://vuetifyjs.com/): Material Design Component Framework for Vue.js
|
||||||
|
|
||||||
|
1
docs/README.md
Normal file
1
docs/README.md
Normal file
@@ -0,0 +1 @@
|
|||||||
|
Welcome to the Mainsail documentation. The [index](http://meteyou.github.io/mainsail) of the docs is here.
|
Binary file not shown.
Before Width: | Height: | Size: 72 KiB After Width: | Height: | Size: 382 KiB |
@@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
layout: default
|
layout: default
|
||||||
title: Necessary Configuration
|
title: Necessary Configuration
|
||||||
nav_order: 3
|
nav_order: 4
|
||||||
has_children: false
|
has_children: false
|
||||||
permalink: /necessary-configuration
|
permalink: /necessary-configuration
|
||||||
---
|
---
|
||||||
|
@@ -173,7 +173,7 @@ Now you can download the current mainsail static data
|
|||||||
|
|
||||||
```
|
```
|
||||||
cd ~/mainsail
|
cd ~/mainsail
|
||||||
wget -q -O mainsail.zip https://github.com/meteyou/mainsail/releases/download/v0.2.6/mainsail-beta-0.2.6.zip && unzip mainsail.zip && rm mainsail.zip
|
wget -q -O mainsail.zip https://github.com/meteyou/mainsail/releases/download/latest/mainsail.zip && unzip mainsail.zip && rm mainsail.zip
|
||||||
```
|
```
|
||||||
|
|
||||||
Now it should be possible to open the interface: `http://<printer-ip>/`.
|
Now it should be possible to open the interface: `http://<printer-ip>/`.
|
||||||
|
59
docs/update-guide/index.md
Normal file
59
docs/update-guide/index.md
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
---
|
||||||
|
layout: default
|
||||||
|
title: Update Guide
|
||||||
|
nav_order: 3
|
||||||
|
has_children: true
|
||||||
|
permalink: /update/
|
||||||
|
---
|
||||||
|
|
||||||
|
## Update Klipper
|
||||||
|
```
|
||||||
|
cd ~/klipper
|
||||||
|
git fetch
|
||||||
|
git checkout origin/master
|
||||||
|
```
|
||||||
|
|
||||||
|
Please check the location of the `~/klipper_config/printer.cfg` and the UDS (`-a /tmp/klippy_uds`) in the `/etc/default/klipper` file. This
|
||||||
|
should look like:
|
||||||
|
```
|
||||||
|
KLIPPY_ARGS="/home/pi/klipper/klippy/klippy.py /home/pi/klipper_config/printer.cfg -l /tmp/klippy.log -a /tmp/klippy_uds"
|
||||||
|
```
|
||||||
|
If you have to change the location of `printer.cfg` in `/etc/default/klipper`
|
||||||
|
please create the directory `~/klipper_config` and move your config files in this directory.
|
||||||
|
|
||||||
|
Restart Klipper (`sudo service klipper restart`) and check the `klippy.log`, if Klipper starts
|
||||||
|
correctly and then continue the guide.
|
||||||
|
|
||||||
|
## Update Moonraker (API)
|
||||||
|
```
|
||||||
|
cd ~/moonraker
|
||||||
|
git fetch
|
||||||
|
git checkout origin/master
|
||||||
|
```
|
||||||
|
|
||||||
|
Restart Moonraker (`sudo service moonraker restart`) and open the url `http://<printer-ip>:7125/printer/info` in your browser.
|
||||||
|
|
||||||
|
If you see a content like this
|
||||||
|
```
|
||||||
|
{"result": {"hostname": "voron250", "error_detected": false, "version": "v0.8.0-643-g528f9f25", "is_ready": true, "message": "Printer is ready", "cpu": "4 core ARMv7 Processor rev 4 (v7l)"}}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Update moonraker dependence
|
||||||
|
This is only nessasary, if your moonraker version is older than 31. october 2020.
|
||||||
|
```
|
||||||
|
~/moonraker/scripts/install-moonraker.sh -r
|
||||||
|
```
|
||||||
|
|
||||||
|
## Update Mainsail (webinterface)
|
||||||
|
```
|
||||||
|
cd ~/mainsail
|
||||||
|
rm -R ./*
|
||||||
|
wget -q -O mainsail.zip https://github.com/meteyou/mainsail/releases/download/v0.2.6/mainsail-beta-0.2.6.zip && unzip mainsail.zip && rm mainsail.zip
|
||||||
|
```
|
||||||
|
### Move gui.json from gcodes to klipper_config
|
||||||
|
This is only necessary if you update from 0.2.2 to 0.2.3 or higher. If you use MainsailOS, the virtual_sdcard directory is `gcode_files` instead of `sdcard`.
|
||||||
|
```
|
||||||
|
mv ~/sdcard/gui.json ~/klipper_config/
|
||||||
|
```
|
||||||
|
|
||||||
|
Now it should be possible to open the interface: `http://<printer-ip>/`.
|
24
docs/update-guide/klipper.md
Normal file
24
docs/update-guide/klipper.md
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
---
|
||||||
|
layout: default
|
||||||
|
title: Klipper
|
||||||
|
parent: Update Guide
|
||||||
|
nav_order: 2
|
||||||
|
permalink: /update/klipper
|
||||||
|
---
|
||||||
|
|
||||||
|
## Klipper
|
||||||
|
### Update from Repository
|
||||||
|
```bash
|
||||||
|
cd ~/klipper
|
||||||
|
git fetch
|
||||||
|
git checkout origin/master
|
||||||
|
```
|
||||||
|
|
||||||
|
Restart Klipper (`sudo service klipper restart`) and check the `klippy.log`, if Klipper starts
|
||||||
|
correctly and then continue the guide.
|
||||||
|
|
||||||
|
### Klipper config changes
|
||||||
|
If you have issues after update your Klipper instance, you can check config changes [here](https://github.com/KevinOConnor/klipper/blob/master/docs/Config_Changes.md).
|
||||||
|
|
||||||
|
---
|
||||||
|
[< table of contents](index.md){: .btn } [next step >](moonraker.md){: .btn}
|
25
docs/update-guide/mainsail.md
Normal file
25
docs/update-guide/mainsail.md
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
---
|
||||||
|
layout: default
|
||||||
|
title: Mainsail
|
||||||
|
parent: Update Guide
|
||||||
|
nav_order: 4
|
||||||
|
permalink: /update/mainsail
|
||||||
|
---
|
||||||
|
|
||||||
|
## Mainsail
|
||||||
|
```bash
|
||||||
|
cd ~/mainsail
|
||||||
|
rm -R ./*
|
||||||
|
wget -q -O mainsail.zip https://github.com/meteyou/mainsail/releases/download/latest/mainsail.zip && unzip mainsail.zip && rm mainsail.zip
|
||||||
|
```
|
||||||
|
|
||||||
|
### Move gui.json from gcodes to klipper_config
|
||||||
|
This is only necessary if you update from 0.2.2 to 0.2.3 or higher. If you use MainsailOS, the virtual_sdcard directory is `gcode_files` instead of `sdcard`.
|
||||||
|
```
|
||||||
|
mv ~/sdcard/gui.json ~/klipper_config/
|
||||||
|
```
|
||||||
|
|
||||||
|
Now it should be possible to open the interface: `http://<printer-ip>/`.
|
||||||
|
|
||||||
|
---
|
||||||
|
[< previous step](moonraker.md){: .btn }
|
33
docs/update-guide/moonraker.md
Normal file
33
docs/update-guide/moonraker.md
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
---
|
||||||
|
layout: default
|
||||||
|
title: Moonraker
|
||||||
|
parent: Update Guide
|
||||||
|
nav_order: 3
|
||||||
|
permalink: /update/moonraker
|
||||||
|
---
|
||||||
|
|
||||||
|
## Moonraker
|
||||||
|
```bash
|
||||||
|
cd ~/moonraker
|
||||||
|
git fetch
|
||||||
|
git checkout origin/master
|
||||||
|
```
|
||||||
|
|
||||||
|
Restart Moonraker (`sudo service moonraker restart`) and open the url `http://<printer-ip>:7125/printer/info` in your browser.
|
||||||
|
|
||||||
|
If you see a content like this
|
||||||
|
```
|
||||||
|
{"result": {"hostname": "voron250", "error_detected": false, "version": "v0.8.0-643-g528f9f25", "is_ready": true, "message": "Printer is ready", "cpu": "4 core ARMv7 Processor rev 4 (v7l)"}}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Update Moonraker dependence
|
||||||
|
This is only nessasary, if your Moonraker version is older than 31. october 2020.
|
||||||
|
```bash
|
||||||
|
~/moonraker/scripts/install-moonraker.sh -r
|
||||||
|
```
|
||||||
|
|
||||||
|
### Moonraker config changes
|
||||||
|
If you have issues after update your Moonraker instance, you can check config changes [here](https://github.com/Arksine/moonraker/blob/master/docs/user_changes.md).
|
||||||
|
|
||||||
|
---
|
||||||
|
[< previous step](klipper.md){: .btn } [next step >](mainsail.md){: .btn }
|
@@ -22,7 +22,7 @@
|
|||||||
<v-card-text class="px-0 py-2 content">
|
<v-card-text class="px-0 py-2 content">
|
||||||
<v-row align="center">
|
<v-row align="center">
|
||||||
<v-col class="py-0 font-weight-bold" style="padding-left: 68px;">Name</v-col>
|
<v-col class="py-0 font-weight-bold" style="padding-left: 68px;">Name</v-col>
|
||||||
<v-col class="py-0 text-center font-weight-bold">Status</v-col>
|
<v-col class="py-0 text-center font-weight-bold d-none d-sm-block">Status</v-col>
|
||||||
<v-col class="py-0 text-center font-weight-bold">Current</v-col>
|
<v-col class="py-0 text-center font-weight-bold">Current</v-col>
|
||||||
<v-col class="text-center py-0 pr-8 font-weight-bold">Target</v-col>
|
<v-col class="text-center py-0 pr-8 font-weight-bold">Target</v-col>
|
||||||
</v-row>
|
</v-row>
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
<v-icon :color="heater.color">mdi-{{ heater.icon }}</v-icon>
|
<v-icon :color="heater.color">mdi-{{ heater.icon }}</v-icon>
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col class="py-0 font-weight-bold">{{ heater.name }}</v-col>
|
<v-col class="py-0 font-weight-bold">{{ heater.name }}</v-col>
|
||||||
<v-col class="py-0 text-center"><small>{{ heater.target > 0 ? "active" : "off" }}</small></v-col>
|
<v-col class="py-0 text-center d-none d-sm-block"><small>{{ heater.target > 0 ? "active" : "off" }}</small></v-col>
|
||||||
<v-col class="py-0 text-center">{{ heater.temperature ? heater.temperature.toFixed(1) : 0 }}°C</v-col>
|
<v-col class="py-0 text-center">{{ heater.temperature ? heater.temperature.toFixed(1) : 0 }}°C</v-col>
|
||||||
<v-col class="text-center py-0 pr-8 pr-0 vertical_align_center">
|
<v-col class="text-center py-0 pr-8 pr-0 vertical_align_center">
|
||||||
<toolInput :name="heater.name" :target="heater.target" :min_temp="heater.min_temp" :max_temp="heater.max_temp" command="SET_HEATER_TEMPERATURE" attribute-name="HEATER" ></toolInput>
|
<toolInput :name="heater.name" :target="heater.target" :min_temp="heater.min_temp" :max_temp="heater.max_temp" command="SET_HEATER_TEMPERATURE" attribute-name="HEATER" ></toolInput>
|
||||||
@@ -47,7 +47,7 @@
|
|||||||
<v-icon :color="(fan.target ? 'grey lighten-5' : 'grey darken-2')" :class="(fan.speed ? ' icon-rotate' : '')">mdi-fan</v-icon>
|
<v-icon :color="(fan.target ? 'grey lighten-5' : 'grey darken-2')" :class="(fan.speed ? ' icon-rotate' : '')">mdi-fan</v-icon>
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col class="py-0 font-weight-bold">{{ fan.name }}</v-col>
|
<v-col class="py-0 font-weight-bold">{{ fan.name }}</v-col>
|
||||||
<v-col class="py-0 text-center"><small>{{ fan.target > 0 && fan.speed > 0 ? (fan.speed * 100).toFixed(0)+"%" : (fan.target > 0 ? "standby" : "off") }}</small></v-col>
|
<v-col class="py-0 text-center d-none d-sm-block"><small>{{ fan.target > 0 && fan.speed > 0 ? (fan.speed * 100).toFixed(0)+"%" : (fan.target > 0 ? "standby" : "off") }}</small></v-col>
|
||||||
<v-col class="py-0 text-center">{{ fan.temperature ? fan.temperature.toFixed(1) : 0}}°C</v-col>
|
<v-col class="py-0 text-center">{{ fan.temperature ? fan.temperature.toFixed(1) : 0}}°C</v-col>
|
||||||
<v-col class="text-center py-0 pr-8 pr-0 vertical_align_center">
|
<v-col class="text-center py-0 pr-8 pr-0 vertical_align_center">
|
||||||
<toolInput :name="fan.name" :target="fan.target" command="SET_TEMPERATURE_FAN_TARGET" attribute-name="temperature_fan" ></toolInput>
|
<toolInput :name="fan.name" :target="fan.target" command="SET_TEMPERATURE_FAN_TARGET" attribute-name="temperature_fan" ></toolInput>
|
||||||
@@ -61,7 +61,7 @@
|
|||||||
<v-icon color="grey darken-2" :title="'min: '+sensor.min_temp+'° / max: '+sensor.max_temp+'°'">{{ sensor.icon }}</v-icon>
|
<v-icon color="grey darken-2" :title="'min: '+sensor.min_temp+'° / max: '+sensor.max_temp+'°'">{{ sensor.icon }}</v-icon>
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col class="py-0 font-weight-bold">{{ sensor.name }}</v-col>
|
<v-col class="py-0 font-weight-bold">{{ sensor.name }}</v-col>
|
||||||
<v-col class="py-0"><span> </span></v-col>
|
<v-col class="py-0 d-none d-sm-block"><span> </span></v-col>
|
||||||
<v-col class="py-0 text-center">
|
<v-col class="py-0 text-center">
|
||||||
<span style="cursor: default;" :title="'min: '+(sensor.measured_min_temp ? sensor.measured_min_temp.toFixed(1) : 0)+'° / max: '+(sensor.measured_max_temp ? sensor.measured_max_temp.toFixed(1) : 0)+'°'">{{ sensor.temperature ? sensor.temperature.toFixed(1) : 0 }}°C</span>
|
<span style="cursor: default;" :title="'min: '+(sensor.measured_min_temp ? sensor.measured_min_temp.toFixed(1) : 0)+'° / max: '+(sensor.measured_max_temp ? sensor.measured_max_temp.toFixed(1) : 0)+'°'">{{ sensor.temperature ? sensor.temperature.toFixed(1) : 0 }}°C</span>
|
||||||
</v-col>
|
</v-col>
|
||||||
|
@@ -1,5 +1,4 @@
|
|||||||
const webpack = require('webpack')
|
const webpack = require('webpack')
|
||||||
const SWPrecacheWebpackPlugin = require('sw-precache-webpack-plugin')
|
|
||||||
const fs = require('fs')
|
const fs = require('fs')
|
||||||
const packageJson = fs.readFileSync('./package.json')
|
const packageJson = fs.readFileSync('./package.json')
|
||||||
const version = JSON.parse(packageJson).version || 0
|
const version = JSON.parse(packageJson).version || 0
|
||||||
@@ -15,18 +14,10 @@ module.exports = {
|
|||||||
PACKAGE_VERSION: '"' + version + '"'
|
PACKAGE_VERSION: '"' + version + '"'
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
new SWPrecacheWebpackPlugin({
|
|
||||||
cacheId: 'mailsail',
|
|
||||||
filename: 'service-worker-cache.js',
|
|
||||||
staticFileGlobs: ['dist/**/*.{js,css}', '/'],
|
|
||||||
minify: true,
|
|
||||||
stripPrefix: 'dist/',
|
|
||||||
dontCacheBustUrlsMatching: /\.\w{6}\./
|
|
||||||
}),
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
pwa: {
|
pwa: {
|
||||||
serviceWorker:true,
|
serviceWorker:false,
|
||||||
iconPaths: {
|
iconPaths: {
|
||||||
favicon16: 'img/icons/favicon-16x16.png',
|
favicon16: 'img/icons/favicon-16x16.png',
|
||||||
favicon32: 'img/icons/favicon-32x32.png',
|
favicon32: 'img/icons/favicon-32x32.png',
|
||||||
|
Reference in New Issue
Block a user