Welcome, guest! Login / Register - Why register?
Psst.. new poll here.
Psst.. new forums here.
Microsoft is blocking us again (TY IP Reputation!) so dont bother with any of their useless mail servers here and just use oauth login instead. Thank the nice Russians for causing that. :)

Paste

Pasted as Lua by voice ( 16 years ago )
-- Standard awesome library

require("awful")

require("awful.autofocus")

require("awful.rules")

-- Theme handling library

require("beautiful")

-- Notification library

require("naughty")



-- {{{ Variable definitions

-- Themes define colours, icons, and wallpapers

beautiful.init(os.getenv("HOME") .. "/.config/awesome/my-theme-white/theme.lua")



-- This is used later as the default terminal and editor to run.

terminal = "urxvt +sb"

editor = os.getenv("EDITOR") or "emacs -nw"

editor_cmd = terminal .. " -e " .. editor



-- Default modkey.

-- Usually, Mod4 is the key with a logo between Control and Alt.

-- 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 = "Mod1"



-- Table of layouts to cover with awful.layout.inc, order matters.

layouts =

{

    awful.layout.suit.tile,               -- 1

    awful.layout.suit.tile.left,          -- 2

    awful.layout.suit.tile.bottom,        -- 3

    awful.layout.suit.tile.top,           -- 4

    awful.layout.suit.fair,               -- 5

    awful.layout.suit.fair.horizontal,    -- 6

    awful.layout.suit.max,                -- 7

    awful.layout.suit.max.fullscreen,     -- 8

    awful.layout.suit.magnifier,          -- 9

    awful.layout.suit.floating,           -- 10

    awful.layout.suit.spiral,             -- 11

    awful.layout.suit.spiral.dwindle      -- 12

}



-- Define default layout for every tag.

default_layouts =

{

    7,   -- 1

    4,   -- 2

    4,   -- 3

    1,   -- 4

    4,   -- 5

    4,   -- 6

    4,   -- 7

    4,   -- 8

    4    -- 9

}



-- Define if we want to use titlebar on all applications.

use_titlebar = false

-- }}}



-- {{{ Tags

-- Define a tag table which hold all screen tags.

tags = {}

for s = 1, screen.count() do

    -- Each screen has its own tag table.

    tags[s] = awful.tag({ 1, 2, 3, 4, 5, 6, 7, 8, 9 }, s)



    -- Set default layout for tags.

    for tagnumber = 1, 9 do

       awful.layout.set(layouts[default_layouts[tagnumber]], tags[s][tagnumber])

    end

end

-- }}}



-- {{{ Menu

-- Create a laucher widget and a main menu

myawesomemenu = {

   { "manual", terminal .. " -e man awesome" },

   { "edit config", editor_cmd .. " " .. awful.util.getdir("config") .. "/rc.lua" },

   { "restart", awesome.restart },

   { "quit", awesome.quit }

}



mymainmenu = awful.menu({ items = { { "awesome", myawesomemenu, beautiful.awesome_icon },

                                    { "open terminal", terminal }

                                  }

                        })



mylauncher = awful.widget.launcher({ image = image(beautiful.awesome_icon),

                                     menu = mymainmenu })

-- }}}



