X-Git-Url: https://git.madduck.net/etc/awesome.git/blobdiff_plain/dd19cbc77a15510b4bf9101feddf3b10968d9cf1..1bd178f68757099e6c9ccde1992ca5d519ccb8e5:/util/quake.lua diff --git a/util/quake.lua b/util/quake.lua index 000c618..e54b664 100644 --- a/util/quake.lua +++ b/util/quake.lua @@ -10,7 +10,8 @@ local awful = require("awful") local capi = { client = client, mouse = mouse, screen = screen, - timer = timer } + timer = timer or require("gears.timer") } +local math = { floor = math.floor } local string = string local pairs = pairs @@ -31,7 +32,7 @@ function quake:display() local i = 0 for c in awful.client.iterate(function (c) -- c.name may be changed! - return c.instance == self.name + return c.instance == self.name end, nil, self.screen) do i = i + 1 @@ -52,15 +53,16 @@ function quake:display() if not client then -- The client does not exist, we spawn it - awful.util.spawn(self.app .. " " .. string.format(self.argname, self.name), - false, self.screen) + awful.util.spawn(string.format("%s %s %s", self.app, + string.format(self.argname, self.name), self.extra), + false, self.screen) self.notexist = true return end -- Resize awful.client.floating.set(client, true) - client.border_width = 0 + client.border_width = self.border client.size_hints_honor = false if self.notexist then client:geometry(self.geometry) @@ -95,23 +97,25 @@ end function quake:new(config) local conf = config or {} - conf.app = conf.app or "xterm" -- application to spawn - conf.name = conf.name or "QuakeDD" -- window name - conf.argname = conf.argname or "-name %s" -- how to specify window name - conf.visible = conf.visible or false -- initially not visible - conf.screen = conf.screen or capi.mouse.screen + conf.app = conf.app or "xterm" -- application to spawn + conf.name = conf.name or "QuakeDD" -- window name + conf.argname = conf.argname or "-name %s" -- how to specify window name + conf.extra = conf.extra or "" -- extra arguments + conf.visible = conf.visible or false -- initially not visible + conf.screen = conf.screen or capi.mouse.screen + conf.border = conf.border or 1 -- If width or height <= 1 this is a proportion of the workspace wibox_height = conf.wibox_height or 18 -- statusbar weight - height = conf.height or 0.25 -- height - width = conf.width or 1 -- width - vert = conf.vert or "top" -- top, bottom or center + height = conf.height or 0.25 -- height + width = conf.width or 1 -- width + vert = conf.vert or "top" -- top, bottom or center horiz = conf.horiz or "center" -- left, right or center -- Compute size local geom = capi.screen[conf.screen].workarea - if width <= 1 then width = geom.width * width end - if height <= 1 then height = geom.height * height end + if width <= 1 then width = math.floor(geom.width * width) end + if height <= 1 then height = math.floor(geom.height * height) end local x, y if horiz == "left" then x = geom.x elseif horiz == "right" then x = geom.width + geom.x - width @@ -125,19 +129,19 @@ function quake:new(config) capi.client.connect_signal("manage", function(c) if c.instance == console.name and c.screen == console.screen then console:display() - end + end end) capi.client.connect_signal("unmanage", function(c) if c.instance == console.name and c.screen == console.screen then console.visible = false - end - end) + end + end) -- "Reattach" currently running quake application. This is in case awesome is restarted. local reattach = capi.timer { timeout = 0 } reattach:connect_signal("timeout", function() reattach:stop() - console:display() + console:display() end) reattach:start()