You are not logged in.

#1 2010-09-06 15:59:48

Sherwood51
Member
From: Geneva -Switzerland
Registered: 2010-05-25
Posts: 20
Website

[SOLVED][Awesome] won't update widgets

Hi all,

I'm facing a problem I can't figure out.

Since yesterday, my widgets won't update in the panel. There's apparently a problem with the awful.hooks.timer.register function.
What's weird it is that it used to work perfectly fine til yesterday. I actually works for like 5sec but then it just stops...
Is anyone facing the same problem?

If anyone has any idea, here is my rc.lua:

-- Standard awesome library
require("awful")
require("awful.autofocus")
require("awful.rules")
-- Theme handling library
require("beautiful")
-- Notification library
require("naughty")

-- Sound Widget
cardid  = 0
channel = "Master"
function volume (mode, widget)
    if mode == "update" then
             local fd = io.popen("amixer -c " .. cardid .. " -- sget " .. channel)
             local status = fd:read("*all")
             fd:close()
        
        local volume = string.match(status, "(%d?%d?%d)%%")
        volume = string.format("% 3d", volume)

        status = string.match(status, "%[(o[^%]]*)%]")

        if string.find(status, "on", 1, true) then
            volume = "| Vol:<span color='green'>" .. volume .. "</span>% "
        else
            volume = "| Vol:<span color='red'>" .. volume .. "</span>M "
        end
        widget.text = volume
    elseif mode == "up" then
        io.popen("amixer -q -c " .. cardid .. " sset " .. channel .. " 5%+"):read("*all")
        volume("update", widget)
    elseif mode == "down" then
        io.popen("amixer -q -c " .. cardid .. " sset " .. channel .. " 5%-"):read("*all")
        volume("update", widget)
    else
        io.popen("amixer -c " .. cardid .. " sset " .. channel .. " toggle"):read("*all")
        volume("update", widget)
    end
end

-- Enable mocp
function moc_control (action)
    local moc_info,moc_state

    if action == "next" then
        io.popen("mocp --next")
    elseif action == "previous" then
        io.popen("mocp --previous")
    elseif action == "stop" then
        io.popen("mocp --stop")
    elseif action == "play_pause" then
        moc_info = io.popen("mocp -i"):read("*all")
            moc_state = string.gsub(string.match(moc_info, "State: %a*"),"State: ","")

        if moc_state == "PLAY" then
            io.popen("mocp --pause")
        elseif moc_state == "PAUSE" then
            io.popen("mocp --unpause")
        elseif moc_state == "STOP" then
            io.popen("mocp --play")
        end
    end
end

-- {{{ Variable definitions
-- Themes define colours, icons, and wallpapers
beautiful.init("/usr/share/awesome/themes/shertheme/theme.lua")

-- This is used later as the default terminal and editor to run.
--terminal = "xterm"
terminal = "urxvtc"
editor = os.getenv("EDITOR") or "vim"
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 = "Mod4"

-- Table of layouts to cover with awful.layout.inc, order matters.
layouts =
{
    awful.layout.suit.floating,
    awful.layout.suit.tile,
    awful.layout.suit.tile.left,
    awful.layout.suit.tile.bottom,
    awful.layout.suit.tile.top,
    awful.layout.suit.fair,
    awful.layout.suit.fair.horizontal,
    awful.layout.suit.spiral,
    awful.layout.suit.spiral.dwindle,
    awful.layout.suit.max,
    awful.layout.suit.max.fullscreen,
    awful.layout.suit.magnifier
}
-- }}}