-- {{{ Wibox

-- Create a systray

mysystray = widget({ type = "systray" })



-- Create a wibox for each screen and add it

mywibox = {}

mywibox_bottom = {}

mypromptbox = {}

mylayoutbox = {}

mytaglist = {}

mytaglist.buttons = awful.util.table.join(

                    awful.button({ }, 1, awful.tag.viewonly),

                    awful.button({ modkey }, 1, awful.client.movetotag),

                    awful.button({ }, 3, awful.tag.viewtoggle),

                    awful.button({ modkey }, 3, awful.client.toggletag),

                    awful.button({ }, 4, awful.tag.viewnext),

                    awful.button({ }, 5, awful.tag.viewprev)

                    )

mytasklist = {}

mytasklist.buttons = awful.util.table.join(

                     awful.button({ }, 1, function (c)

                                              if not c:isvisible() then

                                                  awful.tag.viewonly(c:tags()[1])

                                              end

                                              client.focus = c

                                              c:raise()

                                          end),

                     awful.button({ }, 3, function ()

                                              if instance then

                                                  instance:hide()

                                                  instance = nil

                                              else

                                                  instance = awful.menu.clients({ width=250 })

                                              end

                                          end),

                     awful.button({ }, 4, function ()

                                              awful.client.focus.byidx(1)

                                              if client.focus then client.focus:raise() end

                                          end),

                     awful.button({ }, 5, function ()

                                              awful.client.focus.byidx(-1)

                                              if client.focus then client.focus:raise() end

                                          end))



-- Create bottom wibox's widgets.

clockmonitor = widget({ type = "textbox" })

mailmonitor = widget({ type = "textbox" })

batterymonitor = widget({ type = "textbox" })

cputempmonitor = widget({ type = "textbox" })



for s = 1, screen.count() do

    -- Create an imagebox widget which will contains an icon indicating which layout we're using.

    -- We need one layoutbox per screen.

    mylayoutbox[s] = awful.widget.layoutbox(s)

    mylayoutbox[s]:buttons(awful.util.table.join(

                           awful.button({ }, 1, function () awful.layout.inc(layouts, 1) end),

                           awful.button({ }, 3, function () awful.layout.inc(layouts, -1) end),

                           awful.button({ }, 4, function () awful.layout.inc(layouts, 1) end),

                           awful.button({ }, 5, function () awful.layout.inc(layouts, -1) end)))

    -- Create a taglist widget

    mytaglist[s] = awful.widget.taglist(s, awful.widget.taglist.label.all, mytaglist.buttons)



    -- Create a tasklist widget

    mytasklist[s] = awful.widget.tasklist(function(c)

                                              return awful.widget.tasklist.label.currenttags(c, s)

                                          end, mytasklist.buttons)



    -- Create the wibox

    mywibox[s] = awful.wibox({ position = "top", screen = s })

    -- Add widgets to the wibox - order matters

    mywibox[s].widgets = {

        {

            mylauncher,

            mytaglist[s],

            layout = awful.widget.layout.horizontal.leftright

        },

        mylayoutbox[s],

        s == 1 and mysystray or nil,

        mytasklist[s],

        layout = awful.widget.layout.horizontal.rightleft

    }



    -- Create bottom wibox.

    mywibox_bottom[s] = awful.wibox({ position = "bottom", screen = s })

    mywibox_bottom[s].widgets = {

       clockmonitor,

       cputempmonitor,

       batterymonitor,

       mailmonitor,

       layout = awful.widget.layout.horizontal.rightleft

    }    

end

-- }}}



-- {{{ Mouse bindings

root.buttons(awful.util.table.join(

    awful.button({ }, 3, function () mymainmenu:toggle() end),

    awful.button({ }, 4, awful.tag.viewnext),

    awful.button({ }, 5, awful.tag.viewprev)

))

-- }}}



