201 lines
7.8 KiB
Markdown
201 lines
7.8 KiB
Markdown
# My first awesome
|
|
|
|
This little tutorial is for people who never used a tiling window manager before
|
|
and don't have fancy hacking skills. We will explore the awesome world of
|
|
awesome step by step and finally come up with a working desktop, providing some
|
|
basic knowledge on how to configure awesome in the process. We will start with
|
|
the default `rc.lua` that comes with awesome, play around a little and try to
|
|
make it more beautiful and useful with widgets. For this tutorial you don't need
|
|
any programming skills besides using a text editor.
|
|
|
|
## Explore awesome
|
|
|
|
I will assume that you properly installed awesome through your distribution's
|
|
package manager or compiled it from source. You should now add `exec awesome` to
|
|
your `~/.xinitrc`. As already mentioned, awesome provides a default config file
|
|
which will be our starting point. You will usually find this `rc.lua` file in
|
|
`/etc/xdg/awesome/`. Copy it to `~/.config/awesome/`, and then start X (for
|
|
example by running `startx`).
|
|
|
|
Move your mouse to the upper left corner and click on the awesome logo. A little
|
|
menu opens. Browse through the menu, then click the logo again to close it. Next
|
|
to the awesome menu you see numbers 1-9. These are your tags (or desktops if you
|
|
want). You can click on these to change them but nothing will happen because we
|
|
have not opened any programs. On the top right you see the time/date and a
|
|
symbol showing the current layout. You can also click on the symbol to change
|
|
the active layout.
|
|
|
|
One of awesome's big advantages over other tiling window managers is its good
|
|
mouse support. Awesome can act as a full floating window manager (almost like
|
|
openbox) if you want. For this basic tutorial we will mainly focus on keyboard
|
|
control, so let's learn some key bindings now.
|
|
|
|
Let's open a terminal: press *Mod4+Enter*. Mod4 is your "Windows key", the key
|
|
between Ctrl and Alt. You can change the modkey if you want, but we'll get to
|
|
that later. An `xterm` window will pop up. You can of course use your favourite
|
|
terminal if you like. Again, more on that later. Now press *Mod4+Shift+c* to
|
|
close the terminal. This is the command which lets you close any application.
|
|
Awesome has an elegant way to launch programs: press *Mod4+r*. Now you will
|
|
see a **Run:** prompt in the status bar. Start anything you like, it also
|
|
features Tab-completion!
|
|
|
|
Open more applications to see the tiling features.
|
|
You can now press *Mod4+Space* to cycle through all the possible tiling (and
|
|
floating) layouts. Note that the icon in the upper right changes.
|
|
|
|
Also try *Mod4+h*, *Mod4+l*, *Mod4+Shift+h* and *Mod4+Shift+l* to resize
|
|
windows. You can also resize with *Mod4+Button3* (right click). *Mod4+f* will
|
|
make your current window fullscreen.
|
|
|
|
With *Mod4+Number* (1-9) you can browse through your tags. With
|
|
*Mod4+Shift+Number* (1-9) you can send a window to a specific tag. *Mod4+Left*
|
|
and *Mod4+Right* moves to the next tag in the specified direction.
|
|
|
|
Use *Mod4+k* and *Mod4+j* to change your focused client - moving your mouse will
|
|
also do that.
|
|
|
|
*Mod4+Shift+q* quits awesome, but don't do that now.
|
|
|
|
For an overview of all key bindings, press *Mod4+s*. Pressing any key closes
|
|
this overview again.
|
|
|
|
If you are a Vim user, try this: Press *Mod4+r* for the run prompt, enter
|
|
`gvim` and press *Enter* to start it. Now press *Mod4+s* again. The key binding
|
|
overview now also provides a cheat sheet for controlling Vim.
|
|
|
|
## Change the theme
|
|
|
|
Awesome has four themes you can choose from: *default*, *sky*, *xresources*, and
|
|
*zenburn*.
|
|
|
|
To change the theme, open your rc.lua and edit this line near the beginning of
|
|
the file:
|
|
|
|
beautiful.init(gears.filesystem.get_dir("config") .. "/themes/default/theme.lua")
|
|
|
|
For this tutorial we will stick with the default theme.
|
|
|
|
Now we will customize the theme. Copy
|
|
`/usr/share/awesome/themes/default/theme.lua` to `~/.config/awesome/` and change
|
|
the above line in your theme like this (remember to replace `USER` with your
|
|
user name):
|
|
|
|
beautiful.init("/home/USER/.config/awesome/theme.lua")
|
|
|
|
### Change the background image
|
|
|
|
Your desktop background image is handled in your theme file. To change it, edit
|
|
this line in your theme file:
|
|
|
|
beautiful.get().wallpaper = "/usr/share/awesome/themes/default/background.png"
|
|
|
|
## Personalize your layouts
|
|
|
|
To optimize our workflow, we now want to give names to our tags and set the
|
|
specific tiling or floating mode for each of them.
|
|
Open your `rc.lua` and find the layouts section. It should look like this:
|
|
|
|
awful.layout.layouts = {
|
|
awful.layout.suit.floating,
|
|
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.spiral,
|
|
awful.layout.suit.spiral.dwindle,
|
|
awful.layout.suit.max,
|
|
awful.layout.suit.max.fullscreen,
|
|
awful.layout.suit.magnifier,
|
|
awful.layout.suit.corner.nw,
|
|
-- awful.layout.suit.corner.ne,
|
|
-- awful.layout.suit.corner.sw,
|
|
-- awful.layout.suit.corner.se,
|
|
}
|
|
|
|
These are all possible tiling and floating layouts awesome has. If you don't
|
|
find all of them useful, you can comment some of them out by adding "--"
|
|
to the beginning of the line. Awesome already comes with three layouts which are
|
|
not used in the default config, as you can see above.
|
|
|
|
## Personalize your tags
|
|
|
|
Next, we want to name our tags. This is the default tag creation with numbers
|
|
from 1 to 9:
|
|
|
|
-- Each screen has its own tag table.
|
|
awful.tag({ "1", "2", "3", "4", "5", "6", "7", "8", "9" }, s, awful.layout.layouts[1])
|
|
|
|
Now we want to change the tag names and assign a specific layout to each of
|
|
them. By default, each tag has a floating layout (the first entry in the
|
|
`layouts` table). To change this, we define a specific layout for each tag.
|
|
|
|
Replace the above with this code:
|
|
|
|
-- Each screen has its own tag table.
|
|
local names = { "main", "www", "skype", "gimp", "office", "im", "7", "8", "9" }
|
|
local l = awful.layout.suit -- Just to save some typing: use an alias.
|
|
local layouts = { l.floating, l.tile, l.floating, l.fair, l.max,
|
|
l.floating, l.tile.left, l.floating, l.floating }
|
|
awful.tag(names, s, layouts)
|
|
|
|
We use `layouts` to set the layout for each tag. Edit this as you like.
|
|
|
|
## Some global settings
|
|
|
|
While we are at it, we can also change the default terminal, editor and assign
|
|
the modkey to a different key:
|
|
|
|
terminal = "xterm"
|
|
editor = os.getenv("EDITOR") or "nano"
|
|
[…]
|
|
modkey = "Mod4"
|
|
|
|
Change these settings to your liking. They are pretty self-explanatory and
|
|
well-documented in the comments.
|
|
|
|
## Wrapping up
|
|
|
|
Save your `rc.lua` and restart awesome (*Mod4+Ctrl+r*). Now the modifications
|
|
done above should be applied.
|
|
|
|
Note that any mistakes in your `rc.lua` can cause problems. You can save
|
|
yourself some trouble by using `Xephyr` to test your changes.
|
|
|
|
Open a terminal and run the following command:
|
|
|
|
Xephyr :5 & sleep 1 ; DISPLAY=:5 awesome
|
|
|
|
A new window will appear and a new awesome instance runs inside of it.
|
|
|
|
## Add widgets
|
|
|
|
Before the following line:
|
|
|
|
mylauncher = awful.widget.launcher({ image = beautiful.awesome_icon,
|
|
|
|
Add this to create a new widget:
|
|
|
|
praisewidget = wibox.widget.textbox()
|
|
praisewidget.text = "You are great!"
|
|
|
|
The widget still needs to be added to a wibar. For this, find the definition of
|
|
your wibar and change it as follows:
|
|
|
|
{ -- Left widgets
|
|
layout = wibox.layout.fixed.horizontal,
|
|
mylauncher,
|
|
praisewidget, -- This line is new
|
|
s.mytaglist,
|
|
s.mypromptbox,
|
|
},
|
|
|
|
This gives you a basic idea on how to add a widget. For an overview of available
|
|
widgets and how to arrange them, please read @{03-declarative-layout.md}.
|
|
|
|
## Further reading
|
|
|
|
To learn more about the individual parts of the default configuration file,
|
|
please look at @{05-awesomerc.md}.
|