-- {{{ Tags
-- Define a tag table which hold all screen tags.
tags = {
    names = { "sec", "main", "dev", "web", "im", "mus" },
    layout = { layouts[2], layouts[2], layouts[2], layouts[1], layouts[2], layouts[1]}
    }

for s = 1, screen.count() do
    tags[s] = awful.tag(tags.names, s, tags.layout)
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 Volume Control Widget
 tb_volume = widget({ type = "textbox", name = "tb_volume", align = "right" })
 tb_volume:buttons({
     button({ }, 4, function () volume("up", tb_volume) end),
     button({ }, 5, function () volume("down", tb_volume) end),
     button({ }, 1, function () volume("mute", tb_volume) end)
 })
 volume("update", tb_volume)

-- refresh the Volume Control Widget
awful.hooks.timer.register(10, function () volume("update", tb_volume) end)

-- Moc Widget
tb_moc = widget({ type = "textbox", align = "right" })

function hook_moc()
       moc_info = io.popen("mocp -i"):read("*all")
       moc_state = string.gsub(string.match(moc_info, "State: %a*"),"State: ","")
       if moc_state == "PLAY" or moc_state == "PAUSE" then
           moc_artist = string.gsub(string.match(moc_info, "Artist: %C*"), "Artist: ","")
           moc_title = string.gsub(string.match(moc_info, "SongTitle: %C*"), "SongTitle: ","")
           moc_curtime = string.gsub(string.match(moc_info, "CurrentTime: %d*:%d*"), "CurrentTime: ","")
           moc_totaltime = string.gsub(string.match(moc_info, "TotalTime: %d*:%d*"), "TotalTime: ","")
           if moc_artist == "" then 
               moc_artist = "unknown artist" 
           end
           if moc_title == "" then 
               moc_title = "unknown title" 
           end
       -- moc_title = string.format("%.5c", moc_title)
           moc_string = moc_artist .. " - " .. moc_title .. "(" .. moc_curtime .. "/" .. moc_totaltime .. ")"
           if moc_state == "PAUSE" then 
               moc_string = "PAUSE - " .. moc_string .. ""
           end
       else
           moc_string = "-- not playing --"
       end
       return moc_string
end

awful.hooks.timer.register(1, function() tb_moc.text = '| ' .. hook_moc() .. ' ' end)

-- GMail Widget
mymail = widget({ type = "textbox", align = "right" })
mymail.text = ' <span color="red" background="white" font="bold">|V|</span>'

awful.hooks.timer.register(30, function ()
    local f = io.open("/home/robin/tmp/gmail") 
    local l = nil
    if f ~= nil then
       l = f:read() -- read output of command
    else
       l = "gmail"
    end
    f:close()

    if l ~= "0" then
        l = '<span font="bold" color="red">' .. l .. '</span>'
    else
        l = ''
    end

    mymail.text = ' <span color="red" background="white" font="bold">|V|</span>' .. l
    os.execute("~/scripts/unread.py > ~/tmp/gmail &")
end)

-- Create a CPU widget
jiffies = {}
function activecpu()
    local s, str
    
    for line in io.lines("/proc/stat") do
        local cpu,newjiffies = string.match(line, "(cpu)\ +(%d+)")
        if cpu and newjiffies then
            if not jiffies[cpu] then
                jiffies[cpu] = newjiffies
            end
            -- The string.format prevents your task list from jumping around
            -- When CPU usage goes above/below 10%
            str = string.format("%02d", newjiffies-jiffies[cpu])

            if str < "31" then
                str = '<span color="green">' .. str .. '</span>'
            elseif str < "51" then
                str = '<span color="yellow">' .. str .. '</span>'
            elseif str < "70" then
                str = '<span color="orange">' .. str .. '</span>'
            else
                str = '<span color="red">' .. str .. '</span>'
            end

            s = '| CPU: ' .. str .. '% '
            jiffies[cpu] = newjiffies
        end
    end
    
    return s
end

cpuinfo = widget({ type = "textbox", name = "cpuinfo" })
-- register the hook to update the display
awful.hooks.timer.register(1, function() cpuinfo.text = activecpu() end)

-- Create CPU Temp Widget
function activecputemp()
    local temp

    for line in io.lines("/proc/acpi/thermal_zone/THM/temperature") do
        temp = string.match(line, "temperature:\ +(%d+)")
    end

    if temp < "46" then 
        temp = '<span color="turquoise">' .. temp .. '</span>'
    elseif    temp < "61" then
        temp = '<span color="yellow">' .. temp .. '</span>'
    elseif  temp < "76" then 
        temp = '<span color="orange">' .. temp .. '</span>'
    else 
        temp = '<span color="red">' .. temp .. '</span>'
    end
    
    return temp
end

cputemp = widget({ type = "textbox" , name = "cputemp" })

-- Assign a hook to update temperature
awful.hooks.timer.register(1, function() cputemp.text = "@ " .. activecputemp() .. "°C | RAM: " end)
    
-- Create a battery status Widget

-- get the full capacity of the battery
for line in io.lines("/proc/acpi/battery/BAT0/info") do
    bat_stat = string.match(line, "last full capacity:\ +(%d+)")

    if bat_stat then
        -- define stat_tot for reuse later for battery status
        stat_tot = bat_stat
    end
end

function activebat()
    local stat_actu, res

    for line in io.lines("/proc/acpi/battery/BAT0/state") do
        local status  =  string.match(line, "remaining capacity:\ +(%d+)")
        local state = string.match(line, "charging state:\ +(%a+)")
        if status then
            stat_actu = status
        end
        if state then
            stat_bat = state
        end
    end

    res = string.format("%.2f", (stat_actu/stat_tot) * 100);

    if ((stat_actu/stat_tot) * 100)  < 10 then 
        res = '<span color="red">' .. res .. '</span>'
    elseif    ((stat_actu/stat_tot) * 100) < 20 then
        res = '<span color="orange">' .. res .. '</span>'
    elseif  ((stat_actu/stat_tot) * 100)  < 30 then 
        res = '<span color="yellow">' .. res .. '</span>'
    else 
        res = '<span color="green">' .. res .. '</span>'
    end

    res = res .. '% ' .. stat_bat


    return res 
end

batinfo = widget({ type = "textbox" , name = "batinfo" })

-- Assign a hook to update info
awful.hooks.timer.register(1, function() batinfo.text = "BAT: " .. activebat() .. " |" end)

-- Create a RAM widget giving the MB used by the RAM
-- declare memtot for reuse below
memtot = 2056100

function activeram()
    local active, ramusg, res
    
    for line in io.lines("/proc/meminfo") do
        for key , value in string.gmatch(line, "(%w+):\ +(%d+).+") do
            if key == "Active" then active = tonumber(value)
            end
        end
    end
    
    ramusg = (active/memtot)*100
    
    res = string.format("%.2f", (active/1024))
    
    if ramusg < 51 then
        res = '<span color="green">' .. res .. '</span>MB (<span color="green">' .. string.format("%.2f",ramusg) .. '</span>%)'
    elseif    ramusg < 71 then
        res = '<span color="yellow">' .. res .. '</span>MB (<span color="green">' .. string.format("%.2f",ramusg) .. '</span>%)'
    elseif  ramusg < 86 then 
        res = '<span color="orange">' .. res .. '</span>MB (<span color="green">' .. string.format("%.2f",ramusg) .. '</span>%)'
    else 
        res = '<span color="red">' .. res .. '</span>MB (<span color="green">' .. string.format("%.2f",ramusg) .. '</span>%)'
    end

    return res
end

meminfo = widget({ type = "textbox", name = "meminfo" })

-- Assign a hook to update info
awful.hooks.timer.register(1, function() meminfo.text = activeram() .. " | "  end)

-- Create a textclock widget
mytextclock = awful.widget.textclock({ align = "right" })

-- Create a systray
mysystray = widget({ type = "systray" })

-- Create a wibox for each screen and add it
mywibox = {}
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))

for s = 1, screen.count() do
    -- Create a promptbox for each screen
    mypromptbox[s] = awful.widget.prompt({ layout = awful.widget.layout.horizontal.leftright })
    -- 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],
            mypromptbox[s],
            layout = awful.widget.layout.horizontal.leftright
        },
        mylayoutbox[s],
    mymail,
        s == 1 and mysystray or nil,
    tb_volume,
        mytextclock,
    batinfo,    
    meminfo,
    cputemp,
    cpuinfo,
    tb_moc,
        mytasklist[s],
        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,           }, "Left",   awful.tag.viewprev       ),
    awful.key({ modkey,           }, "Right",  awful.tag.viewnext       ),
    awful.key({ modkey,           }, "Escape", awful.tag.history.restore),

    awful.key({ modkey,           }, "j",
        function ()
            awful.client.focus.byidx( 1)
            if client.focus then client.focus:raise() end
        end),
    awful.key({ modkey,           }, "k",
        function ()
            awful.client.focus.byidx(-1)
            if client.focus then client.focus:raise() end
        end),
    awful.key({ modkey,           }, "w", function () mymainmenu:show(true)        end),

    -- Multimedia keys
    awful.key({ }, "XF86AudioRaiseVolume", function () volume("up", tb_volume) end),
    awful.key({ }, "XF86AudioLowerVolume", function () volume("down", tb_volume) end),
    awful.key({ }, "XF86AudioMute", function () volume("mute", tb_volume) end),
    awful.key({ "Control", }, "Right", function () moc_control("next") end),
    awful.key({ "Control", }, "Left", function () moc_control("previous") end),
    awful.key({ "Control", }, "Up", function () moc_control("stop") end),
    awful.key({ "Control", }, "Down", function () moc_control("play_pause") end),

    -- Layout manipulation
    awful.key({ modkey, "Shift"   }, "j", function () awful.client.swap.byidx(  1)    end),
    awful.key({ modkey, "Shift"   }, "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,           }, "u", awful.client.urgent.jumpto),
    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, "Control" }, "r", awesome.restart),
    awful.key({ modkey, "Shift"   }, "q", awesome.quit),

    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, "Shift"   }, "space", function () awful.layout.inc(layouts, -1) end),

    -- Prompt
    awful.key({ modkey },            "r",     function () mypromptbox[mouse.screen]:run() end),

    awful.key({ modkey }, "x",
              function ()
                  awful.prompt.run({ prompt = "Run Lua code: " },
                  mypromptbox[mouse.screen].widget,
                  awful.util.eval, nil,
                  awful.util.getdir("cache") .. "/history_eval")
              end)
)

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, "Control" }, "space",  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)
)

