|
|
Subscribe / Log in / New account

Awesome: A window manager that gets out of the way

November 16, 2011

This article was contributed by Koen Vervloesem

Sabayon Linux, the easy-to-use Linux distribution built on top of Gentoo Linux, recently announced three new experimental editions that supplement their previous GNOME, KDE, Xfce, and Core releases. Two of the new experimental editions are equipped with unsurprising desktop environments: LXDE and E17 (Enlightenment). The third desktop choice, however, is surprising: the awesome window manager.

Awesome is no stranger to me: I have been using it for three years as the window manager on my main work computer because it's highly configurable and visually minimalistic, so I can focus on my work without any distractions. It's not so surprising that awesome isn't popular, as it's going up against modern desktop environments like GNOME 3, KDE 4 and Unity. In contrast to those desktop environments, awesome doesn't want to appeal to non-expert users, doesn't offer an Apple-like experience, and doesn't come with all kinds of bells and whistles. This makes it even more interesting that a mainstream distribution like Sabayon chose to include an edition with awesome.

A framework window manager

Awesome is called "a highly configurable, next generation framework window manager for X" by its developers. By "framework window manager" they mean that users actually build their own window manager with awesome: while it's usable with the default configuration, it is meant to be extended and configured by the user. Because of this, awesome is primarily targeted at power users, developers, and anyone who wants to have fine-grained control over their graphical environment. In contrast, if you don't like tweaking your system or if you like out-of-the-box bells and whistles, awesome probably isn't for you.

Awesome has a small code base and memory footprint and is fast. Because it's using the asynchronous XCB library instead of the synchronous Xlib, it also promises less latency than other window managers, at least according to the home page. It prides itself on implementing many Freedesktop standards, such as EWMH (Extended Window Manager Hints) that allows programs to give hints to the window manager about the type of their windows, Desktop Notification to provide popup notifications on the desktop, System Tray to display small icons provided by running applications, and D-Bus for interprocess communication. And it even supports multiple monitors in XRandR, Xinerama, and Zaphod mode. So while it's a minimalist window manager, it doesn't fall short in its features.

Everyday working with awesome

