[SOLVED]awesome wm - Modkey+Tab

Lets say we have opened 3 windows .. If we are touching Modkey + Tab it is cycling only 2 last used windows  ... how to set it to cycle all windows?
Last edited by xhc (2012-07-21 19:30:45)

I have default rc.lua and there is:
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))
awful.key({ modkey, }, "Tab",
function ()
awful.client.focus.history.previous()
if client.focus then
client.focus:raise()
end
end),
Last edited by xhc (2012-07-21 19:32:31)

Similar Messages

  • [SOLVED] awesome & urxvt results in some screen flickering

    Hi,
    i've been using awesome since a few weeks and i noticed a flickering problem when starting urxvt (via mod4+enter).
    urxvt starts, disappears, comes back again, disappears and so on.
    starting up urxvt (time until i get a usable promt) takes about 1-2 seconds.
    However, i don't know how to track the problem down. Maybe it is urxvt's (i think it is), maybe it is awesome's or even ati's fault (using 2.6.32 with open source ati driver).
    when i switch between multiple windows (using mod4+n) only urxvt windows are flickering. Switching between gui-apps (ff, dolphin, …) works as expected.
    maybe someone has an idea about this …
    Here are the configs:
    .Xdefaults:
    !URxvt settings
    !--[Title]--!
    URxvt*title: urxvtc
    URxvt*termName: rxvt-unicode
    URxvt*cursorBlink: true
    URxvt*urgentOnBell: true
    !--[Url's /launching/marking/yanking]--!
    URxvt.perl-ext: default,matcher
    URxvt.urlLauncher: /usr/bin/firefox
    URxvt.matcher.button: 1
    !--[Fonts]--!
    URxvt*font: xft:Bitstream Vera Sans Mono:pixelsize=14:antialias=false
    URxvt.italicFont: xft:Bitstream Vera Sans Mono:italic:autohint=true:antialias=false
    URxvt.boldItalicFont: xft:Bitstream Vera Sans Mono:bold:italic:autohint=true:antialias=false
    URxvt.underlineColor: yellow
    URxvt.scrollBar: false
    !--[Urxvt Options]--!
    URxvt.boldMode: false
    URxvt.imLocale: de_AT.UTF-8
    URxvt.loginShell: true
    URxvt.saveLines: 512
    URxvt.inheritPixmap: true
    URxvt.borderless: true
    URxvt.jumpScroll: true
    URxvt.tintColor: white
    URxvt.internalBorder: 0
    URxvt.cursorBlink: false
    URxvt.cursorColor: #dd9900
    URxvt.cursorColor2: #000000
    URxvt.background: #222222
    URxvt.foreground: #ddccbb
    URxvt.colorBD: #ffffff
    URxvt.colorIT: #bbbbbb
    URxvt.colorUL: #999999
    URxvt.underlineColor: #999999
    URxvt*saveLines: 512
    !URxvt*depth: 32
    !URxvt*background: rgba:02f0/04f0/04f0/cccc
    URxvt*transparent: true
    URxvt*shading: 10
    !--[Colours]--!
    !Theme One from
    !http://phraktured.net/terminal-colors/terminal%20theme.tags.html
    *background: rgb:00/00/00
    *foreground: rgb:a8/a8/a8
    *color0: rgb:00/00/00
    *color1: rgb:a8/00/00
    *color2: rgb:00/a8/00
    *color3: rgb:a8/54/00
    *color4: rgb:00/00/a8
    *color5: rgb:a8/00/a8
    *color6: rgb:00/a8/a8
    *color7: rgb:a8/a8/a8
    *color8: rgb:54/50/54
    *color9: rgb:f8/54/50
    *color10: rgb:50/fc/50
    *color11: rgb:f8/fc/50
    *color12: rgb:50/54/f8
    *color13: rgb:f8/54/f8
    *color14: rgb:50/fc/f8
    *color15: rgb:f8/fc/f8
    http://github.com/nblock/config/blob/master/.Xdefaults
    rc.lua:
    -- {{{ Load libraries
    -- Standard awesome library
    require("awful")
    require("awful.autofocus")
    require("awful.rules")
    -- Theme handling library
    require("beautiful")
    -- Notification library
    require("naughty")
    require("vicious")
    -- {{{ Variable definitions
    -- Themes define colours, icons, and wallpapers
    beautiful.init("/usr/share/awesome/themes/zenburn/theme.lua")
    -- This is used later as the default terminal and editor to run.
    terminal = "urxvtc"
    editor = "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.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.spiral, --7
    awful.layout.suit.spiral.dwindle, --8
    awful.layout.suit.max, --9
    awful.layout.suit.max.fullscreen, --10
    awful.layout.suit.magnifier, --11
    awful.layout.suit.floating --12
    -- some commands
    local commands = {}
    commands.suspend = "sudo pm-suspend"
    commands.help = "touch ~/seppal"
    commands.lock = "xscreensaver-command --lock"
    commands.screenshot = "scrot -e 'mv $f ~/bilder/screenshots'"
    --audio stuff
    commands.raisevol = "amixer set PCM 2%+"
    commands.lowervol = "amixer set PCM 2%-"
    commands.mute = "amixer sset PCM toggle"
    commands.cmusnext = "cmus-remote --next"
    commands.cmusprev = "cmus-remote --prev"
    commands.cmuspause = "cmus-remote --pause"
    commands.cmusplay = "cmus-remote --play"
    commands.calc = "krunner"
    --todo
    commands.fileman = "pcmanfm"
    commands.calc = "xcalc"
    commands.browser = "firefox"
    -- {{{ 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 download", "2 mail", "3 chat",
    "4 music", "5 news", "6 fm",
    7, 8, 9 }, s,
    {layouts[3], layouts[1], layouts[1], -- Tags: 1, 2, 3
    layouts[1], layouts[1], layouts[1], -- 4, 5 ,6
    layouts[1], layouts[1], layouts[1] -- 7, 8, 9
    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
    -- {{{ Widgets configuration
    -- {{{ Reusable separators
    local spacer = widget({ type = "textbox", name = "spacer" })
    local separator = widget({ type = "textbox", name = "separator" })
    spacer.text = " "
    separator.text = " <span foreground='red'>•</span> "
    -- {{{ CPU load
    local cpuwidget = widget({ type = "textbox" })
    vicious.register(cpuwidget, vicious.widgets.cpu, "<span foreground='orange'>load: </span><span foreground='green'>$2%</span><span foreground='orange'> - </span><span foreground='green'>$3%</span>")
    -- {{{ CPU temperature
    local thermalwidget = widget({ type = "textbox" })
    vicious.register(thermalwidget, vicious.widgets.thermal, "<span foreground='orange'>temp: </span><span foreground='green'>$1°C</span>", 20, "thermal_zone1")
    -- {{{ Battery state
    -- Widget icon
    -- baticon = widget({ type = "imagebox", name = "baticon" })
    -- baticon.image = image(beautiful.widget_bat)
    local batwidget = widget({ type = "textbox" })
    vicious.register(batwidget, vicious.widgets.bat, "<span foreground='orange'>bat: </span><span foreground='green'>$1$2%</span>", 60, "C1C5")
    -- {{{ Date and time
    local datewidget = widget({ type = "textbox" })
    vicious.register(datewidget, vicious.widgets.date, "<span foreground='green'>%a, %d.%m.%y - %H:%M</span>", 5)
    -- {{{ Volume widget
    local volwidget = widget({ type = "textbox" })
    vicious.register(volwidget, vicious.widgets.volume, "<span foreground='orange'>vol: </span><span foreground='green'>$1%</span>", 1, 'PCM')
    -- {{{ System tray
    systray = widget({ type = "systray" })
    -- {{{ Wibox initialisation
    local wibox = {}
    local promptbox = {}
    local layoutbox = {}
    local taglist = {}
    taglist.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))
    for s = 1, screen.count() do
    -- Create a promptbox
    promptbox[s] = awful.widget.prompt({ layout = awful.widget.layout.horizontal.leftright })
    -- Create a layoutbox
    layoutbox[s] = awful.widget.layoutbox(s)
    layoutbox[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
    taglist[s] = awful.widget.taglist(s, awful.widget.taglist.label.all, taglist.buttons)
    -- Create the wibox
    wibox[s] = awful.wibox({
    position = "top", screen = s,
    fg = beautiful.fg_normal, bg = beautiful.bg_normal
    -- Add widgets to the wibox
    wibox[s].widgets = {{
    launcher, taglist[s], layoutbox[s], promptbox[s],
    layout = awful.widget.layout.horizontal.leftright
    s == screen.count() and systray or nil,
    spacer, datewidget,
    separator, volwidget,
    separator, batwidget,
    separator, cpuwidget,
    separator, thermalwidget,
    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(
    --user defined
    awful.key({}, "XF86PowerOff", function() awful.util.spawn_with_shell(commands.suspend) end ),
    awful.key({}, "Help", function() awful.util.spawn_with_shell(commands.help) end ),
    awful.key({ modkey, }, "F12", function () awful.util.spawn_with_shell(commands.lock) end),
    --audio stuff
    awful.key({}, "XF86AudioMute", function() awful.util.spawn_with_shell(commands.mute) end ),
    awful.key({}, "XF86AudioRaiseVolume", function() awful.util.spawn_with_shell(commands.raisevol) end ),
    awful.key({}, "XF86AudioLowerVolume", function() awful.util.spawn_with_shell(commands.lowervol) end ),
    awful.key({}, "XF86AudioNext", function() awful.util.spawn_with_shell(commands.cmusnext) end ),
    awful.key({}, "XF86AudioPrev", function() awful.util.spawn_with_shell(commands.cmusprev) end ),
    awful.key({}, "XF86AudioPlay", function() awful.util.spawn_with_shell(commands.cmuspause) end ),
    awful.key({}, "XF86Tools", function() awful.util.spawn_with_shell(commands.cmusplay) end ),
    awful.key({}, "XF86Calculator", function() awful.util.spawn_with_shell(commands.calc) end ),
    awful.key({}, "Print", function() awful.util.spawn_with_shell(commands.screenshot) end ),
    -- awful.key({}, "XF86MyComputer", function() awful.util.spawn_with_shell(commands.fileman) end ),
    -- awful.key({}, "XF86Mail", function() awful.util.spawn_with_shell(commands.mail) end ),
    -- awful.key({}, "XF86HomePage", function() awful.util.spawn_with_shell(commands.browser) end ),
    -- awful.key({}, "XF86Sleep", function() awful.util.spawn_with_shell(commands.lock) end ),
    -- awful.key({"Control", "Mod1"}, "l", function() awful.util.spawn_with_shell(commands.lock) end ),
    --default bindings
    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, }, "n",
    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),
    -- Layout manipulation
    awful.key({ modkey, "Shift" }, "n", function () awful.client.swap.byidx( 1) end),
    awful.key({ modkey, "Shift" }, "k", function () awful.client.swap.byidx( -1) end),
    awful.key({ modkey, "Control" }, "n", 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 () promptbox[mouse.screen]:run() end),
    -- Run stuff in a Terminal
    awful.key({ modkey }, "x", function ()
    awful.prompt.run({ prompt = "Run in Terminal: " }, promptbox[mouse.screen].widget,
    function (prog)
    awful.util.spawn_with_shell(terminal .. " -name " .. prog .. " -e /bin/bash -c " .. prog)
    end)
    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, }, "j", 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 } },
    --floating apps
    { rule = { class = "pinentry-qt4" },
    properties = { floating = true } },
    { rule = { class = "Gimp" },
    properties = { floating = true } },
    --apptags
    --downloading stuff
    { rule = { class = "JDownloader" },
    properties = { tag = tags[1][1],switchtotag = true } },
    { rule = { instance = "rtorrent" },
    properties = { tag = tags[1][1],switchtotag = false } },
    -- mail
    { rule = { class = "Kmail" },
    properties = { tag = tags[1][2],switchtotag = true } },
    --chat and stuff like that
    { rule = { class = "Choqok" },
    properties = { tag = tags[1][3],switchtotag = false } },
    { rule = { class = "Kopete" },
    properties = { tag = tags[1][3],switchtotag = false } },
    -- cmus
    { rule = { instance = "cmus" },
    properties = { tag = tags[1][4],switchtotag = true } },
    -- news
    { rule = { instance = "newsbeuter" },
    properties = { tag = tags[1][5],switchtotag = true } },
    --file manager
    { rule = { class = "Dolphin" },
    properties = { tag = tags[1][6],switchtotag = true } },
    --misc stuff
    { rule = { class = "Konqueror" },
    properties = { tag = tags[1][9],switchtotag = true } },
    -- {{{ 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 })
    -- remove gaps
    c.size_hints_honor = false
    -- 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)
    -- {{{ Autostart
    os.execute("krandrtray &")
    -- vim: fdm=marker fdl=0 sts=4 ai
    http://github.com/nblock/config/blob/ma … ome/rc.lua
    Thanks.
    Last edited by nblock (2010-01-02 09:59:24)

    Try this .Xdefaults which works with awesome/urxvt.
    *utf8: 1
    *faceSize: 10
    *jumpScroll: true
    *multiScroll: true
    *boldMode: false
    *scrollBar: false
    *cutNewline: false
    *scrollTtyOutput: false
    *scrollKey: true
    *cursorBlink: true
    *dynamicColors: true
    *saveLines: 5000
    *geometry: 125x45
    ! URxvt
    URxvt*termName: xterm
    URxvt.font: xft:Bitstream Vera Sans Mono:antialias=true:pixelsize=12
    !urxvt.font: xft:Bitstream Vera Sans Mono-12:antialias=true
    URxvt*transparent: false
    URxvt*tintColor: #666666
    URxvt*shading: 50
    URxvt*scrollBar: false
    URxvt*internalBorder: 5
    URxvt*urgentOnBell: true
    URxvt*scrollTtyKeypress: true
    URxvt*underlineColor: yellow
    URxvt*perl-ext-common: default,matcher
    URxvt*urlLauncher: firefox
    URxvt*matcher.button: 1
    URxvt*matcher.pattern.1: \\bwww\\.[\\w-]\\.[\\w./?&@#-]*[\\w/-]
    ! Colours
    *background: #303030
    *foreground: #f2f2f2
    *cursorColor: #999
    *highlightColor: #333
    *color0: #101010
    *color1: #f13a21
    *color2: #93f91d
    *color3: #ffd00a
    *color4: #404f9e
    *color5: #ec0048
    *color6: #2aa7e7
    *color7: #f2f2f2
    *color8: #1d202f
    *color9: #ff361e
    *color10: #ffc005
    *color11: #93ff00
    *color12: #3071ff
    *color13: #ef0051
    *color14: #4bb8fd
    *color15: #a020f0
    Last edited by r6 (2010-01-02 05:05:11)

  • [SOLVED] Awesome's Revelation Won't Work

    Hi,
    I'm new to the Awesome WM so I will start this off by saying if you know if something little, stupid that might be causing this issue don't hesitate to mention it bc I may not know.  Anyways, I am loving using Awesome and have been messing with the config to get it to my liking. 
    I saw on the Arch Wiki that you can get "Compiz-like" effects using the Revelation widget; however, when I try to add it to my rc.lua my desktop restarts but the effects don't work and my background and a couple other configs are changed.  I tried removing the key bindings and just leaving the require ("revelation") to see if the key binding was formatted incorrectly but it still had the same problems.
    Does anyone know what might be causing these problems?  I followed the steps on the Awesome wiki on Revelation.  I was wondering if it had something to do with me copying the default config files to ~/.config/awesome as mentioned in the Arch Wiki but I am assuming it doesn't since the Arch wiki also mentions using Revelation.
    Below is my rc.lua w/ the revelation widget added (this is what would not work, just copied it then removed revelation again):
    -- Standard awesome library
    require("awful")
    require("awful.autofocus")
    require("awful.rules")
    -- Theme handling library
    require("beautiful")
    -- Notification library
    require("naughty")
    -- Widget library
    require("vicious")
    -- Compiz-like Effects
    require("revelation")
    -- {{{ Error handling
    -- Check if awesome encountered an error during startup and fell back to
    -- another config (This code will only ever execute for the fallback config)
    if awesome.startup_errors then
    naughty.notify({ preset = naughty.config.presets.critical,
    title = "Oops, there were errors during startup!",
    text = awesome.startup_errors })
    end
    -- Handle runtime errors after startup
    do
    local in_error = false
    awesome.add_signal("debug::error", function (err)
    -- Make sure we don't go into an endless error loop
    if in_error then return end
    in_error = true
    naughty.notify({ preset = naughty.config.presets.critical,
    title = "Oops, an error happened!",
    text = err })
    in_error = false
    end)
    end
    -- {{{ Variable definitions
    -- Themes define colours, icons, and wallpapers
    beautiful.init("/home/boswbr25/.config/awesome/themes/zenburn/theme.lua")
    -- This is used later as the default terminal and editor to run.
    terminal = "terminal"
    editor = os.getenv("EDITOR") or "nano"
    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 will hold all screen tags.
    tags = {
    names = { "main", "music", "www", "email", "office", "game", "float"},
    layout = { layouts[4], layouts[5], layouts[3], layouts[2], layouts[3],
    layouts[2], layouts[1]
    for s = 1, screen.count() do
    -- Each screen has its own tag table.
    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 .. " " .. awesome.conffile },
    { "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
    -- Pacman Widget
    pacwidget = widget({type="textbox"})
    vicious.register(pacwidget, vicious.widgets.pkg, "<span color='tan'><b> UPDATES: </b></span> $1 ", 1801, "Arch" )
    -- Initialize widget
    cpuwidget = awful.widget.graph()
    -- Graph properties
    cpuwidget:set_width(50)
    cpuwidget:set_background_color("#494B4F")
    cpuwidget:set_color("#FF5656")
    cpuwidget:set_gradient_colors({ "#FF5656", "#88A175", "#AECF96" })
    -- Register widget
    vicious.register(cpuwidget, vicious.widgets.cpu, "$1")
    -- 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 c == client.focus then
    c.minimized = true
    else
    if not c:isvisible() then
    awful.tag.viewonly(c:tags()[1])
    end
    -- This will also un-minimize
    -- the client, if needed
    client.focus = c
    c:raise()
    end
    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],
    pacwidget,
    mytextclock,
    cpuwidget,
    s == 1 and mysystray or nil,
    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}, "e", revelation)
    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({keygrabber=true}) 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),
    awful.key({ modkey, "Control" }, "n", awful.client.restore),
    -- 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, }, "t", function (c) c.ontop = not c.ontop end),
    awful.key({ modkey, }, "n",
    function (c)
    -- The client currently has the input focus, so it cannot be
    -- minimized, since minimized clients can't have the focus.
    c.minimized = true
    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 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)
    I tried messing with the format of the key binding to make it match the other key bindings in the default rc.lua but nothing seemed to make a difference.
    Thanks,
    ~Boz~
    Last edited by boswbr25 (2012-05-03 05:17:23)

    I'm wondering if it is my graphics card's lack of 3D support that is causing the problems.  I have an older computer but have got this type of effect to work on a few DE's.  Although, it cannot run GNOME 3 and will always go into Fallback mode.
    The following is the output of lspci | grep VGA if anyone knows if this could be the issue:
    [boswbr25@boz ~]$ lspci | grep VGA
    01:00.0 VGA compatible controller: Silicon Integrated Systems [SiS] 65x/M650/740 PCI/AGP VGA Display Adapter
    I totally forgot that this might be an issue when I asked the question.

  • [SOLVED] Awesome WM unresponsive

    Hello,
    I've used awesome in the past on my desktop, but have now come to installing it on my laptop. I use SLIM to login and in .xinit rc I have
    #!/bin/sh
    # ~/.xinitrc
    # Executed by startx (run your window manager from here)
    #exec gnome-session
    # exec startkde
    # exec startxfce4
    # ...or the Window Manager of your choice
    # xsetroot -cursor_name left_ptr
    #exec ck-launch-session gnome-session
    exec ck-launch-session awesome
    But, after logging in, SLIM disappears and I am left with nothing. No window manager, no system tray, nothing. ps -A shows X and awesome running. My rc.lua reads:
    -- Standard awesome library
    require("awful")
    require("awful.autofocus")
    require("awful.rules")
    -- Theme handling library
    require("beautiful")
    -- Notification library
    require("naughty")
    -- Widget Lib
    require("vicious")
    -- {{{ Variable definitions
    -- Themes define colours, icons, and wallpapers
    beautiful.init("/home/james/.config/awesome/themes/default/theme.lua")
    -- This is used later as the default terminal and editor to run.
    terminal = "gnome-terminal"
    editor = os.getenv("EDITOR") or "nano"
    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.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.spiral, --7
    awful.layout.suit.spiral.dwindle, --8
    awful.layout.suit.max, --9
    awful.layout.suit.max.fullscreen, --10
    awful.layout.suit.magnifier, --11
    awful.layout.suit.floating --12
    -- {{{ Tags
    -- Define a tag table which hold all screen tags.
    tags = {
    names = { "irssi", "gedit", "chrome", "fs",
    "terms", "vlc", "snd", "dl", "misc",
    layout = {
    layouts[9], layouts[1], layouts[9],
    layouts[2], layouts[1], layouts[12],
    layouts[5], layouts[3], layouts[12],
    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 }
    myevilmenu = {
    { "GnomeTerm", "gnome-terminal" },
    { "Irssi", "gnome-terminal --full-screen -e irssi"},
    { "Gedit", "gedit" },
    { "BlueFish", "bluefish-unstable" },
    { "AlsaMixer", "Eterm -e alsamixer" },
    { "Thunar", "thunar" },
    { "Chrome", "chromium-browser" },
    { "Deluge", "deluge" },
    { "DeVeDe", "devede" },
    { "VLC", "vlc" },
    { "Audacious2", "audacious2"}
    mymainmenu = awful.menu({ items = { { "pure evil", myevilmenu, beautiful.awesome_icon },
    { "awesome", myawesomemenu, beautiful.awesome_icon },
    { "open terminal", terminal }
    mylauncher = awful.widget.launcher({ image = image(beautiful.awesome_icon),
    menu = mymainmenu })
    -- Separators
    spacer = widget({ type = "textbox" })
    separator = widget({ type = "textbox" })
    spacer.text = " "
    separator.text = "|"
    -- {{{ Wibox
    -- Create a netwidget (usage)
    dnicon = widget({ type = "imagebox" })
    upicon = widget({ type = "imagebox" })
    dnicon.image = image("/home/darthlukan/.config/awesome/icons/down.png")
    upicon.image = image("/home/darthlukan/.config/awesome/icons/up.png")
    -- Initialize widget
    netwidget = widget({ type = "textbox" })
    -- Register widget
    vicious.register(netwidget, vicious.widgets.net, "${wlan0 up_kb}kb/s / ${wlan0 down_kb}kb/s", 1)
    -- Create an fswidget (Eat your heart out Saethr!)
    fsicon = widget({ type = "imagebox" })
    fsicon.image = image("/home/darthlukan/.config/awesome/icons/disk.png")
    -- Initialize widget
    fswidget = widget({ type = "textbox" })
    -- Register widget
    vicious.register(fswidget, vicious.widgets.fs, "Root ${/ used}GB / ${/ avail}GB", 37)
    -- Create a gmailwidget (inbox status)
    gmailicon = widget({ type = "imagebox" })
    gmailicon.image = image("/home/darthlukan/.config/awesome/icons/mail.png")
    -- Initialize widget
    gmailwidget = widget({ type = "textbox" })
    -- Register widget
    vicious.register(gmailwidget, vicious.widgets.gmail, "${count}", 260)
    -- Create a batwidget (status chrg%)
    baticon = widget({ type = "imagebox" })
    baticon.image = image("/home/darthlukan/.config/awesome/icons/bat.png")
    -- Initialize widget
    batwidget = widget({ type = "textbox" })
    -- Register widget
    vicious.register(batwidget, vicious.widgets.bat, "$1$2%", 31, "BAT1")
    -- Create a memwidget (usage$ usedMB/TotalMB)
    memicon = widget({ type = "imagebox" })
    memicon.image = image("/home/darthlukan/.config/awesome/icons/mem.png")
    -- Initialize widget
    memwidget = widget({ type = "textbox" })
    -- Register widget
    vicious.register(memwidget, vicious.widgets.mem, "$1% ($2MB/$3MB)", 13)
    -- Create a cpuwidget (usage%)
    cpuicon = widget({ type = "imagebox" })
    cpuicon.image = image("/home/darthlukan/.config/awesome/icons/cpu.png")
    -- Initialize widget
    cpuwidget = widget({ type = "textbox" })
    -- Register widget
    vicious.register(cpuwidget, vicious.widgets.cpu, "$1%:$2%", 2)
    -- Create a wifiwidget
    wifiicon = widget({ type = "imagebox" })
    wifiicon.image = image("/home/darthlukan/.config/awesome/icons/wifi.png")
    -- Initialize widget
    wifiwidget = widget({ type = "textbox" })
    -- Register widget
    vicious.register(wifiwidget, vicious.widgets.wifi, "${ssid} ${link}% ${rate}", 5, "wlan0")
    -- Create a textclock widget
    clockicon = widget({ type = "imagebox" })
    clockicon.image = image("/home/darthlukan/.config/awesome/icons/time.png")
    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", height = 14, 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],
    mytextclock, spacer, clockicon,
    separator, batwidget, spacer, baticon, separator,
    upicon, netwidget, dnicon, separator,
    wifiwidget, spacer, wifiicon, separator,
    fswidget, spacer, fsicon, separator,
    memwidget, spacer, memicon, separator,
    cpuwidget, spacer, cpuicon, separator,
    gmailwidget, spacer, gmailicon, separator,
    s == 1 and mysystray or nil,
    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),
    -- 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)
    -- 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 } },
    -- 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)
    -- Autostart my personal stuffs
    os.execute("gnome-terminal &")
    It's poached off one of the supplied configs on the wiki, but with the path to the theme corrected. I also tried using the default theme.
    Gnome works perfectly so I assume awesome is kicking up an error, but I can't find any log files anywhere! I've searched the forums for similar problems but I can't figure out what's going wrong - I've done everything by the book!
    EDIT: I realise some of the icon paths are still at the default, but I plan on fixing that later when the thing actually works! Just some missing icons wouldn't cause all this, would it?
    Last edited by cougem (2010-07-17 15:56:17)

    Hello, the Xorg log reads
    [ 2979.041]
    This is a pre-release version of the X server from The X.Org Foundation.
    It is not supported in any way.
    Bugs may be filed in the bugzilla at http://bugs.freedesktop.org/.
    Select the "xorg" product for bugs you find in this release.
    Before reporting bugs in pre-release versions please check the
    latest version in the X.Org Foundation git repository.
    See http://wiki.x.org/wiki/GitPage for git access instructions.
    [ 2979.042]
    X.Org X Server 1.8.1.902 (1.8.2 RC 2)
    Release Date: 2010-06-21
    [ 2979.043] X Protocol Version 11, Revision 0
    [ 2979.043] Build Operating System: Linux 2.6.34-ARCH i686
    [ 2979.043] Current Operating System: Linux pico 2.6.34-ARCH #1 SMP PREEMPT Mon Jul 5 21:03:38 UTC 2010 i686
    [ 2979.044] Kernel command line: root=/dev/disk/by-uuid/e269767a-18f1-4473-a77b-37ca137f6dec ro
    [ 2979.044] Build Date: 21 June 2010 11:54:27AM
    [ 2979.044]
    [ 2979.044] Current version of pixman: 0.18.2
    [ 2979.044] Before reporting problems, check http://wiki.x.org
    to make sure that you have the latest version.
    [ 2979.045] Markers: (--) probed, (**) from config file, (==) default setting,
    (++) from command line, (!!) notice, (II) informational,
    (WW) warning, (EE) error, (NI) not implemented, (??) unknown.
    [ 2979.046] (==) Log file: "/var/log/Xorg.0.log", Time: Sat Jul 17 17:42:38 2010
    [ 2979.046] (==) Using config file: "/etc/X11/xorg.conf"
    [ 2979.047] (==) Using config directory: "/etc/X11/xorg.conf.d"
    [ 2979.047] (==) ServerLayout "Layout0"
    [ 2979.047] (**) |-->Screen "Screen0" (0)
    [ 2979.047] (**) | |-->Monitor "Monitor0"
    [ 2979.047] (**) | |-->Device "Device0"
    [ 2979.047] (**) |-->Input Device "Keyboard0"
    [ 2979.047] (**) |-->Input Device "Mouse0"
    [ 2979.047] (==) Automatically adding devices
    [ 2979.047] (==) Automatically enabling devices
    [ 2979.047] (WW) The directory "/usr/share/fonts/OTF/" does not exist.
    [ 2979.047] Entry deleted from font path.
    [ 2979.047] (==) FontPath set to:
    /usr/share/fonts/misc/,
    /usr/share/fonts/TTF/,
    /usr/share/fonts/Type1/,
    /usr/share/fonts/100dpi/,
    /usr/share/fonts/75dpi/
    [ 2979.047] (==) ModulePath set to "/usr/lib/xorg/modules"
    [ 2979.048] (WW) AllowEmptyInput is on, devices using drivers 'kbd', 'mouse' or 'vmmouse' will be disabled.
    [ 2979.048] (WW) Disabling Keyboard0
    [ 2979.048] (WW) Disabling Mouse0
    [ 2979.048] (II) Loader magic: 0x81e9d00
    [ 2979.048] (II) Module ABI versions:
    [ 2979.048] X.Org ANSI C Emulation: 0.4
    [ 2979.048] X.Org Video Driver: 7.0
    [ 2979.048] X.Org XInput driver : 9.0
    [ 2979.048] X.Org Server Extension : 3.0
    [ 2979.055] (--) PCI:*(0:1:0:0) 10de:06ec:144d:c04f nVidia Corporation G98M [GeForce G 105M] rev 161, Mem @ 0xce000000/16777216, 0xd0000000/268435456, 0xcc000000/33554432, I/O @ 0x00002000/128
    [ 2979.055] (WW) Open ACPI failed (/var/run/acpid.socket) (No such file or directory)
    [ 2979.055] (WW) "dri" will not be loaded unless you've specified it to be loaded elsewhere.
    [ 2979.055] (WW) "dri2" will not be loaded unless you've specified it to be loaded elsewhere.
    [ 2979.055] (II) "extmod" will be loaded by default.
    [ 2979.055] (II) "dbe" will be loaded by default.
    [ 2979.055] (II) "glx" will be loaded. This was enabled by default and also specified in the config file.
    [ 2979.055] (II) "record" will be loaded by default.
    [ 2979.055] (II) "dri" will be loaded even though the default is to disable it.
    [ 2979.055] (II) "dri2" will be loaded even though the default is to disable it.
    [ 2979.055] (II) LoadModule: "glx"
    [ 2979.055] (II) Loading /usr/lib/xorg/modules/extensions/libglx.so
    [ 2979.075] (II) Module glx: vendor="NVIDIA Corporation"
    [ 2979.075] compiled for 4.0.2, module version = 1.0.0
    [ 2979.075] Module class: X.Org Server Extension
    [ 2979.075] (II) NVIDIA GLX Module 256.35 Wed Jun 16 19:21:24 PDT 2010
    [ 2979.075] (II) Loading extension GLX
    [ 2979.075] (II) LoadModule: "extmod"
    [ 2979.076] (II) Loading /usr/lib/xorg/modules/extensions/libextmod.so
    [ 2979.076] (II) Module extmod: vendor="X.Org Foundation"
    [ 2979.076] compiled for 1.8.1.902, module version = 1.0.0
    [ 2979.076] Module class: X.Org Server Extension
    [ 2979.076] ABI class: X.Org Server Extension, version 3.0
    [ 2979.076] (II) Loading extension MIT-SCREEN-SAVER
    [ 2979.076] (II) Loading extension XFree86-VidModeExtension
    [ 2979.076] (II) Loading extension XFree86-DGA
    [ 2979.076] (II) Loading extension DPMS
    [ 2979.076] (II) Loading extension XVideo
    [ 2979.076] (II) Loading extension XVideo-MotionCompensation
    [ 2979.076] (II) Loading extension X-Resource
    [ 2979.076] (II) LoadModule: "dbe"
    [ 2979.076] (II) Loading /usr/lib/xorg/modules/extensions/libdbe.so
    [ 2979.076] (II) Module dbe: vendor="X.Org Foundation"
    [ 2979.076] compiled for 1.8.1.902, module version = 1.0.0
    [ 2979.076] Module class: X.Org Server Extension
    [ 2979.076] ABI class: X.Org Server Extension, version 3.0
    [ 2979.076] (II) Loading extension DOUBLE-BUFFER
    [ 2979.076] (II) LoadModule: "record"
    [ 2979.076] (II) Loading /usr/lib/xorg/modules/extensions/librecord.so
    [ 2979.076] (II) Module record: vendor="X.Org Foundation"
    [ 2979.076] compiled for 1.8.1.902, module version = 1.13.0
    [ 2979.076] Module class: X.Org Server Extension
    [ 2979.076] ABI class: X.Org Server Extension, version 3.0
    [ 2979.076] (II) Loading extension RECORD
    [ 2979.076] (II) LoadModule: "nvidia"
    [ 2979.076] (II) Loading /usr/lib/xorg/modules/drivers/nvidia_drv.so
    [ 2979.077] (II) Module nvidia: vendor="NVIDIA Corporation"
    [ 2979.077] compiled for 4.0.2, module version = 1.0.0
    [ 2979.077] Module class: X.Org Video Driver
    [ 2979.077] (II) NVIDIA dlloader X Driver 256.35 Wed Jun 16 18:59:34 PDT 2010
    [ 2979.077] (II) NVIDIA Unified Driver for all Supported NVIDIA GPUs
    [ 2979.077] (--) using VT number 8
    [ 2979.081] (II) Primary Device is: PCI 01@00:00:0
    [ 2979.081] (II) Loading sub module "fb"
    [ 2979.081] (II) LoadModule: "fb"
    [ 2979.081] (II) Loading /usr/lib/xorg/modules/libfb.so
    [ 2979.081] (II) Module fb: vendor="X.Org Foundation"
    [ 2979.081] compiled for 1.8.1.902, module version = 1.0.0
    [ 2979.081] ABI class: X.Org ANSI C Emulation, version 0.4
    [ 2979.081] (II) Loading sub module "wfb"
    [ 2979.081] (II) LoadModule: "wfb"
    [ 2979.081] (II) Loading /usr/lib/xorg/modules/libwfb.so
    [ 2979.081] (II) Module wfb: vendor="X.Org Foundation"
    [ 2979.081] compiled for 1.8.1.902, module version = 1.0.0
    [ 2979.081] ABI class: X.Org ANSI C Emulation, version 0.4
    [ 2979.081] (II) Loading sub module "ramdac"
    [ 2979.081] (II) LoadModule: "ramdac"
    [ 2979.081] (II) Module "ramdac" already built-in
    [ 2979.081] (**) NVIDIA(0): Depth 24, (--) framebuffer bpp 32
    [ 2979.081] (==) NVIDIA(0): RGB weight 888
    [ 2979.081] (==) NVIDIA(0): Default visual is TrueColor
    [ 2979.082] (==) NVIDIA(0): Using gamma correction (1.0, 1.0, 1.0)
    [ 2979.082] (**) NVIDIA(0): Option "NoLogo" "true"
    [ 2979.082] (**) NVIDIA(0): Option "RenderAccel" "true"
    [ 2979.082] (**) NVIDIA(0): Enabling RENDER acceleration
    [ 2979.082] (II) NVIDIA(0): Support for GLX with the Damage and Composite X extensions is
    [ 2979.082] (II) NVIDIA(0): enabled.
    [ 2979.681] (II) NVIDIA(0): NVIDIA GPU GeForce G 105M (G98) at PCI:1:0:0 (GPU-0)
    [ 2979.681] (--) NVIDIA(0): Memory: 524288 kBytes
    [ 2979.681] (--) NVIDIA(0): VideoBIOS: 62.98.57.00.fa
    [ 2979.681] (II) NVIDIA(0): Detected PCI Express Link width: 16X
    [ 2979.681] (--) NVIDIA(0): Interlaced video modes are supported on this GPU
    [ 2979.681] (--) NVIDIA(0): Connected display device(s) on GeForce G 105M at PCI:1:0:0:
    [ 2979.681] (--) NVIDIA(0): Seiko/Epson (DFP-0)
    [ 2979.681] (--) NVIDIA(0): Seiko/Epson (DFP-0): 330.0 MHz maximum pixel clock
    [ 2979.681] (--) NVIDIA(0): Seiko/Epson (DFP-0): Internal Dual Link LVDS
    [ 2979.726] (II) NVIDIA(0): Assigned Display Device: DFP-0
    [ 2979.726] (==) NVIDIA(0):
    [ 2979.726] (==) NVIDIA(0): No modes were requested; the default mode "nvidia-auto-select"
    [ 2979.726] (==) NVIDIA(0): will be used as the requested mode.
    [ 2979.726] (==) NVIDIA(0):
    [ 2979.726] (II) NVIDIA(0): Validated modes:
    [ 2979.726] (II) NVIDIA(0): "nvidia-auto-select"
    [ 2979.726] (II) NVIDIA(0): Virtual screen size determined to be 1366 x 768
    [ 2980.790] (--) NVIDIA(0): DPI set to (115, 114); computed from "UseEdidDpi" X config
    [ 2980.790] (--) NVIDIA(0): option
    [ 2980.790] (==) NVIDIA(0): Enabling 32-bit ARGB GLX visuals.
    [ 2980.790] (--) Depth 24 pixmap format is 32 bpp
    [ 2980.790] (II) NVIDIA: Using 768.00 MB of virtual memory for indirect memory access.
    [ 2980.791] (II) NVIDIA(0): Initialized GPU GART.
    [ 2980.795] (II) NVIDIA(0): ACPI: failed to connect to the ACPI event daemon; the daemon
    [ 2980.795] (II) NVIDIA(0): may not be running or the "AcpidSocketPath" X
    [ 2980.795] (II) NVIDIA(0): configuration option may not be set correctly. When the
    [ 2980.795] (II) NVIDIA(0): ACPI event daemon is available, the NVIDIA X driver will
    [ 2980.795] (II) NVIDIA(0): try to use it to receive ACPI event notifications. For
    [ 2980.795] (II) NVIDIA(0): details, please see the "ConnectToAcpid" and
    [ 2980.795] (II) NVIDIA(0): "AcpidSocketPath" X configuration options in Appendix B: X
    [ 2980.795] (II) NVIDIA(0): Config Options in the README.
    [ 2980.796] (II) NVIDIA(0): ACPI display change hotkey events enabled: the X server is new
    [ 2980.796] (II) NVIDIA(0): enough to receive ACPI hotkey events.
    [ 2980.796] (II) NVIDIA(0): ACPI brightness change hotkey events enabled.
    [ 2980.798] (II) NVIDIA(0): Setting mode "nvidia-auto-select"
    [ 2981.075] (II) Loading extension NV-GLX
    [ 2981.104] (II) NVIDIA(0): Initialized OpenGL Acceleration
    [ 2981.113] (==) NVIDIA(0): Disabling shared memory pixmaps
    [ 2981.113] (II) NVIDIA(0): Initialized X Rendering Acceleration
    [ 2981.113] (==) NVIDIA(0): Backing store disabled
    [ 2981.113] (==) NVIDIA(0): Silken mouse enabled
    [ 2981.120] (**) NVIDIA(0): DPMS enabled
    [ 2981.120] (II) Loading extension NV-CONTROL
    [ 2981.120] (II) Loading extension XINERAMA
    [ 2981.120] (WW) NVIDIA(0): Option "EnablePageFlip" is not used
    [ 2981.120] (II) Loading sub module "dri2"
    [ 2981.120] (II) LoadModule: "dri2"
    [ 2981.121] (II) Loading /usr/lib/xorg/modules/extensions/libdri2.so
    [ 2981.121] (II) Module dri2: vendor="X.Org Foundation"
    [ 2981.121] compiled for 1.8.1.902, module version = 1.2.0
    [ 2981.121] ABI class: X.Org Server Extension, version 3.0
    [ 2981.121] (II) Loading extension DRI2
    [ 2981.121] (II) NVIDIA(0): [DRI2] Setup complete
    [ 2981.121] (II) NVIDIA(0): [DRI2] VDPAU driver: nvidia
    [ 2981.121] (==) RandR enabled
    [ 2981.121] (II) Initializing built-in extension Generic Event Extension
    [ 2981.121] (II) Initializing built-in extension SHAPE
    [ 2981.121] (II) Initializing built-in extension MIT-SHM
    [ 2981.121] (II) Initializing built-in extension XInputExtension
    [ 2981.121] (II) Initializing built-in extension XTEST
    [ 2981.121] (II) Initializing built-in extension BIG-REQUESTS
    [ 2981.121] (II) Initializing built-in extension SYNC
    [ 2981.121] (II) Initializing built-in extension XKEYBOARD
    [ 2981.121] (II) Initializing built-in extension XC-MISC
    [ 2981.121] (II) Initializing built-in extension SECURITY
    [ 2981.121] (II) Initializing built-in extension XINERAMA
    [ 2981.121] (II) Initializing built-in extension XFIXES
    [ 2981.121] (II) Initializing built-in extension RENDER
    [ 2981.121] (II) Initializing built-in extension RANDR
    [ 2981.121] (II) Initializing built-in extension COMPOSITE
    [ 2981.121] (II) Initializing built-in extension DAMAGE
    [ 2981.121] (II) Initializing extension GLX
    [ 2981.258] (II) config/udev: Adding input device Power Button (/dev/input/event5)
    [ 2981.258] (**) Power Button: Applying InputClass "evdev keyboard catchall"
    [ 2981.258] (II) LoadModule: "evdev"
    [ 2981.259] (II) Loading /usr/lib/xorg/modules/input/evdev_drv.so
    [ 2981.259] (II) Module evdev: vendor="X.Org Foundation"
    [ 2981.259] compiled for 1.8.0, module version = 2.4.0
    [ 2981.259] Module class: X.Org XInput Driver
    [ 2981.259] ABI class: X.Org XInput driver, version 9.0
    [ 2981.259] (**) Power Button: always reports core events
    [ 2981.259] (**) Power Button: Device: "/dev/input/event5"
    [ 2981.266] (II) Power Button: Found keys
    [ 2981.266] (II) Power Button: Configuring as keyboard
    [ 2981.266] (II) XINPUT: Adding extended input device "Power Button" (type: KEYBOARD)
    [ 2981.266] (**) Option "xkb_rules" "evdev"
    [ 2981.266] (**) Option "xkb_model" "evdev"
    [ 2981.266] (**) Option "xkb_layout" "us"
    [ 2981.299] (II) config/udev: Adding input device Video Bus (/dev/input/event6)
    [ 2981.299] (**) Video Bus: Applying InputClass "evdev keyboard catchall"
    [ 2981.299] (**) Video Bus: always reports core events
    [ 2981.299] (**) Video Bus: Device: "/dev/input/event6"
    [ 2981.309] (II) Video Bus: Found keys
    [ 2981.309] (II) Video Bus: Configuring as keyboard
    [ 2981.309] (II) XINPUT: Adding extended input device "Video Bus" (type: KEYBOARD)
    [ 2981.309] (**) Option "xkb_rules" "evdev"
    [ 2981.309] (**) Option "xkb_model" "evdev"
    [ 2981.309] (**) Option "xkb_layout" "us"
    [ 2981.310] (II) config/udev: Adding input device Power Button (/dev/input/event3)
    [ 2981.311] (**) Power Button: Applying InputClass "evdev keyboard catchall"
    [ 2981.311] (**) Power Button: always reports core events
    [ 2981.311] (**) Power Button: Device: "/dev/input/event3"
    [ 2981.323] (II) Power Button: Found keys
    [ 2981.323] (II) Power Button: Configuring as keyboard
    [ 2981.323] (II) XINPUT: Adding extended input device "Power Button" (type: KEYBOARD)
    [ 2981.323] (**) Option "xkb_rules" "evdev"
    [ 2981.323] (**) Option "xkb_model" "evdev"
    [ 2981.323] (**) Option "xkb_layout" "us"
    [ 2981.323] (II) config/udev: Adding input device Lid Switch (/dev/input/event2)
    [ 2981.323] (II) No input driver/identifier specified (ignoring)
    [ 2981.323] (II) config/udev: Adding input device Sleep Button (/dev/input/event4)
    [ 2981.323] (**) Sleep Button: Applying InputClass "evdev keyboard catchall"
    [ 2981.323] (**) Sleep Button: always reports core events
    [ 2981.323] (**) Sleep Button: Device: "/dev/input/event4"
    [ 2981.336] (II) Sleep Button: Found keys
    [ 2981.336] (II) Sleep Button: Configuring as keyboard
    [ 2981.336] (II) XINPUT: Adding extended input device "Sleep Button" (type: KEYBOARD)
    [ 2981.336] (**) Option "xkb_rules" "evdev"
    [ 2981.336] (**) Option "xkb_model" "evdev"
    [ 2981.336] (**) Option "xkb_layout" "us"
    [ 2981.337] (II) config/udev: Adding input device Namuga 1.3M Webcam (/dev/input/event8)
    [ 2981.337] (**) Namuga 1.3M Webcam: Applying InputClass "evdev keyboard catchall"
    [ 2981.337] (**) Namuga 1.3M Webcam: always reports core events
    [ 2981.338] (**) Namuga 1.3M Webcam: Device: "/dev/input/event8"
    [ 2981.349] (II) Namuga 1.3M Webcam: Found keys
    [ 2981.349] (II) Namuga 1.3M Webcam: Configuring as keyboard
    [ 2981.349] (II) XINPUT: Adding extended input device "Namuga 1.3M Webcam" (type: KEYBOARD)
    [ 2981.349] (**) Option "xkb_rules" "evdev"
    [ 2981.349] (**) Option "xkb_model" "evdev"
    [ 2981.349] (**) Option "xkb_layout" "us"
    [ 2981.350] (II) config/udev: Adding input device HDA Digital PCBeep (/dev/input/event9)
    [ 2981.350] (II) No input driver/identifier specified (ignoring)
    [ 2981.353] (II) config/udev: Adding input device AT Translated Set 2 keyboard (/dev/input/event0)
    [ 2981.353] (**) AT Translated Set 2 keyboard: Applying InputClass "evdev keyboard catchall"
    [ 2981.353] (**) AT Translated Set 2 keyboard: always reports core events
    [ 2981.353] (**) AT Translated Set 2 keyboard: Device: "/dev/input/event0"
    [ 2981.363] (II) AT Translated Set 2 keyboard: Found keys
    [ 2981.363] (II) AT Translated Set 2 keyboard: Configuring as keyboard
    [ 2981.363] (II) XINPUT: Adding extended input device "AT Translated Set 2 keyboard" (type: KEYBOARD)
    [ 2981.363] (**) Option "xkb_rules" "evdev"
    [ 2981.363] (**) Option "xkb_model" "evdev"
    [ 2981.363] (**) Option "xkb_layout" "us"
    [ 2981.363] (II) config/udev: Adding input device SynPS/2 Synaptics TouchPad (/dev/input/event7)
    [ 2981.363] (**) SynPS/2 Synaptics TouchPad: Applying InputClass "evdev touchpad catchall"
    [ 2981.363] (**) SynPS/2 Synaptics TouchPad: Applying InputClass "touchpad catchall"
    [ 2981.363] (II) LoadModule: "synaptics"
    [ 2981.363] (II) Loading /usr/lib/xorg/modules/input/synaptics_drv.so
    [ 2981.363] (II) Module synaptics: vendor="X.Org Foundation"
    [ 2981.363] compiled for 1.8.0.902, module version = 1.2.2
    [ 2981.363] Module class: X.Org XInput Driver
    [ 2981.363] ABI class: X.Org XInput driver, version 9.0
    [ 2981.363] (II) Synaptics touchpad driver version 1.2.2
    [ 2981.364] (**) Option "Device" "/dev/input/event7"
    [ 2981.403] (II) SynPS/2 Synaptics TouchPad: x-axis range 1472 - 5472
    [ 2981.403] (II) SynPS/2 Synaptics TouchPad: y-axis range 1408 - 4448
    [ 2981.403] (II) SynPS/2 Synaptics TouchPad: pressure range 0 - 255
    [ 2981.403] (II) SynPS/2 Synaptics TouchPad: finger width range 0 - 0
    [ 2981.403] (II) SynPS/2 Synaptics TouchPad: buttons: left right
    [ 2981.403] (**) Option "TapButton1" "1"
    [ 2981.403] (**) Option "TapButton2" "2"
    [ 2981.403] (**) Option "TapButton3" "3"
    [ 2981.429] (--) SynPS/2 Synaptics TouchPad: touchpad found
    [ 2981.429] (**) SynPS/2 Synaptics TouchPad: always reports core events
    [ 2981.443] (II) XINPUT: Adding extended input device "SynPS/2 Synaptics TouchPad" (type: TOUCHPAD)
    [ 2981.443] (**) SynPS/2 Synaptics TouchPad: (accel) keeping acceleration scheme 1
    [ 2981.443] (**) SynPS/2 Synaptics TouchPad: (accel) acceleration profile 0
    [ 2981.443] (**) SynPS/2 Synaptics TouchPad: (accel) acceleration factor: 2.000
    [ 2981.443] (**) SynPS/2 Synaptics TouchPad: (accel) acceleration threshold: 4
    [ 2981.469] (--) SynPS/2 Synaptics TouchPad: touchpad found
    [ 2981.469] (II) config/udev: Adding input device SynPS/2 Synaptics TouchPad (/dev/input/mouse0)
    [ 2981.469] (**) SynPS/2 Synaptics TouchPad: Applying InputClass "touchpad catchall"
    [ 2981.469] (II) Synaptics touchpad driver version 1.2.2
    [ 2981.923] SynPS/2 Synaptics TouchPad no synaptics event device found
    [ 2981.923] (**) Option "Device" "/dev/input/mouse0"
    [ 2981.936] (**) Option "TapButton1" "1"
    [ 2981.936] (**) Option "TapButton2" "2"
    [ 2981.936] (**) Option "TapButton3" "3"
    [ 2981.956] Query no Synaptics: 6003C8
    [ 2981.956] (--) SynPS/2 Synaptics TouchPad: no supported touchpad found
    [ 2981.956] (EE) SynPS/2 Synaptics TouchPad Unable to query/initialize Synaptics hardware.
    [ 2981.969] (EE) PreInit failed for input device "SynPS/2 Synaptics TouchPad"
    [ 2981.969] (II) UnloadModule: "synaptics"
    [ 2981.969] (II) config/udev: Adding input device PC Speaker (/dev/input/event1)
    [ 2981.969] (II) No input driver/identifier specified (ignoring)
    [ 3024.385] (II) UnloadModule: "synaptics"
    [ 3024.385] (II) AT Translated Set 2 keyboard: Close
    [ 3024.385] (II) UnloadModule: "evdev"
    [ 3024.385] (II) Namuga 1.3M Webcam: Close
    [ 3024.385] (II) UnloadModule: "evdev"
    [ 3024.385] (II) Sleep Button: Close
    [ 3024.385] (II) UnloadModule: "evdev"
    [ 3024.385] (II) Power Button: Close
    [ 3024.385] (II) UnloadModule: "evdev"
    [ 3024.385] (II) Video Bus: Close
    [ 3024.385] (II) UnloadModule: "evdev"
    [ 3024.385] (II) Power Button: Close
    [ 3024.385] (II) UnloadModule: "evdev"

  • [SOLVED] Awesome is not recognizing widgets

    Hey everybody,
    So this is my first (non-virtualbox) arch install. I just switched over from crunchbang. I had awesome installed on crunchbang and used that as my primary window manager. So I saved all of my configs and everything so that I could use them on arch. I got arch installed and then awesome, and awesome works well. I am using it right now. But as soon as I started trying to add widgets it wouldn't let me. Every time I restart it awesome reverts to the rc.lua in /etc/xdg... and gives me a warning message saying:
    Oops, there were errors during startup!
    /home/nathan/.config/awesome/rc.lua:117: attempt to call global 'widget' (a nil value)
    The line it is referring to is this:
    separator = widget({ type = "textbox" })
    Also, all of the requires at the top currently look like this:
    -- Standard awesome library
    local gears = require("gears")
    local awful = require("awful")
    awful.rules = require("awful.rules")
    require("awful.autofocus")
    -- Widget and layout library
    wibox = require("wibox")
    -- Theme handling library
    local beautiful = require("beautiful")
    -- Notification library
    local naughty = require("naughty")
    local menubar = require("menubar")
    So I tried to google and search the awesome wiki and the arch wiki for how it is done on arch. From everything I have found I am doing it correctly, but I must be missing something. One thought was that it might be a result of the most recent awesome update. I think it was on the 4th. Any ideas?
    Last edited by nhare330 (2013-01-09 00:21:05)

    Here it is. My rc.lua:
    -- Standard awesome library
    local gears = require("gears")
    local awful = require("awful")
    awful.rules = require("awful.rules")
    require("awful.autofocus")
    -- Widget and layout library
    local wibox = require("wibox")
    local vicious = require("vicious")
    -- Theme handling library
    local beautiful = require("beautiful")
    -- Notification library
    local naughty = require("naughty")
    local menubar = require("menubar")
    -- {{{ Error handling
    -- Check if awesome encountered an error during startup and fell back to
    -- another config (This code will only ever execute for the fallback config)
    if awesome.startup_errors then
    naughty.notify({ preset = naughty.config.presets.critical,
    title = "Oops, there were errors during startup!",
    text = awesome.startup_errors })
    end
    -- Handle runtime errors after startup
    do
    local in_error = false
    awesome.connect_signal("debug::error", function (err)
    -- Make sure we don't go into an endless error loop
    if in_error then return end
    in_error = true
    naughty.notify({ preset = naughty.config.presets.critical,
    title = "Oops, an error happened!",
    text = err })
    in_error = false
    end)
    end
    -- {{{ Variable definitions
    -- Themes define colours, icons, and wallpapers
    beautiful.init("/usr/share/awesome/themes/zenburn/theme.lua")
    -- This is used later as the default terminal and editor to run.
    terminal = "lxterminal"
    editor = os.getenv("EDITOR") or "nano"
    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.
    local 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
    -- {{{ Wallpaper
    if beautiful.wallpaper then
    for s = 1, screen.count() do
    gears.wallpaper.maximized(beautiful.wallpaper, s, true)
    end
    end
    -- {{{ Tags
    -- Define a tag table which hold all screen tags.
    tags = {
    names = { "➊ ", "➋ ", "➌ ", "➍ ", "➎ ", "◌ " },
    layout = { layouts[2], layouts[10], layouts[10], layouts[1], layouts[1], layouts[10]
    for s = 1, screen.count() do
    -- Each screen has its own tag table.
    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 .. " " .. awesome.conffile },
    { "restart", awesome.restart },
    { "quit", awesome.quit }
    mymainmenu = awful.menu({ items = { { "awesome", myawesomemenu, beautiful.awesome_icon },
    { "open terminal", terminal }
    mylauncher = awful.widget.launcher({ image = beautiful.awesome_icon,
    menu = mymainmenu })
    -- Menubar configuration
    menubar.utils.terminal = terminal -- Set the terminal for applications that require it
    -- {{{ Wibox
    -- Separator
    separator = wibox.widget.textbox()
    separator:set_text(" | ")
    -- Spacer
    spacer = wibox.widget.textbox()
    spacer:set_text(" ")
    -- Network usage widget
    netwidget = wibox.widget.textbox()
    vicious.register(netwidget, vicious.widgets.net, '<span color="#CDBC73">${eth0 down_kb}</span> <span color="#7F9F7F">${eth0 up_kb}</span>', 3)
    -- Memory widget
    memwidget = wibox.widget.textbox()
    memwidget_t = awful.tooltip({ objects = {memwidget}, })
    vicious.register(memwidget, vicious.widgets.mem,
    function (widget, args)
    memwidget_t:set_text('<span color="#9868B1"> mem: ' ..args[2].. '/' ..args[3].. 'mb \n free: ' ..args[4].. 'mb \n swap: ' ..args[5].. '% > ' ..args[6].. '/' ..args[7].. 'mb \n free: ' ..args[8].. 'mb </span>')
    return '<span color="#CDBC73">▣ ' ..args[1].. '%</span>'
    end, 3)
    -- Cpu widget
    cpuwidget = wibox.widget.textbox()
    cpuwidget_t = awful.tooltip({ objects = {cpuwidget}, })
    vicious.register(cpuwidget, vicious.widgets.cpu,
    function (widget, args)
    cpuwidget_t:set_text('<span color="#9868B1"> cpu0: ' ..args[2].. '% \n cpu1: ' ..args[3].. '% </span>')
    return '<span color="#CDBC73">◈ ' ..args[1].. '%</span>'
    end, 3)
    -- Battery widget
    batwidget = wibox.widget.textbox()
    batwidget_t = awful.tooltip({ objects = {batwidget}, })
    vicious.register(batwidget, vicious.widgets.bat,
    function (widget, args)
    batwidget_t:set_text('<span color="#9868B1"> ' ..args[3].. ' </span>')
    return '<span color="#CDBC73">↯ ' ..args[1].. '' ..args[2].. '</span>'
    end, 14, "BAT0")
    -- Keyboard widget
    kbdcfg = {}
    kbdcfg.cmd = "setxkbmap"
    kbdcfg.layout = { "us", "es" }
    -- kbdcfg.us = "<span color='#CDBC73'>us</span>"
    -- kbdcfg.es = "<span color='#CDBC73'>es</span>"
    kbdcfg.current = 1
    kbdcfg.widget = wibox.widget.textbox({ align = "right" })
    kbdcfg.widget:set_text( kbdcfg.layout[kbdcfg.current] )
    kbdcfg.switch = function ()
    kbdcfg.current = kbdcfg.current % #(kbdcfg.layout) + 1
    local t = kbdcfg.layout[kbdcfg.current]
    kbdcfg.widget:set_text( t )
    os.execute( kbdcfg.cmd .. t )
    end
    kbdcfg.widget:buttons(awful.util.table.join(
    awful.button({ }, 1, function () kbdcfg.switch() end )
    -- Wifi
    wifiwidget = wibox.widget.textbox()
    wifiwidget_t = awful.tooltip({ objects = {wifiwidget}, })
    vicious.register (wifiwidget, vicious.widgets.wifi,
    function (widget, args)
    wifiwidget_t:set_text('<span color="#9868B1"> ' ..args["{ssid}"].. ' \n mode: ' ..args["{mode}"].. ' \n chan: ' ..args["{chan}"].. ' \n sign: ' ..args["{sign}"].. ' \n rate: ' ..args["{rate}"].. ' </span>')
    -- ' \n rate: ' ..args["{rate}"].. ' \n linp: ' ..args["{linp}"]..
    return '<span color="#CDBC73">⇄ ' ..args["{link}"].. '%</span>'
    end, 7, "wlan0")
    -- File System
    fswidget = wibox.widget.textbox()
    fswidget_t = awful.tooltip({ objects = {fswidget}, })
    vicious.register(fswidget, vicious.widgets.fs,
    function (widget, args)
    fswidget_t:set_text('<span color="#9868B1">used: ' ..args["{/ used_gb}"].. '/' ..args["{/ size_gb}"].. 'gb </span>')
    return '<span color="#CDBC73">◕ ' ..args["{/ avail_gb}"].. 'gb</span>'
    end, 61)
    -- Uptime
    uptimewidget = wibox.widget.textbox()
    uptimewidget_t = awful.tooltip({ objects = {uptimewidget}, })
    vicious.register(uptimewidget, vicious.widgets.uptime,
    function (widget, args)
    uptimewidget_t:set_text('<span color="#9868B1"> ' ..args[1].. 'd ' ..args[2].. ':' ..args[3].. ' </span>')
    return string.format('<span color="#CDBC73">⇑ ' ..args[1].. 'd</span>')
    end, 61)
    -- Volume Widget
    volumecfg = {}
    volumecfg.cardid = 0
    volumecfg.channel = "Master"
    volumecfg.widget = wibox.widget.textbox({ align = "right" })
    -- volumecfg_t = awful.tooltip({ objects = { volumecfg.widget },})
    -- volumecfg_t:set_text("volume")
    -- command must start with a space!
    volumecfg.mixercommand = function (command)
    local fd = io.popen("amixer -c " .. volumecfg.cardid .. command)
    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 = "<span color='#CDBC73'>◄ " .. volume .. "</span>"
    else
    volume = "<span color='#CDBC73'>⋪ " .. volume .. "</span>"
    end
    volumecfg.widget:set_text( volume )
    end
    volumecfg.update = function ()
    volumecfg.mixercommand(" sget " .. volumecfg.channel)
    end
    volumecfg.up = function ()
    volumecfg.mixercommand(" sset " .. volumecfg.channel .. " 1%+")
    end
    volumecfg.down = function ()
    volumecfg.mixercommand(" sset " .. volumecfg.channel .. " 1%-")
    end
    volumecfg.toggle = function ()
    volumecfg.mixercommand(" sset " .. volumecfg.channel .. " toggle")
    end
    volumecfg.widget:buttons({
    button({ }, 4, function () volumecfg.up() end),
    button({ }, 5, function () volumecfg.down() end),
    button({ }, 1, function () volumecfg.toggle() end)
    volumecfg.update()
    -- Date widget
    datewidget = wibox.widget.textbox()
    vicious.register(datewidget, vicious.widgets.date, '<span color="#D8D8D8"> %a. %b %d, %l:%M %p </span>', 5)
    -- Create a textclock widget
    mytextclock = awful.widget.textclock({ align = "right" })
    -- Calendar widget to attach to the textclock
    require('calendar2')
    calendar2.addCalendarToWidget(datewidget)
    -- Create a textclock widget
    mytextclock = awful.widget.textclock()
    -- 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, function(t) awful.tag.viewnext(awful.tag.getscreen(t)) end),
    awful.button({ }, 5, function(t) awful.tag.viewprev(awful.tag.getscreen(t)) end)
    mytasklist = {}
    mytasklist.buttons = awful.util.table.join(
    awful.button({ }, 1, function (c)
    if c == client.focus then
    c.minimized = true
    else
    -- Without this, the following
    -- :isvisible() makes no sense
    c.minimized = false
    if not c:isvisible() then
    awful.tag.viewonly(c:tags()[1])
    end
    -- This will also un-minimize
    -- the client, if needed
    client.focus = c
    c:raise()
    end
    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()
    -- 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.filter.all, mytaglist.buttons)
    -- Create a tasklist widget
    mytasklist[s] = awful.widget.tasklist(s, awful.widget.tasklist.filter.currenttags, mytasklist.buttons)
    -- Create the wibox
    mywibox[s] = awful.wibox({ position = "top", screen = s })
    -- Widgets that are aligned to the left
    local left_layout = wibox.layout.fixed.horizontal()
    left_layout:add(mylauncher)
    left_layout:add(mytaglist[s])
    left_layout:add(mypromptbox[s])
    -- Widgets that are aligned to the right
    local right_layout = wibox.layout.fixed.horizontal()
    if s == 1 then right_layout:add(wibox.widget.systray()) end
    right_layout:add(mytextclock)
    right_layout:add(mylayoutbox[s])
    -- Now bring it all together (with the tasklist in the middle)
    local layout = wibox.layout.align.horizontal()
    layout:set_left(left_layout)
    layout:set_middle(mytasklist[s])
    layout:set_right(right_layout)
    mywibox[s]:set_widget(layout)
    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, }, "Down",
    function ()
    awful.client.focus.byidx( 1)
    if client.focus then client.focus:raise() end
    end),
    awful.key({ modkey, }, "Up",
    function ()
    awful.client.focus.byidx(-1)
    if client.focus then client.focus:raise() end
    end),
    awful.key({ modkey, }, "a", function () mymainmenu:show() end),
    -- Layout manipulation
    awful.key({ modkey, "Shift" }, "Down", function () awful.client.swap.byidx( 1) end),
    awful.key({ modkey, "Shift" }, "Up", function () awful.client.swap.byidx( -1) end),
    awful.key({ modkey, "Control" }, "Down", function () awful.screen.focus_relative( 1) end),
    awful.key({ modkey, "Control" }, "Up", 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),
    awful.key({ modkey, "Control" }, "n", awful.client.restore),
    -- 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),
    -- Menubar
    awful.key({ modkey }, "p", function() menubar.show() end)
    clientkeys = awful.util.table.join(
    awful.key({ modkey, }, "f", function (c) c.fullscreen = not c.fullscreen end),
    awful.key({ modkey, }, "w", 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, }, "t", function (c) c.ontop = not c.ontop end),
    awful.key({ modkey, }, "n",
    function (c)
    -- The client currently has the input focus, so it cannot be
    -- minimized, since minimized clients can't have the focus.
    c.minimized = true
    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 = awful.client.focus.filter,
    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 2 of screen 1.
    -- { rule = { class = "Firefox" },
    -- properties = { tag = tags[1][2] } },
    -- {{{ Signals
    -- Signal function to execute when a new client appears.
    client.connect_signal("manage", function (c, startup)
    -- Enable sloppy focus
    c:connect_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
    local titlebars_enabled = false
    if titlebars_enabled and (c.type == "normal" or c.type == "dialog") then
    -- Widgets that are aligned to the left
    local left_layout = wibox.layout.fixed.horizontal()
    left_layout:add(awful.titlebar.widget.iconwidget(c))
    -- Widgets that are aligned to the right
    local right_layout = wibox.layout.fixed.horizontal()
    right_layout:add(awful.titlebar.widget.floatingbutton(c))
    right_layout:add(awful.titlebar.widget.maximizedbutton(c))
    right_layout:add(awful.titlebar.widget.stickybutton(c))
    right_layout:add(awful.titlebar.widget.ontopbutton(c))
    right_layout:add(awful.titlebar.widget.closebutton(c))
    -- The title goes in the middle
    local title = awful.titlebar.widget.titlewidget(c)
    title:buttons(awful.util.table.join(
    awful.button({ }, 1, function()
    client.focus = c
    c:raise()
    awful.mouse.client.move(c)
    end),
    awful.button({ }, 3, function()
    client.focus = c
    c:raise()
    awful.mouse.client.resize(c)
    end)
    -- Now bring it all together
    local layout = wibox.layout.align.horizontal()
    layout:set_left(left_layout)
    layout:set_right(right_layout)
    layout:set_middle(title)
    awful.titlebar(c):set_widget(layout)
    end
    end)
    client.connect_signal("focus", function(c) c.border_color = beautiful.border_focus end)
    client.connect_signal("unfocus", function(c) c.border_color = beautiful.border_normal end)
    http://pastebin.com/X4JdkVi0
    Last edited by nhare330 (2013-01-18 13:59:40)

  • [Solved][Awesome]Keyboard don't work at startup

    Hello.
    I have the problem with awesome wm. I'm using git build 20120516-1 with default rc.lua.
    The problem is, when awesome is started, keyboard (modkey + r) is not working. I must click with mouse on the menu, open terminal, or some app from menu, and then keys start working.
    Anyone have an idea why this is happening?
    Thanks.
    EDIT: Changed login manager to slim, and all is working fine.
    Last edited by Zmuss (2012-05-17 20:56:52)

    Well, the 'unplugged' reference was noted earlier and I wasn't sure if you'd get a
    better response than a standard suggestion to try the other ideas in this link first
    •Intel-based Macs: Resetting the System Management Controller (SMC) - Apple Support
    before actually performing the SMC, that is a dragnet kind of catch-all, sometimes.
    All of my keyboard & mouse units are USB and I've gone as far as supplying the
    mouse and other peripherals with a powered USB hub; so power from the Mac
    isn't spread too thin. The keyboard is one of the only items that should be attached
    to the USB port; as it has to work on startup pre-boot keyboard shortcuts... Such
    as SafeBoot, PRAM reset, and others where you need a live keyboard and BT
    may not be up to the task of being ready. Three going on four of my Macs have
    bluetooth capabilities for those items; but I can't justify the continual upkeep cost.
    Spare USB keyboards and a few extra mouse are handy as troubleshooting tools, too.
    There are some USB keyboard references among search results in this linked page:
    https://www.google.com/?gws_rd=ssl#q=Apple+USB+keyboard+troubleshooting
    Perhaps the SMC pre-reset suggestions may help resolve the issue, if not, try reset.
    Good luck & happy computing!
    edited

  • [SOLVED] awesome WM bug since xorg 1.16

    Has anyone had any strange behavior with awesome since updating xorg-server to 1.16?
    Since that upgrade, when switching between two tags which both have at least 1 window, the original tag will stay highlighted, and the "taskbar" will not change.  My windows change to show the windows in the tag I switched TO, but the highlighted tag and taskbar stay frozen as if the first tag (tag switched FROM) was still being displayed. 
    I can "unstick" it by doing things like opening a terminal or changing the window layout.
    I have some light customizations to my rc.lua, so I temporarily switched back to the default rc.lua /etc/xdg/awesome/rc.lua, and still see the same problem.
    I was suspecting the xorg-server upgrade, but all packages that upgraded at the same time are:
    cryptsetup (1.6.5-1 -> 1.6.5-2)
    libdrm (2.4.54-1 -> 2.4.55-1)
    libxfont (1.4.7-3 -> 1.5.0-1)
    linux (3.15.5-2 -> 3.15.7-1)
    virtualbox-guest-modules (4.3.14-1 -> 4.3.14-3)
    libepoxy (1.2-2)
    xorg-server-common (1.15.2-1 -> 1.16.0-5)
    xf86-input-evdev (2.9.0-1 -> 2.9.0-2)
    xorg-server (1.15.2-1 -> 1.16.0-5)
    virtualbox-guest-utils (4.3.14-1 -> 4.3.14-2)
    Edit: solved here: https://awesome.naquadah.org/bugs/index … sk_id=1291
    Last edited by couplewavylines (2014-08-01 15:00:36)

    I posted a bug on awesome's bug tracker, got an insanely quick reply.  Fixed by passing the '--no-argb' option to awesome.  I start awesome in my .xinitrc, so my line there is now "exec awesome --no-argb".  This is apparently an xorg bug. 
    https://awesome.naquadah.org/bugs/index … sk_id=1291

  • [solved] awesome WM - how to check if current tag is empty?

    Been trying to obtain this behaviour with Awesome:-
    Start off with one tag. When an app is started, push it to the next tag and change tag to that tag.
    I've got that part going using this:-
    { rule = { type = "normal" },
    except_any = { class = { "Keepassx", "Gmrun" } },
    --if clients > 0 then
    callback = function(c)
    awful.client.movetotag(tags[mouse.screen][awful.tag.getidx()+1], c)
    awful.tag.viewonly(tags[mouse.screen][awful.tag.getidx()+1])
    end
    --end
    So basically it only works on 'normal' windows except windows that I'll probably like to have in the current tag (Gmrun and Keepassx obviously). I use this in conjunction with eminent so as to ensure that I only see as many tags as there are active. Eventually I'd like to maybe use shifty and only generate tags on-the-fly.
    What I want to do, however, is for the app to start in the current tag if its empty. For that, I need to detect that state, and I can't seem to do it. This is the code fragment from eminent.lua that seems to do it:-
    function gettags(screen)
    local tags = {}
    for k, t in ipairs(capi.screen[screen]:tags()) do
    if t.selected or #t:clients() > 0 then
    awful.tag.setproperty(t, "hide", false)
    table.insert(tags, t)
    else
    awful.tag.setproperty(t, "hide", true)
    end
    end
    return tags
    end
    As far as I can understand, screen[screen]:tags() returns a table of tags. ipairs splits it up into a range of values, and then the :clients() method is called to determine what clients there are. I presume # is for 'number-of' but I'm not sure.
    Any advise on how I can achieve this count? I just want to put an 'if' as commented in my first code snippet.
    Last edited by ngoonee (2012-09-03 08:05:04)

    Thanks Wey for pointing the way (no pun intended), after some playing around I've obtained the following:-
    -- Function to count number of clients in a tag
    function is_empty(tag,client)
    count = 0
    for _, c in pairs(tag:clients()) do
    -- client is used so that won't match against self
    if client.class ~= c.class then
    count = count + 1
    end
    end
    if count > 0 then
    return false
    end
    return true
    end
    Which is called by the following callback:-
    callback = function(c)
    current_tag = tags[mouse.screen][awful.tag.getidx()]
    next_tag = tags[mouse.screen][awful.tag.getidx()+1]
    if is_empty(current_tag,c) then
    tag = current_tag
    else
    tag = next_tag
    end
    awful.client.movetotag(tag, c)
    awful.tag.viewonly(tag)
    end
    I didn't want to use a rule since I didn't actually manage to figure out how to call rules, and just manually hard-coding c.class etc. seemed easier to me at the time. I realize I'm basically coding lua as if its C, but that's basically all I know programming wise so far .
    I'd also like to set a signal function which would rearrange all clients to lower-numbered tags when a client exist (so say if there are three clients in tag 2, 2 clients in tag 3, 1 client in tag 4 and 1, and the client in tag 1 exits, all three clients from tag 2 move to tag 1, the 2 in tag 3 move to tag 2, etc). This MAY be more easily handled by shifty though, currently don't have the time to look into it unfortunately. Once again, thanks for your help in [solve]ng this question.

  • [SOLVED]Awesome build process gets stuck

    Hi there Archers,
    When I try to build the latest version of Awesome it manages to install all the dependencies, but when it comes to actually building awesome it consistently gets stuck on the following line:
    Scanning dependencies of target man
    [ 57%] Generating manpages/man1/awesome.1.xml
    [ 57%] Generating manpages/man1/awesome.1
    It stays there indefinitely.
    On the AUR-page for this package I got the advice that running makepkg with root privileges might solve the problem, but I don't think this is a proper solution. Posts from Bionic_Apple seem to have some connection to my problem.
    With my limited understanding of the make files inside the build directory, I've concluded that it all looks OK, but that doesn't stop it from freezing half-way through the process.
    Any ideas on how I could make the install finish that doesn't involve root privileges?
    Last edited by linduxed (2012-01-19 00:48:12)

    Solved by building as root in a chroot environment.

  • [SOLVED]Awesome 3.5 crashes randomly, downgrade to 3.4 works perfectly

    gfAfter upgrading to awesome 3.5 I'm experiencing random X crashes (with SLIM, if that matters).
    /var/log/slim.conf sports repeated "unexpected signal 15", but I don't know if it is related.
    Problem seems related to this thread, but doesn't contain a working solution. Are there other logs I should check?
    Last edited by Bladtman242 (2013-01-13 21:34:31)

    AndyRTR: I guess you're referring to the thread/task I linked in the first post?
    I was hoping the archers might have had a solution
    I'm growing fairly tired of awesome wm's  ever changing syntax and api..
    nomorewindows I don't know if it is related but it doesn't sound like the issue I have
    EDIT:
    Bug report/thread seems to fit my problem. Marking this thread as solved, and waiting impatiently.
    Last edited by Bladtman242 (2013-01-13 21:34:12)

  • [SOLVED] Awesome WM - Mouse Doesn't Work on Client Objects

    I am new to Arch and awesome and I haven't tampered with the default rc.lua but my mouse doesn't do anything when used on windows(clients). It does in fact work everywhere else e.g. the root window, the menu-bar... Below is the relevant part of my rc.lua, even though its the default.
    clientbuttons = aweful.util.table.join(
    aweful.button({ }, 1, function(C) client.focus = c; c:raise() end),
    aweful.button({modkey}, 1, aweful.mouse.client.move),
    aweful.button({modkey}, 3, aweful.mouse.client.resize))
    aweful.rules.rules = {
    {rule = {},
    properties = {keys = clientkeys,
    buttons = clientbuttons}}
    The client specific keyboard rules do in fact work so its just the mouse related client rules.
    Has anyone had this issue or have any suggestions about how to go about debugging it?
    Last edited by OneMintJulep (2014-01-05 17:07:04)

    It turns out it was my mouse all along (R.A.T 7). I was able to fix the issue with the following post:
    http://fcns.eu/2011/04/01/cyborg-rat-7- … der-linux/

  • [SOLVED] awesome border_width

    Hi All!
    I use theme.border_width  = "1". But I want a maximized and fullsrceen window to has border_width  = "0" so I wrote this trcik:
    awful.key({ modkey, }, "m",
    function (c)
    if c.maximized_vertical then
    c.border_width = 1
    else
    c.border_width = 0
    end
    c.maximized_horizontal = not c.maximized_horizontal
    c.maximized_vertical = not c.maximized_vertical
    end)
    But there is a problem: when an application starts already in maximized state it has a border = "1".
    How can it be solved? Maybe by signals?
    Last edited by gray85 (2011-02-27 09:18:12)

    Been thinking of the same thing but never got around to give it a go before...
    gray85:
    Anrxc tip didn't work for me either but I suspected that conky might be the reason by being counted as a client so that #clients == 0
    would only be true for a "empty" screen.
    If your running conky or something like it thst might be the reason.
    I fixed it by setting
    own_window_type override
    in ~/.conkyrc
    Then I merge yours and anrxc tips into this:
    -- No border if maximized or the only window showing.
    -- Set own_window_type override in .conkyrc or it will be counted as a client
    for s = 1, screen.count() do screen[s]:add_signal("arrange", function ()
    local clients = awful.client.visible(s)
    for _, c in pairs(clients) do
    if c.maximized_horizontal and c.maximized_vertical then
    c.border_width = 0
    elseif #clients == 1 then
    c.border_width = 0
    else
    c.border_width = beautiful.border_width
    end
    end
    end)
    end
    So thanks to both of you for giving me the motivation to finally do it

  • [SOLVED] Awesome WM autostart questions/how to find program "class"

    Hi there,
    Right so I'm using Awesome WM and want to auto start programs into specific tags.
    This is the code I have, and everything is working as expected:
    --Autostart Programs
    awful.util.spawn_with_shell("chromium")
    awful.util.spawn_with_shell("skype")
    awful.util.spawn_with_shell("spotify")
    -- {{{ 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 = "Chromium" },
    properties = { tag = tags[1][6] } },
    { rule = { class = "Skype" },
    properties = { tag = [1][3]} },
    { rule = { class = "Spotify" },
    properties = { tag = [1][4] } },
    So what I'm wondering is how do I find out what the class of programs for this section: "{ rule = { class = "  " },"?
    I installed Arch on my chromebook and I've been using a lot of the programs such as Evernote and Trello. I have the chrome app drawer (http://www.omgchrome.com/enable-chrome- … her-linux/).
    I created a shortcut and can auto launch programs such as evernote using the chrome app drawer using the command we can see from the desktop entry:
    awful.util.spawn_with_shell("/usr/bin/chromium --profile-directory=Default --app-id=lbfehkoinhhcknnbdgnnmjhiladcgbol")
    However, the issue is that it always opens on whatever tab I'm using. I cannot find the class to add to the rules.
    None of these work:
    { rule = { class = "chrome-lbfehkoinhhcknnbdgnnmjhiladcgbol-Default.desktop" },
    properties = { tag = tags[1][6] } },
    { rule = { class = "Evernote Web" },
    properties = { tag = tags[1][6] } },
    { rule = { class = "/usr/bin/chromium --profile-directory=Default --app-id=lbfehkoinhhcknnbdgnnmjhiladcgbol" },
    properties = { tag = tags[1][6] } },
    Any suggestions on what I can do to find the "class"?
    Last edited by Gwynplaine (2014-11-14 00:24:01)

    run 'xprop' in a terminal and your cursor will change to a cross.  Click anywhere on the app you want to identify and the class will be sent to the screen (along with a ton of other stuff)
    It's in the xorg-xprop pkg
    Last edited by oliver (2014-11-14 00:16:08)

  • [Solved] Awesome 3.5: gmail vicious widget does not work

    I updated my awesome from 3.4 to 3.5. I noticed that vicious.widgets.gmail does not work anymore. When I move my cursor on mailicon, I can only see N/A. Obviously in my home there is  ~/.netrc file:
    machine mail.google.com login MYMAIL password MYPASSWORD
    This is how I configured the widget: Solved someone this or has someone any idea about how to solve?
    -- Gmail
    mailicon = wibox.widget.imagebox(beautiful.widget_gmail)
    mailwidget = wibox.widget.textbox()
    gmail_t = awful.tooltip({ objects = { mailwidget },})
    vicious.register(mailwidget, vicious.widgets.gmail,
    function (widget, args)
    gmail_t:set_text(args["{subject}"])
    gmail_t:add_to_object(mailicon)
    return args["{count}"]
    end, 120)
    --the '120' here means check every 2 minutes.
    mailicon:buttons(awful.util.table.join(
    awful.button({ }, 1, function () awful.util.spawn("urxvt -e mutt", false) end)
    Bye! ^^
    Last edited by ninquitassar (2013-02-17 20:22:28)

    nostalgix wrote:
    I don't know for sure, but maybe it's
    mailicon = wibox.widget.imagebox(beautiful.widget_gmail)
    instead of
    mailicon = wibox.widget.imagebox()
    mailicon.set_image(beautiful.widget_gmail)
    That's what he has.
    Last edited by nomorewindows (2013-02-12 21:16:51)

  • [solved] awesome: awful.rules: stop matching further rules

    Is there a way to make awesome stop matching further rules in awful.rules?
    Example: I'd like to place all Thunar windows on tab 4 by default. But if I move one of them to another tag, I'd like to have dialogs of that window (e.g. a rename-dialog) appear on the same tag, not the default one.
    This could be done like this:
    awful.rules.rules = {
    -- default
    -- additional rules
    { rule = { class = "Dialog" },
    properties = { floating = true } ,
    stopmatching = true },
    { rule = { class = "Thunar" },
    properties = { tag = tags[1][4] } }
    Any ideas how to achieve this?
    Thanks in advance
    lynix
    Last edited by lynix (2011-11-15 18:04:12)

    Tried to do this, but it seems there's a problem properly matching the window:
    The rename-window has the following xprop:
    _NET_WM_DESKTOP(CARDINAL) = 3
    WM_STATE(WM_STATE):
    window state: Normal
    icon window: 0x0
    _NET_WM_STATE(ATOM) = _NET_WM_STATE_MODAL
    WM_HINTS(WM_HINTS):
    Client accepts input or input focus: True
    Initial state is Normal State.
    bitmap id # to use for icon: 0x1000040
    bitmap id # of mask for icon: 0x1000041
    window id # of group leader: 0x1000001
    XdndAware(ATOM) = BITMAP
    _MOTIF_DRAG_RECEIVER_INFO(_MOTIF_DRAG_RECEIVER_INFO) = 0x6c, 0x0, 0x5, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0
    _NET_WM_ICON(CARDINAL) = Icon (48 x 48):
    WM_TRANSIENT_FOR(WINDOW): window id # 0x1000003
    _NET_WM_SYNC_REQUEST_COUNTER(CARDINAL) = 16780243
    _NET_WM_WINDOW_TYPE(ATOM) = _NET_WM_WINDOW_TYPE_DIALOG
    _NET_WM_USER_TIME(CARDINAL) = 983672
    _NET_WM_USER_TIME_WINDOW(WINDOW): window id # 0x1000bd2
    WM_CLIENT_LEADER(WINDOW): window id # 0x1000001
    _NET_WM_PID(CARDINAL) = 1861
    WM_LOCALE_NAME(STRING) = "de_DE.UTF-8"
    WM_CLIENT_MACHINE(STRING) = "thor"
    WM_NORMAL_HINTS(WM_SIZE_HINTS):
    program specified location: 0, 0
    program specified minimum size: 230 by 113
    window gravity: NorthWest
    WM_PROTOCOLS(ATOM): protocols WM_DELETE_WINDOW, WM_TAKE_FOCUS, _NET_WM_PING, _NET_WM_SYNC_REQUEST
    WM_CLASS(STRING) = "thunar", "Thunar"
    WM_ICON_NAME(STRING) = "»aquaero_5_deu.pdf« umbenennen"
    _NET_WM_ICON_NAME(UTF8_STRING) = "»aquaero_5_deu.pdf« umbenennen"
    WM_NAME(STRING) = "»aquaero_5_deu.pdf« umbenennen"
    _NET_WM_NAME(UTF8_STRING) = "»aquaero_5_deu.pdf« umbenennen"
    Any idea how to match that _NET_WM_WINDOW_TYPE(ATOM) = _NET_WM_WINDOW_TYPE_DIALOG line?
    I tried with these rules, without success:
    { rule = { class = "Dialog" },
    properties = { floating = true } },
    { rule = { class = "Thunar" }, except = { class = "dialog" },
    properties = { tag = tags[1][4] } }

Maybe you are looking for