awesome : configuración y ejemplos
A petición de elsenyordelcaos, abro este hilo para compartir la configuración de awesome. Siéntete libre de comentar, coger ideas o poner tu propia configuración.
versión de awesome: 3.3rc2
rc.lua
-- Standard awesome library
require("awful")
-- Theme handling library
require("beautiful")
-- Notification library
require("naughty")
-- {{{ Variable definitions
-- Themes define colours, icons, and wallpapers
-- The default is a dark theme
-- theme_path = "/usr/share/awesome/themes/default/theme"
-- Uncommment this for a lighter theme
-- theme_path = "/usr/share/awesome/themes/sky/theme"
-- Mi own theme
theme_path = "/home/minaya/.config/awesome/temanaranja/theme.lua"
-- Actually load theme
beautiful.init(theme_path)
-- This is used later as the default terminal and editor to run.
terminal = "konsole"
editor = os.getenv("EDITOR") or "nano"
editor_cmd = terminal .. " -e " .. editor
-- Aliases
sci_calc = terminal .. " -name sci_calc -e octave"
-- 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,
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.max,
-- awful.layout.suit.max.fullscreen,
awful.layout.suit.magnifier,
awful.layout.suit.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 },
["Navigator"] = { screen = 1, tag = 2 },
["kmail"] = { screen = 1, tag = 3 },
["qtiplot"] = { screen = 1, tag = 5 },
["amarok"] = { screen = 1, tag = 6 },
["dragon"] = { screen = 1, tag = 6 },
["sci_calc"] = { screen = 1, tag = 5 },
}
-- Define if we want to use titlebar on all applications.
use_titlebar = false
-- }}}
-- {{{ Tags
-- Define tags table.
tags_names = { "main" , "www", "mail", "latex", "work", "other" }
tags_layout = { layouts[1], layouts[7], layouts[1], layouts[1], layouts[1], layouts[1] }
tags = {}
for s = 1, screen.count() do
-- Each screen has its own tag table.
tags[s] = {}
-- Create 9 tags per screen.
for tagnumber = 1, 6 do
-- tags[s][tagnumber] = tag(tagnumber)
tags[s][tagnumber] = tag(tags_names[tagnumber])
-- Add tags to screen one by one
tags[s][tagnumber].screen = s
-- awful.layout.set(layouts[1], tags[s][tagnumber])
--awful.names.set(tags_names[tagnumber], tags[s][tagnumber])
awful.layout.set(tags_layout[tagnumber], tags[s][tagnumber])
end
-- I'm sure you want to see at least one tag.
tags[s][1].selected = true
end
-- }}}
-- {{{ 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 },
{ "reboot", "sudo shutdown -r now" },
{ "halt", "sudo shutdown -h now" }
}
my_apps_menu = {
{ "qtiplot", "qtiplot" },
{ "writer", "kword" },
{ "spreadsheet", "kspread" },
{ "dragonplayer", "dragon" },
{ "krita", "krita" },
{ "burn dvd", "k3b" },
{ "system settings", "systemsettings" },
{ "draw latex", "ipe" }
}
mymainmenu = awful.menu.new({ items = { { "awesome", myawesomemenu, beautiful.awesome_icon },
{ "apps", my_apps_menu },
{ "open terminal", terminal },
{ "file manager", "dolphin" },
{ "web browser", "iceweasel" },
{ "music player", "amarok" },
{ "octave", sci_calc },
{ "mail", "kmail" },
{ "feed reader", "akregator" },
{ "kopete", "kopete" }
}
})
mylauncher = awful.widget.launcher({ image = 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)
if not c:isvisible() then
awful.tag.viewonly(c:tags()[1])
end
client.focus = c
c:raise()
end),
button({ }, 3, function () if instance then instance:hide() end instance = awful.menu.clients({ width=250 }) end),
button({ }, 4, function ()
awful.client.focus.byidx(1)
if client.focus then client.focus:raise() end
end),
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] = 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],
batterywidget,
s == 1 and mysystray or nil }
mywibox[s].screen = s
end
-- }}}
-- {{{ Mouse bindings
root.buttons({
button({ }, 3, function () mymainmenu:toggle() end),
button({ }, 4, awful.tag.viewnext),
button({ }, 5, awful.tag.viewprev)
})
-- }}}
-- {{{ Key bindings
globalkeys =
{
key({ modkey, }, "Left", awful.tag.viewprev ),
key({ modkey, }, "Right", awful.tag.viewnext ),
key({ modkey, }, "Escape", awful.tag.history.restore),
key({ modkey, }, "j",
function ()
awful.client.focus.byidx( 1)
if client.focus then client.focus:raise() end
end),
key({ modkey, }, "k",
function ()
awful.client.focus.byidx(-1)
if client.focus then client.focus:raise() end
end),
-- Layout manipulation
key({ modkey, "Shift" }, "j", function () awful.client.swap.byidx( 1) end),
key({ modkey, "Shift" }, "k", function () awful.client.swap.byidx( -1) end),
key({ modkey, "Control" }, "j", function () awful.screen.focus( 1) end),
key({ modkey, "Control" }, "k", function () awful.screen.focus(-1) end),
key({ modkey, }, "u", awful.client.urgent.jumpto),
key({ modkey, }, "Tab",
function ()
awful.client.focus.history.previous()
if client.focus then
client.focus:raise()
end
end),
-- Standard program
key({ modkey, }, "Return", function () awful.util.spawn(terminal) end),
key({ modkey, "Control" }, "r", awesome.restart),
key({ modkey, "Shift" }, "q", awesome.quit),
key({ modkey, }, "f", function () awful.util.spawn("iceweasel") end),
key({ modkey, }, "t", function () awful.util.spawn("dolphin") end),
key({ modkey, }, "q", function () awful.util.spawn("qtiplot") end),
key({ modkey, }, "p", function () awful.util.spawn("kopete") end),
key({ modkey, }, "m", function () awful.util.spawn("amarok") end),
key({ modkey, }, "v", function () awful.util.spawn("dragon") end),
key({ modkey, }, "b", function () awful.util.spawn("k3b") end),
key({ modkey, }, "c", function () awful.util.spawn("kmail") end),
key({ modkey, }, "o", function () awful.util.spawn(sci_calc) end),
key({ modkey, }, "s", function () awful.util.spawn("systemsettings") end),
key({ modkey, }, "l", function () awful.tag.incmwfact( 0.05) end),
key({ modkey, }, "h", function () awful.tag.incmwfact(-0.05) end),
key({ modkey, "Shift" }, "h", function () awful.tag.incnmaster( 1) end),
key({ modkey, "Shift" }, "l", function () awful.tag.incnmaster(-1) end),
key({ modkey, "Control" }, "h", function () awful.tag.incncol( 1) end),
key({ modkey, "Control" }, "l", function () awful.tag.incncol(-1) end),
key({ modkey, }, "space", function () awful.layout.inc(layouts, 1) end),
key({ modkey, "Shift" }, "space", function () awful.layout.inc(layouts, -1) end),
-- Prompt
key({ modkey }, "F1",
function ()
awful.prompt.run({ prompt = "Run: " },
mypromptbox[mouse.screen],
awful.util.spawn, awful.completion.bash,
awful.util.getdir("cache") .. "/history")
end),
key({ 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),
}
-- Client awful tagging: this is useful to tag some clients and then do stuff like move to tag on them
clientkeys =
{
key({ modkey, }, "f", function (c) c.fullscreen = not c.fullscreen end),
key({ modkey, "Shift" }, "c", function (c) c:kill() end),
key({ modkey, "Control" }, "space", awful.client.floating.toggle ),
key({ modkey, "Control" }, "Return", function (c) c:swap(awful.client.getmaster()) end),
key({ modkey, }, "o", awful.client.movetoscreen ),
key({ modkey, "Shift" }, "r", function (c) c:redraw() end),
key({ modkey }, "t", awful.client.togglemarked),
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
for i = 1, keynumber do
table.insert(globalkeys,
key({ modkey }, i,
function ()
local screen = mouse.screen
if tags[screen][i] then
awful.tag.viewonly(tags[screen][i])
end
end))
table.insert(globalkeys,
key({ modkey, "Control" }, i,
function ()
local screen = mouse.screen
if tags[screen][i] then
tags[screen][i].selected = not tags[screen][i].selected
end
end))
table.insert(globalkeys,
key({ modkey, "Shift" }, i,
function ()
if client.focus and tags[client.focus.screen][i] then
awful.client.movetotag(tags[client.focus.screen][i])
end
end))
table.insert(globalkeys,
key({ modkey, "Control", "Shift" }, i,
function ()
if client.focus and tags[client.focus.screen][i] then
awful.client.toggletag(tags[client.focus.screen][i])
end
end))
end
for i = 1, keynumber do
table.insert(globalkeys, key({ 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))
end
-- Set keys
root.keys(globalkeys)
-- }}}
-- {{{ 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) ~= awful.layout.suit.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, startup)
-- If we are not managing this application at startup,
-- move it to the screen where the mouse is.
-- We only do it for filtered windows (i.e. no dock, etc).
if not startup and awful.client.focus.filter(c) then
c.screen = mouse.screen
end
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, awful.mouse.client.move),
button({ modkey }, 3, awful.mouse.client.resize)
})
-- 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
awful.client.floating.set(c, floatapps[cls])
elseif floatapps[inst] then
awful.client.floating.set(c, 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 key bindings
c:keys(clientkeys)
-- 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.size_hints_honor = 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.getname(awful.layout.get(screen))
if layout and beautiful["layout_" ..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
end)
-- Hook called every minute
awful.hooks.timer.register(60, function ()
mytextbox.text = os.date(" %a %b %d, %H:%M ")
end)
-- }}}
Nota: es posible que este fichero contenga pequeños errores. He estado trabajando en él hoy, adaptándolo a aplicaciones de kde.
theme.lua
--------------------------
-- minaya awesome theme --
--------------------------
theme = {}
theme.font = "sans 8"
theme.bg_normal = "#222222"
theme.bg_focus = "#f39d00"
theme.bg_urgent = "#ff0000"
theme.bg_minimize = "#444444"
theme.fg_normal = "#f39d00"
theme.fg_focus = "#000000"
theme.fg_urgent = "#ffffff"
theme.fg_minimize = "#ffffff"
theme.border_width = "1"
theme.border_normal = "#000000"
theme.border_focus = "#f39d00"
theme.border_marked = "#91231c"
-- There are another variables sets
-- overriding the default one when
-- defined, the sets are:
-- [taglist|tasklist]_[bg|fg]_[focus|urgent]
-- titlebar_[bg|fg]_[normal|focus]
-- Example:
--taglist_bg_focus = #ff0000
-- Display the taglist squares
theme.taglist_squares_sel = "/home/minaya/.config/awesome/temanaranja/taglist/squarefw.png"
theme.taglist_squares_unsel = "/home/minaya/.config/awesome/temanaranja/taglist/squarew.png"
theme.tasklist_floating_icon = "/home/minaya/.config/awesome/temanaranja/tasklist/floatingw.png"
-- Variables set for theming menu
-- menu_[bg|fg]_[normal|focus]
-- menu_[border_color|border_width]
theme.menu_submenu_icon = "/home/minaya/.config/awesome/temanaranja/submenu.png"
theme.menu_height = "15"
theme.menu_width = "100"
-- You can add as many variables as
-- you wish and access them by using
-- beautiful.variable in your rc.lua
--bg_widget = #cc0000
-- Define the image to load
theme.titlebar_close_button_normal = "/home/minaya/.config/awesome/temanaranja/titlebar/close.png"
theme.titlebar_close_button_focus = "/home/minaya/.config/awesome/temanaranja/titlebar/closer.png"
theme.titlebar_ontop_button_normal_inactive = "/home/minaya/.config/awesome/temanaranja/titlebar/ontop_normal_inactive.png"
theme.titlebar_ontop_button_focus_inactive = "/home/minaya/.config/awesome/temanaranja/titlebar/ontop_focus_inactive.png"
theme.titlebar_ontop_button_normal_active = "/home/minaya/.config/awesome/temanaranja/titlebar/ontop_normal_active.png"
theme.titlebar_ontop_button_focus_active = "/home/minaya/.config/awesome/temanaranja/titlebar/ontop_focus_active.png"
theme.titlebar_sticky_button_normal_inactive = "/home/minaya/.config/awesome/temanaranja/titlebar/sticky_normal_inactive.png"
theme.titlebar_sticky_button_focus_inactive = "/home/minaya/.config/awesome/temanaranja/titlebar/sticky_focus_inactive.png"
theme.titlebar_sticky_button_normal_active = "/home/minaya/.config/awesome/temanaranja/titlebar/sticky_normal_active.png"
theme.titlebar_sticky_button_focus_active = "/home/minaya/.config/awesome/temanaranja/titlebar/sticky_focus_active.png"
theme.titlebar_floating_button_normal_inactive = "/home/minaya/.config/awesome/temanaranja/titlebar/floating_normal_inactive.png"
theme.titlebar_floating_button_focus_inactive = "/home/minaya/.config/awesome/temanaranja/titlebar/floating_focus_inactive.png"
theme.titlebar_floating_button_normal_active = "/home/minaya/.config/awesome/temanaranja/titlebar/floating_normal_active.png"
theme.titlebar_floating_button_focus_active = "/home/minaya/.config/awesome/temanaranja/titlebar/floating_focus_active.png"
-- You can use your own command to set your wallpaper
theme.wallpaper_cmd = { "awsetbg /home/minaya/.config/awesome/temanaranja/background.png" }
-- You can use your own layout icons like this:
theme.layout_fairh = "/home/minaya/.config/awesome/temanaranja/layouts/fairhw.png"
theme.layout_fairv = "/home/minaya/.config/awesome/temanaranja/layouts/fairvw.png"
theme.layout_floating = "/home/minaya/.config/awesome/temanaranja/layouts/floatingw.png"
theme.layout_magnifier = "/home/minaya/.config/awesome/temanaranja/layouts/magnifierw.png"
theme.layout_max = "/home/minaya/.config/awesome/temanaranja/layouts/maxw.png"
theme.layout_fullscreen = "/home/minaya/.config/awesome/temanaranja/layouts/fullscreenw.png"
theme.layout_tilebottom = "/home/minaya/.config/awesome/temanaranja/layouts/tilebottomw.png"
theme.layout_tileleft = "/home/minaya/.config/awesome/temanaranja/layouts/tileleftw.png"
theme.layout_tile = "/home/minaya/.config/awesome/temanaranja/layouts/tilew.png"
theme.layout_tiletop = "/home/minaya/.config/awesome/temanaranja/layouts/tiletopw.png"
theme.awesome_icon = "/usr/share/awesome/icons/awesome16.png"
return theme
-- vim: filetype=lua:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=80
- Inicie sesión o regístrese para enviar comentarios
- 5819 lecturas