-- {{{ Key bindings

globalkeys = awful.util.table.join(

    awful.key({ modkey,           }, ",",   awful.tag.viewprev       ),

    awful.key({ modkey,           }, ".",  awful.tag.viewnext       ),

    awful.key({ modkey,           }, "/", awful.tag.history.restore),



    awful.key({ modkey,           }, "n",

        function ()

            awful.client.focus.byidx( 1)

            if client.focus then client.focus:raise() end

        end),

    awful.key({ modkey,           }, "p",

        function ()

            awful.client.focus.byidx(-1)

            if client.focus then client.focus:raise() end

        end),

    awful.key({ modkey,           }, "F1", function () mymainmenu:show(true)        end),



    -- Layout manipulation

    awful.key({ modkey,           }, "j", function () awful.client.swap.byidx(  1)    end),

    awful.key({ modkey,           }, "k", function () awful.client.swap.byidx( -1)    end),

    awful.key({ modkey, "Control" }, "j", function () awful.screen.focus_relative( 1) end),

    awful.key({ modkey, "Control" }, "k", function () awful.screen.focus_relative(-1) 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,           }, "F2", function () awful.util.spawn(terminal) end),

    awful.key({ modkey,           }, "F3", function () awful.util.spawn("gmrun") end),



    awful.key({ modkey,           }, "l",     function () awful.tag.incmwfact( 0.05)    end),

    awful.key({ modkey,           }, "h",     function () awful.tag.incmwfact(-0.05)    end),

    -- awful.key({ modkey, "Shift"   }, "h",     function () awful.tag.incnmaster( 1)      end),

    -- awful.key({ modkey, "Shift"   }, "l",     function () awful.tag.incnmaster(-1)      end),

    awful.key({ modkey, "Control" }, "h",     function () awful.tag.incncol( 1)         end),

    awful.key({ modkey, "Control" }, "l",     function () awful.tag.incncol(-1)         end),

    awful.key({ modkey,           }, "space", function () awful.layout.inc(layouts,  1) end),

    awful.key({ modkey, "Control" }, "space", function () awful.layout.inc(layouts, -1) end),



    -- MPD hotkeys

    awful.key({modkey,            }, "KP_Subtract", function () awful.util.spawn("mocp -G") end),

    awful.key({modkey,            }, "KP_Divide",   function () awful.util.spawn("amixer set Master 1-") end),

    awful.key({modkey,            }, "KP_Multiply", function () awful.util.spawn("amixer set Master 1+") end),



    -- Other custom hotkeys

    awful.key({modkey,            }, "F11", function () awful.util.spawn("monitor off") end)

)



clientkeys = awful.util.table.join(

    awful.key({ modkey,           }, "Return",      function (c) c.fullscreen = not c.fullscreen  end),

    awful.key({ modkey,           }, "c",      function (c) c:kill()                              end),

    awful.key({ modkey, "Control" }, "Return",  awful.client.floating.toggle                         ),

    -- awful.key({ modkey, "Control" }, "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,           }, "n",      function (c) c.minimized = not c.minimized    end),

    awful.key({ modkey,           }, "m",

        function (c)

            c.maximized_horizontal = not c.maximized_horizontal

            c.maximized_vertical   = not c.maximized_vertical

        end)

)



-- Compute the maximum number of digit we need, limited to 9

keynumber = 0

for s = 1, screen.count() do

   keynumber = math.min(9, math.max(#tags[s], keynumber));

end



-- Bind all key numbers to tags.

-- Be careful: we use keycodes to make it works on any keyboard layout.

-- This should map on the top row of your keyboard, usually 1 to 9.

for i = 1, keynumber do

    globalkeys = awful.util.table.join(globalkeys,

        awful.key({ modkey }, "#" .. i + 9,

                  function ()

                        local screen = mouse.screen

                        if tags[screen][i] then

                            awful.tag.viewonly(tags[screen][i])

                        end

                  end),

        awful.key({ modkey, "Control" }, "#" .. i + 9,

                  function ()

                      local screen = mouse.screen

                      if tags[screen][i] then

                          awful.tag.viewtoggle(tags[screen][i])

                      end

                  end),

        awful.key({ modkey, "Shift" }, "#" .. i + 9,

                  function ()

                      if client.focus and tags[client.focus.screen][i] then

                          awful.client.movetotag(tags[client.focus.screen][i])

                      end

                  end),

        awful.key({ modkey, "Control", "Shift" }, "#" .. i + 9,

                  function ()

                      if client.focus and tags[client.focus.screen][i] then

                          awful.client.toggletag(tags[client.focus.screen][i])

                      end

                  end))

end



clientbuttons = awful.util.table.join(

    awful.button({ }, 1, function (c) client.focus = c; c:raise() end),

    awful.button({ modkey }, 1, awful.mouse.client.move),

    awful.button({ modkey }, 3, awful.mouse.client.resize))



-- Set keys

root.keys(globalkeys)

-- }}}



-- {{{ Rules

awful.rules.rules = {

    -- All clients will match this rule.

    { rule = { },

      properties = { border_width = beautiful.border_width,

                     border_color = beautiful.border_normal,

                     focus = true,

                     keys = clientkeys,

                     buttons = clientbuttons } },

    { rule = { class = "MPlayer" },

      properties = { floating = true } },

    { rule = { class = "pinentry" },

      properties = { floating = true } },

    { rule = { class = "gimp" },

      properties = { floating = true } },

    -- Set Firefox to always map on tags number 1 of screen 1.

    { rule = { class = "Shiretoko" },

      properties = { tag = tags[1][1] } },

    { rule = { class = "Pidgin" },

      properties = { tag = tags[1][4] } },
    { rule = { class = "Skype" },
      properties = { tag = tags[1][5] } },

}

-- }}}



-- {{{ Signals

-- Signal function to execute when a new client appears.

client.add_signal("manage", function (c, startup)

    -- Add a titlebar

    -- awful.titlebar.add(c, { modkey = modkey })



    -- Enable sloppy focus

    c:add_signal("mouse::enter", function(c)

        if awful.layout.get(c.screen) ~= awful.layout.suit.magnifier

            and awful.client.focus.filter(c) then

            client.focus = c

        end

    end)



    if not startup then

        -- Set the windows at the slave,

        -- i.e. put it at the end of others instead of setting it master.

        -- awful.client.setslave(c)



        -- Put windows in a smart way, only if they does not set an initial position.

        if not c.size_hints.user_position and not c.size_hints.program_position then

            awful.placement.no_overlap(c)

            awful.placement.no_offscreen(c)

        end

    end

    c.size_hints_honor = false

end)



client.add_signal("focus", function(c) c.border_color = beautiful.border_focus end)

client.add_signal("unfocus", function(c) c.border_color = beautiful.border_normal end)

-- }}}



-- {{{ Widgets hooks

-- Clock monitor hook.

update_clock_proc = function ()

         clockmonitor.text = os.date(" [%d.%m.%Y %H:%M]")

      end

update_clock_proc()

mytimer = timer { timeout = 50 }

mytimer:add_signal("timeout", update_clock_proc)

mytimer:start()



-- Mail monitor hook.

require("mbox")

update_mail_proc = function ()

        local msg_total, msg_unread, msg_new = calcmail(os.getenv("HOME") .. "/.mail/slavik")

        mailmonitor.text = " [Mail: " .. msg_unread .. "]"

     end

update_mail_proc()

mytimer = timer { timeout = 5 }

mytimer:add_signal("timeout", update_mail_proc)

mytimer:start()



-- Battery usage monitor hook.

require("linuxbatt")

update_battery_proc = function ()

    local perc, state = get_linuxbatt()



    batterymonitor.text = " [Battery: " .. state .. perc .. "%]"

        end

update_battery_proc()

mytimer = timer { timeout = 30 }

mytimer:add_signal("timeout", update_battery_proc)

mytimer:start()



-- CPU temprature monitor hook.

require("cputemp")

require("cpufreq")

update_cputemp_proc = function ()

    cputempmonitor.text = " [CPU: " .. get_cpufreq() .. "MHz " .. get_cputemp() .. "]"

        end

update_cputemp_proc()

mytimer = timer { timeout = 10 }

mytimer:add_signal("timeout", update_cputemp_proc)

mytimer:start()

-- }}}



-- {{{ Include custom files.

require("autostart")

-- }}}

 

Revise this Paste

Your Name: Code Language: