/awmodoro

Pomodoro for Awesome WM

Primary LanguageLua

#Awmodoro ###Clutter-free Pomodoro sessions in Awesome WM The basic idea is to at start (with for instance a keybinding)

  • hide clutter (widgets/wibox)
  • show a very out-of-our-way and subtle indication of elapsed and left time

and at stop

  • bring back user to the real world

Awmodoro is in itself a very simple timer (with a progress bar ui) specifically made with regards to the "Pomodoro Technique". It can be used as a regular widget, however - awmodoro provides the user with hooks allowing lua-code to be executed at start and end of each session. This allows for setup and teardown of distraction free environments.

##Usage cd ~/.config/awesome git clone git://github.com/optama/awmodoro.git

Example configuration, in rc.lua:

local awmodoro = require("awmodoro")

--pomodoro wibox
pomowibox = awful.wibox({ position = "top", screen = 1, height=4})
pomowibox.visible = false
local pomodoro = awmodoro.new({
	minutes 			= 25,
	do_notify 			= true,
	active_bg_color 	= '#313131',
	paused_bg_color 	= '#7746D7',
	fg_color			= {type = "linear", from = {0,0}, to = {pomowibox.width, 0}, stops = {{0, "#AECF96"},{0.5, "#88A175"},{1, "#FF5656"}}},
	width 				= pomowibox.width,
	height 				= pomowibox.height, 

	begin_callback = function()
		for s = 1, screen.count() do
			mywibox[s].visible = false
		end
		pomowibox.visible = true
	end,

	finish_callback = function()
		for s = 1, screen.count() do
			mywibox[s].visible = true
		end
		pomowibox.visible = false
	end})
pomowibox:set_widget(pomodoro)

In globalkeys:

awful.key({	modkey			}, "p", function () pomodoro:toggle() end),
awful.key({	modkey, "Shift"	}, "p", function () pomodoro:finish() end),

This creates a separate minimal and initially hidden wibox containing only the awmodoro widget. We set callbacks to hide other wiboxes at start and to show them again when finished. We add a keyboard shortcut to start a session and yes one to also end one ;-)

Default mouse bindings are

  • Button 1 Toggle pause/resume
  • Button 2 (mid) End session
  • Button 3 Reset timer

These can be overriden by adding and changing

pomodoro:buttons(awful.util.table.join(
	awful.button({ }, 1, function() pomodoro:toggle() end),
	awful.button({ }, 2, function() pomodoro:finish() end),
	awful.button({ }, 3, function() pomodoro:reset() end)
))

##Widget parameters minutes Minutes defining duration of a session active_bg_color Background color of progress bar when timer is running paused_bg_color Background color of progress bar when timer is paused fg_color Foreground color(s) of progress bar do_notify Boolean value specifying wether notifications (using naughty) should be shown. Notifications shown are; begin, pause, resume, finish and reset width Width of widget height Height of widget

Colors are provided according to format specified by http://awesome.naquadah.org/doc/api/modules/gears.color.html

###Note If you prefer indivisible sessions (no ability to pause) then instead of pomodoro:toggle() use pomodoro:begin() and override mouse button 1 to something else but toggle/pause.