Awesome
awesome es un gestor de ventanas altamente configurable, de última generación y dinámico para X.. Está orientado en un principio a desarrolladores o personas que usan el ordenador para realizar numerosas tareas, así como aquéllos que quieran tener un buen control sobre su entorno gráfico. Se puede extender utilizando el lenguaje de programación Lua.
Prerequisites
Services
Choose exactly one of:
Miscellaneous
X server
Follow the instructions on Xorg/Guide to set up the X environment.
Starting the X server
One of the following methods can be used to start X:
- Display manager: Presents the user with a graphical login screen.
- X without Display Manager: When running a single-user system, one may find display managers an unnecessary waste of resources.
Instalación
Ajustes USE
USE flags for x11-wm/awesome Dynamic floating and tiling window manager
dbus
|
Enable dbus support for anything that needs it (gpsd, gnomemeeting, etc) |
doc
|
Add extra documentation (API, Javadoc, etc). It is recommended to enable per package instead of globally |
gnome
|
Add GNOME support |
test
|
Enable dependencies and/or preparations necessary to run tests (usually controlled by FEATURES=test but can be toggled independently) |
Emerge
Instale x11-wm/awesome:
root #
emerge --ask x11-wm/awesome
Configuración
Comenzando
Para iniciar awesome use un display manager o startx.
Para usar startx con soporte para ConsoleKit, configure ConsoleKit y cree el siguiente archivo:
exec ck-launch-session dbus-launch --sh-syntax --exit-with-session awesome
Archivo de configuración
El archivo de configuración por defecto de awesoe se encuentra en ~/.config/awesome/rc.lua. Si dicho directorio o archivo no existe deberá ser creado. Una configuración funcional se distribuye con awesome y puede ser encontrada en /etc/xdg/awesome/rc.lua. Copie ese archivo de configuración al directorio home del usuario.
Primero cree el directorio awesome/:
user $
mkdir -p ~/.config/awesome/
Luego copie el archivo de configuración rc.lua:
user $
cp /etc/xdg/awesome/rc.lua ~/.config/awesome/rc.lua
Si x11-terms/xterm no está instalado, instálelo o cambie el terminal por defecto a uno que esté disponible en su sistema. En el ejemplo de aquí abajo el terminal por defecto es konsole, parte de kde-apps/konsole.
-- This is used later as the default terminal and editor to run.
terminal = "konsole"
Después de hacer cambios es recomendable comprobar el archivo de configuración para ver si hay errores:
user $
awesome -k
✔ Configuration file syntax OK
Añadir soporte para fondos de pantalla mediante el paquete media-gfx/feh:
root #
emerge --ask media-gfx/feh
Para usar awsetbg para establecer el fondo de pantalla, edite ~/.config/awesome/theme/theme.lua:
theme.wallpaper_cmd = { "awsetbg -f .config/awesome/themes/awesome-wallpaper.png" }
O simplemente defina la propiedad del fondo de escritorio del tema:
theme.wallpaper = ".config/awesome/themes/awesome-wallpaper.png"
Tags
En awesome, tags es el nombre dado a los escritorios virtuales en los cuales se encuentran las aplicaciones abiertas. Es posible asignar símbolos personalizados a los tags:
-- {{{ Tags
tags = {}
for s = 1, screen.count() do
tags[s] = awful.tag({ "➊", "➋", "➌", "➍" }, s, layouts[1])
end
-- }}}
Menu
Un ejemplo de un menú personalizado de awesome:
-- {{{ Menu
myawesomemenu = {
{ "manual", terminal .. " -e man awesome" },
{ "edit config", editor_cmd .. " " .. awesome.conffile },
{ "reload", awesome.restart },
{ "quit", awesome.quit },
{ "reboot", "reboot" },
{ "shutdown", "shutdown" }
}
appsmenu = {
{ "urxvt", "urxvt" },
{ "sakura", "sakura" },
{ "ncmpcpp", terminal .. " -e ncmpcpp" },
{ "luakit", "luakit" },
{ "uzbl", "uzbl-browser" },
{ "firefox", "firefox" },
{ "chromium", "chromium" },
{ "thunar", "thunar" },
{ "ranger", terminal .. " -e ranger" },
{ "gvim", "gvim" },
{ "leafpad", "leafpad" },
{ "htop", terminal .. " -e htop" },
{ "sysmonitor", "gnome-system-monitor" }
}
gamesmenu = {
{ "warsow", "warsow" },
{ "nexuiz", "nexuiz" },
{ "xonotic", "xonotic" },
{ "openarena", "openarena" },
{ "alienarena", "alienarena" },
{ "teeworlds", "teeworlds" },
{ "frozen-bubble", "frozen-bubble" },
{ "warzone2100", "warzone2100" },
{ "wesnoth", "wesnoth" },
{ "supertuxkart", "supertuxkart" },
{ "xmoto" , "xmoto" },
{ "flightgear", "flightgear" },
{ "snes9x" , "snes9x" }
}
mymainmenu = awful.menu({ items = { { "awesome", myawesomemenu },
{ "apps", appsmenu },
{ "games", gamesmenu },
{ "terminal", terminal },
{ "web browser", browser },
{ "text editor", geditor }
}
})
mylauncher = awful.widget.launcher({ image = image(beautiful.awesome_icon),
menu = mymainmenu })
-- }}}
Fecha
Este es un ejemplo de un formato de fecha personalizado. La sintaxis del formato usado es %d.%m %H:%M
. La segunda opción, 60
, es el intervale de actualización en segundos.
-- {{{ Wibox
-- Create a text-clock widget
mytextclock = wibox.widget.textclock(" %d.%m %H:%M ", 60)
-- }}}
Para más información sobre las opciones de formato escriba el comando date --help.
Control de volumen
Se puede utilizar el paquete media-sound/volumeicon para gestionar las teclas de volumen de forma automática y mostrar el nivel de volumen mediante un icono en la bandeja.
root #
emerge --ask media-sound/volumeicon
Autoarrancar volumeicon desde dentro de ~/.xinitrc:
volumeicon &
exec ck-launch-session dbus-launch awesome
Un método alternativo y ligero es añadir las teclas de volumen directamente en la configuración de awesome:
awful.key({ }, "XF86AudioLowerVolume", function () awful.util.spawn("amixer -q sset Master 2dB-") end)
awful.key({ }, "XF86AudioRaiseVolume", function () awful.util.spawn("amixer -q sset Master 2dB+") end)
Teclas multimedia MPD
Instale media-sound/mpc para añadir atajos de teclado para MPD:
root #
emerge --ask media-sound/mpc
Entonces actualice el archivo de configuración de awesome para asignar las teclas multimedia al comando apropiado:
awful.key({ }, "XF86AudioNext",function () awful.util.spawn( "mpc next" ) end),
awful.key({ }, "XF86AudioPrev",function () awful.util.spawn( "mpc prev" ) end),
awful.key({ }, "XF86AudioPlay",function () awful.util.spawn( "mpc play" ) end),
awful.key({ }, "XF86AudioStop",function () awful.util.spawn( "mpc pause" ) end),
Eliminar los huecos entre ventanas
Puede que se observen huecos entre ventanas, más notables entre ventanas de terminal. Éstos se pueden eliminar insertando la propiedad size_hints_honor = false
en la tabla awful.rules.rules
de esta forma:
awful.rules.rules = {
{ rule = { },
properties = { size_hints_honor = false, -- Remove gaps
border_width = beautiful.border_width,
border_color = beautiful.border_normal,
...
}
}
}
Depurar la configuración con Xephir
Xephir is una herramienta para depurar los nuevos archivos de configuración que resulta muy útil dado que es capaz de iniciar el servidor X en una ventana-cliente
user $
Xephyr -ac -nolisten tcp -br -noreset -screen 800x600 :1
Este comando abrirá una pantalla de 800x600. Para abrir awesome en ella abra un terminal y escriba:
user $
DISPLAY=:1.0 awesome
Esto lanzará awesome dentro de la ventana.
Atajos del teclado
Estos son los atajos por defecto más útiles:
- mod4+mouse1 = mover el cliente con el ratón
- mod4+mouse2 = cambiar el tamaño del cliente con el ratón
- mod4+enter = abrir terminal
- mod4+r = lanzar comando
- mod4+shift+c = cerrar el cliente y parar su servicio
- mod4+m = maximizar
- mod4+n = minimizar
- mod4+ctrl+n = restaurar los clientes minimizados
- mod4+f = pantalla completa
- mod4+tab = volver al cliente anterior
- mod4+ctrl+space = flotar
- mod4+j = destacar el cliente de la izquierda
- mod4+k = destacar el cliente de la derecha
- mod4+shift+j = mover cliente a la derecha
- mod4+shift+k = mover cliente a la izquierda
- mod4+l = cambiar el tamaño de las ventanas mosaico
- mod4+h = cambiar el tamaño de las ventanas mosaico
- mod4+left / right = cambiar tag
- mod4+1-9 = cambiar tag
- mod4+shift+1-9 = mandar cliente al tag
los atajos de teclado personalizados, como Alt+Tab, pueden ser asignados para hacer su experiencia con awesome aún mejor. Por ejemplo, para usar Alt+Tab para cambiar a la ventana anterior:
-- {{{ Key bindings
globalkeys = awful.util.table.join()
...
-- alt + tab
awful.key({ "Mod1", }, "Tab",
function ()
awful.client.focus.history.previous()
if client.focus then
client.focus:raise()
end
end),
-- }}}
Recursos externos
- Ficheros de configuración del usuario en el wiki de awesome