Awesome
awesome é um gerenciador de janelas dinâmico altamente configurável e de próxima geração window manager para o X. É voltado principalmente para usuários avançados, desenvolvedores e qualquer pessoa que lide com tarefas diárias no computador e que deseja ter um controle refinado do seu ambiente gráfico. É estendido usando a linguagem de programação 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.
Instalação
USE flags
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
Install x11-wm/awesome:
root #
emerge --ask x11-wm/awesome
Configuração
Iniciando
Para iniciar o awesome, use um display manager ou startx.
Para usar o startx com suporte ao ConsoleKit, configure ConsoleKit e crie o seguinte arquivo:
exec ck-launch-session dbus-launch --sh-syntax --exit-with-session awesome
Arquivo de Configuração
O arquivo de configuração padrão do awesome está localizado em ~/.config/awesome/rc.lua. Se o diretório não existir, ele precisará ser criado. Uma configuração padrão vem junto com o awesome e pode ser encontrada em /etc/xdg/awesome/rc.lua. Copie esse arquivo de configuração para o diretório home do usuário.
Primeiramente, crie o diretório awesome/:
user $
mkdir -p ~/.config/awesome/
Em seguida, copie o arquivo de configuração rc.lua:
user $
cp /etc/xdg/awesome/rc.lua ~/.config/awesome/rc.lua
Se o x11-terms/xterm não estiver instalado, instale-o ou altere o terminal padrão para o terminal disponível no sistema. Abaixo, o terminal padrão é definido como konsole, parte do kde-apps/konsole.
-- This is used later as the default terminal and editor to run.
terminal = "konsole"
Depois de fazer as mudanças, é útil verificar se o arquivo de configuração contém erros:
user $
awesome -k
✔ Configuration file syntax OK
Adicione suporte para papel de parede com o pacote media-gfx/feh:
root #
emerge --ask media-gfx/feh
Por exemplo, para usar o awsetbg para definir o papel de parede, edite o ~/.config/awesome/theme/theme.lua:
theme.wallpaper_cmd = { "awsetbg -f .config/awesome/themes/awesome-wallpaper.png" }
Ou simplismente defina a propriedade wallpaper do tema:
theme.wallpaper = ".config/awesome/themes/awesome-wallpaper.png"
Tags
No awesome, tags são o nome dado aos desktops virtuais sob os quais um ou mais aplicativos estão sendo executados. É possível atribuir símbolos personalizados a essas tags:
-- {{{ Tags
tags = {}
for s = 1, screen.count() do
tags[s] = awful.tag({ "➊", "➋", "➌", "➍" }, s, layouts[1])
end
-- }}}
Menu
Abaixo está um exemplo de um menu do awesome personalizado:
-- {{{ 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 })
-- }}}
Data
Abaixo está um exemplo de um formato de data personalizado. A sintaxe do formato usada é %d.%m %H:%M
. A segunda opção, 60
, é o intervalo de atualização em segundos.
-- {{{ Wibox
-- Create a text-clock widget
mytextclock = wibox.widget.textclock(" %d.%m %H:%M ", 60)
-- }}}
Para mais informações sobre o formato, execute date --help
Controle de Volume
media-sound/volumeicon pode ser usada para manipular as teclas de volume automaticamente e para mostrar o nível do volume através de um ícone de bandeja.
root #
emerge --ask media-sound/volumeicon
Inicie automaticamente o volumeicon de dentro do ~/.xinitrc:
volumeicon &
exec ck-launch-session dbus-launch awesome
Alternativamente, um método leve é adicionar as teclas de volume diretamente na configuração do 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 multimídia MPD
Instale media-sound/mpc para adicionar atalhos de teclado para o MPD:
root #
emerge --ask media-sound/mpc
Em seguida, atualize a configuração do awesome para atribuir as teclas de multimídia ao comando adequado:
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),
Removendo os espaços da janela
Espaços entre as janelas pode ser visíveis, mais notadamente entre as janelas do terminal. Estes podem ser removidos inserindo a propriedade size_hints_honor = false
na tabela awful.rules.rules
da seguinte forma:
awful.rules.rules = {
{ rule = { },
properties = { size_hints_honor = false, -- Remove gaps
border_width = beautiful.border_width,
border_color = beautiful.border_normal,
...
}}
Depurando a configuração com o Xephyr
Xephyr é uma ferramenta útil para depurar novos arquivos de configuração, pois cria uma instância do servidor X dentro de uma janela do cliente.
user $
Xephyr -ac -nolisten tcp -br -noreset -screen 800x600 :1
Isto irá abrir uma janela de 800x600. Para executar awesome dentro dela, abra um novo terminal e execute o seguinte:
user $
DISPLAY=:1.0 awesome
Isto irá executar o awesome dentro da janela.
Atalhos de Teclado
Estes são os atalhos padrão mais úteis:
- mod4+mouse1 = mover cliente com mouse
- mod4+mouse2 = redimensionar cliente com o mouse
- mod4+enter = abrir o terminal
- mod4+r = executar comando
- mod4+shift+c = fechar
- mod4+m = maximizar
- mod4+n = minimizar
- mod4+ctrl+n = restaurar clientes minimizados
- mod4+f = tela cheia
- mod4+tab = mudar para o cliente anterior
- mod4+ctrl+space = float
- mod4+j = destacar cliente esquerdo
- mod4+k = destacar cliente direito
- mod4+shift+j = mover cliente para direita
- mod4+shift+k = mover cliente para esquerda
- mod4+l = redimensionar cliente em mosaico
- mod4+h = redimensionar cliente em mosaico
- mod4+left / right = mudar tag
- mod4+1-9 = mudar tag
- mod4+shift+1-9 = enviar cliente para tag
Atalhos personalizados, como Alt+Tab, podem ser mapeados para tornar a experiência com o awesome ainda melhor. Por exemplo, usando Alt+Tab para mudar para a janela 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
- User Configuration Files at awesome wiki