--- /etc/xdg/awesome/rc.lua	2009-09-23 20:22:38.000000000 +0400
+++ rc.lua	2009-12-22 14:22:57.180543540 +0300
@@ -8,12 +8,17 @@
 -- Load Debian menu entries
 require("debian.menu")
 
+home_dir = os.getenv("HOME")
+awe_dir = home_dir .. "/.config/awesome"
+themes_dir = awe_dir .. "/themes"
+
 -- {{{ Variable definitions
 -- Themes define colours, icons, and wallpapers
 -- The default is a dark theme
-theme_path = "/usr/share/awesome/themes/default/theme.lua"
+-- theme_path = "/usr/share/awesome/themes/default/theme.lua"
 -- Uncommment this for a lighter theme
 -- theme_path = "/usr/share/awesome/themes/sky/theme.lua"
+theme_path = themes_dir .. "/my_sky/theme.lua"
 
 -- Actually load theme
 beautiful.init(theme_path)
@@ -28,21 +33,20 @@
 -- If you do not like this or do not have such a key,
 -- I suggest you to remap Mod4 to another key using xmodmap or other tools.
 -- However, you can use another modifier like Mod1, but it may interact with others.
-modkey = "Mod4"
+-- modkey = "Mod4"
+modkey = "Mod1"
 
 -- Table of layouts to cover with awful.layout.inc, order matters.
 layouts =
 {
-    awful.layout.suit.tile,
-    awful.layout.suit.tile.left,
+    awful.layout.suit.max,
     awful.layout.suit.tile.bottom,
-    awful.layout.suit.tile.top,
-    awful.layout.suit.fair,
+    awful.layout.suit.tile,
     awful.layout.suit.fair.horizontal,
-    awful.layout.suit.max,
-    awful.layout.suit.max.fullscreen,
+    awful.layout.suit.fair,
     awful.layout.suit.magnifier,
-    awful.layout.suit.floating
+    awful.layout.suit.floating,
+    awful.layout.suit.max.fullscreen
 }
 
 -- Table of clients that should be set floating. The index may be either
@@ -54,7 +58,8 @@
     -- by class
     ["MPlayer"] = true,
     ["pinentry"] = true,
-    ["gimp"] = true,
+    ["osmo"] = true,
+    -- ["gimp"] = true,
     -- by instance
     ["mocp"] = true
 }
@@ -63,7 +68,14 @@
 -- Use the screen and tags indices.
 apptags =
 {
-    -- ["Firefox"] = { screen = 1, tag = 2 },
+    ["Firefox"] = { screen = 1, tag = 1 },
+    ["Gnome-terminal"] = { screen = 1, tag = 2 },
+    ["Pidgin"] = { screen = 1, tag = 3 },
+    ["Ekiga"] = { screen = 1, tag = 3 },
+    ["Skype"] = { screen = 1, tag = 3 },
+    ["Gimp"] = { screen = 1, tag = 4 },
+    ["Evolution"] = { screen = 1, tag = 5 },
+    ["Magic"] = { screen = 1, tag = 9 },
     -- ["mocp"] = { screen = 2, tag = 4 },
 }
 
@@ -84,6 +96,10 @@
         tags[s][tagnumber].screen = s
         awful.layout.set(layouts[1], tags[s][tagnumber])
     end
+	awful.tag.setmwfact(0.75, tags[s][3])
+	awful.tag.setmwfact(0.75, tags[s][4])
+	awful.layout.set(awful.layout.suit.tile, tags[s][3])
+	awful.layout.set(awful.layout.suit.tile, tags[s][4])
     -- I'm sure you want to see at least one tag.
     tags[s][1].selected = true
 end
@@ -91,9 +107,125 @@
 
 -- {{{ Wibox
 -- Create a textbox widget
-mytextbox = widget({ type = "textbox", align = "right" })
+myclock = widget({ type = "textbox", align = "right" })
 -- Set the default text in textbox
-mytextbox.text = "<b><small> " .. awesome.release .. " </small></b>"
+myclock.text = "<b><small> " .. awesome.release .. " </small></b>"
+
+-- {{{ Calendar
+-- Функция всплывающего календаря.
+
+-- Create floating cal
+local calendar = nil
+local offset = 0
+
+function remove_calendar()
+    if calendar ~= nil then
+        naughty.destroy(calendar)
+        calendar = nil
+        offset = 0
+    end
+end
+
+function add_calendar(inc_offset)
+    local save_offset = offset
+    remove_calendar()
+    offset = save_offset + inc_offset
+    local datespec = os.date("*t")
+	local day = datespec.day
+    datespec = datespec.year * 12 + datespec.month - 1 + offset
+    datespec = (datespec % 12 + 1) .. " " .. math.floor(datespec / 12)
+    local cal = awful.util.pread("cal -m " .. datespec)
+	if offset == 0 then
+		cal = string.gsub(cal, "(%s)(" .. day .. ")(%s)", "%1<span bgcolor=\"#000000\" color=\"#ffffff\"><b>%2</b></span>%3")
+	end
+    cal = string.gsub(cal, "^%s*(.-)%s*$", "%1")
+    calendar = naughty.notify({
+        text = string.format('<span font_desc="%s">%s</span>', "monospace", cal),
+        timeout = 0, hover_timeout = 0.5,
+        width = 160,
+    })
+end
+
+-- change clockbox for your clock widget (e.g. mytextclock)
+myclock.mouse_enter = function() add_calendar(0) end
+myclock.mouse_leave = function() remove_calendar() end
+
+
+myclock:buttons(awful.util.table.join(
+    awful.button({ }, 5, function() add_calendar(-1) end),
+    awful.button({ }, 4, function() add_calendar(1) end)
+))
+-- Calendar }}}
+
+mychipicon = widget({ type = "imagebox", align = "right" })
+mychipicon.image = image(themes_dir .. "/my_sky/icons/cpu.xpm")
+
+-- {{{ hardware info
+-- display CPU freq
+
+local hw_info = nil
+
+function remove_hwinfo()
+	if hw_info then
+        naughty.destroy(hw_info)
+		hw_info = nil
+	end
+end
+
+function add_hwinfo()
+	remove_hwinfo()
+
+	-- {{{ cpu info
+	local cpufreq = ""
+	local f, err = io.open("/sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq", 'r')
+	if f then
+		cpufreq = f:read("*all")
+		f:close()
+		cpufreq = "CPU freq: " .. cpufreq/1000000 .. " GHz\n"
+	else
+		print(err)
+		cpufreq = ""
+	end
+	-- cpu info }}}
+
+	-- {{{ if info
+	local if_stat = "if up: " .. myifstat()
+	-- if info }}}
+
+	hw_info = naughty.notify({
+		text = string.format('<span font_desc="%s">%s%s</span>', "monospace", cpufreq, if_stat),
+		timeout = 0, hover_timeout = 0.5,
+	})
+end
+
+-- change chipicon for your clock widget (e.g. mytextclock)
+mychipicon.mouse_enter = function() add_hwinfo() end
+mychipicon.mouse_leave = function() remove_hwinfo() end
+
+-- display interfaces is up
+function myifstat()
+	local r, err, ifname, ifstat = nil
+	local iftext = ""
+	local iflist = io.popen("ls /sys/class/net")
+	if not iflist then return end
+
+	for ifname in iflist:lines()
+	do
+		if not (ifname == "lo") then
+			f, err = io.open("/sys/class/net/" .. ifname .. "/carrier", "r")
+			if not f then break end
+			ifstat = f:read("*n")
+			f:close()
+			if ifstat == 1 then
+				iftext = iftext .. " " .. ifname
+			end
+		end
+	end
+	iflist:close()
+	return(iftext)
+end
+-- interfaces status
+--- hardware info }}}
 
 -- Create a laucher widget and a main menu
 myawesomemenu = {
@@ -103,7 +235,19 @@
    { "quit", awesome.quit }
 }
 
+myquickmenu = {
+   { "Firefox", "firefox" },
+   { "Pidgin", "pidgin" },
+   { "Skype", "skype.sh" },
+   { "Ekiga", "ekiga" },
+   { "Evolution", "evolution" },
+   { "GnuCashe", "env LC_ALL=ru_RU.UTF-8 gnucash" },
+   { "Lotus", "/opt/ibm/lotus/notes/notes" },
+   { "Magic.ru", home_dir .. "/games/magic.ru/air/Magic/bin/Magic" }
+}
+
 mymainmenu = awful.menu.new({ items = { { "awesome", myawesomemenu, beautiful.awesome_icon },
+                                        { "Quick menu", myquickmenu },
                                         { "open terminal", terminal },
                                         { "Debian", debian.menu.Debian_menu.Debian }
                                       }
@@ -117,6 +261,7 @@
 
 -- Create a wibox for each screen and add it
 mywibox = {}
+mywibox_bottom = {}
 mypromptbox = {}
 mylayoutbox = {}
 mytaglist = {}
@@ -180,9 +325,10 @@
                            mytaglist[s],
                            mytasklist[s],
                            mypromptbox[s],
-                           mytextbox,
                            mylayoutbox[s],
-                           s == 1 and mysystray or nil }
+						   mychipicon,
+                           s == 1 and mysystray or nil,
+                           myclock }
     mywibox[s].screen = s
 end
 -- }}}
@@ -197,16 +343,28 @@
 
 -- {{{ Key bindings
 globalkeys = awful.util.table.join(
-    awful.key({ modkey,           }, "Left",   awful.tag.viewprev       ),
-    awful.key({ modkey,           }, "Right",  awful.tag.viewnext       ),
+    -- awful.key({ modkey,           }, "Left",   awful.tag.viewprev       ),
+    -- awful.key({ modkey,           }, "Right",  awful.tag.viewnext       ),
+	-- Хочу по mod + d скрывать таг
+    awful.key({ modkey,           }, "d", function ()
+											for s = 1, screen.count() do
+												awful.tag.viewnone(s)
+											end
+										end),
+	-- Для скриншотов
+	awful.key({ }, "Print", function () awful.util.spawn("gnome-screenshot") end),
+
+	-- Блокировка экрана
+	awful.key({ modkey, "Control" }, "l", function () awful.util.spawn("gnome-screensaver-command -l") end),
+
     awful.key({ modkey,           }, "Escape", awful.tag.history.restore),
 
-    awful.key({ modkey,           }, "j",
+    awful.key({ modkey,           }, "Tab",
         function ()
             awful.client.focus.byidx( 1)
             if client.focus then client.focus:raise() end
         end),
-    awful.key({ modkey,           }, "k",
+    awful.key({ modkey, "Shift"   }, "Tab",
         function ()
             awful.client.focus.byidx(-1)
             if client.focus then client.focus:raise() end
@@ -219,16 +377,16 @@
     awful.key({ modkey, "Control" }, "j", function () awful.screen.focus( 1)       end),
     awful.key({ modkey, "Control" }, "k", function () awful.screen.focus(-1)       end),
     awful.key({ modkey,           }, "u", awful.client.urgent.jumpto),
-    awful.key({ modkey,           }, "Tab",
-        function ()
-            awful.client.focus.history.previous()
-            if client.focus then
-                client.focus:raise()
-            end
-        end),
+    -- awful.key({ modkey,           }, "Tab",
+    --     function ()
+    --         awful.client.focus.history.previous()
+    --         if client.focus then
+    --             client.focus:raise()
+    --         end
+    --     end),
 
     -- Standard program
-    awful.key({ modkey,           }, "Return", function () awful.util.spawn(terminal) end),
+    awful.key({ modkey,           }, "`", function () awful.util.spawn(terminal) end),
     awful.key({ modkey, "Control" }, "r", awesome.restart),
     awful.key({ modkey, "Shift"   }, "q", awesome.quit),
 
@@ -256,9 +414,9 @@
 -- Client awful tagging: this is useful to tag some clients and then do stuff like move to tag on them
 clientkeys = awful.util.table.join(
     awful.key({ modkey,           }, "f",      function (c) c.fullscreen = not c.fullscreen  end),
-    awful.key({ modkey, "Shift"   }, "c",      function (c) c:kill()                         end),
+    awful.key({ modkey,           }, "F4",     function (c) c:kill()                         end),
     awful.key({ modkey, "Control" }, "space",  awful.client.floating.toggle                     ),
-    awful.key({ modkey, "Control" }, "Return", function (c) c:swap(awful.client.getmaster()) end),
+    awful.key({ modkey,           }, "Return", function (c) c:swap(awful.client.getmaster()) end),
     awful.key({ modkey,           }, "o",      awful.client.movetoscreen                        ),
     awful.key({ modkey, "Shift"   }, "r",      function (c) c:redraw()                       end),
     awful.key({ modkey }, "t", awful.client.togglemarked),
@@ -429,8 +587,45 @@
     end
 end)
 
--- Hook called every minute
-awful.hooks.timer.register(60, function ()
-    mytextbox.text = os.date(" %a %b %d, %H:%M ")
+-- Hook called every 30 sec
+-- timer for ver 3.3
+awful.hooks.timer.register(30, function ()
+    myclock.text = os.date(" %a %b %d, %H:%M ")
 end)
+
+-- timer for ver 3.4 FIXME
+-- mytimer = timer({ timeout = 30 })
+-- mytimer:add_signal("timeout", function() myclock.text = os.date(" %a %b %d, %H:%M ") end)
+-- mytimer:start()
+-- }}}
+
+-- FIXME!
+-- {{{ Autorun
+-- Autorun programs
+
+-- autorun = true
+-- autorunApps = 
+-- { 
+--    "swiftfox",
+--    "mutt",
+--    "consonance",
+--    "linux-fetion",
+--    "weechat-curses",
+-- }
+-- if autorun then
+--    for app = 1, #autorunApps do
+--        awful.util.spawn(autorunApps[app])
+--    end
+-- end
+
+-- или, что бы запусалось только один раз
+
+-- function run_once(prg)
+-- 	if not prg then
+-- 		do return nil end
+-- 	end
+-- 	os.execute("x=" .. prg .. "; pgrep -u $USER -x " .. prg .. " || (" .. prg .. " &)")
+-- end
+-- -- AUTORUN APPS!
+-- run_once("gnome-settings-daemon")
 -- }}}
