Skip to content
Luca CPZ edited this page Dec 3, 2020 · 16 revisions

Usage

Read here.

Description

Creates a calendar notification that can be attached to widgets.

This is a simpler but faster alternative to awful.widget.calendar_popup, which emulates UNIX's cal.

local mycal = lain.widget.cal()

Input table

Variable Meaning Type Default
attach_to List of widgets table empty table
week_start First day of the week integer 2 (Monday)
three Display three months spanning the date boolean false
followtag Display the notification on currently focused screen boolean false
week_number Display the week number string ("none", "left" or "right") "none"
week_number_format Week number format string "%3d | " for "left", "| %-3d" for "right"
icons Path to calendar icons string icons/cal/white/
notification_preset Notification preset table See default notification_preset

Set attach_to as the list of widgets to which you want to attach the calendar, like this:

local mycal = lain.widget.cal {
    attach_to = { mywidget1, mywidget2, ...  },
    -- [...]
}

For every widget in attach_to:

  • Left click / scroll down: switch to previous month.
  • Middle click show current month.
  • Right click / scroll up: switch to next month.

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.

Default notification_preset

notification_preset = {
    font = "Monospace 10",
    fg   = "#FFFFFF",
    bg   = "#000000"
}

Output table

Variable Meaning Type
attach Attach the calendar to an input widget function
show Show calendar function
hide Hide calendar function

attach takes as argument any widget you want to attach the calendar to, while show takes as optional argument an integer to indicate the seconds to timeout.

Keybinding

awful.key({ altkey }, "c", function () mycal.show(7) end)

Where altkey = "Mod1".

Notes

  • Naughty notifications require notification_preset.font to be monospaced, in order to correctly display the output.
  • If you want to disable notification icon, set icons = "" in the input table.
  • If you want to localise the calendar, put os.setlocale(os.getenv("LANG")) in your rc.lua.
  • If you want to get notifications only with mouse clicks on a given widget, use this code:
    yourwidget:disconnect_signal("mouse::enter", mycal.hover_on)