diff --git a/docs/07-my-first-awesome.md b/docs/07-my-first-awesome.md new file mode 100644 index 000000000..4aa642a2a --- /dev/null +++ b/docs/07-my-first-awesome.md @@ -0,0 +1,179 @@ +# 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(awful.util.getdir("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: + + theme.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 + +TODO: Write this section. + +## Further reading + +To learn more about the individual parts of the default configuration file, +please look at @{05-awesomerc.md}. diff --git a/docs/config.ld b/docs/config.ld index d8399f1f6..69e87bf7f 100644 --- a/docs/config.ld +++ b/docs/config.ld @@ -23,6 +23,7 @@ topics={ '04-new-widgets.md', '05-awesomerc.md', '06-appearance.md', + '07-my-first-awesome.md', '16-using-cairo.md', '17-porting-tips.md', '90-FAQ.md',