[<- widgets](https://github.com/copycat-killer/lain/wiki/Widgets)
-Shows mail status in a textbox over IMAP protocol.
+Shows mail count in a textbox fetching over IMAP.
-Dependencies:
-
-- python3
-
-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 [...] |
- | |
- +---------------------------------------------------+
+ myimapcheck = lain.widgets.imap(args)
-Text will be cut if the mail is too long.
+New mails are notified like this:
- myimapcheck = lain.widgets.imap(args)
+ +--------------------------------------------+
+ | +---+ |
+ | |\ /| donald@disney.org has 3 new messages |
+ | +---+ |
+ +--------------------------------------------+
The function takes a table as argument. Required table parameters are:
-Variable | Type
---- | ---
-`server` | string
-`mail` | string
-`password` | string
+Variable | Meaning | Type
+--- | --- | ---
+`server` | Mail server | string
+`mail` | User mail | string
+`password` | User 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
+`timeout` | Refresh timeout seconds | int | 60
`is_plain` | Define whether `password` is a plain password (true) or a function that retrieves it (false) | boolean | false
+`settings` | User settings | function
Let's focus better on `is_plain`.
-You can just set your password like this:
+The reason why it's false by default is to discourage the habit of storing passwords in plain files.
- args.is_plain = false
- args.password = "mypassword"
+You can set your password in plain like this:
+
+ myimapcheck = lain.widgets.imap({
+ is_plain = true,
+ password = "myplainpassword",
+ [...]
+ })
and you'll have the same security provided by `~/.netrc`.
**Or** you can use a keyring, like [python keyring](https://pypi.python.org/pypi/keyring):
- args.password = "keyring get password"
+ myimapcheck = lain.widgets.imap({
+ password = "keyring get mymail",
+ [...]
+ })
When `is_plain == false`, it *executes* `password` before using it, so you can also use whatever password fetching solution you want.
-You can also define your custom icon for the naughty notification. Just set `lain_mail_notify` into `theme.lua`:
+`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](http://awesome.naquadah.org/doc/api/modules/naughty.html#notify) for the list of variables it can contain.
+
+Default definition:
+
+ mail_notification _preset = {
+ icon = lain/icons/mail.png,
+ position = "top_left"
+ }
+
+Note that `mailcount` is 0 either if there are no new mails or credentials are invalid, so make sure you get the right settings.
+
+### output
- theme.lain_mail_notify = "/path/to/my/icon"
\ No newline at end of file
+A textbox.
\ No newline at end of file