2013-09-07 12:24:05 +02:00
|
|
|
Check new mails over IMAP protocol.
|
|
|
|
|
|
|
|
Dependencies:
|
|
|
|
|
2013-09-07 13:10:14 +02:00
|
|
|
- python3
|
2013-09-07 12:24:05 +02:00
|
|
|
|
|
|
|
New mails are notified through a notification like this:
|
|
|
|
|
|
|
|
+---------------------------------------------------+
|
|
|
|
| +---+ |
|
|
|
|
| |\ /| donald@disney.org has 3 new messages |
|
|
|
|
| +---+ |
|
|
|
|
| Latest From: Mickey Mouse <boss@disney.org> |
|
|
|
|
| Subject: Re: pay raise |
|
|
|
|
| |
|
|
|
|
| Not after what you did yesterday. |
|
|
|
|
| Daisy told me everything [...] |
|
|
|
|
| |
|
|
|
|
+---------------------------------------------------+
|
|
|
|
|
|
|
|
Text will be cut if the mail is too long.
|
|
|
|
|
|
|
|
myimapcheck = lain.widgets.imap(args)
|
|
|
|
|
|
|
|
The function takes a table as argument. Required table parameters are:
|
|
|
|
|
|
|
|
Variable | Type
|
|
|
|
--- | ---
|
|
|
|
`server` | string
|
|
|
|
`mail` | string
|
|
|
|
`password` | string
|
|
|
|
|
|
|
|
while the optional are:
|
|
|
|
|
|
|
|
Variable | Meaning | Type | Default
|
|
|
|
--- | --- | --- | ---
|
|
|
|
`port` | IMAP port | int | 993
|
|
|
|
`refresh_timeout` | Refresh timeout seconds | int | 60
|
|
|
|
`header` | Text to show before value | string | " Mail "
|
|
|
|
`header_color` | Header color | string | `beautiful.fg_normal` or "#FFFFFF"
|
|
|
|
`color_newmail` | New mail value color | string | `beautiful.fg_focus` or "#FFFFFF"
|
|
|
|
`color_nomail` | No mail value color | string | `beautiful.fg_normal` or "#FFFFFF"
|
|
|
|
`mail_encoding` | Mail character encoding | string | autodetected
|
|
|
|
`maxlen` | Maximum chars to display in notification | int | 200
|
|
|
|
`app` | Mail program to spawn on click | string | "mutt"
|
|
|
|
`shadow` | Hide widget when there are no mails | boolean | false
|
|
|
|
`is_plain` | Define whether `password` is a plain password (true) or a function that retrieves it (false) | boolean | false
|
|
|
|
|
|
|
|
Let's focus better on `is_plain`.
|
|
|
|
|
|
|
|
You can just set your password like this:
|
|
|
|
|
|
|
|
args.is_plain = false
|
|
|
|
args.password = "mypassword"
|
|
|
|
|
2013-09-07 12:25:06 +02:00
|
|
|
and you'll have the same security provided by `~/.netrc`.
|
2013-09-07 12:24:05 +02:00
|
|
|
|
|
|
|
**Or** you can use a keyring, like [python keyring](https://pypi.python.org/pypi/keyring):
|
|
|
|
|
|
|
|
args.password = "keyring get password"
|
|
|
|
|
|
|
|
When `is_plain == false`, it *executes* `password` before using it, so you can also use whatever password fetching solution you want.
|
|
|
|
|
2013-09-07 12:26:19 +02:00
|
|
|
You can also define your custom icon for the naughty notification. Just set `lain_mail_notify` into `theme.lua`:
|
|
|
|
|
|
|
|
theme.lain_mail_notify = "/path/to/my/icon"
|