--------------------------------------------------------------------------- -- @author Julien Danjou <julien@danjou.info> -- @copyright 2009 Julien Danjou -- @release @AWESOME_VERSION@ --------------------------------------------------------------------------- -- Grab environment we need local client = client local type = type local ipairs = ipairs local pairs = pairs local aclient = require("awful.client") --- Apply rules to clients at startup. module("awful.rules") --- This is the global rules table. --
You should fill this table with your rule and properties to apply.
-- For example, if you want to set xterm maximized at startup, you can add:
--
--
-- { rule = { class = "xterm" },
-- properties = { maximized_vertical = true, maximized_horizontal = true } }
--
--
If you want to set mplayer floating at startup, you can add:
--
--
--
-- { rule = { name = "MPlayer" },
-- properties = { floating = true } }
--
If you want to put Firefox on a specific tag at startup, you
-- can add:
-- Note that all "rule" entries need to match. If any of the entry does not
-- match, the rule won't be applied.
If a client matches multiple rules, their applied in the order they are -- put in this global rules table. If the value of a rule is a string, then the -- match function is used to determine if the client matches the rule.
-- -- @class table -- @name rules rules = {} --- Check if a client match a rule. -- @param c The client. -- @param rule The rule to check. -- @return True if it matches, false otherwise. function match(c, rule) for field, value in pairs(rule) do if c[field] then if type(c[field]) == "string" then if not c[field]:match(value) and c[field] ~= value then return false end elseif c[field] ~= value then return false end end end return true end --- Apply rules to a client. -- @param c The client. function apply(c) for _, entry in ipairs(rules) do if match(c, entry.rule) then for property, value in pairs(entry.properties) do if property == "floating" then aclient.floating.set(c, value) elseif property == "tag" then aclient.movetotag(value, c) elseif type(c[property]) == "function" then c[property](c, value) else c[property] = value end end -- Do this at last so we do not erase things done by the focus -- signal. if entry.properties.focus then client.focus = c end end end end client.add_signal("manage", apply) -- vim: filetype=lua:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=80