-- Keybindings for the Volume Keys

-- 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 = clientkeysl,
             floating = false,
                     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 2 of screen 1.
    -- { rule = { class = "Firefox" },
    --   properties = { tag = tags[1][2] } },
}
-- }}}

-- {{{ 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
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)
-- }}}

--  Launch the wicd applet
awful.util.spawn('wicd-client')

Last edited by Sherwood51 (2010-09-09 08:22:24)

Offline

#2 2010-09-06 16:05:45

kdorf
Member
From: Minneapolis, Minnesota
Registered: 2008-06-30
Posts: 17

Re: [SOLVED][Awesome] won't update widgets

There might be something wrong with your Lua that's causing Awesome to stop working correctly. Try starting X from another VT and running Awesome, then working as normal until the issue pops up. Then flip back to the other VT and see what errors you've got. Maybe dump the errors to a log file even.

Offline

#3 2010-09-06 17:50:21

muunleit
Member
From: Germany
Registered: 2008-02-23
Posts: 234

Re: [SOLVED][Awesome] won't update widgets

Are you sure the awful.hooks.timer.register function is still useable?
In my rc.lua I use another timer function, but I'm not sure if I remember correct it's because I had problems with awful.hooks.timer.register when I set it up or if it was anything else.

My timer function looks like this