Cuelgo el mio, esta en construcción, el de tema no lo pongo porque todavía no he cambiado nada.
-- Standard awesome libraryrequire("awful")
-- Theme handling library
require("beautiful")
-- Notification library
require("naughty")
-- Load Debian menu entries
require("debian.menu")
-- {{{ Variable definitions
-- Themes define colours, icons, and wallpapers
-- The default is a dark theme
theme_path = "/home/mfauvell/.config/awesome/temes/primer/theme.lua"
-- Uncommment this for a lighter theme
-- theme_path = "/usr/share/awesome/themes/sky/theme.lua"
-- Actually load theme
beautiful.init(theme_path)
-- This is used later as the default terminal and editor to run.
terminal = "urxvt"
editor = os.getenv("EDITOR") or "editor"
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,
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.max,
awful.layout.suit.max.fullscreen,
awful.layout.suit.magnifier,
awful.layout.suit.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)
-- x-terminal-emulator -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 =
{
["arora"] = { screen = 1, tag = 1 },
["urxvt"] = { 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_names = {"www", "urxvt", "pdf", "laTEX", "multi", "net", "code", "mpd", "im"}
tags_layout = {
layouts[7],
layouts[1],
layouts[1],
layouts[1],
layouts[10],
layouts[1],
layouts[1],
layouts[1],
layouts[1]
}
tags = {}
for s = 1, screen.count() do
-- Each screen has its own tag table.
tags[s] = {}
-- Create 9 tags per screen.
for tagnumber = 1, 9 do
tags[s][tagnumber] = tag(tags_names[tagnumber])
-- Add tags to screen one by one
tags[s][tagnumber].screen = s
awful.layout.set(tags_layout[tagnumber], tags[s][tagnumber])
end
-- I'm sure you want to see at least one tag.
tags[s][1].selected = true
end
-- }}}
-- {{{ 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 },
{ "Debian", debian.menu.Debian_menu.Debian }
}
})
mylauncher = awful.widget.launcher({ image = 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 = awful.util.table.join(
awful.button({ }, 1, awful.tag.viewonly),
awful.button({ modkey }, 1, awful.client.movetotag),
awful.button({ }, 3, function (tag) tag.selected = not tag.selected end),
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({ 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(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] = 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
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( 1) end),
awful.key({ modkey, "Control" }, "k", function () awful.screen.focus(-1) end),
awful.key({ modkey, }, "u", awful.client.urgent.jumpto),
awful.key({ modkey, }, "Tab",
function ()
awful.client.focus.history.previous()
if client.focus then
client.focus:raise()
end
end),
-- 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),
-- Alicacións
awful.key({modkey, }, "a", function () awful.util.spawn("arora", false) 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)
)
-- Client awful tagging: this is useful to tag some clients and then do stuff like move to tag on them
clientkeys = awful.util.table.join(
awful.key({ modkey, }, "f", function (c) c.fullscreen = not c.fullscreen end),
awful.key({ modkey, "Shift" }, "c", function (c) c:kill() end),
awful.key({ modkey, "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", awful.client.togglemarked),
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
for i = 1, keynumber do
table.foreach(awful.key({ modkey }, i,
function ()
local screen = mouse.screen
if tags[screen][i] then
awful.tag.viewonly(tags[screen][i])
end
end), function(_, k) table.insert(globalkeys, k) end)
table.foreach(awful.key({ modkey, "Control" }, i,
function ()
local screen = mouse.screen
if tags[screen][i] then
tags[screen][i].selected = not tags[screen][i].selected
end
end), function(_, k) table.insert(globalkeys, k) end)
table.foreach(awful.key({ modkey, "Shift" }, i,
function ()
if client.focus and tags[client.focus.screen][i] then
awful.client.movetotag(tags[client.focus.screen][i])
end
end), function(_, k) table.insert(globalkeys, k) end)
table.foreach(awful.key({ modkey, "Control", "Shift" }, i,
function ()
if client.focus and tags[client.focus.screen][i] then
awful.client.toggletag(tags[client.focus.screen][i])
end
end), function(_, k) table.insert(globalkeys, k) end)
table.foreach(awful.key({ 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), function(_, k) table.insert(globalkeys, k) end)
end
-- Set keys
root.keys(globalkeys)
-- }}}
-- {{{ 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) ~= awful.layout.suit.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, startup)
-- If we are not managing this application at startup,
-- move it to the screen where the mouse is.
-- We only do it for filtered windows (i.e. no dock, etc).
if not startup and awful.client.focus.filter(c) then
c.screen = mouse.screen
end
if use_titlebar then
-- Add a titlebar
awful.titlebar.add(c, { modkey = modkey })
end
-- Add mouse bindings
c:buttons(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)
))
-- 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
awful.client.floating.set(c, floatapps[cls])
elseif floatapps[inst] then
awful.client.floating.set(c, 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 key bindings
c:keys(clientkeys)
-- 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.size_hints_honor = 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.getname(awful.layout.get(screen))
if layout and beautiful["layout_" ..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
end)
-- Hook called every minute
awful.hooks.timer.register(60, function ()
mytextbox.text = os.date(" %a %b %d, %H:%M ")
end)
-- }}}
Solo he cambiado los nombres de los tag y su layout predeterminado, he configurado un par de aplicaciones para que se abran en el tag deseado y he añadido un atajo de teclado para arora y poco mas.
Mi configuración es simple, no floating apps, no apps en determinados tags. ni mouse bindings
TEMAS - línea 11
Cambié el tema obscuro que viene por omisión, y escogí el celeste:
-- {{{ Variable definitions-- Themes define colours, icons, and wallpapers
-- The default is a dark theme
-- theme_path = "/usr/share/awesome/themes/default/theme"
-- Uncommment this for a lighter theme
theme_path = "/usr/share/awesome/themes/sky/theme"
TERMINAL (línea 22)
terminal = "urxvt"MOD KEY (línea 31)
Dejé la que viene por omisión
modkey = "Mod4"LAYOUTS (línea 33) Mod4+barra de espacio
Cambié el orden de los layouts, me gustan mis aplicaciones maximizadas
y dividir la pantalla horizontalmente para hacer traducciones.
-- Table of layouts to cover with awful.layout.inc, order matters.layouts =
{
awful.layout.suit.max,
awful.layout.suit.fair.horizontal,
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.max.fullscreen,
awful.layout.suit.magnifier,
awful.layout.suit.floating
TAGS (línea 81) Cambié el número de tags de 9 a 4.
for tagnumber = 1, 4 doATAJOS DE TECLAS (línea 232) Lanzo mis apps con la tecla Windows + otra tecla
-- My keybindingskey({ modkey, }, "i", function () awful.util.spawn ("iceweasel") end),
key({ modkey, }, "e", function () awful.util.spawn ("pcmanfm") end),
key({ modkey, }, "u", function () awful.util.spawn ("xchat") end),
key({ modkey, }, "c", function () awful.util.spawn ("urxvt") end),
key({ modkey, }, "m", function () awful.util.spawn ("sylpheed") end),
key({ modkey, }, "Print", function () awful.util.spawn ("urxvt -e scrot -cd 10") end),
key({ modkey, }, "Delete", function () awful.util.spawn ("sudo halt") end),
key({ modkey, }, "l", function () awful.util.spawn ("xlock -mode blank") end),
HORA Y FECHA (línea 446)
mytextbox.text = os.date(" %a %d.%m.%G %R ")CERRAR APPLICACIONES (línea 263) ahora cierro con la tecla Windows izquierda + d
key({ modkey, }, "d", function (c) c:kill() end),ELIMINACIÓN DEL WALLPAPER (no me gustan, así ahorro ram)
$ sudo nano -w /usr/share/awesome/themes/sky/themey comenté la línea 46 al final del fichero, ejemplo:
#wallpaper_cmd = awsetbg /usr/share/awesome/themes/sky/sky-background.png
LANZAR AWESOME
Edito mi .xinitrc:
#!/bin/shxsetroot -solid black
xrdb -merge .Xdefaults
numlockx &
unclutter -idle 2 &
ivman &
awesome
hola :)
Por fin me he liberado de twm en el portátil, así que aquí va el mío. La versión es Accidental Babies, porque al ver los problemas que daba Complicated, en Arch han decidido dejar la versionitis por un tiempo y se ha hecho algo así como un downgrade
rc.lua
-- Standard awesome libraryrequire("awful")
-- Theme handling library
require("beautiful")
-- Notification library
require("naughty")
-- {{{ Variable definitions
-- Themes define colours, icons, and wallpapers
-- The default is a dark theme
-- theme_path = "/usr/share/awesome/themes/default/theme"
-- Uncommment this for a lighter theme
theme_path = "/home/arctica/.config/awesome/arctica.theme"
-- Actually load theme
beautiful.init(theme_path)
-- This is used later as the default terminal and editor to run.
terminal = "urxvt"
editor = os.getenv("EDITOR") or "vim"
editor_cmd = terminal .. " -e " .. editor
-- Default modkey.
-- Usually, Mod4 is the key with a logo between Control and Alt.
-- If you do not like this or do not have such a key,
-- I suggest you to remap Mod4 to another key using xmodmap or other tools.
-- However, you can use another modifier like Mod1, but it may interact with others.
modkey = "Mod4"
-- Table of layouts to cover with awful.layout.inc, order matters.
layouts =
{
awful.layout.suit.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.max,
awful.layout.suit.max.fullscreen,
awful.layout.suit.magnifier,
awful.layout.suit.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,
["dia"] = 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 =
{
["Navigator"] = { screen = 1, tag = 8 },
["epdfview"] = { screen = 1, tag = 5 },
}
-- Define if we want to use titlebar on all applications.
use_titlebar = false
-- }}}
-- {{{ Tags
-- Define tags table.
tags = {}
for s = 2, screen.count() do
-- Each screen has its own tag table.
tags[s] = {}
-- Create 9 tags per screen.
for tagnumber = 1, 9 do
tags[s][tagnumber] = tag(tagnumber)
-- Add tags to screen one by one
tags[s][tagnumber].screen = s
awful.layout.set(layouts[1], tags[s][tagnumber])
end
-- I'm sure you want to see at least one tag.
tags[s][1].selected = true
end
tags[1] = {}
tags[1][1] = tag("laTeX")
tags[1][1].screen = 1
awful.layout.set(layouts[1], tags[1][1])
tags[1][1].selected = true
tags[1][2] = tag("code")
tags[1][2].screen = 1
awful.layout.set(layouts[1], tags[1][2])
tags[1][3] = tag("tres")
tags[1][3].screen = 1
awful.layout.set(layouts[1], tags[1][3])
tags[1][4] = tag("cuatro")
tags[1][4].screen = 1
awful.layout.set(layouts[1], tags[1][4])
tags[1][5] = tag("pdf")
tags[1][5].screen = 1
awful.layout.set(layouts[1], tags[1][5])
tags[1][6] = tag("seis")
tags[1][6].screen = 1
awful.layout.set(layouts[1], tags[1][6])
tags[1][7] = tag("siete")
tags[1][7].screen = 1
awful.layout.set(layouts[1], tags[1][7])
tags[1][8] = tag("www")
tags[1][8].screen = 1
awful.layout.set(layouts[1], tags[1][8])
tags[1][9] = tag("im")
tags[1][9].screen = 1
awful.layout.set(layouts[1], tags[1][9])
tags[1][1].selected = true
-- }}}
-- {{{ 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 = 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)
if not c:isvisible() then
awful.tag.viewonly(c:tags()[1])
end
client.focus = c
c:raise()
end),
button({ }, 3, function () if instance then instance:hide() end instance = awful.menu.clients({ width=250 }) end),
button({ }, 4, function ()
awful.client.focus.byidx(1)
if client.focus then client.focus:raise() end
end),
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] = 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
root.buttons({
button({ }, 3, function () mymainmenu:toggle() end),
button({ }, 4, awful.tag.viewnext),
button({ }, 5, awful.tag.viewprev)
})
-- }}}
-- {{{ Key bindings
globalkeys =
{
key({ modkey, }, "Left", awful.tag.viewprev ),
key({ modkey, }, "Right", awful.tag.viewnext ),
key({ modkey, }, "Escape", awful.tag.history.restore),
key({ modkey, }, "j",
function ()
awful.client.focus.byidx( 1)
if client.focus then client.focus:raise() end
end),
key({ modkey, }, "k",
function ()
awful.client.focus.byidx(-1)
if client.focus then client.focus:raise() end
end),
-- Layout manipulation
key({ modkey, "Shift" }, "j", function () awful.client.swap.byidx( 1) end),
key({ modkey, "Shift" }, "k", function () awful.client.swap.byidx( -1) end),
key({ modkey, "Control" }, "j", function () awful.screen.focus( 1) end),
key({ modkey, "Control" }, "k", function () awful.screen.focus(-1) end),
key({ modkey, }, "u", awful.client.urgent.jumpto),
key({ modkey, }, "Tab",
function ()
awful.client.focus.history.previous()
if client.focus then
client.focus:raise()
end
end),
-- Standard program
key({ modkey, }, "Return", function () awful.util.spawn(terminal) end),
key({ modkey, "Control" }, "r", awesome.restart),
key({ modkey, "Shift" }, "q", awesome.quit),
key({ modkey, }, "l", function () awful.tag.incmwfact( 0.05) end),
key({ modkey, }, "h", function () awful.tag.incmwfact(-0.05) end),
key({ modkey, "Shift" }, "h", function () awful.tag.incnmaster( 1) end),
key({ modkey, "Shift" }, "l", function () awful.tag.incnmaster(-1) end),
key({ modkey, "Control" }, "h", function () awful.tag.incncol( 1) end),
key({ modkey, "Control" }, "l", function () awful.tag.incncol(-1) end),
key({ modkey, }, "space", function () awful.layout.inc(layouts, 1) end),
key({ modkey, "Shift" }, "space", function () awful.layout.inc(layouts, -1) end),
-- Prompt
key({ modkey }, "F1",
function ()
awful.prompt.run({ prompt = "Run: " },
mypromptbox[mouse.screen],
awful.util.spawn, awful.completion.bash,
awful.util.getdir("cache") .. "/history")
end),
key({ 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),
}
-- Client awful tagging: this is useful to tag some clients and then do stuff like move to tag on them
clientkeys =
{
key({ modkey, }, "f", function (c) c.fullscreen = not c.fullscreen end),
key({ modkey, "Shift" }, "c", function (c) c:kill() end),
key({ modkey, "Control" }, "space", awful.client.floating.toggle ),
key({ modkey, "Control" }, "Return", function (c) c:swap(awful.client.getmaster()) end),
key({ modkey, }, "o", awful.client.movetoscreen ),
key({ modkey, "Shift" }, "r", function (c) c:redraw() end),
key({ modkey }, "t", awful.client.togglemarked),
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
for i = 1, keynumber do
table.insert(globalkeys,
key({ modkey }, i,
function ()
local screen = mouse.screen
if tags[screen][i] then
awful.tag.viewonly(tags[screen][i])
end
end))
table.insert(globalkeys,
key({ modkey, "Control" }, i,
function ()
local screen = mouse.screen
if tags[screen][i] then
tags[screen][i].selected = not tags[screen][i].selected
end
end))
table.insert(globalkeys,
key({ modkey, "Shift" }, i,
function ()
if client.focus and tags[client.focus.screen][i] then
awful.client.movetotag(tags[client.focus.screen][i])
end
end))
table.insert(globalkeys,
key({ modkey, "Control", "Shift" }, i,
function ()
if client.focus and tags[client.focus.screen][i] then
awful.client.toggletag(tags[client.focus.screen][i])
end
end))
end
for i = 1, keynumber do
table.insert(globalkeys, key({ 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))
end
-- Set keys
root.keys(globalkeys)
-- }}}
-- {{{ 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) ~= awful.layout.suit.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, startup)
-- If we are not managing this application at startup,
-- move it to the screen where the mouse is.
-- We only do it for filtered windows (i.e. no dock, etc).
if not startup and awful.client.focus.filter(c) then
c.screen = mouse.screen
end
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, awful.mouse.client.move),
button({ modkey }, 3, awful.mouse.client.resize)
})
-- 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
awful.client.floating.set(c, floatapps[cls])
elseif floatapps[inst] then
awful.client.floating.set(c, 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 key bindings
c:keys(clientkeys)
-- 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.size_hints_honor = 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.getname(awful.layout.get(screen))
if layout and beautiful["layout_" ..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
end)
-- Hook called every minute
-- awful.hooks.timer.register(60, function ()
-- mytextbox.text = os.date(" %a %b %d, %H:%M ")
-- end)
-- }}}
y el tema
----------------------------- arctica awesome theme --
---------------------------
font = Bitstream Vera Sans Mono 8
bg_normal = #111111
bg_focus = #ffa500
bg_urgent = #000000
bg_minimize = #444444
fg_normal = #ffa500
fg_focus = #000000
fg_urgent = #ffa500
fg_minimize = #ffffff
border_width = 1
border_normal = #111111
border_focus = #111111
border_marked = #ffa500
# There are another variables sets
# overriding the default one when
# defined, the sets are:
# [taglist|tasklist]_[bg|fg]_[focus|urgent]
# titlebar_[bg|fg]_[normal|focus]
# Example:
#taglist_bg_focus = #ff0000
# Display the taglist squares
taglist_squares_sel = /usr/share/awesome/themes/default/taglist/squarefw.png
taglist_squares_unsel = /usr/share/awesome/themes/default/taglist/squarew.png
tasklist_floating_icon = /usr/share/awesome/themes/default/tasklist/floatingw.png
# Variables set for theming menu
# menu_[bg|fg]_[normal|focus]
# menu_[border_color|border_width]
menu_submenu_icon = /usr/share/awesome/themes/default/submenu.png
menu_height = 15
menu_width = 100
# You can add as many variables as
# you wish and access them by using
# beautiful.variable in your rc.lua
#bg_widget = #cc0000
# Define the image to load
titlebar_close_button_normal = /usr/share/awesome/themes/default/titlebar/close_normal.png
titlebar_close_button_focus = /usr/share/awesome/themes/default/titlebar/close_focus.png
titlebar_ontop_button_normal_inactive =
/usr/share/awesome/themes/default/titlebar/ontop_normal_inactive.$
titlebar_ontop_button_focus_inactive =
/usr/share/awesome/themes/default/titlebar/ontop_focus_inactive.png
titlebar_ontop_button_normal_active =
/usr/share/awesome/themes/default/titlebar/ontop_normal_active.png
titlebar_ontop_button_focus_active =
/usr/share/awesome/themes/default/titlebar/ontop_focus_active.png
titlebar_sticky_button_normal_inactive =
/usr/share/awesome/themes/default/titlebar/sticky_normal_inactive.png
titlebar_sticky_button_focus_inactive =
/usr/share/awesome/themes/default/titlebar/sticky_focus_inactive.png
titlebar_sticky_button_normal_active =
/usr/share/awesome/themes/default/titlebar/sticky_normal_active.png
titlebar_sticky_button_focus_active =
/usr/share/awesome/themes/default/titlebar/sticky_focus_active.png
titlebar_floating_button_normal_inactive =
/usr/share/awesome/themes/default/titlebar/floating_normal_inactive.png
titlebar_floating_button_focus_inactive =
/usr/share/awesome/themes/default/titlebar/floating_focus_inactive.png
titlebar_floating_button_normal_active =
/usr/share/awesome/themes/default/titlebar/floating_normal_active.png
titlebar_floating_button_focus_active =
/usr/share/awesome/themes/default/titlebar/floating_focus_active.png
titlebar_maximized_button_normal_inactive =
/usr/share/awesome/themes/default/titlebar/maximized_normal_inactive.png
titlebar_maximized_button_focus_inactive =
/usr/share/awesome/themes/default/titlebar/maximized_focus_inactive.png
titlebar_maximized_button_normal_active =
/usr/share/awesome/themes/default/titlebar/maximized_normal_active.png
titlebar_maximized_button_focus_active =
/usr/share/awesome/themes/default/titlebar/maximized_focus_active.png
# You can use your own command to set your wallpaper
wallpaper_cmd = awsetbg /home/arctica/fondos/cold.jpg
# You can use your own layout icons like this:
layout_fairh = /usr/share/awesome/themes/default/layouts/fairhw.png
layout_fairv = /usr/share/awesome/themes/default/layouts/fairvw.png
layout_floating = /usr/share/awesome/themes/default/layouts/floatingw.png
layout_magnifier = /usr/share/awesome/themes/default/layouts/magnifierw.png
layout_max = /usr/share/awesome/themes/default/layouts/maxw.png
layout_fullscreen = /usr/share/awesome/themes/default/layouts/fullscreenw.png
layout_tileleft = /usr/share/awesome/themes/default/layouts/tileleftw.png
layout_tile = /usr/share/awesome/themes/default/layouts/tilew.png
layout_tiletop = /usr/share/awesome/themes/default/layouts/tiletopw.png
awesome_icon = /usr/share/awesome/icons/awesome16.png
y ya está. Casi todo lo he dejado tal y como venía. Sólo he trabajado en el tema de los tags, en asignarle a cada aplicación un tag y cosas así. Bueno y en los colores, que para eso soy muy maniática, los he cambiado en el .Xdefaults y todo xDD
Próximamente haré algunos cambios, que minaya me ha dado un par de ideas que estaba harta de buscar y no daba con la solución xDD
Bueno, faltan algundos ajustes pero esta bastante completo:
Versión: Awesome 3.3rc3 uniform
Distro: Debian sid.
Widgets:
Batería: http://awesome.naquadah.org/wiki/index.php?title=Gigamo_Battery_Widget
Volumen (con alguna pequeña modificación): http://awesome.naquadah.org/wiki/index.php?title=Farhavens_volume_widget
También he cambiado los nombres de los tag, he creado algunos atajos y he añadido algunas aplicaciones al menu.
-- Standard awesome libraryrequire("awful")
-- Theme handling library
require("beautiful")
-- Notification library
require("naughty")
-- Load Debian menu entries
require("debian.menu")
-- Functions
-- Battery widget function
function batteryInfo(adapter)
spacer = " "
local fcur = io.open("/sys/class/power_supply/"..adapter.."/charge_now")
local fcap = io.open("/sys/class/power_supply/"..adapter.."/charge_full")
local fsta = io.open("/sys/class/power_supply/"..adapter.."/status")
local cur = fcur:read()
local cap = fcap:read()
local sta = fsta:read()
local battery = math.floor(cur * 100 / cap)
if sta:match("Charging") then
dir = "^"
battery = "A/C ("..battery..")"
elseif sta:match("Discharging") then
dir = "v"
if tonumber(battery) > 25 and tonumber(battery) < 75 then
battery = battery
elseif tonumber(battery) < 25 then
if tonumber(battery) < 10 then
naughty.notify({ title = "Battery Warning"
, text = "Battery low!"..spacer..battery.."%"..spacer.."left!"
, timeout = 5
, position = "top_right"
, fg = beautiful.fg_focus
, bg = beautiful.bg_focus
})
end
battery = battery
else
battery = battery
end
else
dir = "="
battery = "A/C"
end
batterywidget.text = spacer.."Bat:"..spacer..dir..battery..dir..spacer
fcur:close()
fcap:close()
fsta:close()
end
-- Volume function
function volume (mode, widget)
local cardid = 0
local channel = "Master"
if mode == "update" then
local status = io.popen("amixer -c " .. cardid .. " -- sget " .. channel):read("*all")
local volume = tonumber(string.match(status, "(%d?%d?%d)%%"))
status = string.match(status, "%[(o[^%]]*)%]")
local toogle = ""
if string.find(status, "on", 1, true) then
toogle = ""
else
toogle = "M"
end
status = ""
for i = 1, math.floor(volume / 10) do
status = status .. "|"
end
for i = math.floor(volume / 10) + 1, 10 do
status = status .. "-"
end
status = "-[" ..status .. "]+"
widget.text = "" .. status .. "" .. toogle .."|"
elseif mode == "up" then
os.execute("amixer -q -c " .. cardid .. " sset " .. channel .. " 5%+")
volume("update", widget)
elseif mode == "down" then
os.execute("amixer -q -c " .. cardid .. " sset " .. channel .. " 5%-")
volume("update", widget)
else
os.execute("amixer -c " .. cardid .. " sset " .. channel .. " toggle")
volume("update", widget)
end
end
-- {{{ Variable definitions
-- Themes define colours, icons, and wallpapers
-- The default is a dark theme
theme_path = "/home/mfauvell/.config/awesome/temes/primer/theme.lua"
-- Uncommment this for a lighter theme
-- theme_path = "/usr/share/awesome/themes/sky/theme.lua"
-- Actually load theme
beautiful.init(theme_path)
-- This is used later as the default terminal and editor to run.
terminal = "urxvt"
editor = os.getenv("EDITOR") or "nano"
editor_cmd = terminal .. " -e " .. editor
-- Aliases
install = terminal .. " -name install -e aptitude"
mixer = terminal .. " -name mixer -e alsamixer"
ncmpc = terminal .. " -name ncmpc -e ncmpc"
vim = terminal .. " -name vim -e vim"
-- 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,
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.max,
awful.layout.suit.max.fullscreen,
awful.layout.suit.magnifier,
awful.layout.suit.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)
-- x-terminal-emulator -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 =
{
["arora"] = { screen = 1, tag = 2 },
["okular"] = { screen = 1, tag = 3 },
["kwrite"] = { screen = 1, tag = 3 },
["kstars"] = { screen = 1, tag = 7 },
["kaffeine"] = { screen = 1, tag = 5 },
["mixer"] = { screen = 1, tag = 5 },
["ncmpc"] = { screen = 1, tag = 5 },
["install"] = { screen = 1, tag = 4 },
["vim"] = { screen = 1, tag = 3 },
-- ["mocp"] = { screen = 2, tag = 4 },
}
-- Define if we want to use titlebar on all applications.
use_titlebar = false
-- }}}
-- {{{ Tags
-- Define tags table.
tags_names = {"main", "www", "doc", "admin", "multi", "net", "other"}
tags_layout = {
layouts[1],
layouts[7],
layouts[1],
layouts[1],
layouts[1],
layouts[1],
layouts[1]
}
tags = {}
for s = 1, screen.count() do
-- Each screen has its own tag table.
tags[s] = {}
-- Create 9 tags per screen.
for tagnumber = 1, 7 do
tags[s][tagnumber] = tag(tags_names[tagnumber])
-- Add tags to screen one by one
tags[s][tagnumber].screen = s
awful.layout.set(tags_layout[tagnumber], tags[s][tagnumber])
end
-- I'm sure you want to see at least one tag.
tags[s][1].selected = true
end
-- }}}
-- {{{ 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 },
{ "suspend", "sudo pm-suspend" },
{ "hibernate", "sudo pm-hibernate" },
{ "reboot", "sudo shutdown -r now" },
{ "halt", "sudo shutdown -h now" }
}
adminmenu = {
{ "install", install },
{ "mixer", mixer }
}
myappsmenu = {
{ "writer", "kwrite" },
{ "vim", vim },
{ "spreadsheet", "kspread" },
{ "okular", "okular" },
{ "kstars", "kstars" },
{ "kaffeine", "kaffeine" },
{ "kmldonkey", "kmldonkey"}
}
mymainmenu = awful.menu.new({ items = { { "awesome", myawesomemenu, beautiful.awesome_icon },
{ "My apps", myappsmenu },
{ "Admin", adminmenu },
{ "open terminal", terminal },
{ "file manager", "dolphin" },
{ "web browser", "arora" }
}
})
mylauncher = awful.widget.launcher({ image = 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 = awful.util.table.join(
awful.button({ }, 1, awful.tag.viewonly),
awful.button({ modkey }, 1, awful.client.movetotag),
awful.button({ }, 3, function (tag) tag.selected = not tag.selected end),
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({ 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(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] = wibox({ position = "top", fg = beautiful.fg_normal, bg = beautiful.bg_normal })
-- Create battery widget
batterywidget = widget({type = "textbox", name = "batterywidget", align = "right" })
-- Create volume widget
tb_volume = widget({ type = "textbox", name = "tb_volume", align = "right" })
tb_volume:buttons({
button({ }, 4, function () volume("up", tb_volume) end),
button({ }, 5, function () volume("down", tb_volume) end),
button({ }, 1, function () volume("mute", tb_volume) end)
})
volume("update", tb_volume)
-- Add widgets to the wibox - order matters
mywibox[s].widgets = { mylauncher,
mytaglist[s],
mytasklist[s],
mypromptbox[s],
batterywidget,
tb_volume,
mytextbox,
mylayoutbox[s],
s == 1 and mysystray or nil }
mywibox[s].screen = s
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( 1) end),
awful.key({ modkey, "Control" }, "k", function () awful.screen.focus(-1) end),
awful.key({ modkey, }, "u", awful.client.urgent.jumpto),
awful.key({ modkey, }, "Tab",
function ()
awful.client.focus.history.previous()
if client.focus then
client.focus:raise()
end
end),
-- 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),
-- Programs
awful.key({modkey, }, "n", function () awful.util.spawn("arora", false) end),
awful.key({modkey, }, "p", function () awful.util.spawn("okular", false) end),
awful.key({modkey, }, "d", function () awful.util.spawn("dolphin", false) end),
awful.key({modkey, }, "e", function () awful.util.spawn("kwrite", false) end),
awful.key({modkey, }, "s", function () awful.util.spawn("kstars", false) end),
awful.key({modkey, }, "v", function () awful.util.spawn("kaffeine", false) end),
awful.key({modkey, }, "i", function () awful.util.spawn(install, false) end),
awful.key({modkey, }, "a", function () awful.util.spawn(mixer, false) end),
awful.key({modkey, }, "t", function () awful.util.spawn(ncmpc, false) end),
awful.key({modkey, }, "z", function () awful.util.spawn(vim, false) 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)
)
-- Client awful tagging: this is useful to tag some clients and then do stuff like move to tag on them
clientkeys = awful.util.table.join(
awful.key({ modkey, }, "f", function (c) c.fullscreen = not c.fullscreen end),
awful.key({ modkey, "Shift" }, "c", function (c) c:kill() end),
awful.key({ modkey, "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", awful.client.togglemarked),
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
for i = 1, keynumber do
table.foreach(awful.key({ modkey }, i,
function ()
local screen = mouse.screen
if tags[screen][i] then
awful.tag.viewonly(tags[screen][i])
end
end), function(_, k) table.insert(globalkeys, k) end)
table.foreach(awful.key({ modkey, "Control" }, i,
function ()
local screen = mouse.screen
if tags[screen][i] then
tags[screen][i].selected = not tags[screen][i].selected
end
end), function(_, k) table.insert(globalkeys, k) end)
table.foreach(awful.key({ modkey, "Shift" }, i,
function ()
if client.focus and tags[client.focus.screen][i] then
awful.client.movetotag(tags[client.focus.screen][i])
end
end), function(_, k) table.insert(globalkeys, k) end)
table.foreach(awful.key({ modkey, "Control", "Shift" }, i,
function ()
if client.focus and tags[client.focus.screen][i] then
awful.client.toggletag(tags[client.focus.screen][i])
end
end), function(_, k) table.insert(globalkeys, k) end)
table.foreach(awful.key({ 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), function(_, k) table.insert(globalkeys, k) end)
end
-- Set keys
root.keys(globalkeys)
-- }}}
-- {{{ 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) ~= awful.layout.suit.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, startup)
-- If we are not managing this application at startup,
-- move it to the screen where the mouse is.
-- We only do it for filtered windows (i.e. no dock, etc).
if not startup and awful.client.focus.filter(c) then
c.screen = mouse.screen
end
if use_titlebar then
-- Add a titlebar
awful.titlebar.add(c, { modkey = modkey })
end
-- Add mouse bindings
c:buttons(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)
))
-- 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
awful.client.floating.set(c, floatapps[cls])
elseif floatapps[inst] then
awful.client.floating.set(c, 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 key bindings
c:keys(clientkeys)
-- 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.size_hints_honor = 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.getname(awful.layout.get(screen))
if layout and beautiful["layout_" ..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
end)
-- Hook called every minute
awful.hooks.timer.register(60, function ()
-- mytextbox.text = os.date(" %a %b %d, %H:%M ")
mytextbox.text = os.date(" %H:%M ")
end)
-- Hook called every 20 secons
awful.hooks.timer.register(20, function()
batteryInfo("BAT1")
wifiInfo("wlan0")
volume("update", tb_volume)
end)
-- }}}
En mi todo:
1. Encontrar/crear un widget para el wifi
2. Acabar de ordenar las aplicaciones y los atajos.
Saludos
hola :)
Por fin me he liberado de twm en el portátil, así que aquí va el mío. La versión es Accidental Babies, porque al ver los problemas que daba Complicated, en Arch han decidido dejar la versionitis por un tiempo y se ha hecho algo así como un downgrade
A mí también me da problemas, no puedo entrar a las Xs con "Complicated" y Ratpoison 1.4.4 tiene problemas con Xft, creo que mis días con Sid están contados, el único de mis favoritos que nunca falla es IceWM :(
Estoy pensando instalar Lenny e instalar OOo3 de los backports, compilar Firefox 3.0.10, Lenny viene con rp 1.4.3 y icewm 1.2.35, creo que puedo vivir con eso :)
hola :)
Por fin me he liberado de twm en el portátil, así que aquí va el mío. La versión es Accidental Babies, porque al ver los problemas que daba Complicated, en Arch han decidido dejar la versionitis por un tiempo y se ha hecho algo así como un downgrade
A mí también me da problemas, no puedo entrar a las Xs con "Complicated" y Ratpoison 1.4.4 tiene problemas con Xft, creo que mis días con Sid están contados, el único de mis favoritos que nunca falla es IceWM :(
Estoy pensando instalar Lenny e instalar OOo3 de los backports, compilar Firefox 3.0.10, Lenny viene con rp 1.4.3 y icewm 1.2.35, creo que puedo vivir con eso :)
Piensa que siempre tienes la opción del apt-pinning para mezclar paquetería de diferentes ramas.
Un saludo!
Che todo muy lindo lo de los lua, pero nadie pone un screenshot para ver el trabajo de cada uno?
miren que meto uno mio con ion3 si no ponen ustedes 
Abrazos a todos!
Sebas
Una cosa, no desvieis mucho la temática del hilo
. Lo abrí más que nada para que fuera un hilo con ejemplos lo más claro posible. Dado que no hay mucha documentación de awesome, creo que algo así nunca viene mal. Los pantallazos se pueden enlazar desde el hilo Muestra tu escritorio o poner un enlace a la imagen. Por supuesto, se podrían tomar iniciativas similares para ion o icewm.
Y los comentarios, pues bueno, personalmente el otro día dejé un comentario sobre el rc.lua de elsenyordelcaos en el ¿Qué haces? para no manchar el hilo. No se si será mejor o peor, pero yo lo hice así xD.
Por supuesto, es lo que yo pienso. Si no estais de acuerdo, se habla :)
Bueno perdòn...no fur mi intenciòn

