diff --git a/awesomerc.lua b/awesomerc.lua index 0029e1975..11dcc93ea 100755 --- a/awesomerc.lua +++ b/awesomerc.lua @@ -428,6 +428,7 @@ awful.rules.rules = { raise = true, keys = clientkeys, buttons = clientbuttons, + screen = awful.screen.preferred, placement = awful.placement.no_overlap+awful.placement.no_offscreen } }, diff --git a/lib/awful/screen.lua b/lib/awful/screen.lua index 6a7a496d5..f477d6a0a 100644 --- a/lib/awful/screen.lua +++ b/lib/awful/screen.lua @@ -12,7 +12,8 @@ local capi = { mouse = mouse, screen = screen, - client = client + client = client, + awesome = awesome, } local util = require("awful.util") local object = require("gears.object") @@ -213,6 +214,17 @@ function screen.object.set_padding(self, padding) end end +--- Get the preferred screen in the context of a client. +-- This is exactly the same as `awful.screen.focused` except that it avoids +-- clients being moved when Awesome is restarted. +-- This is used in the default `rc.lua` to ensure clients get assigned to the +-- focused screen by default. +-- @tparam client c A client. +-- @treturn screen The preferred screen. +function screen.preferred(c) + return capi.awesome.startup and c.screen or screen.focused() +end + --- The defaults arguments for `awful.screen.focused` -- @tfield[opt=nil] table awful.screen.default_focused_args