tychoish, a wiki

tychoish/cyborg/ Awesome Window Manager: How Can Your Environment Work For You?

Awesome Window Manager: How Can Your Environment Work For You?

By tycho garen with Andrei "Garoth" Thorp

I did some stuff to clean up the formatting for the web, and to be a bit more consistent. If you proposed removal and I agreed unequivocally, I went ahead and did the removal. Inserted discussion if I had questions.


Proposal: slightly formalize this / rephrase? I wrote the rest of the document in a semi-formal style where I use "you"-level pronouns but not "I". Do we want to remove the more story-esque relatable sort of segments altogether? -- ?garoth

I'm not sure that there's any particular reason to not be personable in this context. We're write something that people are going to be reading in the context of a hobby (if they use arch/linux professionally, this publication is largely interesting as a hobby), so I don't feel a particular need to write a formal term paper on the subject.

*The powerful thing that we can communicate in this context is not an exploration of the features and capabilities of awesome--that's the kind of thing that people can probably learn from the Wikipedia page and maybe a bit of the awesome site. But rather why we find Awesome compelling, what Awesome enables, and what we like about the Awesome project. The Arch community tends to be fairly advanced and fairly interested inn control of their systems, so I think playing into this has some appeal.

Having said that, I'm totally ok hacking out the first paragraph or changing it to a "we" or "he/tychoish" perspective, to make it less awkward/personal.

I actually started using Linux full time on the desktop because of the Awesome Window Manager. I'm a highly distractable type, and had been playing with various ways to tune my focus as I was starting on a new project and had seen something about Awesome, and so I gave it a shot within a VM. The rest is pretty much history. I never really used other desktop environments on Linux-based systems, and have only used more esoteric window managers since my first encounter Awesome. I can't offer good comparisons between Awesome and the window manager you're probably using at the moment, but I can make the following promise: if you give the Awesome Window Manager a try, it'll change the way you think about using a computer, without doubt.

Perhaps the following revision will be a bit less tychoish focused:

Awesome is the kind of thing that you will have a hard time explaining to your friends "it's a window manager, framework that gives me full control over my workstation and is pretty lite on the RAM, but it doesn't use the mouse very much..." Awesome is the kind of application that may cause your very technologically savvy coworkers to stop dead in their tracks and say "what the hell did you do to your computer?!?" This article provides an introduction

Awesome Background

Awesome is better classified as a desktop environment than a simple window manager. Unlike the philosophies of some competitors, Awesome doesn't focus on minimalism. When confronting a fresh Awesome install, you will see a fantastic panel capable of complex layouts, images, formatted text, and complex widgets such as graphs and progress bars. You will be reassured by the comforts of a shallow learning curve which includes a popup menu that you're sure to find by clicking the background -- a menu that comes with an entry that will list the available bindings. You will, by now, be not at all surprised to find that programs that use popups will display them perfectly in Awesome.

Awesome has put a lot of effort into being simple to pick up, but being extremely powerful and flexible for the power users. By this mentality, Awesome's default layout is floating--that is, the standard non-tiling mode that most users will be used to. Similarly, the Awesome configuration provides a single line that can be un-commented to provide titlebars (with buttons such as close, minimize, and float) to all windows. At this point, people who come from simpler environments should feel mostly at home. Awesome's communty goes so far as to even provide a plugin that generates Gnome-style menus that will list graphical programs in categories. But this is only the beginning. This is the point where you feel comfortable enough in your new environment to start wondering: what can be done better?


After reading the simple list of bindings provided by man awesome, or simply by clicking on the strange layout icon on the right side of the panel, you will suddenly have your floating windows snap to the desktop and expand to fill space optimally. This is a basic automatic tiling layout. Different layouts exist for different situations but the most common is the "tiled" layout which is the most general-purpose. This layout has any amount of master clients and then any amount of slave clients. The names are a bit strange, but they make sense when you see the layout. By default, there is a single master client that takes up half the screen (you can select which half) and all the slave clients bunch up in the other half of the screen. This is a nice layout for when you need to work in one terminal or application and reference the others. You can easily switch the smaller slave into the master area by dragging them around with the mouse, or by using Awesome's powerful keyboard bindings. The number of master and slave clients can be increased or reduced arbitrarily, and even set to 0 (to set to all columns or rows).


Other layouts available by default in Awesome include:


Making Your Desktop Experience Awesome

Awesome's true strength lies for programmers and those alike that wish to customize their environment to be in tune with their desired workflow. For these people, Awesome provides the tools to make it possible with the most minimimal amount of work possible. Awesome is designed from the ground up as a high-level set of programming tools (a library). The configuration file, called rc.lua, is just the glue that uses the various components provided by Awesome to paste together a full desktop environment. All of Awesome's components (such as panels, menus, or even fundamentals like window focus history) can be disabled or modified to suit the user's desires. The use of a full language (Lua) for the configuration file provides the most possible power.

Additional Features

I can add/expand some of these things, and have added this to my list of things to work on later this week.

How to get started. (PROPOSE REMOVAL)

I think we need something here, even if it's just a paragraph. If people like what they see and want to get started right now I think we should provide at least a little guidance on the subject. Like: issue this command to install, put this command in your .xinitrc file and go.

Recent Awesome Developments (PROPOSED REMOVAL)

I think it might be good to show people that the project is active and that we're/you're working on stuff still. What in the last 3-6 months has made you excited to be an awesome user? What's the new hotness that people mike like/find useful?

Needs and shortcomings. How to get involved. (MAYBE REMOVE -- DISCUSS?)

I proposed this section initially because I thought it would be good to make it possible for people who were inspired (or perhaps the silent majority of awesome users,) on how they might become involved with the project. If awesome is indeed vital and active, then there's work to be done (working on the wiki, providing examples of environments built using awesome, new features, and so forth.) Things that are in progress that you'd like to see when they get done, and the like.