91 lines
2.9 KiB
Markdown
91 lines
2.9 KiB
Markdown
# noobie
|
|
|
|
This is a widget-maker tool - it creates a widget based on a JSON definition returned by a script.
|
|
For example, if your script returns following JSON:
|
|
|
|
```json
|
|
{
|
|
"widget": {
|
|
"icon": "smile",
|
|
"text": "noobie",
|
|
"mouse_actions": {
|
|
"on_right_click": "echo 'right click'"
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
noobie will convert it to the widget:
|
|
|
|
![screenshot](./screenshots/screenshot.png).
|
|
|
|
More complex example (from a [people-in-space](https://github.com/streetturtle/noobie-plugins/tree/master/people-in-space) plugin) with a menu, each menu item has an icon, title and subtitle:
|
|
|
|
![screenshot](./screenshots/screenshot3.png).
|
|
|
|
For more examples check out plugins repository: [noobie-plugins](https://github.com/streetturtle/noobie-plugins)
|
|
|
|
## Features:
|
|
|
|
- dropdown menu:
|
|
|
|
![menu](./screenshots/screenshot2.png)
|
|
|
|
- mouse actions (scroll up/down, right click);
|
|
- icon could be either a local file, a [feathericons](https://feathericons.com/) icon or an image from URL;
|
|
- a notification with details in case your script failed:
|
|
|
|
![error notification](./screenshots/screenshot-errors.png)
|
|
|
|
## Plugins
|
|
|
|
Check out existing plugins in this repo: https://github.com/streetturtle/noobie-plugins.
|
|
|
|
## Creating a plugin
|
|
|
|
Please consult a **noobie.schema.json** for details. Below are few important excerpts:
|
|
|
|
- `icon` of the widget or menu item can be one of
|
|
- a name of feathericons icon, you can get it here: [feathericons.com](https://feathericons.com/);
|
|
- an absolute path to the image file;
|
|
- URL to the image file. If you are not sure image exists, you can add a `icon_fallback` field with an absolute path to the fallback image;
|
|
- for a horizontal line in the menu add an item with title equals to '-', like
|
|
```json
|
|
{ "title": "-" }
|
|
```
|
|
- for a header menu item set `header` field to true, note that the `icon` field will be ignored:
|
|
```json
|
|
{
|
|
"header": "true",
|
|
"title": "Header Title"
|
|
}
|
|
```
|
|
|
|
## Installation
|
|
|
|
1. Clone the repo under ~/.config/awesome/ folder
|
|
1. At the top of rc.lua add an import:
|
|
|
|
```lua
|
|
local noobie_exmaple_1 = require("noobie")
|
|
local noobie_exmaple_2 = require("noobie")
|
|
```
|
|
1. Add a widget to wibox and provide a path to your script:
|
|
|
|
```lua
|
|
noobie_exmaple_1{ path = os.getenv("HOME") .. '/.config/awesome/noobie/test.sh' },
|
|
noobie_exmaple_2{ path = os.getenv("HOME") .. '/.config/awesome/noobie/othertest.py' },
|
|
```
|
|
If your widget is static you can define it in a JSON file and use like this:
|
|
|
|
```lua
|
|
noobie_exmaple_1{ path = 'cat ' .. os.getenv("HOME") .. '/.config/awesome/noobie/test.json' },
|
|
```
|
|
|
|
# Troubleshooting
|
|
|
|
In case of any problem / issue / question:
|
|
- create an [issue](https://github.com/streetturtle/noobie/issues/new/choose)
|
|
- raise a question on [Discussions](https://github.com/streetturtle/noobie/discussions)!
|
|
- ping me on AwesomeWM's discord, here's an [invite](https://discord.gg/XYvn8R5)
|