1
0
mirror of https://github.com/rhysd/Mstdn.git synced 2025-01-21 20:52:11 +01:00

describe chromium_sandbox, key shortcut plugin and user.css

This commit is contained in:
rhysd 2017-04-20 12:06:46 +09:00
parent ae833be107
commit 26911d441a

View File

@ -11,8 +11,9 @@ Features:
- [x] Small window on your menubar (or isolated normal window) - [x] Small window on your menubar (or isolated normal window)
- [x] Desktop notification - [x] Desktop notification
- [x] Customizable shortcut keybinds - [x] Customizable (and pluggable) shortcut keybinds
- [x] Multi-account (switching among accounts) - [x] Multi-account (switching among accounts)
- [x] User CSS
Mastodon is an open source project. So if you want to make a new UI, you can just fork the project, Mastodon is an open source project. So if you want to make a new UI, you can just fork the project,
implement your favorite UI and host it on your place. Then you can participate Mastodon networks from it. implement your favorite UI and host it on your place. Then you can participate Mastodon networks from it.
@ -79,7 +80,8 @@ When this value is set to `true`, the window won't be hidden if it loses a focus
When this value is set to `true`, application will be launched as a normal window application. When this value is set to `true`, application will be launched as a normal window application.
If menu bar behavior does not work for you, please use set this value to `true` to avoid it. If menu bar behavior does not work for you, please use set this value to `true` to avoid it.
Default value is `false` on macOS or Linux, `true` on Windows because window position is broken in some version of Windows. Default value is `false` on macOS or Linux, `true` on Windows because window position is broken
in some version of Windows.
### `hide_menu` ### `hide_menu`
@ -102,6 +104,16 @@ Array of your accounts. An element should has `"name"`, `"host"` and `"default_p
You need to write up this config at first. You need to write up this config at first.
### `chromium_sandbox`
If `true` is specified, Chromium's native sandbox is enabled (and default value is `true`).
Sandbox provides some OS level security protection such as resource access control like tabs
in Chromium. However, sandbox also blocks preload scripts for Electron application.
If `false` is specified, you can use some advanced features (user CSS and key shortcut plugin).
Before setting `false` to this value, please read and understand [sandbox documentation in Electron repo][sandbox doc]
to know what you're doing.
### `keymaps` ### `keymaps`
Object whose key is a key sequence and whose value is an action name. Object whose key is a key sequence and whose value is an action name.
@ -119,6 +131,9 @@ If an action name starts with `/`, it will navigate to the path. For example,
if you set `"/web/timelines/home"` to some key shortcut and you input the key, if you set `"/web/timelines/home"` to some key shortcut and you input the key,
browser will navigate page to `https://{your host}/web/timelines/home`. browser will navigate page to `https://{your host}/web/timelines/home`.
If an action name ends with `.js`, it will run key shortcut plugin (please see below
'Key Shortcut Plugin' section).
By default, some key shortcuts for tab items are set in addition to above table. By default, some key shortcuts for tab items are set in addition to above table.
<details> <details>
@ -130,6 +145,7 @@ By default, some key shortcuts for tab items are set in addition to above table.
"always_on_top": false, "always_on_top": false,
"normal_window": false, "normal_window": false,
"zoom_factor": 0.9, "zoom_factor": 0.9,
"chromium_sandbox": true,
"accounts": [ "accounts": [
{ {
"name": "Linda_pp", "name": "Linda_pp",
@ -168,14 +184,67 @@ By default, some key shortcuts for tab items are set in addition to above table.
## Multi account ## Multi account
If you set multiple accounts to `accounts` array in `config.json`, `Accounts` menu item will appear in application menu. If you set multiple accounts to `accounts` array in `config.json`, `Accounts` menu item will appear
in application menu.
![multi account menu item](https://github.com/rhysd/ss/blob/master/Mstdn/multi-account.png?raw=true) ![multi account menu item](https://github.com/rhysd/ss/blob/master/Mstdn/multi-account.png?raw=true)
It will show the list of your account. Check mark is added for current user. It will show the list of your account. Check mark is added for current user.
When you click menu item of non-current user, application window will be recreated and switch page to the account. When you click menu item of non-current user, application window will be recreated and switch page
to the account.
## Key Shortcut Plugin
By specifying JavaScript file to action name in `keymaps` of `config.json`, you can write your
favorite behavior with JavaScript directly. Please note that `"chromium_sandbox" : true`
is also required (if you don't know what happens with `"chromium_sandbox" : true`, please read
above config section).
```json
{
...
"chromium_sandbox": false,
...
"keymaps": {
"r": "hello.js"
}
}
```
The script file path is a relative path from your `Mstdn` application directory. For example,
Specifying `hello.js` will run `/Users/You/Application Support/Mstdn/hello.js` on Mac.
The plugin script MUST export one function. Function receives configuration object and current
account object as its parameters. So above `hello.js` would look like:
```js
module.exports = function (config, account) {
alert('Hello, ' + account.name);
}
```
With above example config, typing `r` will show 'Hello, {your name}' alert dialog. You can use any
DOM APIs, Node.js's standard libraries and Electron APIs in plugin script.
## User CSS
When `user.css` is put in your `Mstdn` application directory, it will be loaded automatically.
To enable this feature, `"chromium_sandbox" : true` is also required (if you don't know what happens
with `"chromium_sandbox" : true`, please read above config section).
For example, below `/Users/You/Application Support/Mstdn/user.css` will change font color to red on Mac.
```css
body {
color: red !important;
}
```
[Mastodon]: https://github.com/tootsuite/mastodon [Mastodon]: https://github.com/tootsuite/mastodon
[npm]: https://www.npmjs.com/package/mstdn [npm]: https://www.npmjs.com/package/mstdn
[Release page]: https://github.com/rhysd/Mstdn/releases [Release page]: https://github.com/rhysd/Mstdn/releases
[Electron]: electron.atom.io [Electron]: electron.atom.io
[sandbox doc]: https://github.com/electron/electron/blob/master/docs/api/sandbox-option.md