mirror of
https://gitlab.com/dwt1/dotfiles.git
synced 2026-04-24 12:00:24 +10:00
Awesome configs for Ben.
This commit is contained in:
83
.config/awesome/lain/wiki/imap.md
Executable file → Normal file
83
.config/awesome/lain/wiki/imap.md
Executable file → Normal file
@@ -1,6 +1,6 @@
|
||||
## Usage
|
||||
|
||||
[Read here.](https://github.com/lcpz/lain/wiki/Widgets#usage)
|
||||
[Read here.](https://github.com/copycat-killer/lain/wiki/Widgets#usage)
|
||||
|
||||
### Description
|
||||
|
||||
@@ -32,75 +32,55 @@ while the optional are:
|
||||
|
||||
Variable | Meaning | Type | Default
|
||||
--- | --- | --- | ---
|
||||
`port` | IMAP port | integer | 993
|
||||
`timeout` | Refresh timeout (in seconds) | integer | 60
|
||||
`pwdtimeout` | Timeout for password retrieval function (see [here](https://github.com/lcpz/lain/wiki/imap#password-security)) | integer | 10
|
||||
`port` | IMAP port | number | 993
|
||||
`timeout` | Refresh timeout seconds | number | 60
|
||||
`is_plain` | Define whether `password` is a plain password (true) or a command that retrieves it (false) | boolean | false
|
||||
`followtag` | Notification behaviour | boolean | false
|
||||
`notify` | Show notification popups | string | "on"
|
||||
`settings` | User settings | function | empty function
|
||||
|
||||
`settings` can use `imap_now` table, which contains the following non negative integers:
|
||||
The reason why `is_plain` is false by default is to discourage the habit of storing passwords in plain.
|
||||
|
||||
- `["MESSAGES"]`
|
||||
- `["RECENT"]`
|
||||
- `["UNSEEN"]`
|
||||
So, you can set your password in plain like this:
|
||||
|
||||
example of fetch: `total = imap_now["MESSAGES"]`. For backwards compatibility, `settings` can also use `mailcount`, a pointer to `imap_now["UNSEEN"]`.
|
||||
```lua
|
||||
myimapcheck = lain.widget.imap({
|
||||
is_plain = true,
|
||||
password = "mymailpassword",
|
||||
-- [...]
|
||||
})
|
||||
```
|
||||
|
||||
Also, `settings` can modify `mail_notification_preset` table, which will be the preset for the naughty notifications. Check [here](https://awesomewm.org/apidoc/libraries/naughty.html#notify) for the list of variables it can contain. Default definition:
|
||||
and you'll have the same security provided by `~/.netrc`.
|
||||
|
||||
**Or you can use a password manager**, like [spm](https://notabug.org/kl3/spm) or [pass](https://www.passwordstore.org):
|
||||
|
||||
```lua
|
||||
myimapcheck = lain.widget.imap({
|
||||
password = function()
|
||||
-- return the output of "spm show mymail"
|
||||
end,
|
||||
-- [...]
|
||||
})
|
||||
```
|
||||
|
||||
When `is_plain == false` (default), `password` can be either a string, a table or a function: the widget will execute it asynchronously in the first two cases.
|
||||
|
||||
`settings` can use the value `mailcount`, an integer greater or equal to zero, and can modify `mail_notification_preset` table, which will be the preset for the naughty notifications. Check [here](https://awesomewm.org/apidoc/libraries/naughty.html#notify) for the list of variables it can contain. Default definition:
|
||||
|
||||
```lua
|
||||
mail_notification _preset = {
|
||||
icon = "lain/icons/mail.png",
|
||||
icon = lain/icons/mail.png,
|
||||
position = "top_left"
|
||||
}
|
||||
```
|
||||
|
||||
Note that `mailcount` and `imap_now` elements are equals to 0 either if there are no new mails or credentials are invalid, so make sure that your settings are correct.
|
||||
Note that `mailcount` is 0 either if there are no new mails or credentials are invalid, so make sure you get the right settings.
|
||||
|
||||
With multiple screens, the default behaviour is to show a visual notification pop-up window on the first screen. By setting `followtag` to `true` it will be shown on the currently focused tag screen.
|
||||
In multiple screen setups, the default behaviour is to show a visual notification pop-up window on the first screen. By setting `followtag` to `true` it will be shown on the currently focused tag screen.
|
||||
|
||||
You can have multiple instances of this widget at the same time.
|
||||
|
||||
## Password security
|
||||
|
||||
The reason why `is_plain` is false by default is to discourage the habit of storing passwords in plain.
|
||||
|
||||
In general, when `is_plain == false`, `password` can be either a string, a table or a function: the widget will execute it asynchronously in the first two cases.
|
||||
|
||||
### Using plain passwords
|
||||
|
||||
You can set your password in plain like this:
|
||||
|
||||
```lua
|
||||
myimapcheck = lain.widget.imap {
|
||||
is_plain = true,
|
||||
password = "mymailpassword",
|
||||
-- [...]
|
||||
}
|
||||
```
|
||||
|
||||
and you will have the same security provided by `~/.netrc`.
|
||||
|
||||
### Using a password manager
|
||||
|
||||
I recommend to use [spm](https://notabug.org/kl3/spm) or [pass](https://www.passwordstore.org). In this case, `password` has to be a function. Example stub:
|
||||
|
||||
```lua
|
||||
myimapcheck = lain.widget.imap {
|
||||
password = function()
|
||||
-- do your retrieval
|
||||
return retrieved_password, try_again
|
||||
end,
|
||||
-- [...]
|
||||
}
|
||||
```
|
||||
|
||||
Where `retrieved_password` is the password retrieved from the manager, and `try_again` supports [DBus Secret Service](https://specifications.freedesktop.org/secret-service).
|
||||
|
||||
The process flow is that the first `password()` call spawns the unlock prompt, then the second call retrieves the password. [Here](https://gist.github.com/lcpz/1854fc4320f4701957cd5309c8eed4a6) is an example of `password` function.
|
||||
|
||||
## Output table
|
||||
|
||||
Variable | Meaning | Type
|
||||
@@ -108,7 +88,6 @@ Variable | Meaning | Type
|
||||
`widget` | The widget | `wibox.widget.textbox`
|
||||
`update` | Update `widget` | function
|
||||
`timer` | The widget timer | [`gears.timer`](https://awesomewm.org/doc/api/classes/gears.timer.html)
|
||||
`pwdtimer` | Password retrieval timer (available only if `password` is a function)| [`gears.timer`](https://awesomewm.org/doc/api/classes/gears.timer.html)
|
||||
|
||||
The `update` function can be used to refresh the widget before `timeout` expires.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user