Is Awesome Stable?
Hi,
I am in the process of testing some window managers as alternatives to Openbox and I would like to have the opinion of Archers about Awesome.
My concern is that I often hear of frequent breakages of the configuration files and I really don't want to start using, modyfing and customizing a WM that isn't stable. I don't have too much spare time and I need something that doesn't break at every update.
What I like about Awesome is that it seems very flexible and integrates lots of features other tiling WMs don't have, but I would like to be sure that once configured for the first time I can just keep using it rather than keep reconfiguring it.
So, present and past Awesome users, what is your opinion?
Thank you.
I've been using Awesome for a few months now and once you get used to its programmable configuration with lua, it's mind-boggling what you can achieve with it. The change from version 3.4.4 to 3.4.5 was trivial and caused me no trouble, although I appreciate how earlier rapid developments in configuration were much more frustrating.
Awesome has been very stable for me, and only a few minor bugs have arisen regarding titlebars and slightly increased memory usage - easily reduced by restarting Awesome with a keystoke on the odd occasion.
As an Openbox user for some time, I still have both WMs available, but Awesome has become my standard as it is so configurable.
Similar Messages
-
Awesome not reading rc.lua
I'm trying to give awesome3.1 a go, but it isn't reading my rc.lua. It just keeps the default everything. Really all I've changed is the theme.
-- Include awesome libraries, with lots of useful function!
require("awful")
require("beautiful")
-- {{{ Variable definitions
-- Themes define colours, icons, and wallpapers
theme_path = "/home/shawn/.config/awesome/theme"
-- Actually load theme
beautiful.init(theme_path)
-- This is used later as the default terminal and editor to run.
terminal = "xterm"
editor = os.getenv("EDITOR") or "vi"
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 =
"tile",
"tileleft",
"tilebottom",
"tiletop",
"fairh",
"fairv",
"magnifier",
"max",
"fullscreen",
"spiral",
"dwindle",
"floating"
-- Table of clients that should be set floating. The index may be either
-- the application class or instance. The instance is useful when running
-- a console app in a terminal like (Music on Console)
-- xterm -name mocp -e mocp
floatapps =
-- by class
["MPlayer"] = true,
["pinentry"] = true,
["gimp"] = true,
-- by instance
["mocp"] = true
-- Applications to be moved to a pre-defined tag by class or instance.
-- Use the screen and tags indices.
apptags =
-- ["Firefox"] = { screen = 1, tag = 2 },
-- ["mocp"] = { screen = 2, tag = 4 },
-- Define if we want to use titlebar on all applications.
use_titlebar = false
-- {{{ Tags
-- Define tags table.
tags = {}
for s = 1, screen.count() do
-- Each screen has its own tag table.
tags[s] = {}
-- Create 9 tags per screen.
for tagnumber = 1, 3 do
tags[s][tagnumber] = tag({ name = tag_settings[tagnumber].name, layout = tag_settings[tagnumber].layouts })
-- Add tags to screen one by one
tags[s][tagnumber].screen = s
end
-- I'm sure you want to see at least one tag.
tags[s][1].selected = true
end
tag_settings = {
{ name="main", layout=layouts[1] },
{ name="work", layout=layouts[1] },
{ name="float", layout=layouts[12] }
-- {{{ Wibox
-- Create a textbox widget
mytextbox = widget({ type = "textbox", align = "right" })
-- Set the default text in textbox
mytextbox.text = "<b><small> " .. AWESOME_RELEASE .. " </small></b>"
-- 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.new({ items = { { "awesome", myawesomemenu, beautiful.awesome_icon },
{ "open terminal", terminal }
mylauncher = awful.widget.launcher({ image = beautiful.awesome_icon,
menu = mymainmenu })
-- Create a systray
mysystray = widget({ type = "systray", align = "right" })
-- Create a wibox for each screen and add it
mywibox = {}
mypromptbox = {}
mylayoutbox = {}
mytaglist = {}
mytaglist.buttons = { button({ }, 1, awful.tag.viewonly),
button({ modkey }, 1, awful.client.movetotag),
button({ }, 3, function (tag) tag.selected = not tag.selected end),
button({ modkey }, 3, awful.client.toggletag),
button({ }, 4, awful.tag.viewnext),
button({ }, 5, awful.tag.viewprev) }
mytasklist = {}
mytasklist.buttons = { button({ }, 1, function (c) client.focus = c; c:raise() end),
button({ }, 3, function () awful.menu.clients({ width=250 }) end),
button({ }, 4, function () awful.client.focus.byidx(1) end),
button({ }, 5, function () awful.client.focus.byidx(-1) end) }
for s = 1, screen.count() do
-- Create a promptbox for each screen
mypromptbox[s] = widget({ type = "textbox", align = "left" })
-- Create an imagebox widget which will contains an icon indicating which layout we're using.
-- We need one layoutbox per screen.
mylayoutbox[s] = widget({ type = "imagebox", align = "right" })
mylayoutbox[s]:buttons({ button({ }, 1, function () awful.layout.inc(layouts, 1) end),
button({ }, 3, function () awful.layout.inc(layouts, -1) end),
button({ }, 4, function () awful.layout.inc(layouts, 1) end),
button({ }, 5, function () awful.layout.inc(layouts, -1) end) })
-- Create a taglist widget
mytaglist[s] = awful.widget.taglist.new(s, awful.widget.taglist.label.all, mytaglist.buttons)
-- Create a tasklist widget
mytasklist[s] = awful.widget.tasklist.new(function(c)
return awful.widget.tasklist.label.currenttags(c, s)
end, mytasklist.buttons)
-- Create the wibox
mywibox[s] = wibox({ position = "top", fg = beautiful.fg_normal, bg = beautiful.bg_normal })
-- Add widgets to the wibox - order matters
mywibox[s].widgets = { mylauncher,
mytaglist[s],
mytasklist[s],
mypromptbox[s],
mytextbox,
mylayoutbox[s],
s == 1 and mysystray or nil }
mywibox[s].screen = s
end
-- {{{ Mouse bindings
awesome.buttons({
button({ }, 3, function () mymainmenu:toggle() end),
button({ }, 4, awful.tag.viewnext),
button({ }, 5, awful.tag.viewprev)
-- {{{ Key bindings
-- Bind keyboard digits
-- 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
for i = 1, keynumber do
keybinding({ modkey }, i,
function ()
local screen = mouse.screen
if tags[screen][i] then
awful.tag.viewonly(tags[screen][i])
end
end):add()
keybinding({ modkey, "Control" }, i,
function ()
local screen = mouse.screen
if tags[screen][i] then
tags[screen][i].selected = not tags[screen][i].selected
end
end):add()
keybinding({ modkey, "Shift" }, i,
function ()
if client.focus then
if tags[client.focus.screen][i] then
awful.client.movetotag(tags[client.focus.screen][i])
end
end
end):add()
keybinding({ modkey, "Control", "Shift" }, i,
function ()
if client.focus then
if tags[client.focus.screen][i] then
awful.client.toggletag(tags[client.focus.screen][i])
end
end
end):add()
end
keybinding({ modkey }, "Left", awful.tag.viewprev):add()
keybinding({ modkey }, "Right", awful.tag.viewnext):add()
keybinding({ modkey }, "Escape", awful.tag.history.restore):add()
-- Standard program
keybinding({ modkey }, "Return", function () awful.util.spawn(terminal) end):add()
keybinding({ modkey, "Control" }, "r", function ()
mypromptbox[mouse.screen].text =
awful.util.escape(awful.util.restart())
end):add()
keybinding({ modkey, "Shift" }, "q", awesome.quit):add()
-- Client manipulation
keybinding({ modkey }, "m", awful.client.maximize):add()
keybinding({ modkey }, "f", function () if client.focus then client.focus.fullscreen = not client.focus.fullscreen end end):add()
keybinding({ modkey, "Shift" }, "c", function () if client.focus then client.focus:kill() end end):add()
keybinding({ modkey }, "j", function () awful.client.focus.byidx(1); if client.focus then client.focus:raise() end end):add()
keybinding({ modkey }, "k", function () awful.client.focus.byidx(-1); if client.focus then client.focus:raise() end end):add()
keybinding({ modkey, "Shift" }, "j", function () awful.client.swap.byidx(1) end):add()
keybinding({ modkey, "Shift" }, "k", function () awful.client.swap.byidx(-1) end):add()
keybinding({ modkey, "Control" }, "j", function () awful.screen.focus(1) end):add()
keybinding({ modkey, "Control" }, "k", function () awful.screen.focus(-1) end):add()
keybinding({ modkey, "Control" }, "space", awful.client.togglefloating):add()
keybinding({ modkey, "Control" }, "Return", function () if client.focus then client.focus:swap(awful.client.getmaster()) end end):add()
keybinding({ modkey }, "o", awful.client.movetoscreen):add()
keybinding({ modkey }, "Tab", awful.client.focus.history.previous):add()
keybinding({ modkey }, "u", awful.client.urgent.jumpto):add()
keybinding({ modkey, "Shift" }, "r", function () if client.focus then client.focus:redraw() end end):add()
-- Layout manipulation
keybinding({ modkey }, "l", function () awful.tag.incmwfact(0.05) end):add()
keybinding({ modkey }, "h", function () awful.tag.incmwfact(-0.05) end):add()
keybinding({ modkey, "Shift" }, "h", function () awful.tag.incnmaster(1) end):add()
keybinding({ modkey, "Shift" }, "l", function () awful.tag.incnmaster(-1) end):add()
keybinding({ modkey, "Control" }, "h", function () awful.tag.incncol(1) end):add()
keybinding({ modkey, "Control" }, "l", function () awful.tag.incncol(-1) end):add()
keybinding({ modkey }, "space", function () awful.layout.inc(layouts, 1) end):add()
keybinding({ modkey, "Shift" }, "space", function () awful.layout.inc(layouts, -1) end):add()
-- Prompt
keybinding({ modkey }, "F1", function ()
awful.prompt.run({ prompt = "Run: " }, mypromptbox[mouse.screen], awful.util.spawn, awful.completion.bash,
awful.util.getdir("cache") .. "/history")
end):add()
keybinding({ modkey }, "F4", function ()
awful.prompt.run({ prompt = "Run Lua code: " }, mypromptbox[mouse.screen], awful.util.eval, awful.prompt.bash,
awful.util.getdir("cache") .. "/history_eval")
end):add()
keybinding({ modkey, "Ctrl" }, "i", function ()
local s = mouse.screen
if mypromptbox[s].text then
mypromptbox[s].text = nil
elseif client.focus then
mypromptbox[s].text = nil
if client.focus.class then
mypromptbox[s].text = "Class: " .. client.focus.class .. " "
end
if client.focus.instance then
mypromptbox[s].text = mypromptbox[s].text .. "Instance: ".. client.focus.instance .. " "
end
if client.focus.role then
mypromptbox[s].text = mypromptbox[s].text .. "Role: ".. client.focus.role
end
end
end):add()
-- Client awful tagging: this is useful to tag some clients and then do stuff like move to tag on them
keybinding({ modkey }, "t", awful.client.togglemarked):add()
for i = 1, keynumber do
keybinding({ modkey, "Shift" }, "F" .. i,
function ()
local screen = mouse.screen
if tags[screen][i] then
for k, c in pairs(awful.client.getmarked()) do
awful.client.movetotag(tags[screen][i], c)
end
end
end):add()
end
-- {{{ Hooks
-- Hook function to execute when focusing a client.
awful.hooks.focus.register(function (c)
if not awful.client.ismarked(c) then
c.border_color = beautiful.border_focus
end
end)
-- Hook function to execute when unfocusing a client.
awful.hooks.unfocus.register(function (c)
if not awful.client.ismarked(c) then
c.border_color = beautiful.border_normal
end
end)
-- Hook function to execute when marking a client
awful.hooks.marked.register(function (c)
c.border_color = beautiful.border_marked
end)
-- Hook function to execute when unmarking a client.
awful.hooks.unmarked.register(function (c)
c.border_color = beautiful.border_focus
end)
-- Hook function to execute when the mouse enters a client.
awful.hooks.mouse_enter.register(function (c)
-- Sloppy focus, but disabled for magnifier layout
if awful.layout.get(c.screen) ~= "magnifier"
and awful.client.focus.filter(c) then
client.focus = c
end
end)
-- Hook function to execute when a new client appears.
awful.hooks.manage.register(function (c)
if use_titlebar then
-- Add a titlebar
awful.titlebar.add(c, { modkey = modkey })
end
-- Add mouse bindings
c:buttons({
button({ }, 1, function (c) client.focus = c; c:raise() end),
button({ modkey }, 1, function (c) c:mouse_move() end),
button({ modkey }, 3, function (c) c:mouse_resize() end)
-- New client may not receive focus
-- if they're not focusable, so set border anyway.
c.border_width = beautiful.border_width
c.border_color = beautiful.border_normal
-- Check if the application should be floating.
local cls = c.class
local inst = c.instance
if floatapps[cls] then
c.floating = floatapps[cls]
elseif floatapps[inst] then
c.floating = floatapps[inst]
end
-- Check application->screen/tag mappings.
local target
if apptags[cls] then
target = apptags[cls]
elseif apptags[inst] then
target = apptags[inst]
end
if target then
c.screen = target.screen
awful.client.movetotag(tags[target.screen][target.tag], c)
end
-- Do this after tag mapping, so you don't see it on the wrong tag for a split second.
client.focus = c
-- Set the windows at the slave,
-- i.e. put it at the end of others instead of setting it master.
-- awful.client.setslave(c)
-- Honor size hints: if you want to drop the gaps between windows, set this to false.
-- c.honorsizehints = false
end)
-- Hook function to execute when arranging the screen.
-- (tag switch, new client, etc)
awful.hooks.arrange.register(function (screen)
local layout = awful.layout.get(screen)
if layout then
mylayoutbox[screen].image = image(beautiful["layout_" .. layout])
else
mylayoutbox[screen].image = nil
end
-- Give focus to the latest client in history if no window has focus
-- or if the current window is a desktop or a dock one.
if not client.focus then
local c = awful.client.focus.history.get(screen, 0)
if c then client.focus = c end
end
-- Uncomment if you want mouse warping
if client.focus then
local c_c = client.focus:fullgeometry()
local m_c = mouse.coords()
if m_c.x < c_c.x or m_c.x >= c_c.x + c_c.width or
m_c.y < c_c.y or m_c.y >= c_c.y + c_c.height then
if table.maxn(m_c.buttons) == 0 then
mouse.coords({ x = c_c.x + 5, y = c_c.y + 5})
end
end
end
end)
-- Hook called every second
awful.hooks.timer.register(1, function ()
-- For unix time_t lovers
mytextbox.text = " " .. os.time() .. " time_t "
-- Otherwise use:
-- mytextbox.text = " " .. os.date() .. " "
end)
Then if I try this one, I just get a black screen, I have all the required things:
-- Version 2
-- This config is for use with awesome 3.0 stable.
-- If you have any suggestions or questions, feel free
-- to pass me a message, find me in #awesome on OFTC, or
-- email me at <lucas[at]glacicle.com>
-- I use both wicked and eminent, so to use it,
-- you'll need to get both those helper libraries too.
-- Note that I use all-custom keybindings, so you might
-- want to copy the default rc.lua's keybindings
-- into here if you wish to use those, although you might
-- find you like mine better :P
---- {{{ Require lua libraries
-- Shipped with awesome
require("awful")
require("beautiful")
-- External
require("wicked") -- Widgets
require("eminent") -- Dynamic tagging
---- {{{ 'Beautiful' theme settings
-- Font
beautiful.font = "Dina 8"
-- Background
beautiful.bg_normal = '#414141'
beautiful.bg_focus = '#414141'
beautiful.bg_sbfocus = '#414141'
beautiful.bg_urgent = '#414141'
-- Foreground
beautiful.fg_normal = '#999999'
beautiful.fg_focus = '#335565'
beautiful.fg_urgent = '#A000000'
-- Border
beautiful.border_width = 2
beautiful.border_normal = '#414141'
beautiful.border_focus = '#335565'
beautiful.border_marked = '#91231c'
-- Wallpaper
-- wallpaper_cmd = awsetbg /storage/images/backgrounds/nature/looking.jpg
---- {{{ Modkeys
key = {}
key.none = {}
key.alt = {"Mod1"}
key.super = {"Mod4"}
key.shift = {"Shift"}
key.control = {"Control"}
key.super_alt = {key.super[1], key.alt[1]}
key.super_shift = {key.super[1], key.shift[1]}
key.super_control = {key.super[1], key.control[1]}
key.control_alt = {key.control[1], key.alt[1]}
key.shift_alt = {key.shift[1], key.alt[1]}
---- {{{ Settings
-- Initialise tables
settings = {}
settings.widget = {}
settings.apps = {}
settings.tag = {}
settings.bindings = {}
-- {{{ General
-- Widget spacer and separator
settings.widget_spacer = " "
settings.widget_separator = " "
-- Warp mouse
settings.warp_mouse = true
-- New become master
settings.new_become_master = false
-- Tag mwfact
settings.tag.mwfact = 0.618033988769
-- {{{ Applications
-- Terminal application
settings.apps.terminal = 'urxvt'
-- Command to lock the screen
settings.apps.lock_screen = 'xscreensaver-command -lock'
-- Command to turn screen off with DPMS
settings.apps.screen_off = 'sleep 1; xset dpms force off'
-- File manager application
settings.apps.filemanager = settings.apps.terminal..' -e zsh -c "vifm %s"'
-- {{{ Floating windows
settings.floating = {
["gimp"] = true,
["urxvtcnotify"] = true,
["MPlayer"] = true,
-- {{{ Other
-- Check what widget mode to use
settings.widget_mode = 'desktop'
-- Highlight statusbar of focussed screen on multiple-monitor setups
if screen.count() > 1 then
settings.statusbar_highlight_focus = {true, 1}
end
---- {{{ Keybindings
-- Initialise table
settings.bindings.wm = {}
settings.bindings.mouse = {}
-- {{{ Open the filemanager at specific locations
settings.bindings.filemanager = {
-- Alt+d: Data partition
["/storage"] = {key.alt, "#40"},
-- Alt+a: Home Directory
[os.getenv("HOME")] = {key.alt, "#38"},
-- {{{ Run specific commands
settings.bindings.commands = {
-- Alt+q: Open Terminal
[settings.apps.terminal] = {key.alt, "#24"},
-- Mod+k: GNU Screen
-- [settings.apps.gnu_screen] = {key.super, "#45"},
-- Mod+l: Lock screen
[settings.apps.lock_screen] = {key.super, "#46"},
-- Mod+o: Screen off with DPMS
[settings.apps.screen_off] = {key.super, "#32"},
-- {{{ Tag bindings
settings.bindings.wm.tag = {
-- Mod+a: Switch to previous tag
[function() eminent.tag.prev(mouse.screen) end] = {key.super, "#38"},
-- Mod+s: Switch to next tag
[function() eminent.tag.next(mouse.screen) end] = {key.super, "#39"},
-- Alt+\: Switch to float layout
[function() awful.layout.set('floating') end] = {key.alt, "#51"},
-- Alt+z: Switch to max layout
[function() awful.layout.set('max') end] = {key.alt, "#52"},
-- Alt+x: Switch to tile layout
[function() awful.layout.set('tile') end] = {key.alt, "#53"},
-- {{{ Prompt bindings
settings.bindings.prompt = {
-- Alt+w: Run prompt
[{awful.spawn, " Run: "}] = {key.alt, "#25"},
-- Mod+Alt+w: Lua eval prompt
[{awful.eval, " Run Lua: "}] = {key.super_alt, "#25"},
-- {{{ Miscellaneous bindings
settings.bindings.wm.misc = {
-- Mod+Alt+r: Restart awesome
[awesome.restart] = {key.super_alt, "#27"},
-- Mod+e: Switch focus to next screen
[function() awful.screen.focus(1) end] = {key.super, "#26"},
-- Mod+d: Switch focus to previous screen
[function() awful.screen.focus(-1) end] = {key.super, "#40"},
-- {{{ Keyboard digit bindings
settings.bindings.digits = {
-- Mod+##: View tag
[awful.tag.viewonly] = key.super,
-- Mod+Shift+##: Toggle tag view
[function(t) t.selected = not t.selected end] = key.super_shift,
-- Mod+Control+##: Move window to tag
[awful.client.movetotag] = key.super_control,
-- Mod+Alt+##: Toggle window on tag
[awful.client.toggletag] = key.super_alt,
-- {{{ Mouse bindings
settings.bindings.mouse.desktop = {
-- Right click on desktop: Open terminal
[function() awful.spawn(settings.apps.terminal) end] = {key.none, 3},
settings.bindings.mouse.client = {
-- Alt+Left: Move window
[function(c) c:mouse_move() end] = {key.alt, 1},
-- Alt+Right: Resize window
[function(c) c:mouse_resize({corner="bottomright"}) end] = {key.alt, 3},
---- {{{ Markup helper functions
-- Inline markup is a tad ugly, so use these functions
-- to dynamically create markup, we hook them into
-- the beautiful namespace for clarity.
beautiful.markup = {}
function beautiful.markup.bg(color, text)
return '<bg color="'..color..'" />'..text
end
function beautiful.markup.fg(color, text)
return '<span color="'..color..'">'..text..'</span>'
end
function beautiful.markup.font(font, text)
return '<span font_desc="'..font..'">'..text..'</span>'
end
function beautiful.markup.title(t)
return t
end
function beautiful.markup.title_normal(t)
return beautiful.title(t)
end
function beautiful.markup.title_focus(t)
return beautiful.markup.bg(beautiful.bg_focus, beautiful.markup.fg(beautiful.fg_focus, beautiful.markup.title(t)))
end
function beautiful.markup.title_urgent(t)
return beautiful.markup.bg(beautiful.bg_urgent, beautiful.markup.fg(beautiful.fg_urgent, beautiful.markup.title(t)))
end
function beautiful.markup.bold(text)
return '<b>'..text..'</b>'
end
function beautiful.markup.heading(text)
return beautiful.markup.fg(beautiful.fg_focus, beautiful.markup.bold(text))
end
---- {{{ Widgets
settings.statusbars = {}
settings.widgets = {}
settings.statusbars[1] = {{
position = "top",
height = 18,
fg = beautiful.fg_normal,
bg = beautiful.bg_normal,
name = "mainstatusbar",
}, "all"}
settings.promptbar = {
position = "top",
height = 18,
fg = beautiful.fg_normal,
bg = beautiful.bg_normal,
name = "promptbar",
-- {{{ Taglist
maintaglist = widget({
type = 'taglist',
name = 'maintaglist'
function maintaglist.label(t)
return awful.widget.taglist.label.noempty(t)
end
maintaglist:mouse_add(mouse(key.none, 1, function (o, t) awful.tag.viewonly(t) end))
table.insert(settings.widgets, {1, maintaglist})
if settings.widget_mode ~= 'none' then
-- {{{ MPD Widget
mpdwidget = widget({
type = 'textbox',
name = 'mpdwidget',
align = 'right'
wicked.register(mpdwidget, wicked.widgets.mpd, function (widget, args)
-- I don't want the stream name on my statusbar, so I gsub it out,
-- feel free to remove this bit
return settings.widget_spacer..beautiful.markup.heading('MPD')..': '
..args[1]:gsub('AnimeNfo Radio | Serving you the best Anime music!: ','')
..settings.widget_spacer..settings.widget_separator end)
table.insert(settings.widgets, {1, mpdwidget})
-- {{{ GMail Widget
gmailwidget = widget({
type = 'textbox',
name = 'gmailwidget',
align = 'right'
gmailwidget:mouse_add(mouse(key.none, 1, function () wicked.update(gmailwidget) end))
function read_gmail_temp(format)
local f = io.open('/tmp/gmail-temp')
if f == nil then
return {'n/a'}
end
local n = f:read()
if n == nil or f == ' ' or f == '' then
f:close()
return {'n/a'}
end
return {n}
end
wicked.register(gmailwidget, read_gmail_temp, function (widget, args)
local n = args[1]
local out = settings.widget_spacer..beautiful.markup.heading('GMail')..': '
if n ~= "n/a" and tonumber(n) > 0 then
out = out..beautiful.markup.bg(beautiful.bg_urgent, beautiful.markup.fg(beautiful.fg_urgent, tostring(n)))
else
out = out..tostring(n)
end
out = out..settings.widget_spacer..settings.widget_separator
return out
end, 120)
-- Start timer to fill the temp file
awful.hooks.timer.register(110, function ()
-- Call GMail check script to check for new email
os.execute(os.getenv("HOME")..'/other/.gmail.py > /tmp/gmail-temp &')
end, true)
wicked.update(gmailwidget)
table.insert(settings.widgets, {1, gmailwidget})
-- {{{ Load Averages Widget
loadwidget = widget({
type = 'textbox',
name = 'loadwidget',
align = 'right'
function widget_loadavg(format)
-- Use /proc/loadavg to get the average system load on 1, 5 and 15 minute intervals
local f = io.open('/proc/loadavg')
local n = f:read()
f:close()
-- Find the third space
local pos = n:find(' ', n:find(' ', n:find(' ')+1)+1)
return {n:sub(1,pos-1)}
end
wicked.register(loadwidget, widget_loadavg,
settings.widget_spacer..beautiful.markup.heading('Load')..': $1'..settings.widget_spacer..settings.widget_separator, 2)
table.insert(settings.widgets, {1, loadwidget})
-- {{{ CPU Usage Widget
cputextwidget = widget({
type = 'textbox',
name = 'cputextwidget',
align = 'right'
wicked.register(cputextwidget, wicked.widgets.cpu,
settings.widget_spacer..beautiful.markup.heading('CPU')..': $1%'..settings.widget_spacer..settings.widget_separator,
nil, nil, 2)
table.insert(settings.widgets, {1, cputextwidget})
-- {{{ CPU Graph Widget
cpugraphwidget = widget({
type = 'graph',
name = 'cpugraphwidget',
align = 'right'
cpugraphwidget.height = 0.85
cpugraphwidget.width = 45
cpugraphwidget.bg = '#333333'
cpugraphwidget.border_color = '#0a0a0a'
cpugraphwidget.grow = 'left'
cpugraphwidget:plot_properties_set('cpu', {
fg = '#AEC6D8',
fg_center = '#285577',
fg_end = '#285577',
vertical_gradient = false
wicked.register(cpugraphwidget, wicked.widgets.cpu, '$1', 1, 'cpu')
table.insert(settings.widgets, {1, cpugraphwidget})
-- {{{ Memory Usage Widget
memtextwidget = widget({
type = 'textbox',
name = 'memtextwidget',
align = 'right'
wicked.register(memtextwidget, wicked.widgets.mem,
settings.widget_spacer..beautiful.markup.heading('MEM')..': '..
'$1% ($2/$3)'..settings.widget_spacer..settings.widget_separator,
3, nil, {2, 4, 4})
table.insert(settings.widgets, {1, memtextwidget})
-- {{{ Memory Graph Widget
memgraphwidget = widget({
type = 'graph',
name = 'memgraphwidget',
align = 'right'
memgraphwidget.height = 0.85
memgraphwidget.width = 45
memgraphwidget.bg = '#333333'
memgraphwidget.border_color = '#0a0a0a'
memgraphwidget.grow = 'left'
memgraphwidget:plot_properties_set('mem', {
fg = '#AEC6D8',
fg_center = '#285577',
fg_end = '#285577',
vertical_gradient = false
wicked.register(memgraphwidget, wicked.widgets.mem, '$1', 1, 'mem')
table.insert(settings.widgets, {1, memgraphwidget})
-- {{{ Other Widget
settings.widget_spacerwidget = widget({ type = 'textbox', name = 'settings.widget_spacerwidget', align = 'right' })
settings.widget_spacerwidget.text = settings.widget_spacer..settings.widget_separator
table.insert(settings.widgets, {1, settings.widget_spacerwidget})
end
-- You shouldn't have to edit the code after this,
-- it takes care of applying the settings above.
---- {{{ Initialisations
-- Register beautiful with awful
awful.beautiful.register(beautiful)
-- Set default colors
awesome.colors_set({
fg = beautiful.fg_normal,
bg = beautiful.bg_normal })
-- Set default font
awesome.font_set(beautiful.font)
-- Table of layouts to cover with awful.layout.inc, order matters.
layouts =
"tile",
"tileleft",
"tilebottom",
"tiletop",
"fairh",
"fairv",
"magnifier",
"max",
"fullscreen",
"spiral",
"dwindle",
"floating"
-- Define tag tables
tag_settings = {
{ name="main", layout=layouts[1] },
{ name="work", layout=layouts[1] },
{ name="float", layout=layouts[12] }
-- Initialize tags in awesome 3.1
tags = {}
for s = 1, screen.count() do
tags[s] = {}
for tagnumber = 1, 3 do
tags[s][tagnumber] = tag({ name = tag_settings[tagnumber].name, layout = tag_settings[tagnumber].layout })
tags[s][tagnumber].screen = s
awful.layout.set(layouts[1], tags[s][tagnumber])
end
tags[s][1].selected = true
end
---- {{{ Create statusbars
local mainstatusbar = {}
for i, b in pairs(settings.statusbars) do
mainstatusbar[i] = {}
for s=1,screen.count() do
this_screen = false
if b[2] ~= "all" then
for sc in pairs(b[2]) do
if sc == s then
this_screen = true
break
end
end
end
if b[2] == "all" or this_screen then
mainstatusbar[i][s] = statusbar(b[1])
local widgets = {}
for ii, w in pairs(settings.widgets) do
if w[1] == i then
table.insert(widgets, w[2])
end
end
mainstatusbar[i][s]:widgets(widgets)
mainstatusbar[i][s].screen = s
end
end
end
---- {{{ Create prompt statusbar
local mainpromptbar = statusbar(settings.promptbar)
local mainpromptbox = widget({type = "textbox", align = "left", name = "mainpromptbox"})
mainpromptbar:widgets({mainpromptbox})
mainpromptbar.screen = nil
---- {{{ Useful functions
-- {{{ Mouse warp function
function mouse_warp(c, force)
-- Allow skipping a warp
if warp_skip then
warp_skip = false
return
end
-- Get vars
local sel = c or client.focus
if sel == nil then return end
local coords = sel:coords()
local m = mouse.coords()
-- Settings
mouse_padd = 6
border_area = 5
-- Check if mouse is not already inside the window
if (( m.x < coords.x-border_area or
m.y < coords.y-border_area or
m.x > coords.x+coords.width+border_area or
m.y > coords.y+coords.height+border_area
) and (
table.maxn(m.buttons) == 0
)) or force
then
mouse.coords({ x=coords.x+mouse_padd, y=coords.y+mouse_padd})
end
end
-- {{{ Prompt with statusbar
function prompt_statusbar(s, callback, prompt)
if not callback then callback = awful.spawn end
if not prompt then prompt = " Run: " end
for i, b in pairs(mainstatusbar) do
for ii, bb in pairs(b) do
if bb.screen == s then
bb.screen = nil
end
end
end
mainpromptbar.screen = s
awful.prompt.run({prompt = prompt}, mainpromptbox, callback,
awful.completion.bash, os.getenv("HOME") .. "/.cache/awesome_history", 50, function ()
mainpromptbar.screen = nil
for i, b in pairs(mainstatusbar) do
for ii, bb in pairs(b) do
if ii == s then
bb.screen = ii
end
end
end
end)
end
---- {{{ Create bindings
--- This reads the binding tables and turns them into actual keybindings
-- Always qwerty
-- WM Bindings
for i,table in pairs(settings.bindings.wm) do
for f, keys in pairs(table) do
keybinding(keys[1], keys[2], f):add()
end
end
-- Keyboard digit bindings
for i=1,9 do
for f, mod in pairs(settings.bindings.digits) do
keybinding(mod, i, function()
t = eminent.tag.getn(i, nil, true)
if not t then return end
f(t)
end):add()
end
end
-- Prompt Bindings
for prompt, keys in pairs(settings.bindings.prompt) do
keybinding(keys[1], keys[2], function() prompt_statusbar(mouse.screen, unpack(prompt)) end):add()
end
-- Filemanager bindings
for loc, keys in pairs(settings.bindings.filemanager) do
keybinding(keys[1], keys[2], function() awful.spawn(string.format(settings.apps.filemanager, loc)) end):add()
end
-- Custom command bindings
for command, keys in pairs(settings.bindings.commands) do
keybinding(keys[1], keys[2], function() awful.spawn(command) end):add()
end
-- Desktop mouse bindings
for f, keys in pairs(settings.bindings.mouse.desktop) do
awesome.mouse_add(mouse(keys[1], keys[2], f))
end
---- {{{ Set hooks
-- {{{ Focus hook
awful.hooks.focus.register(function (c)
-- Skip over my urxvtcnotify
if c.name and c.name:lower():find('urxvtcnotify') and awful.client.next(1) ~= c then
awful.client.focusbyidx(1)
return
end
-- Set border
c.border_color = beautiful.border_focus
-- Raise the client
c:raise()
-- Set statusbar color
if settings.statusbar_highlight_focus and settings.statusbar_highlight_focus[1] then
if last_screen == nil or last_screen ~= c.screen then
mainstatusbar[settings.statusbar_highlight_focus[2]][c.screen].bg = beautiful.bg_sbfocus
if last_screen then
mainstatusbar[settings.statusbar_highlight_focus[2]][last_screen].bg = beautiful.bg_normal
end
end
last_screen = c.screen
end
end)
-- {{{ Unfocus hook
awful.hooks.unfocus.register(function (c)
-- Set border
c.border_color = beautiful.border_normal
end)
-- {{{ Mouseover hook
awful.hooks.mouseover.register(function (c)
-- Set focus for sloppy focus
client.focus = c
end)
-- {{{ Manage hook
awful.hooks.manage.register(function (c)
local class = ""
local name = ""
if c.class then
class = c.class:lower()
end
if c.name then
name = c.name:lower()
end
-- Create border
c.border_width = beautiful.border_width
c.border_color = beautiful.border_normal
-- Add mouse bindings
for f, keys in pairs(settings.bindings.mouse.client) do
c:mouse_add(mouse(keys[1], keys[2], f))
end
-- Check if floating
for app, i in pairs(settings.floating) do
if class:find(app) or name:find(app) then
c.floating = i
break
end
end
if name:find('urxvtcnotify') then
-- I got sick of libnotify/notification-daemon
-- and their dependencies, so I'm using a little
-- urxvtc window with some text in it as notifications :P
-- This makes it appear at the correct place,
-- feel free to remove the whole section, you probably
-- won't need it.
c.screen = 3
c:coords({
x = 1680*2+1400,
y = 18,
width = 276,
height = 106
c.border_color = beautiful.border_normal
local tags = {}
for i,t in pairs(eminent.tags[3]) do
if eminent.tag.isoccupied(3, t) then
table.insert(tags, t)
end
end
c:tags(tags)
return 0
end
-- Focus new clients
client.focus = c
-- Prevent new windows from becoming master
if not settings.new_become_master then
awful.client.swap(1, c)
end
-- Don't honor size hints
c.honorsizehints = false
end)
-- {{{ Arrange hook
awful.hooks.arrange.register(function(s)
-- Warp the mouse
if settings.warp_mouse then
mouse_warp()
end
-- Check focus
if not client.focus then
local c = awful.client.focus.history.get(s, 0)
if c then client.focus = c end
end
end)
-- vim: set filetype=lua fdm=marker tabstop=4 shiftwidth=4 expandtab smarttab autoindent smartindent nu:The most likely reason for you seeing the default settings, or nothing is that there is some error in the configuration file. You would have to take a look at the error output of xorg. Since I start X using startx I can look at it on the first sterminal (ALT - CTRL - F1). I don't know where the output would go if you use GDM or something similar.
If there are errors you could post them here and people might be able to help.
If the comment of the second config file is correct then the config most likely wont work with awesome 3.1 since the sytax of the config file changed between 3.0 and 3.1
Another possibility to get a working config would be to copy the default awesome config into your ~/.config/awesome folder and then gradually make changes to it, exchanging content for stuff from other configs, that way you'd know which change brakes something. -
Awesome menu not working?
Hey!
I installed Awesome,
> sudo pacman -S awesome
and then went about trying to get some sort of launcher up and working, in this case the built-in "awesome-menu", by following these steps.
> mkdir .awesome
> cd .awesome
> touch menu
> nano menu
Then simply inserted these lines:
leafpad
firefox
After that I edited ~/.awesomerc to the following (excerpt):
key
modkey = {"Mod4"}
key = "p"
command = "spawn"
arg = "exec `cat ~/.awesome/menu | awesome-menu`"
But when I launch X and Awesome, and press Mod4+p, nothing happens. I tried installing dmenu instead, and edited ~/.awesomerc once more, to the lines right below the awesome-menu entry in the FAQ linked to above. It works, when the key combo is pressed a light grey bar is displayed in the bottom portion of the screen. So how come the awesome-menu doesn't work?
(I'm aware of the fact that I could use dmenu instead, but I'd rather explore the capabilities of the built-in first afore I go ahead with extra functionalities. The documentation of the both is rather lacking... not sure what the differences are.)
Any ideas/suggestions/tips?
Thank you in advance.The stable version of Awesome doesn't have awesome-menu. You'll need to upgrade to a development version. Try awesome-git from AUR.
-
Upgrade libev-3.80-1 breaks awesome hotkeys for xterm
Hi,
I've just upgraded to libev-3.80-1 and now the default key assigned to kill() in awesome's rc.lua (meta+shift+c) produces no effect against an xterm or an urxvt - it does however work against an aterm and firefox. Actually, this is independent of the key assigned, and affects all calls in the "clientkeys" section.
Weird...
Anyhow, downgrading to libev-3.60-2 fixes this issue:
http://arm.kh.nu/community/os/i686/libe … pkg.tar.gzIf you want to use the newer libev, you could try rebuilding the awesome package you're using from source. Do you know how to use abs and makepkg? You could bump the version of awesome you're using from 3.3.1 -> 3.3.3 while you're at it.
If that doesn't work, then I guess there were changes to libev that the release version of awesome doesn't yet properly deal with. You could try installing awesome-git from aur, but note that this is much less stable. (Depending on what day you install it, it may or may not break for you.) -
Yoga 2 Bluetooth not stable with 7260 AC card
Hi everyone,
I'm having a problem with my Microsoft Wireless Bluetooth 8000 presenter mouse staying connected via Bluetooth. I have installed the latest Kona Wifi driver and the latest Bluetooth driver from the Lenovo site. It's my opinion that these two drivers are not compatible.
The only way I have been able to keep both the wifi and the Bluetooth stable and not drop connections is to have the latest Kona driver for wifi and roll back the Bluetooth driver to the "generic Bluetooth driver" from 2006. When I use the most recent Bluetooth driver it works initially but then it will be totally unresponsive after I sleep or restart the computer and I have to keep reinstalling the Bluetooth mouse to reconnect. Crazy!
I have all the Bluetooth, USB and Wifi energy setting turned off so the computer cannot put any of them to sleep to save power.
On a side note, I also installed the Intel AC dual band version of the card.
I have noticed that I have lost my 5 Ghz wifi connection completely a couple of times in the last few days with both the Kona version of the wifi driver and with the driver direct from Intel's site. Both appear to be the same driver. The only way I am able to get my 5 Ghz back is to reboot the computer and bang - it's back.
The other interesting thing is I can have the laptop right next to my router and the it will go from 2 bars to 5 bars back and forth but when I monitor the connection with Inssider it does not show any signal drops or degradation of signal. What the heck is going on with the windows wifi meter?
I don't blame these issues on Lenovo and I understand that I now have a non-stock wifi card installed so I'm on my own. I think there is an issue Intel not getting these drivers right with the windows 8.1 update. Intel needs to get their crap together with their 7260 series of wifi cards. Anyone know what the new MacBook pros are using for AC wifi cards?
BTW - turning of Bluetooth is not a reasonable solution to fixing my problems. Both should just work. I'm curious if anyone else has found a good combination of Bluetooth and wifi drivers who may also have installed the AC dual band version of the card. I'm about 90 percent stable at this point but I just can't stand the idea of using a Bluetooth driver from 2006.
Overall, the laptop is good. The greasy looking track pad looks like hell already and the light bleed from the bottom of the screen is annoying. High res is awesome for most things but almost un-useable for other older programs that won't scale right. My wife is getting huge headaches trying to use a work program with miniature font. When I remote desktop into my home server it is terribly small....break out the magnifying glass!
Looking forward to the yellow update and hopefully some wifi/Bluetooth stability in the near future - I'm talking to you Intel. Peace!I'm using a Logitec Bluetooth mouse and have problems. I installed the Bluetooth drivers from the Lenovo web site. When I click to open a window, the Bluetooth mouse becomes inoperable. I can use the touch screen or the pad to move the cursor or windows. The mouse will "go to sleep" and then re-activate after perhaps 20 seconds or so.
No time to troubleshoot it right now, but has anyone tried new drivers from Intel for the wifi card or from Microsoft for Bluetooth? All Lenovo drivers are dated October 16 I think. The fact that it happens with a Logitec mouse susggests driver problems.
Love the laptop, however !! -
Why BIA is not stable after all these years? (old)
Hi all,
We purchased BIA (16GB blades) in 2006, implemented to our production in 2007 with Version 34.
It was a success; the first month BIA was hit 18K times. Today we are seeing about 300K hit a month (we're using 32GB blades with version 49. ). I can assure you that it was(and is)not a plug and play appliance, we have experienced every single BIA error existed on earth. Don't get me wrong; when it works it's an awesome product, I believe in BIA and support it 150%, this is why i am here spending my time.
3 weeks back, we upgraded BIA from Ver 48 to 49. After a week of quiet time, one of my blades went down for no appearent reason, that not only caused an outage for thousands of internal and external customers but wiped out the confidence that I have with the new version 49.
Today, I am "once again" sending apology emails to my users, customers, my boss, CIO etc about the BIA outage. Forget about preventing this to happen in the first place, but I don't understand why it is so hard for you SAP guys to identify the query that crushed the blade(s). I assume your priority is making BIA fancier - such as working on back-up and recovery - instead of making it stable, or at least more monitorable
It is very, very, very frustrating that after all these years that this tool is still not stable, in other words after all the feedback we gave to SAP, after all the times we spent together, we are back to the square one. Think about , would you be keep investigating to a car that keep stopping in the middle of rush hour traffic? So why should you pay hundreds of thousands of dollars for a product that goes down every day?
Anyways, let me know if you know a way to find out what particular query brings down BIA without leaving the trace on 24x7 for days.
Cheers
Tansu
Edited by: tansuaksu on Apr 30, 2009 1:46 PM
Edited by: tansuaksu on Apr 30, 2009 2:01 PMTansu,
if you go to Usage -> Acess Statistics in TREXAdmin (Python), not all the columns are populated by default (at least in our case)
Like #unloads, #reads, waittime, #merges, # writes, #plans, input/output, # FEMS among others.
To collect this data, you have to activate additional level of stats.
Go to indexserver.ini for your masterblade. default is set to No. Change it to yes.
[indexusagecollector]
#active = no
active = yes
Unfortunately, there is no documentation available on what each of these values truly represent. So you are left on your own to interpret them as you like.
A discussion in this forum on how you read these numbers would be helpful though.
BIA Stability:
To sum up: BIA has the notion "It rocks when it works" in our company.
Some of biggest issues:
1. There are queries failing that BI team doesn't know about unless users report to us. But users have stopped reporting BIA related failures to us because same query completes successfully after 5 mins (when the temporary memory goes down again). so our users just rerun the quey after sometime rather than reporting it to us. Bottomline - BIA is NOT up 100%. we only know if a query has failed if we go thru the trace files.
2. As Arun mentioned, we too have some queries that dont work at all with BIA due to huge dataset sent back to OLAP. Eventually we had to turn off BIA for those queries.
3. It takes too long for back up to take over. In our case it took 75 mins before back up took over.
we would rather prefer to set a threshold ourselves on when back up should kick in rather than waiting for active blade to go completely down. Unless its a hardware failure (chances of which are pretty slim), back up would always wait for active blade to go completely down. what if an acitve blade is in hung state?
[Re: Automated Failover - can we force backup blade to take over?] discussed here
4. We dont know which query brings BIA down. (that what we are tyring to figure out using the stats mentioned above.)
4. Inverted Data model - we have some cubes which have master data tables bigger than fact tables.
For some, BIA works. For others, aggregates are more effecient. we are still not able to figure out, whats the difference?
[How to relate STEPUID/DMUID in RSDDSTAT_DM to STATUID in RSDDSTATTREXSERV; discussed here
Lets see how Rev 50 addresses our issues.
Thanks,
Saurabh Bansal -
[SOLVED] Does anyone really have a "rock stable" Arch?
Please see the Rock Stable Arch Linux HOWTO wiki page and contribute. The short answer to this thread for those who want to know if Arch can be really stable is yes.
Lately I've been looking into FreeBSD, but I haven't installed it because some of my important hardware (wireless card, etc.) are not supported until 8.0 and I would prefer to wait until the official release rather than run betas & RCs. In almost all of the comparisons between FreeBSD and Linux that I read, there are references to FreeBSD being far more stable than Linux because of the base system and how thought is put into how the programs at the base work together and the FreeBSD team makes sure everything is working correctly before deployment of a release. From what I've read, FreeBSD is designed with thought and effort put into how the base system should function to ensure stability and correctness, whereas Linux is grown as haphazard development and hacking is dropped onto the kernel piece by piece, with everything being an add on.
That doesn't sound very fair to Linux, for if that were 100% true, Linux wouldn't even work! The Arch Wiki elucidates that the people behind the Arch project put plenty of effort towards code-correctness, elegance, and cutting the BS out of the system, right?
So after reading up on FreeBSD and having some time to still enjoy Linux until FBSD 8.0 hits STABLE, I started to think that maybe Linux is still right for me, the best for me. After all, Arch takes everything the entire Linux community has to offer and allows us to put it together with pacman and the awesome AUR. The only problem is, as soon as I fired up my old reliable Arch install and did a pacman -Syu, I found that my nvidia driver was broken for this release and I would probably have to downgrade. I know it's probably an easy fix, but I really don't like when this kind of stuff happens. I get that feeling of finally finishing my configuration just the way I like it, finally conquering the beast that is Arch, and then a simple update causes a showstopper breakage.
Is this really possible to avoid? Is it because I'm using proprietary software that can't really be controlled and that going (almost) all open-source would help prevent this? How often do these breakages happen to you guys? Do you consider it a pain to fix or do you just shrug it off as part of the process of using Arch?
I used to not mind so much but that was when I was still configuring and it just felt like one extra step. Now I'd like to have that rock of a system I know (hope) Linux can be. I even considered switching to slackware or another distro, but I love Arch so much! It's just so perfect! But how can I avoid these kinds of breakages? I'd really rather not just accept them as a part of using Linux because that makes me feel like I'm using Windows and accepting the fact that my computer crawls and crashes every other day.
I know the easy post for you guys would be to tell me "just try FreeBSD/Slackware/other OS and leave me alone", but I really want to stay with Arch. I love the community, the documentation, the software, the everything! I feel it really is "Linux done right". But what about these update breakages?
One more question (well, two more, but related): Is it true that not updating for a long time and then doing a pacman -Syu can break your system? Do I have to update every day to keep Arch happy and stable?
Thanks everyone. Hopefully you guys can shed some light on this for me.
Last edited by Allamgir (2009-08-22 12:14:17)I got your message, so here's a reply:
I've walked the line between bleeding edge features and rock-solid stability for several years now. I finally made a decision a few months ago and came down on the side of stability. There really isn't a right answer to this question - it comes down to personal preference.
There is a lot to be said for a bleeding-edge rolling-release distro such as Arch. I remember the time I ran my first pacman -Syu and felt awed at the fact that I was one of the first users to get the latest version of *. However, I've grown more pragmatic since then. Sure, it's fun to get the latest and "greatest"; but is it really worth it? Are you really much more productive with the new version than you were with the old? In my case, the answer was usually no. I just don't care if my stuff is at the latest version (provided that the latest security updates are installled, that is!)
So, I started using Scientific Linux (a RHEL clone from CERN, Fermilab, and some other research institutes). It has a fairly lightweight live CD available and works beautifully for me. My kernel version is 2.6.18 (with some newer drivers). Do I care? Not really. It works and it does what I tell it to do. There are some exceptions. While I mostly browse with elinks, sometimes I need to use Firefox for Flash or whatnot. And I like to have that in the latest version. So, I just download the latest binary and run it from my home directory. Problem solved.
You don't have to go as far as I did. There are some other choices:
Slackware. I know you decided that Slack wasn't for you, but it's a remarkable system and it can be pretty modern if you choose to keep it up-to-date. Even if you end up not liking it, I feel that Slackware's package management (or lack thereof) is something every user should experience. It gives you a new outlook on the KISS philosophy.
SliTaz. I include SliTaz because it is the perfect system to customize completely. If you want it up to date, it will be. New versions not in the repos? Build them; it's easy. SliTaz is what you make of it, provided that you are willing to put in the time.
Arch. You can stay with Arch (sounds like that's where you're at right now). If you want the latest software just for the sake of it, or use bloated amalgamations that are hard to update yourself (*cough* desktop environments *cough*), Arch is the best rolling-release system I've used. The team is dedicated and this community is great.
Think it over and come to your own decision. -
[SOLVED] Google Chrome doesn't render page after lost focus in Awesome
Hello !
I have installed fresh Arch Linux with linux-ck and awesome. After that I have installed google-chrome-stable and started it. Everything works well, but if I opened other application (chrome lost focus) and then got back to the chrome, it freezes. Mouce cursor worked as expected (cursor changed after hovering link, input field, etc) but view was not updated.
Everything works well again if I change desktop to the second and go back to the first again (mod+2, mod+1). Chrome works, responses etc well.
bvg
Did you met something like that ? How can I fix it ?
Edit:
I bet this issue has something in common with hw acceleration. If I run some game on steam, lost focus, got back to the game - it show last rendered screen before focus has been lost (sound is ok, game is responsible but not updates screen).
I use nvidia. Do I need some extra configuration to handle it ?
Last edited by hsz (2013-12-18 17:16:17)The problem was `xcompmgr` which caused "freezing" view. I switched it to `unagi` and all of the problems have gone.
-
Hi,
I hopped distros until I found Arch and since then I've been hopping DE/WMs until I tried Awesome the other day. Although it may be a little premature to say I've settled, I really like it.
One reason I hadn't tried it sooner was because it wasn't in the default repos; I assumed it wasn't very popular or maybe dwm was better. Now I see it's because it depends on the AUR package cairo-xcb which sounds like it's no longer developed/supported; does that mean Awesome will be changed to no longer depend on it? Or will Awesome users run into issues in the future? Basically can I settle down now? Or is Awesome's future not so bright?
ThanksRead this, the link within, and the blog post link in comment 24 from awesome's creator:
http://mailman.archlinux.org/pipermail/ … 17852.html
awesome will remain in the AUR until the software that it depends on is stable or it drops xcb as its windowing backend. It is very popular though, so I doubt that it's going anywhere.
--EDIT--
Scroll down to "Tue, 1 Jun 2010" or search for XCB in the blog.
Last edited by skottish (2011-07-16 19:39:31) -
Hi guys, just wondering if anyone knows if its possible to center align the awesome menu (mod4+w one). I have looked everywhere and can't seem to find a solution.
Thanks!Hello specialblend, and welcome on board. Could you elaborate what you mean with center align? Do you simply mean centering the menu on screen? That would be as easy as modifying /usr/share/awesome/lib/awful/menu.lua, at line ~320 (~144 in the git version), you could remove / comment out the lines marked with a "-" and add the lines marked with a "+":
_menu.x = _menu.parent.x + w + _menu.width > screen_w and
_menu.parent.x - _menu.width or _menu.parent.x + w
else
- if m_coords == nil then
- m_coords = capi.mouse.coords()
- m_coords.x = m_coords.x + 1
- m_coords.y = m_coords.y + 1
- end
- _menu.y = m_coords.y < s_geometry.y and s_geometry.y or m_coords.y
- _menu.x = m_coords.x < s_geometry.x and s_geometry.x or m_coords.x
- _menu.y = _menu.y + _menu.height > screen_h and
- screen_h - _menu.height or _menu.y
- _menu.x = _menu.x + _menu.width > screen_w and
- screen_w - _menu.width or _menu.x
+ _menu.x = (screen_w - _menu.width)/2
+ _menu.y = (screen_h - _menu.height)/2
end
_menu.wibox.x = _menu.x
_menu.wibox.y = _menu.y
The code in this sections checks whether the menu in question has a parent. If not (the else block), we assign the half the screen width, resp. height minus the menu width, resp. height to the menus x/y coordinates. Yours could look slightly different when you are using the stable package.
(To comment out a line in lua, preceed it with a "--")
Last edited by Wey (2012-10-29 08:20:52) -
Awesome becoming a whole lot less... awesome?
For a while awesome has been my favorite manager, and I really enjoy the new features that are implemented. However, version changes make configuration a pain in the #^@ and thus I am left with awesome 3.4 seeing no wibox and having improperly functioning window management. The whole thing slows down quite a bit. I tried my best to port my rc.lua over to version 3.4 using the new signals but it didn't work (management is better, but no wibox).
Anyone want to share any tips that I haven't thought of? Anyone else frustrated like me at being unable to use one of the best wms ever?GGLucas wrote:
You say config changes every month, but I left my config unchanged for the better part of this year, and only had to really adapt it just now - I don't think that's unacceptable.
Would you rather the developers lock you into a suboptimal way of doing things ? I would imagine archers in particular wouldn't like that "debian stable" approach to doing things.
In the good old days of early awesome3-git, you had to rewrite your config four times a week, and you liked it ! You youngsters don't know what a real window manager is like
I was really thinking about getting a Debian Stable on my machine
I don't hate changes. I hate undocumented (or not well documented) changes. The awesome 3.3 to 3.4 wiki page is really not enough for a non-programmer like me (maybe a non-programmer should not use awesome in the first place...)
Every time awesome pushes out an upgrade, I will have to search the net for tips on how to get my old functionalities back, e.g., floating windows, windows on top... I have to admit that I do have the extra hours to fiddle with the config, that's why I always end up using this evil awesome wm -
I've been thinking about trying a tiling window manager (I currently use Openbox) and am thinking especially about trying awesome and xmonad.
I mostly use 5 main apps (ranked in how much I use them, 1 being the most):
1. Urxvt
2. Firefox
3. Songbird
4. Pidgin
5. XChat
I'm looking for it to have a lot of configurability as far as hotkeys go, I want to try and use the mouse as little as possible.
Feel free to recommend any other WMs if you want.I like xmonad alot personally.
Sounds like you run some of the same stuff as me constantly, not that it matters. I am sitting here with Firefox, three urxvtc terminals and thunderbird open, with pidgin and deluge sitting in my tray.
I really like in tiling window managers being able to have my browser in its nice little 65% pane, and my three 80 char wide terminal windows on the right-hand side of the screen showing as many lines as they can with no wasted space. I have pidgin easily set to auto float above everything when I bring it up for something, and then put it away, and it doesn't change my nice stable layout of everything else. I can hop to other workspaces to do other things and come back to my main WS with my nice happy setup. I can even "swap screens" with what's on my television, open something, and then swap back.
Plus Haskell is pretty fun to mess with really. If you don't want to learn it, it is easy to base your config on others that are available (which is what I initially did), but I have been working through some Haskell tutorials just because it is a pretty neat language.
Awesome can act weird when you misconfigure its file though. So can everything else, really... But I found that Awesome handled typo's and problems less gracefully than xmonad most of the time. Xmonad would just chugging with your old config if you typo'd in your new config, unless you messed something up fierce. Sometimes Awesome would check my file and say it was fine, and then just blow up when I tried to load it. I am sure that would go away if I learned the syntax better, but I preferred xmonad's more graceful way of dealing with most of my learning mistakes.
Awesome works though. It's handy if you like clicking on your bar, and if you prefer configuring in lua (and fixing your config often on update, if you don't hold back the package). It's notification daemon is a neat touch, and the customizable widgets are sort of fun to play with (after you choose which of the three libraries you want to use to manage updating them, and cross your fingers that it will still be there next release). I didn't run it terribly long, since I missed xmonad when I tried it and decided to come back and stop trying lots of wm's. Awesome has pretty sane defaults, I like that. YMMV. -
Reiser4 filesystem for /var: Is it stable enough?
I've read horror stories about the new reiser4 filesystem, where users have encountered significant data loss, alongside others who have used it for quite some time without issues. So I thought I'd start this thread to spark a little discussion about if this new filesystem is mature and robust enough to actually use on a regular basis. I plan on replacing my reiserfs-formatted /var partition with reiser4 if you guys think it's a worthwhile feat. If it isn't ... well ... I know what y'all have to say about the importance of keeping a clean /var/lib/pacman/local ...
BTW - I thought I would also mention that I split up my drive into many partitions like a more "traditional" linux OS, using ext2 for /boot, ext3 for /home (so windows ext3 drivers can r/w), reiserfs for /var, and ext4 for /, and the advantages are awesome. It's lovely to have access to my files in windows (especially /boot/grub/menu.lst), and the response time with pacman is very noticable! I can run circles around my Pentium 4 machine that I have yet to convert, and this machine is a 1 GHz P3 mobile-based laptop with an IDE disk, wooo
Last edited by synthead (2009-12-02 15:54:53)It's been stable for me.
-
I have a MacBook Pro (15-inch, Late 2008), Intel Core 2 Duo 2.53 GHz, 4GB Memory. and am currently running Snow Leopard 10.6.8.
I would like to know which is the most stable upgrade for my model? Mountain Lion, Mavericks or Yosemite?
When I had gone to the apple care centre in India a few months ago to upgrade my OSX to Mountain Lion, I was told that considering my macbook pro's specs, upgrading it would just make it less efficient, and that I should stick to Snow Leopard unless I consider buying a newer mac that would benefit from it. Is this true? I find it a bit hard to believe. Which update is most recommended?
I also notice that my mac has gotten considerably slower. While using chrome, it buffers and struggles with even just 5 tabs open. Could this have something to do with my current ios? As a precaution, I have always been making sure I have enough free space on disk i.e around 70 - 100 free out of 250GB.
Any advice is appreciated.
Thanks in advance.Mavericks is no longer available from the App Store, so your choice is Yosemite. One option is to create a new partition (~30- 50 GB), install the new OS, and ‘test drive’ it. If you like/don’t like it it, you can then remove the partition. Do a backup before you do anything. By doing this, if you don’t like it you won't have to go though the revert process.
Check to make sure your applications are compatible.
Application Compatibility
Applications Compatibility (2) -
Is Cool 'n Quiet stable?
I run a K8N Neo2 Platinum (MS-7025) with 1.4 bios, 3800+ NewCastle CPU and Kingston HyperX 400MHz memory.
The setup works like a charm, but when I enable "Cool 'n Quiet" it seems to cause lock-ups and reboots.
The system is NOT overclocked, everything is set to AUTO in BIOS, except for memory which has been set to a bit slower settings than SPD reports.
When I have Core Center open on screen to watch what Cool 'n Quiet does, it seems like most of the time it reports 200MHz x 5.0 at idle, but when I start up an application, it can peak to 380MHz x 12 ?
Neither memory nor CPU should be able to handle that kind of FSB clock, so is it a system bug that the clock peaks at way above 200MHz? I really don't DARE to use "Cool 'n Quiet" for that reason, I need a stable system that doesn't hang or reboot in the middle of working.
Later,
Anders.Quote
Originally posted by mrpiercer
{snip} both Core Center and cpu-z reports huge momentaneous jumps that takes the FSB to new heights.. Way over 300MHz in extremely short periods. Could it be that both applications simply gets tricked to think that the FSB is changed? If so, how come the systems locks up dead hard WITH C&Q enabled, but never once WITHOUT the C&Q enabled?
Andres,
I'm not getting the BSODs but the fluctuations do have me concerned. This thread is interesting. Blue screen caused by Vcore flucuations?
Raising the Vcore from 1.50 to 1.525 or 1.55 does seem to help stabilize my system but the CPU temp goes up. I've got a Thermalright XP-90 on the way so heat shouldn't be a problem.
===============================================
What I've found so far...
Cool & Quiet disabled in the BIOS.
Start CoreCenter running.
Start Speedfan running.
Start WCPUCLK
Put a full load on the CPU. (seti@home)
Just moving the mouse around causes a few alarming fluctuations seen in CoreCenter.
WCPUCLK doesn't register the fluctuations but I'm not getting BSODs.
1) Open CC. Click on CoreCenter , the program title button.
2) Click User
3) Set the fans on high
4) Click Apply.
Now the Vcore and FSB stabilize.
It appears that C & Q is turned off.
===============================================
It looks like what the other guys have been saying...Don't use CoreCenter except as a reference to help set up other programs like MBM and SpeedFan. Hmmm...RightMarks RM clock also sounds interesting.
Having a quieter system with Cool & Quiet turned on in the BIOS is nice. I'll have to do more testing to see if its stable. If C & Q is still causing instability after raising the CPU VID to 1.525 in the BIOS...I'll leave it off...Cie La Vie.
Later, Conrad
Maybe you are looking for
-
i'm trying to get an issue resolved and i was asked to send a copy of my system profile. im new to macs and dont understand what this is or where to find it, could someone help me out please? how do i get a copy of my system profile? thank you
-
How to invoke from UNIX script and pass back return code?
Though I am an experienced developer, I am new to java. I created a class containing a single method. I have performed my testing by running the class class.method from the command line in a UNIX (Solaris) environment. Now, I would like to have the c
-
When i connect my ipad to itunes it says "this ipad could not be used because the required software is not insatlled.Run the itunes installer to remove iTunes,then install the 64-bit version of itunes." I tried uninstalling and reinstalling itunes. s
-
Carry out modification comparison for REPS first.No changes possible.
Hi all, Can anybody help me out. I am new to upgrade project. I have made all the adjustments in SPAU, but left out with one object. I have chosen reset to original for this object. When I want to add some custom code. It is not allowing
-
Hi all, just wondered what would be the best way to handle this scenario: I have a large number of files and i want to create a watch folder to batch convert them to mp4. This seems straightforward enough : but they are all different aspects and i w