Piensa que siempre tienes la opción del apt-pinning para mezclar paquetería de diferentes ramas.
Un saludo!
En mi humilde experiencia, apt-pinning causa más problemas que soluciones. En el caso de stable-testing, no funciona a la larga, por las dependencias que al fin y al cabo te alcanzan eventualmente. Funciona mejor en testing-sid porque son muy parecidos. En mi opinión es mejor usar Stable (si eso es lo que quieres), y compilar o backport las pocas applicaciones que necesites, así no te verás sumergido en tormentas de caca. Es preferible usar Testing o Sid por si solos sin mezclar, si quieres usar aplicaciones más modernas, pero eso es sólo mi opinión :)
Awesome cuando funciona, es muy bueno, tiene opciones que son muy útiles para usuarios avanzados, el cual no es mi caso. Icewm y Ratpoison satisfacen mis necesidades básicas (pantallas maximizadas, división de pantallas horizontalmente/verticalmente que son importantes para mi trabajo de traducción) y pesan 1/100 (no verificado) de lo que pesa Awesome.
Awesome es un avance histórico en el mundo de los gestores de ventanas, sin olvidar que tiene su base en DWM y Wmii. Obviamente, cada usuario tiene sus necesidades (válidas o no) para usar lo que usan, que es algo muy subjetivo y por ende, todo mundo tiene la razón.