Elv13/tyrannical — pull request #39 by freehaha (2014-07-05 05:27:44+00:00)
Title: Allow setting custom class for clients to cooperate better with awful.rules

This patch allows setting custom classes to clients for advanced configuration with awful.rules. However, it depends on the import order of tyrannical and awful.rules where awful.rules must be imported before tyrannical for this to work (and is recommended in the README anyway)

it reads awful.client property 'overwrite_class' for custom client class.

so in awful.rules.rules one can set
```lua
{
rule = { class = "URxvt", name = "dev" },
callback = function(c)
awful.client.property.set(c, "overwrite_class", "urxvt:dev")
end
}
```

and define tyrannical rules with class = {"urxvt:dev"}

Another useful case is to match the google hangouts client that comes
with Chrome, which has the class 'Google-chrome' just like normal
browsing window so you really have to use other properties like 'role'
or 'name' to match these clients.

I've tried to setup a work-around the other way, importing tyrannical first, but manually tagging the clients after tyrannical has already arranged them makes the client and tag flicker upon being managed (because it's tagged and re-tagged), let alone some strange behaviors so I decided to do it this way ans so far it works great for me.