awesome

Från Archlinux wiki
Hoppa till: navigering, sök

Från utvecklarens hemsida:

"awesome är en väldigt flexibel, nästa generations fönsterhanterare för X. Den är väldigt snabbt, formbar och licensierad under GNU GPLv2.

Fönsterhanteraren riktar sig till administratörer, utvecklare och personer som vill ha maximal kontroll över sin grafiska miljö."

Innehåll

Installation

Awesome 3.x finns i community förråden, använd kommandot:

# pacman -S awesome

Du kan även installera den allra senaste versionen direkt från utvecklarnas förråd awesome-git.

Komma igång

Att använda awesome

För att köra awesome utan en login-hanterare lägger du bara till exec awesome till ditt startup-script (t ex, ~/.xinitrc).

Om du har problem med vissa enheter(mounta usb-stickor, läsa dvd-skivor etc) så bör du läsa dokumentationen rörande HAL och policykit. När du inte använder en login-hanterare så är inget automatiserat, att använda exec ck-launch-session awesome kan lösa dina problem.

För att starta awesome från en login-hanterare, läs den här artikeln.

SLIM är en populär och tunn login-hanterare som rekommenderas starkt. Såhär gör du för att använda den:

1) Editera /etc/slim.conf och lägg till awesome på raden för sessions.
Till exempel: sessions awesome,wmii,xmonad 2) Editera ~/.xinitrc filen:

DEFAULT_SESSION=awesome
case $1 in
 awesome) exec awesome ;;
 wmii) exec wmii ;;
 xmonad) exec xmonad ;;
 *) exec $DEFAULT_SESSION ;;
esac

Men, du kan också starta awesome med användaren av ditt val utan en login-hanterare och utan att ens logga in, men detta kräver att du editerar ~/.xinitrc och /etc/inittab på rätt sätt. Se artikeln Start X at boot.

Konfiguration

Awesome kommer med bra inställningar redan från början, men förr eller senare kommer du att vilja förändra något. Konfigurationsfilen är baserad på språket LUA och finns här: ~/.config/awesome/rc.lua.

Skapa konfigurationsfilen

Först, kör följande kommando för att skapa katalogen som behövs för nästa steg:

$ mkdir -p ~/.config/awesome/

När du startar awesome så kommer den att försöka läsa config-filen ~/.config/awesome/rc.lua. Den här filen finns inte från början, så vi måste kopiera dit en mall först:

$ cp /etc/xdg/awesome/rc.lua ~/.config/awesome


Strukturen på config-filen förändras ofta när det släpps en ny version av awesome. Om awesome börjar bete sig underligt efter att det uppdaterats så kan du kopiera mallen igen, eller editera din config-fil och anpassa den för den nya strukturen.

För mer information rörande konfigurationen av awesome kan du besöka dess wiki.

Fler källor till config-filer

Note: Eftersom att strukturen på config-filen ändras ofta så behöver du förmodligen modifiera dessa filer för att de ska fungera korrekt.

Några bra exempel på rc.lua finns här:

Debug rc.lua med Xephyr

Det här ett sätt att debugga rc.lua på, utan att förstöra din nuvarande miljö. Först kopierar du rc.lua till en ny fil, t ex rc.lua.new, modifiera den sedan efter dina önskemål. Sedan kör du igång awesome i Xephyr(programmet tillåter dig att köra en session av X i en redan befintlig session) och specifierar rc.lua.new som config-fil, med dessa kommandon:

$ Xephyr -ac -br -noreset -screen 1152x720 :1 &
$ DISPLAY=:1.0 awesome -c ~/.config/awesome/rc.lua.new

Den stora fördelen med att göra såhär är att om du förstör rc.lua.new med felaktig syntax så förblir din nuvarande miljö ändå intakt. När du är nöjd med hur din rc.lua.new fungerar så flyttar du den till rc.lua.

Teman

Beautiful är ett lua-bibliotek som låter dig lägga ett tema på awesome igenom att använda en extern fil. Det blir väldigt lätt att ändra utseendet på ditt skrivbord(färger, wallpaper) utan att behöva ändra i din rc.lua.

Temat som är standard finns i katalogen /usr/share/awesome/themes/default. Kopiera den till ~/.config/awesome/themes/default och ändra theme_path i rc.lua.

Mer detaljer här

Ett par exempel här

Att byta bakgrundsbild

Beautiful sköter hanteringen av bakgrundsbilder så du behöver inte ändra något i filerna .xinitrc eller .xsession. Det här möjliggör en specifik bakgrundsbild för varje enskilt tema. Om du tittar på filen theme.lua för standard temat så ser du raden wallpaper_cmd följt av ett kommando, det givna kommandot körs när beautiful.init("/sökväg/till/tema") initieras från din rc.lua. Du kan byta ut det här kommandot mot ett eget eller ta bort det helt om du inte vill att Beautiful ska bry sig i hur din bakgrundsbild hanteras.

Till exempel, om du använder awsetbg för att bestämma din bakgrundsbild kan du skriva:

wallpaper_cmd = { "awsetbg -f .config/awesome/themes/awesome-wallpaper.png" }

Note: För att awsetbg ska fungera riktigt så måste du ha ett program som kan hantera skrivbordsbakgrunder installerat. Ett exempel är Feh .

Slumpmässig bakgrundsbild

Om du vill skifta bakgrunder slumpmässigt så kommenterar du bara ut raden med wallpaper_cmd och lägger till följande script i din .xinitrc:

while true;
do
  awsetbg -r <sökväg/till/katalogen/med/dina/bakgrunder>
  sleep 15m
done &

Tips & Tricks

Känn dig manad att lägga till de tips och tricks du vill dela med dig av till andra awesome-användare.

Visa / gömma wibox i Awesome 3

För att mappa modkey-b till att visa / gömma default statusbar på den aktiva skärmen lägg till följande under clientkeys i rc.lua:

awful.key({ modkey }, "b", function ()
    mywibox[mouse.screen].visible = not mywibox[mouse.screen].visible
end),

Aktivera printscreen

För att aktivera printscreen-tangenten i Awesome så behöver du ett program för att fånga din skärmbild. Scrot är ett program som är lätt att använda för det här syftet och det finns tillgängligt i Arch-förråden.

Kör kommandot:

# pacman -S scrot

och installera eventuella beroenden om du känner att du behöver dem.

Det vi måste göra härnäst är att ta reda på vad namnet på printscreen-tangenten är, oftast heter den "Print" men man kan aldrig vara helt säker.

Kör kommandot:

# xev

Tryck sedan på printscreen-knappen, det borde resultera i följande rader:

KeyPress event ....
    root 0x25c, subw 0x0, ...
    state 0x0, keycode 107 (keysym 0xff61, Print), same_screen YES,
    ....

I det här fallet så ser ni att namnet på tangenten är Print.

Nu ska vi konfigurera Awesome!

Någonstans i listan över globalkeys(det spelar ingen roll vart) skriver du:

awful.key({ }, "Print", function () awful.util.spawn("scrot -e 'mv $f ~/screenshots/ 2>/dev/null'")

end),

Ett bra ställe att lägga dessa rader på är under den keyhook som startar en terminal. För att hitta den raden så söker du på: awful.util.spawn(terminal) i din favorit-editor.

Den här funktionen sparar skärmdumparna i katalogen ~/screenshots/, du kan ändra det här efter eget tycke.

Dynamisk taggning

Eminent är ett litet lua-bibliotek som patchar awful för att tillåta dig att använda en wmii-liknande dynamisk taggning. Tillskillnad från Shifty så siktar inte Eminent på att ge dig ett omfattande system för taggning, utan snarare att göra processen med dynamiska taggar så simpelt som möjligt, du behöver inte ändra i din rc.lua överhuvudtaget, Eminent gör allt arbete åt dig.

Shifty är ett tillägg till Awesome 3 som är mer komplex än vad Eminent är. Men med det kommer också mer kraft och valfrihet.

Space Invaders

Space Invaders är ett demo som visar vad Awesome's Lua API är kapabel till att utföra.

Notera dock att detta inte längre är inkluderat i Awesome-paketet sedan version 3.4-rc1.

Naughty för popup-notifiering

Se följande länk för information om detta: [1]

Popup menyer

Som standard finns det en simpel meny i Awesome3 och det är inte speciellt svårt att sätta ihop en skräddarsydd meny.

Ett exempel på en meny för Awesome3:

myawesomemenu = {
   { "lock", "xscreensaver-command -activate" },
   { "manual", terminal .. " -e man awesome" },
   { "edit config", editor_cmd .. " " .. awful.util.getdir("config") .. "/rc.lua" },
   { "restart", awesome.restart },
   { "quit", awesome.quit }
}

mycommons = {
   { "pidgin", "pidgin" },
   { "OpenOffice", "soffice-dev" },
   { "Graphic", "gimp" }
}

mymainmenu = awful.menu.new({ items = { 
                                        { "terminal", terminal },
                                        { "icecat", "icecat" },
                                        { "Editor", "gvim" },
                                        { "File Manager", "pcmanfm" },
                                        { "VirtualBox", "VirtualBox" },
                                        { "Common App", mycommons, beautiful.awesome_icon },
                                        { "awesome", myawesomemenu, beautiful.awesome_icon }
                                       }
                             })

Fler widgets i Awesome

Widgets i Awesome är objekt som du kan lägga till i vilken widget-box som helst(statusbars och titlebars), de kan visa olika typer av information om ditt system och är väldigt användbara eftersom att de kan visa dig informationen direkt i din grafiska miljö. Widgets är enkla att använda och erbjuder stor variation. -- Källa Awesome Wiki: Widgets.

Det finns ett bibliotek för widgets som används flitigt, det kallas för Wicked (kompatibel med versioner av Awesome upp till 3.4) och erbjuder flera widgets som t ex MPD widget, CPU-användning, minnes-användning etc. För fler detaljer kan du titta på Wickeds sida.