batteryTimer = timer { timeout = 30 }
batteryTimer:add_signal("timeout", function() mybatteryInfo() end ) 
batteryTimer:emit_signal("timeout") 
batteryTimer:start()

Maybe it just helps you to check your code.


"The mind can make a heaven out of hell or a hell out of heaven" -- John Milton

Offline

#4 2010-09-07 19:55:23

Sherwood51
Member
From: Geneva -Switzerland
Registered: 2010-05-25
Posts: 20
Website

Re: [SOLVED][Awesome] won't update widgets

Hey guys,

thanks for your answers. Isn't there any other way to check the code like a lua debugger or so?

muunleit wrote:

Are you sure the awful.hooks.timer.register function is still useable?

Why? Is it supposed not to be useable anymore? Are we supposed to use "your" timer function now?

Offline

#5 2010-09-07 19:59:39

Sherwood51
Member
From: Geneva -Switzerland
Registered: 2010-05-25
Posts: 20
Website

Re: [SOLVED][Awesome] won't update widgets

Ok, I think you got it muunleit: http://awesome.naquadah.org/wiki/Awesom … 3.4#Timers
This is what I don't like about awesome: it always changes! It's too bad cause appart from that it's just so powerfull!

EDIT: OK, that did it. Thanks again.

Last edited by Sherwood51 (2010-09-07 20:48:33)

Offline

#6 2010-09-08 13:53:26

anrxc
Member
From: Croatia
Registered: 2008-03-22
Posts: 834
Website

Re: [SOLVED][Awesome] won't update widgets

This change was made 1 year ago. Btw not one like it since.


You need to install an RTFM interface.

Offline

#7 2010-09-09 08:21:33

Sherwood51
Member
From: Geneva -Switzerland
Registered: 2010-05-25
Posts: 20
Website

Re: [SOLVED][Awesome] won't update widgets

Ok but my old configuration was still working until a few days ago... So I did not notice

Offline

Board footer

Powered by FluxBB