Awesome WM and full screen videos

I recently switched my main operating system from Mac OSX to Ubuntu with AwesomeWM, a tailing window manager. I notice a vast improvement in my ability to focus and definitely get into the zone quicker. Unfortunately it also broke the ability to watch video's full screen. Here is how I fixed it.

The problem

Here is a screenshot of a setup that I use pretty frequently when I am watching a video.

awesome video setup

A video on the right, a twitter client - especially when watching a live stream -, and vim for taking notes.

But this setup breaks in awesomewm as soon as I switch the video to fullscreen.

awesome broken fullscreen

The solution

The fix is pretty easy. We need to tell awesomewm how to handle plugin-container instances in a different way. It must not try to arrange them like other windows (the whole idea behind a tiling window manager), but just let it float on top of everything in the size it wants (fullscreen). To do so, add the following rule to your rc.lua.

{ rule = { instance = "plugin-container" },
  properties = { floating = true,
                 focus = yes } },

After the change your can restart awesomewm by pressing modkey+control+r, or if that doesn't work, just logout and login again.

From now on fullscreen video will just work like you would expect it to work, fullscreen.

awesome fullscreen video

New instances will be floating fullscreen and get focus as they spawn. Just press ESC to exit them.

ps: The video is: Everything I Know About Fast Databases I Learned at the Dog Track.

Fix Go compilation errors after update

After upgrading my Go 1.1.1 to 1.1.2, 9o fails to compile packages - or have dependencies - that are already compiled with errors like this:

specs/client/AppendingToAStream_test.go:4: import /Users/pjvds/dev/mygo/pkg/darwin_amd64/github.com/smartystreets/goconvey/convey.a: object is [darwin amd64 go1.1.1 X:none] expected [darwin amd64 go1.1.2 X:none]

The last part in the errors tells me that this is because the code has previously been compiled with Go 1.1.1. Which makes perfect sense since I just updated. After a short journey of trial and error I found the solution that worked for me.

Since building is very fast with Go, the easiest thing to do is to remove the compiled packages.

rm -rf $GOPATH/{bin,pkg}

Happy coding!