2017-08-16 20:07:08 +02:00
# My first Awesome
2016-12-27 13:57:56 +01:00
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
2017-08-16 20:07:08 +02:00
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
2016-12-27 13:57:56 +01:00
make it more beautiful and useful with widgets. For this tutorial you don't need
any programming skills besides using a text editor.
2017-08-16 20:07:08 +02:00
## Explore Awesome
2016-12-27 13:57:56 +01:00
2017-08-16 20:07:08 +02:00
I will assume that you properly installed Awesome through your distribution's
2016-12-27 13:57:56 +01:00
package manager or compiled it from source. You should now add `exec awesome` to
2017-08-16 20:07:08 +02:00
your `~/.xinitrc` . As already mentioned, Awesome provides a default config file
2016-12-27 13:57:56 +01:00
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` ).
2017-08-16 20:07:08 +02:00
Move your mouse to the upper left corner and click on the Awesome logo. A little
2016-12-27 13:57:56 +01:00
menu opens. Browse through the menu, then click the logo again to close it. Next
2017-08-16 20:07:08 +02:00
to the Awesome menu you see numbers 1-9. These are your tags (or desktops if you
2016-12-27 13:57:56 +01:00
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.
2017-08-16 20:07:08 +02:00
One of the big advantages of Awesome over other tiling window managers is its good
2016-12-27 13:57:56 +01:00
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.
2017-08-16 20:07:08 +02:00
*Mod4+Shift+q* quits Awesome, but don't do that now.
2016-12-27 13:57:56 +01:00
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
2021-03-31 08:17:46 +02:00
Awesome has four builtin themes you can choose from: *default* , *sky* ,
*xresources*, and *zenburn* .
2016-12-27 13:57:56 +01:00
2021-03-31 08:17:46 +02:00
To change the theme, open your `rc.lua` , find this line near the beginning of
the file, and change `default` to one of the other values mentioned:
2016-12-27 13:57:56 +01:00
2018-03-11 16:04:27 +01:00
beautiful.init(gears.filesystem.get_themes_dir() .. "default/theme.lua")
2016-12-27 13:57:56 +01:00
2021-03-31 08:17:46 +02:00
However, for this tutorial we will copy and customize the default theme.
Copy `/usr/share/awesome/themes/default/theme.lua` to `~/.config/awesome/`
and change the line shown above in `rc.lua` like this. Make sure to replace
`USER` with your user name.
2016-12-27 13:57:56 +01:00
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:
2020-02-28 09:53:02 +01:00
theme.wallpaper = themes_path.."default/background.png"
The default uses a path relative to `themes_path` by using the `..` operator to join two strings together. To just set it to an absolute path for example, you could do:
theme.wallpaper = "/usr/share/backgrounds/my-awesome-wallpaper.png"
2016-12-27 13:57:56 +01:00
## 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,
}
2017-08-16 20:07:08 +02:00
These are all possible tiling and floating layouts Awesome has. If you don't
2016-12-27 13:57:56 +01:00
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
2017-08-13 22:26:07 +02:00
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}.
2016-12-27 13:57:56 +01:00
## Further reading
To learn more about the individual parts of the default configuration file,
please look at @{05-awesomerc.md}.