Vicious ersattes i Awesome version 3.4 av tre olika bibliotek: Vicious, Obvious och Bashets. Om du väljer att använda Vicious så rekommenderas du att noga studera dess dokumentation.

Transparens

Awesome har stöd för (2D) transparens igenom xcompmgr. Du vill förmodligen använda git-versionen av xcompmgr, den finns i AUR.

Lägg till det här i din ~/.xinitrc:

exec xcompmgr &

Konsultera man xcompmgr eller xcompmgr för fler funktioner.

I Awesome 3.4 kan transparens på fönster sättas dynamiskt med hjälp av signaler. Till exempel så kan din rc.lua innehålla följande rader:

client.add_signal("focus", function(c)
                              c.border_color = beautiful.border_focus
                              c.opacity = 1
                           end)
client.add_signal("unfocus", function(c)
                                c.border_color = beautiful.border_normal
                                c.opacity = 0.7
                             end)

Notera att om du använder Conky så måste du tala om för det att skapa sitt eget fönster istället för att använda skrivbordet. För att göra det, editera ~./conkyrc och lägg till:

own_window yes
own_window_transparent yes
own_window_type desktop

Utan dessa rader kan märkliga saker hända, som t ex att fönster blir helt transparenta. Notera också att eftersom att Conky nu skapar ett transparent fönster på ditt skrivbord så kommer inga funktioner för ditt skrivbord som du definierat i rc.lua att fungera där Conky har sin plats.

Sedan version 3.1 av Awesome finns det nu pseudo-transparens för wiboxes. För att aktivera detta adderar du två hexadecimala tecken till färgen i din tema-fil (~/.config/awesome/themes/default/theme.lua), som i detta exempel:

bg_normal = #000000AA

"AA" är värdet för transparens.

ImageMagick

Du kan få problem om du sätter din bakgrundsbild med ImageMagick's display kommando, det fungerar nämligen inte speciellt bra ihop med xcompmgr. Notera att awsetbg kan använda sig av display om det inte har något annat val. Att installera habak, feh, hsetroot borde lösa problemet (grep -A 1 wpsetters /usr/bin/awsetbg för att se vilka val du har).

Autorun program

Lägg bara till följande rader i rc.lua och ersätt applikationerna i sektionen autorunApps med de du själv vill ha. Exempel:

-- Autorun programs
autorun = true
autorunApps = 
{
  "swiftfox",
  "mutt",
  "consonance",
  "linux-fetion",
  "weechat-curses",
}
if autorun then
   for app = 1, #autorunApps do
       awful.util.spawn(autorunApps[app])
   end
end

or like this:

os.execute("mutt &"),
os.execute("weechat-curses &"),

Skicka information till widgets med awesome-client

Du kan lätt skicka text till en awesome-widget. Skapa bara en ny widget:

 mywidget = widget({ type = "textbox", name = "mywidget" })
 mywidget.text = "initial text"

För att uppdatera texten från en extern källa, använda awesome-client:

 echo -e 'mywidget.text = "new text" | awesome-client

Glöm inte att lägga till din widget i wiboxen.

Felsökning

Mod4 tangenten

Mod4 är som standard Windows-tangenten. Om den inte är mappad dit av någon anledning så kan du enkelt fixa det igenom att ta reda på tangentkoden för den med hjälp av:

$ xev

Koden ska vara 115 för den vänstra tangenten. Lägg sedan till detta i din ~/.xinitrc:

xmodmap -e "keycode 115 = Super_L" -e "add mod4 = Super_L"
exec awesome

Mod4 tangenten vs. IBM ThinkPad användare

IBM ThinkPads är inte utrustade med en Windows-tangent. När detta skrevs så användes inte Alt-tangenten för något speciellt i rc.lua, det tillåter den att användas som en ersättare för Mod4-tangenten. För att göra det måste du editera din rc.lua och ersätta:

modkey = "Mod4"

med:

modkey = "Mod1"

Notera att Awesome har ett par kommandon som använder sig av Mod4 + en ensam tangent. Att ändra Mod4 till Mod1/Alt kan göra att vissa tangent-kombinationer sammanfaller. Om detta inträffar kan du editera rc.lua för att korrigera problemet. Om du inte vill behöva göra detta så kan du alltid mappa om en tangent. Caps lock är t ex en ganska värdelös tangent(för vissa), lägg till följande i ~/.Xmodmap:

clear lock
add mod4 = Caps_Lock

och ladda om filen. Det här kommer att göra din caps lock-tangent till mod4-tangenten och det fungerar bra med Awesome's grundinställningar.

Minnesläcka i Cairo

Om du erfarar minnesläckor så kan du testa cairo-git i AUR. Det finns också en tråd i forumet.

Uppdatering: Den senaste versionen av Cairo, 1.8.6, ska fungera bra eftersom att patchen från git-versionen har implementerats.

Brasero

Om Brasero inte läser dina tomma cd-skivor när det startas i Awesome, men fungerar som vanligt när du startar det i Gnome, testa det här:

$ dbus-launch brasero

istället för:

$ brasero

Mer information

Personliga verktyg
På andra språk