By default, awesome has a simple but already quite usable configuration that will even support multiple monitors. When you start an awesome X session, you'll see a minimalist desktop with a status bar on top of the screen. Awesome can be controlled completely with the keyboard, so you'll have to memorize some keyboard shortcuts to become proficient at it. For instance, Win+Enter opens a new terminal window (Win is the key with the Windows logo, called Mod4 in awesome's documentation and configuration file), Win+j cycles through the windows, Win+h or l resizes a window (but Win+right-click and dragging with the mouse is a bit more convenient), Win+Shift+j or k moves a window (as does Win+left-click and dragging with the mouse). With Win+Shift+c you close the focused window. Starting a program is simple: enter Win+r, after which you see a "Run:" prompt in the status bar and you can type a program name (with tab completion). It pays to read ~/.config/awesome/rc.lua a bit to get to know all these keyboard shortcuts. When you're used to them, awesome lets you really manage your windows in a very efficient way.

[Tiled layout]

By default, awesome behaves like a regular stacking window manager, but it started as a tiling window manager and I still find this mode the most efficient to use. Just click on the icon in the upper right to use the tiled layout. When you open your first window, it covers the whole screen, and subsequently opened windows are tiled automatically alongside the other windows, so the available screen real estate is always covered completely unless you have no windows open. By default, the most recent window is shown at the entire left part of the screen and the other ones are automatically rearranged on the right side. You don't have to juggle with your windows to get the most out of your screen; awesome does the job for you. By the way, there are no title bars attached to the windows by default, although you can change that in the configuration file.

The status bar at the top of the screen shows nine numbers by default at its leftmost part. If you click on one of them, you get a completely empty screen, ready to contain some new windows. Superficially, this looks like the workspace concept in many other desktop environments, but in awesome they are called tags and the relationship is backwards: while a workspace contains windows, in awesome tags belong to a window. This means that a single window can have multiple tags, but you can also view multiple tags together by right-clicking on another tag in the status bar. The nine tags can be reconfigured to have more descriptive names, although you probably should keep them short. For instance, I have tags "read", "talk", "surf", "type", "file", "hear" and "root". All in all, the concept of tags is much more flexible than traditional workspaces.

[Magnifier layout]

To the right of the tag list comes the task list, which is the list of windows on the currently visible tag(s). To the right of that, there's the clock, and at the rightmost part of the status bar is the layout box which we already mentioned earlier. If you click on it, the way in which awesome arranges all visible windows changes. You can cycle through all available layouts with left-click (forward) and right-click (backward) or by using Win+Space. There's a spiral layout, a maximized layout (which only shows the focused window), a fullscreen layout (which even covers the status bar), a magnifier layout (which shows the focused window in the middle and the other ones on the background) and a floating layout, which shows all windows free-floating and covering each other, like you're used to from stacking window managers.

You can also toggle the floating/tiled status of the focused window with Win+Ctrl+Space and you can configure awesome to automatically force specific programs (like GIMP) to always float. You can also set the default layout programmatically in the configuration file. For instance, I have set the layout of my left screen to tiled and the layout of my right screen (which stands in portrait mode) to tiled.bottom, which tiles the windows vertically. This kind of personalization is very easy to do in awesome.

Tuning your desktop environment

Awesome is just a window manager, so, by default, a lot of functionality offered by a complete desktop environment will be missing. But most of this functionality can be added to the configuration file or supplemented by external programs. The upside is that you can pick your components: you can for instance choose lightweight alternatives. The downside is that you have to configure a lot of things that come out-of-the-box with a desktop environment such as GNOME or KDE and you have to add many programs to your awesome key bindings or to your ~/.xinitrc before you have a working desktop environment with things like an automounter, a file manager, a network applet or a screen shot program. You can also add widgets to the status bar, e.g. a systray, graphs of the memory or CPU usage, and so on.

If you like the complete desktop environment that GNOME or KDE is offering and you just want to swap their default window manager for awesome, that's also possible. This gives you your familiar desktop environment, but with the much more flexible window management functionality of awesome. Have a look at the wiki on how to set up awesome with GNOME or with KDE.

Some programs have to be tuned to be able to use them well with awesome. For instance, if someone mentions you on IRC when you're using the irssi client, the tag associated with your irssi client can become orange (or whatever color you have configured in your awesome theme) by setting up a couple of things. There are also some problems with Java programs when you use a Java virtual machine older than version 1.7, but most issues can be overcome.

Development

Awesome began in September 2007 as a fork of dwm, an extremely minimalist window manager which can only be customized through editing its source code (all options meant to be user-configurable are contained in a single header file). Debian developer Julien Danjou liked dwm's minimalism, but wanted it to have an external configuration file. In version 3.0, he decided to use the programming language Lua for the configuration file format.

Danjou is still the primary author of awesome, but there are a lot of other contributors, and Uli Schlachter maintains awesome now. After a frantic development speed the first two years, development has slowed down now, with the latest release, 3.4.10, being made on May 16 along with a rather low number of commits in the project's repository. In an email interview, Danjou said that the reason for the slowdown is simple:

Awesome is rather complete. It misses a few things, but there's enough to do what people want. The fact is that the X protocol part about window management doesn't evolve, so once it's implemented and exposed to users so that they can do whatever they want, you've pretty much finished your job.

The missing parts are advanced stuff like new XInput and multi-touch support, but we were blocked by XCB for those, and users seem to be able to live without them. Now, since everyone seems really happy with the 3.4 branch, I think it's enough that we just keep maintaining it.

Although one could say awesome is finished now, there's an active community of users and the wiki is a goldmine for resources, including some user configuration files, themes, user-contributed widgets, and example screenshots. Awesome is available in the repositories of a lot of Linux distributions (but surprisingly not in Fedora), and also in the BSDs. Some of these distributions have their own wiki pages with a guide and distro-specific information, such as Arch Linux and Gentoo.

Tune it now

Although awesome is not an easy program to learn, the framework window manager invites you to experiment with and tune your desktop environment. For instance, you can modify your rc.lua file and restart awesome for these changes to have effect with a simple Win+Ctrl+r. To get some idea of the possibilities, have a look at all the signals awesome emits, to which you can hook your own handler functions. If you dislike the way how GNOME, KDE, and Unity are evolving and you want a window manager that you can tune to get out of your way, you definitely should take a look at awesome. For a quick glance, try the new Sabayon 7 Awesome edition.


Index entries for this article
GuestArticlesVervloesem, Koen


to post comments

Awesome: A window manager that gets out of the way

Posted Nov 16, 2011 21:40 UTC (Wed) by jlargentaye (subscriber, #75206) [Link] (3 responses)

I've used Awesome exclusively at work for about 6 months, and I want to insist a bit more on the tag system. I've come to believe that Awesome's tag system combined with tiling mode provides unequaled power and allows setups that KWM or Metacity can't do.

For example, I have two terminals with tag 1 ("term") and two editor windows with tag 2 ("editor"). That way, I can quickly switch between terminals and editors. So far, nothing special compared to workspaces.

However I've also tagged one terminal and one editor with tag 5, and the others with tag 6, that way when I'm in a terminal and want to check code, I can easily (and seemlessly! no flickering) replace the other terminal with an editor by pressing Win-5 or 6.

I also have a mail client and web browser with their own tags (3 "mail" and 4 "web"), and can easily squeeze them in to the current view by doing Ctrl-Win-3 or 4.

This demonstrates both multiple tagging a given window and displaying windows from multiple tags. It takes some getting used to, Awesome is definitely a "power-user" tool, but is completely worth it.

Awesome: A window manager that gets out of the way

Posted Nov 23, 2011 21:47 UTC (Wed) by jospoortvliet (guest, #33164) [Link] (2 responses)

I'm actually not sure if KWin can't do those things. The things you mention sound very familiar :D

You'd be surprised to find out how powerful KWin is these days. Tiling, grouping/tabbing, window shortcuts and a huge variety of window- and application specific settings are all easily accessible from a GUI.

Personally I'm quite happy with such settings. On my desktop I don't have much fancy stuff but on my small screen laptop I actually use quite some of these features to use the screen as efficiently as possible.

One that I'm currently missing is to hide the window borders on maximized windows. Actually it's there, in the config file, but it's not in the UI. For those curious - change "BorderlessMaximizedWindows=" from false to true in ~/.kde4/share/config/kwinrc

As you can use shortcuts to un-maximize and tile windows, there is no reason (for me) tho show the window decoration.

Anyway, I wouldn't claim that Awesome has no features KWin doesn't have - I'm sure it does. Just don't put KWin in the same group as Metacity, it's far more capable and pretty much everyone greatly underestimates it ;-)

Awesome: A window manager that gets out of the way

Posted Nov 24, 2011 23:49 UTC (Thu) by mathstuf (subscriber, #69389) [Link] (1 responses)

Agreed. KWin is a very capable WM (though I last used it around 4.3 or 4.4 days). Out of curiosity, if I have multiple monitors, can KWin be configured to show *a* desktop on each instead of treating both monitors as one desktop? IIRC, plasma can do activities which act something like this, but they also share a different set of workspaces.

Awesome: A window manager that gets out of the way

Posted Dec 8, 2011 13:31 UTC (Thu) by Duncan (guest, #6647) [Link]

If you've not used kde since 4.4 you're missing quite a bit. For me, 4.4 was still not release quality, but 4.5 finally made it, minus kdepim of course (so kmail, kopete, etc, all the stuff their akonadifying), which peaked at 4.3, before they akonadified kaddressbook and started breaking stuff (I eventually switched to claws-mail for both mail and feeds, and have long used pan for newsgroups and mailing lists, thru gmane's list2news gateway, I don't do IM so didn't have to worry about it).

IIRC they were just beginning to introduce kwin as a tiling WM back on 4.4, and it has gotten MUCH better since, tiling and in general, with a MUCH improved window-rules GUI in 4.7. But there were some (non-kwin) regressions in 4.6, plus of course the whole akonadi breaking kdepim thing, both of which aren't fully straightened out yet, so late 4.5 with the 4.4.10 or so kdepim was the best kde4 so far, IMO.

I don't use either kwin's full window tiling (tho I use the quarter- and half-max drag-to-side functionality that works well for semi-tiling) or window tab-grouping, as I've developed my own solution over the years, an almost maximized title-bar-less window with a pair of half-maxed side-by-sides arranged so I can click either of them or the almost-maxed window to raise (as long as I don't raise both side-by-sides thereby hiding the almost-maxed-titlebar-less) and focus, or simply hover over one that's below to focus it for typing into, without raising it, just making it visible as 100% opaque thru the semi-transparency of the defocused but above window.

It works well for me. In fact, I hadn't realized just how much i depended on the then kde 3.5 window transparency until I tried to switch to kde 4.2, and thru a dual-rooted combination of a bug later fixed in 4.3 or 4.4 and a *HORRIBLY* deoptimized for my hardware default animation setup, 4.2 window transparency (and effects in general) would lag the desktop by HALF A MINUTE or more at times, thus being entirely unworkable, so I had to turn it off.

Ultimately I traced both roots down and both adjusted the config and found a workaround for the bug (by trying and configuring a single kde4 app at a time on an otherwise still kde3 desktop, thus isolating the dual roots), after which I could reactivate window transparency again, and soon thereafter I upgraded graphics so could configure more effects, and the bug was fixed, so I didn't have to worry about the workaround (no actively updating plasmoids on the desktop) any more, but the point is, I found out how much I actually DEPEND ON window transparency from that experience.

As far as I can see from the writeup (tho I've not finished reading all the comments yet), awesome might do tiling, but it apparently doesn't do compositing, so it would appear that window transparency is right out, which means awesome's right out, for me, because I actually USE window transparency, referring to a semi-transparent say documentation or config window on top, while also looking thru it to type my answer to a question about it, while referring to it, into the active window below it.

But OTOH, kwin might do tiling, but I don't believe it has anything quite as flexible as tagging, which now that I know about I'm going to miss as well. But I wouldn't be surprised if it gets it.

So they both have features I could and/or do definitely use, while missing other features I could and/or do definitely use that the other has. =:^(

Meanwhile, to answer your question, originally neither kwin4 nor plasma could handle zaphod mode, separate desktops on each. They're actively working on it and last I read the bugs (4.5 timeframe, so a year-ish ago) it was sort of working in IIRC kwin, but not plasma yet (or was it the other way around?). But 4.6 the then still in development had some fixes that had it /almost/ working (probably about like the 4.2 the kde folks insisted was ready for use, despite its still being late alpha stage broken AT BEST!), basically working, but with some stuff that you'd definitely learn you couldn't do and would avoid after that.

While I use a dual monitor setup, it's as a stacked-orientation RandR mode single desktop, and I've not followed the bugs. However, given the rate at which they were progressing and that it was said to sort of work for 4.6, I'd guess it pretty much worked, but possibly not smoothly, for 4.7, and that with 4.8, it should be pretty good.

FWIW, I'm running 4.7.80 now, aka 4.8-beta1, beta2 released yesterday but I've not upgraded yet.

Duncan

Awesome: A window manager that gets out of the way

Posted Nov 16, 2011 21:55 UTC (Wed) by lkraav (subscriber, #76113) [Link] (8 responses)

i'm an awesome user of about 6 months as well. saw it first time about 2+ years ago at a plone hackathon, chaoflow [1] was using it. havent looked back when i finally got around to going full linux on my laptop. i've basically closed my macbook pro for good now i think.

it will take you some time to set it up to your tastes, just like the article states. i went at it step by step, just implementing any single component as i felt i needed it. you can view the shortlog of the road from standard distro rc.lua to my own personal heaven at [2]. haven't really felt a need to further tweak the configuration for about the last 3 months, everything is just smooth.

and the name of this thing is just... awesome. you can't argue that.

[1]: http://plone.org/documentation/author/chaoflow
[2]: https://github.com/lkraav/dotfiles/commits/master/.config...

Awesome: A window manager that gets out of the way

Posted Nov 18, 2011 0:03 UTC (Fri) by mathstuf (subscriber, #69389) [Link] (7 responses)

I have a similar story with XMonad. I've been using it since March 2010 (ratpoison from December 2009 until then) and haven't looked back.

Looking at the history of my xmonad.hs file, it appears that the last functional change I made was on May 15th to add a dmenu window selector bindings (both moving to the selected window and bringing the selected window to the current workspace variants). Since then, it's been a fix for window titles in xmobar, and updating to dmenu_run instead of dmenu_path (July 25th). My gitweb is, unfortunately, not populated this week due to me moving from gitosis to gitolite and not completing the configuration migration last night.

Awesome: A window manager that gets out of the way

Posted Nov 18, 2011 15:24 UTC (Fri) by emk (subscriber, #1128) [Link] (6 responses)

Years ago, I decided that messing with Linux configuration was an evil time sink, about on par with watching bad TV. But sometimes you're in one of those moods, and just want to waste time...

In a fit of random curiosity, I installed VirtualBox, Ubuntu and XMonad on my Mac, and decided to spend a couple of days messing around with XMonad. I figured that once I'd played with XMonad for a bit, I'd happily go back to using my Mac.

A week later, I ordered a new Ubuntu laptop from ZaReason and gave up on my Mac completely. I just couldn't bear to leave XMonad. I loved having all my windows laid out automatically. I loved knowing my Emacs and terminals are exactly 80 columns wide. I loved using every pixel of screen space for code and unit tests. Now, the idea of manually dragging windows around the desktop makes me feel frustrated.

Basically, if you're the kind of person who loves vim or Emacs—even if you're a Mac user—you might want to check out Awesome or xmonad. They're not for everyone, but they might be for you.

Awesome: A window manager that gets out of the way

Posted Nov 18, 2011 17:04 UTC (Fri) by mathstuf (subscriber, #69389) [Link]

My last semester at college was making my own setup. Today, it is my dotfiles repository[1] and a comps file on my personal Fedora repository[2] to make setting up new machines a breeze.

[1]http://git.benboeckel.net/?p=dotfiles.git;a=summary
[2]http://blipper.dev.benboeckel.net/yum/17/x86_64/base/comp...

Awesome: A window manager that gets out of the way

Posted Nov 19, 2011 8:15 UTC (Sat) by Los__D (guest, #15263) [Link] (4 responses)

"I loved knowing my Emacs and terminals are exactly 80 columns wide."

Ewww, why would you want THAT? Letting your editor and workarea be constrained by an ages old screen format is just silly.

Awesome: A window manager that gets out of the way

Posted Nov 19, 2011 14:50 UTC (Sat) by mathstuf (subscriber, #69389) [Link]

I don't know about him, but I like 180- or 260-wide terminals. It lets me do 2 or 3 80-width panes (tmux) or windows (vim/xmonad) which is enough buffer for line numbers, fold columns, and some room to spare. 80 is obsoleye as a full terminal width, but 80 is still one of the most common wrapping widths in projects.

Awesome: A window manager that gets out of the way

Posted Nov 23, 2011 22:46 UTC (Wed) by jospoortvliet (guest, #33164) [Link] (1 responses)

Agreed. Unfortunately, we still suffer from silly mailing list etiquette like "wrap your mails at 78 characters" which is insanely annoying on both large AND small screens unless your mail client re-wraps mails (incl quotations). My mail client does everything I want except for that :(

Awesome: A window manager that gets out of the way

Posted Nov 24, 2011 23:56 UTC (Thu) by mathstuf (subscriber, #69389) [Link]

For me, mutt can rewrap, but slrn does not (there's also some interesting failures to decode messages where =20 ends nearly every line...). I don't know if things have changed since I was using KDE's PIM suite, but KNode and KMail would wrap to the setting or the editor window's width, whichever was less. Since there's no "message preview" before sending, it caused quite a bit of interesting mail formatting. Took me a month or two to track down the culprit. Luckily, Vim has the 'gq' command to rewrap paragraphs and makes rewraping a breeze if needed. The worst is when hard line wrapping happens, but the quotation markers aren't copied to the wrapped line (slrn can collapse quote blocks and the feature is broken with such mails).

80 cols

Posted Dec 3, 2011 0:10 UTC (Sat) by kmself (guest, #11565) [Link]

You'll still find this very useful in circumstances, particularly those where you really NEED the functionality: stuck at the colo with console-only access, or using remote serial-over-LAN IPMI2 access to your host.

That's when 80 col wrapping's very, very much appreciated.

The thing about ages-old formats and conventions is that they're baked into a great many things, including hardware and code.

These change very, very slowly.

What's even more amusing is looking at where the 80-col standard originated -- punch cards, dictated in part by the size of dollar bills in the late 19th Century.

Awesome: A window manager that gets out of the way

Posted Nov 16, 2011 21:59 UTC (Wed) by nvloff (guest, #73737) [Link]

I've been using awesome for 2 years and I'm still extremely happy with it.

And I've been using the default configuration for all this time, it's that awesome. There is actually no real need for configuration, the defaults are great.

The killer feature to me is that it works great with gnome-session and all
other stuff I need ( nm-applet, power manager, keyboard layout switcher/indicator, etc.)

Awesome: A window manager that gets out of the way

Posted Nov 16, 2011 22:04 UTC (Wed) by gregkh (subscriber, #8) [Link] (1 responses)

I tried to build the latest version of awesome, but it seems that it has dependencies on packages that are no longer released or supported. Are there packages for awesome for more "up to date" distros so that people can try it out?

Awesome: A window manager that gets out of the way

Posted Nov 16, 2011 23:17 UTC (Wed) by josh (subscriber, #17465) [Link]

Latest Debian testing/unstable: http://packages.debian.org/sid/awesome

Latest Ubuntu: http://packages.ubuntu.com/precise/awesome

Couldn't find it in suse. Other comments here have mentioned the issues currently preventing inclusion in Fedora.

Awesome: A window manager that gets out of the way

Posted Nov 16, 2011 22:07 UTC (Wed) by nvloff (guest, #73737) [Link] (1 responses)

For the Fedora package the problem is that the cairo maintainer doesn't want to enable the unsupported XCB backend that awesome needs.

https://bugzilla.redhat.com/show_bug.cgi?id=awesome - Review Request: awesome - Extremely fast, small, dynamic and awesome floating and tiling window manager

https://bugzilla.redhat.com/show_bug.cgi?id=465759 - Build cairo with XCB suppor

Awesome: A window manager that gets out of the way

Posted Nov 21, 2011 13:03 UTC (Mon) by SammyF (guest, #81507) [Link]

The same is true for Archlinux. Thankfully, awesome and cairo-xcb can be found in AUR.

Awesome: A window manager that gets out of the way

Posted Nov 16, 2011 22:09 UTC (Wed) by alvieboy (guest, #51617) [Link] (16 responses)

OMG.... lua.

[note: I'd say the same thing if it were python, perl or lisp based]

I did not try "Awesome". Actually, I rushed to read this article because of it's title:

"Awesome: A window manager that gets out of the way"

As for "Awesome": I assumed LWN was actually impressed by the window manager. It happens to be it's name.... ok.

Second: "A window manager that gets out of the way". I was expecting it not to interfere with what I'm doing, but "visually minimalistic" is not what I was expecting. Rather "open popups where they belong", "place windows at right place", "don't steal my focus".

Third: I don't expect the window manager to be "highly configurable", because there are not many interesting things a WM can do (and as such, not much to configure anyway).

Then we have "lua". Could have been "python", or any other high level language. But that's not what I want from a WM (I use XFCE btw). I want a simple, fast, with low overhead window manager.

A window manager is just a window manager.

Alvie

Awesome: A window manager that gets out of the way

Posted Nov 17, 2011 1:34 UTC (Thu) by HelloWorld (guest, #56129) [Link] (6 responses)

> Then we have "lua". Could have been "python", or any other high level language. But that's not what I want from a WM (I use XFCE btw). I want a simple, fast, with low overhead window manager.
Yeah right, because lua is known for being complicated, slow and with high overhead... not!

Awesome: A window manager that gets out of the way

Posted Nov 17, 2011 6:23 UTC (Thu) by alankila (guest, #47141) [Link] (5 responses)

Amusingly, the man who wrote Awesome agrees in retrospect that he should have chosen Python. He wanted an object-oriented language and since LUA doesn't really provide you with this out of the box, he realized he was spending his engineering effort into writing a programming language implementation, not a window manager implementation.

He now advocates against LUA because of this, apparently.

Awesome: A window manager that gets out of the way

Posted Nov 17, 2011 19:12 UTC (Thu) by oblio (guest, #33465) [Link] (4 responses)

A bit strange, seeing this: http://www.lua.org/pil/16.html

Object oriented Lua

Posted Nov 17, 2011 23:33 UTC (Thu) by man_ls (guest, #15091) [Link] (2 responses)

Apparently Danjou is not happy with metatables as an object-oriented technique. You can read more about it in his 2011 blog (scroll down to "Why not Lua").

All my knowledge of Lua is theoretical, but the explanation in pil (from which you link the older online version) is really messy. I can relate to how JavaScript prototypes are a clumsy solution for a real class system. JavaScript also has other flaws such as the disappearing "this" reference. When you feel that a language is working against you instead of for you, you feel frustrated.

Of course with Python you have the obnoxious self parameter, and Java is not functional (pun intended), but what can you do about it. Obvious sentence of the day: no language is perfect, and choosing the right one for a particular job is really hard.

Object oriented Lua

Posted Nov 19, 2011 9:46 UTC (Sat) by alankila (guest, #47141) [Link] (1 responses)

The "this" reference does not disappear. It's just always set on every method call, and in this case it will be the contained DOM node, as you'd expect (it's the DOM node's method being called). You simply capture that other object into a variable -- a strategy you might not like -- but it's not unreasonable.

Incidentally, Java would allow people to write Node.this to represent the Node object, assuming the function objects were written as anonymous inner classes.

Object oriented JavaScript

Posted Nov 19, 2011 13:02 UTC (Sat) by man_ls (guest, #15091) [Link]

It is especially annoying in callbacks: I would expect that this would be part of the function context as any other closure, but no: this points to the DOM node where the callback is running.

It can be worked around, of course: using a real closure, or calling the callback using weird call() techniques. But it makes for one of those "what were they thinking" moments. Same for prototypes, metatables' bastard son.

Frankly, JavaScript is surprisingly sane given that it was invented in 10 days.

Awesome: A window manager that gets out of the way

Posted Nov 18, 2011 8:42 UTC (Fri) by alankila (guest, #47141) [Link]

*sigh* I wouldn't exactly call that an object system. Sure, it's not *that* complex to do from scratch if you insist, but the point here is, you are manually implementing an object system.

Apparently he wanted python's semantics, too, and was dismayed to discover that some internal functions like __len were not overridable for some built-in types. I'm going to guess this restriction was because of performance.

Awesome: A window manager that gets out of the way

Posted Nov 17, 2011 13:11 UTC (Thu) by nix (subscriber, #2304) [Link] (7 responses)

Well, in that case, you don't want lua. I see awesome as the first window manager in donkey's years that stands a chance of being configurable enough to supplant fvwm on my desktop. The switch from visual workspaces to tagging promises to be a wrench, but I can already feel the extra expressiveness and I haven't even started it yet. :)

Awesome: A window manager that gets out of the way

Posted Nov 18, 2011 0:05 UTC (Fri) by mathstuf (subscriber, #69389) [Link]

Technically, wouldn't any of the window manager toolboxes be enough? XMonad, Awesome, dwm, and (maybe) stumpwm to name a few.

Awesome: A window manager that gets out of the way

Posted Nov 18, 2011 9:48 UTC (Fri) by Yenya (subscriber, #52846) [Link] (4 responses)

> I see awesome as the first window manager in donkey's years
> that stands a chance of being configurable enough to supplant
> fvwm on my desktop.

Awesome is hardly the first programmable window manager (or even window manager programmable in a functional language). You must have missed at least sawfish (former sawmill), which has been the default WM in GNOME for years.

Yes, I am a happy sawfish user (now with XFCE), thanks for asking ;-)

Awesome: A window manager that gets out of the way

Posted Nov 21, 2011 14:51 UTC (Mon) by nix (subscriber, #2304) [Link] (3 responses)

I used sawfish intermittently for a bit, but it kept on rusting and then went maintenance-dead for years. I really should try again.

Awesome: A window manager that gets out of the way

Posted Nov 21, 2011 15:02 UTC (Mon) by Yenya (subscriber, #52846) [Link] (2 responses)

Yes, the original author (John Harper, IIRC) has abandoned it after GNOME has gone the metacity way, but now a new group of people picked it up, and continue its development.

Awesome: A window manager that gets out of the way

Posted Nov 21, 2011 22:31 UTC (Mon) by nix (subscriber, #2304) [Link] (1 responses)

IIRC, for "abandoned" you should read "went to work for Apple, who demanded as a condition of employment that he cease work on Sawfish". Rather nasty of them, if true.

Awesome: A window manager that gets out of the way

Posted Nov 22, 2011 8:12 UTC (Tue) by Yenya (subscriber, #52846) [Link]

Interesting, I did not know that.

I had the impression that he declared sawfish has reached the mature state, so it did not need further development at all.

I have even managed to look it up - I think this was the point where the group of developers decided to take over the sawfish development, and make a formal release after long time:

http://www.mail-archive.com/sawfish-list@gnome.org/msg005...

Awesome v. fvwm

Posted Nov 23, 2011 23:01 UTC (Wed) by massysett (guest, #52736) [Link]

If you're an fvwm user, you will probably lament the documentation of Awesome. Configuring anything in Awesome required reading the Lua API docs, which in my experience left something to be desired. I found it interesting that Danjou said Awesome is nearing maturity, because I didn't think the docs were one of a mature application.

Fvwm on the other hand has superb documentation. Having used GNOME, KDE, xmonad, awesome, and a little bit of fluxbox, I have landed on fvwm. It has the best documentation, the most stability, and the least bugs--zero that I have found. Xmonad was nice but it practically required keyboard usage--it's hard to even configure things like window decorations. I like the keyboard but the mouse shouldn't be second class. I found some bugs in xmonad that would cause the window manager to completely lock up. Awesome's documentation is not the best, and it suffered from bugs as well--I had some problems with decorations on floating windows, for example.

The only thing I miss on fvwm is automatic tiling. However, FvwmRearrange allows tiling at the press of a button. Since I now use a lot of desktops (20) I find I don't have much need to rearrange windows automatically because each desk has the windows arranged as I need them. FvwmPager makes it easy and manageable to use a huge number of desktops.

If you already know fvwm I don't think you'll gain much from trying awesome. I also urge new users to try fvwm. It's not very hip--maybe because it is old--but for configurability, stability, and documentation it can't be beat.

Awesome: A window manager that gets out of the way

Posted Nov 17, 2011 13:54 UTC (Thu) by chsnyder (guest, #52714) [Link]

Sure, most people think a window manager is just a window manager, and why should they have to edit the configuration file to put titlebars on the windows, for cryin' out loud?

But for a few of us, we jump for freaking joy when we see that. Holy cow! No titlebars! Think of all the extra pixels we get for actually getting work done!

The utility is in the choosing. Sometimes you want/need a window manager that lets you put windows exactly where you want them with zero chrome. And thank goodness there is finally a modern alternative to fvwm for that.

Awesome: A window manager that gets out of the way

Posted Nov 16, 2011 22:18 UTC (Wed) by nvloff (guest, #73737) [Link]

Up to date fedora packages can be found here:

http://repos.fedorapeople.org/repos/thm/awesome/

Also Julien Danjou has some interesting posts in his blog on "Why not LUA" and how he lost faith in XCB.

Awesome: A window manager that gets out of the way

Posted Nov 16, 2011 22:38 UTC (Wed) by joey (guest, #328) [Link]

I used Awesome version 2, then moved to xmonad, which is really the king of letting you build your own window manager. (customized tiling layouts etc)

I still think the tagging system is well, awesome.

Awesome: A window manager that gets out of the way

Posted Nov 16, 2011 22:57 UTC (Wed) by alecs1 (guest, #46699) [Link] (1 responses)

Boy the style on that terminal is ugly. You should take a look at how good Scultpure looks, then there's also Plastique. And since I believe that's a gnome-terminal, you could try Cleanlooks which is native to GTK which also looks nice.

You'll excuse me for this obnoxiously off-topic comment, since it's the first time I do it...

Awesome: A window manager that gets out of the way

Posted Nov 17, 2011 0:18 UTC (Thu) by bloopletech (guest, #71203) [Link]

Actually there's an easy way to fix this. Run gnome-settings-daemon & in your startup script and then all gtk windows will be themed. You then set the theme in gnome-control-center > Appearance.

Focus follows mouse or click to focus?

Posted Nov 17, 2011 5:28 UTC (Thu) by felixfix (subscriber, #242) [Link] (1 responses)

I've been using fvwm for years and years, happy with its own version of minimalistic, but tags and something new to learn might tempt me to try this. But I see no mention of how to focus keyboard input in a specific window? Is there a choice between focus follows mouse and click to focus?

Focus follows mouse or click to focus?

Posted Nov 17, 2011 11:55 UTC (Thu) by njwhite (guest, #51848) [Link]

You might be interested in dwm; it's less focused on customisability, and is where the tag concept originated. Its default behaviour is focus follows mouse, but you can change that to click to focus using a little patch http://dwm.suckless.org/patches/focusonclick

You can also focus using the keyboard, using Mod-j / Mod-k to cycle through windows on the current tag(s); I imagine this is the same with Awesome.

Awesome: A window manager that gets out of the way

Posted Nov 17, 2011 9:56 UTC (Thu) by simhay (guest, #72874) [Link] (10 responses)

I switched to awesome after Ubuntu's switch to Unity as the default window manager, (I haven't really taken to Unity), and after switching I'm a total convert, awesome now runs on my work desktop, my home and laptop. The configuration is so flexible and the main benefit for me is that I don't leave the keyboard as much and this wm really does stay in the background as I want the applications to be my focus.
The fact that it has a very small footprint is great and I like how it doesn't try and do too much, just enough and nothing else.

Awesome: A window manager that gets out of the way

Posted Nov 17, 2011 13:14 UTC (Thu) by nix (subscriber, #2304) [Link] (9 responses)

<blockquote>
The fact that it has a very small footprint is great
</blockquote>
I don't understand why anyone other than those on antique hardware care about this. These days footprints only impact what you are doing with your machine if they are titanic (e.g. OpenOffice), if you run lots and lots of them (e.g. shells), or if they use a large amount of CPU time and thus the effect of increased icache/dcache hit is significant. But a window manager? You run one of it and it spends 99.99..% of its time asleep. Why would anyone with modern hardware care if it occupies 5Mb or 50Mb? (Hell, I personally wouldn't care if it occupied 500Mb, but I do realise that my desktop is overspecced.)

Awesome: A window manager that gets out of the way

Posted Nov 17, 2011 14:03 UTC (Thu) by chsnyder (guest, #52714) [Link]

The fact that it has a very small footprint is great
I don't understand why anyone other than those on antique hardware care about this.

Efficiency is still valuable, even in a world of limitless resources. Less code means fewer bugs and easier maintenance. It tends to indicate that a lot of intelligent thought went into design and development.

Also, absent actual benchmarks, perception is nine-tenths of performance.

Awesome: A window manager that gets out of the way

Posted Nov 17, 2011 17:15 UTC (Thu) by krakensden (subscriber, #72039) [Link] (1 responses)

He's probably noticing that Awesome doesn't have the lag and jitter problems that compositing window managers have, and is erroneously attributing it to the small footprint.

From a user's point of view it's very reminiscent of the bad old days when swapping was common. But don't worry guys, even Windows 7 and Lion (Apple has been working on the compositing thing for what... ten years now?) still stutter and stall just like Compiz. I'm sure it will be like this forever.

Awesome: A window manager that gets out of the way

Posted Nov 17, 2011 21:29 UTC (Thu) by alecs1 (guest, #46699) [Link]

Indeed, what you point out about lag is true. Look no further than this: http://blog.martin-graesslin.com/blog/2011/08/rendering-a...

Although machines may look over-specced, we still get various lags introduced by drawing. For example one thing I seem to replicate frequently with KWin is starting a high resolution video full-screen, and running KSysguard at the same time: the video will stop for a short instant every second, with metronome regularity. Fortunately at least memory is cheap enough swapping is history.

I guess these disappear only after you take every code path and ensure none takes takes more than a fixed period of time, in a sort of RT systems fashion.

Awesome: A window manager that gets out of the way

Posted Nov 17, 2011 17:56 UTC (Thu) by andresfreund (subscriber, #69562) [Link] (3 responses)

One reason why I still care about a small memory footprint is that even though I have a sensible amount of memory for my devices every now and then I run something demanding huge amounts of memory.
Having to wait for far too long till the 2-6GB of Memory used by desktop applications are paged in again afterwards is a really annoying pita.
And I definitely want them paged out while I need the memory for something else...

Awesome: A window manager that gets out of the way

Posted Nov 21, 2011 14:54 UTC (Mon) by nix (subscriber, #2304) [Link] (2 responses)

That's a very good point. As soon as *anything* exhausts memory, the footprint of *everything* starts to matter... mea culpa, I'd almost forgotten what it was like to run with seriously constrained storage.

Awesome: A window manager that gets out of the way

Posted Nov 21, 2011 15:19 UTC (Mon) by andresfreund (subscriber, #69562) [Link] (1 responses)

Thanks for agreeing ;)

Not sure what youre refering to with constrained storage though. The system I notice this most is a low-end server class/high end workstation hardware...
Even on a RAID10 of 10 rotational disks 4GB/4kb (swapped memory/pagesize) random reads hurt significantly. Especially as in most situations swapin produces loads of synchronous reads.
Calculating it with the worst case load pattern (which is not that unreasonable) and a perfect distribution between devices thats:
>>> (2**30*4/4096)/(7200/60.0*10)
873.8133333333334

seconds. Yuck.

Obviously in reality it won't be quite that bad and the situation can improve considerably if many process are swapping in (because then you suddently don't have only one synchronous request going on at the time) or if you start doing readahead on swap...

Awesome: A window manager that gets out of the way

Posted Nov 21, 2011 22:31 UTC (Mon) by nix (subscriber, #2304) [Link]

The "constrained storage" I meant was "you have run out of memory", really. I was just being excessively general in my terminology...

Not just the window manager

Posted Nov 18, 2011 0:03 UTC (Fri) by man_ls (guest, #15091) [Link] (1 responses)

I don't understand why anyone other than those on antique hardware care about this. [...] But a window manager?
Antique hardware is not the only reason, and the window manager is not the only problem. The overhead of "modern" desktop environments can be pretty high: hundreds of MBs are not atypical.

Having a netbook as my primary machine has many advantages: it's light, silent, has an integrated UPS, and I just unplug a few cables and put it in my backpack when I need to travel. However my Eee PC 1000H only supports 2 GB of RAM (recently upgraded from 1 GB), and I don't like swapping to disk; so if I want to get some work done (I'm looking at you, Android SDK) and have a couple of open browsers at the same time with 10s of tabs, I basically need a low resource window manager. I realize that XFCE can be considered "bloated" as compared with e.g. awesome, but it is familiar and it basically works for me, so I have not really researched any alternatives.

Not just the window manager

Posted Nov 18, 2011 8:04 UTC (Fri) by mathstuf (subscriber, #69389) [Link]

This is a similar thing which got me to drop to a custom setup. Okular triggering X to get the OOM kill in the middle of a presentation was unacceptable. Sure, the machine had 512MB of RAM, but it's what I had.

I got that machine booted on a stripped down Fedora (still the default kernel) with ~60MB of RAM used. 80MB after starting X. It also rebooted in 45 seconds (Internet to Internet...manual login and ifup) with Fedora 13 or so. My F15 machines boot with around 200MB used, though Rawhide has it back down to the low 100MB range.

At work, I have a system in a VM that needs quite a bit of memory (relatively; 6GB has usually enough, but my machines have only 8GB), so stuffing my system in beside it for some development (though not too many builds) pretty much rules out the DEs as usable.


Copyright © 2011, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds