A client is supposed to go to a screen when:
* It has been started using `awful.spawn` with explicit instructions [1]
* An `awful.rules` rule **or any of its callbacks** set the screen [2]
* When something handle `request::screen` and/or `request::tag` in some
custom ways. [3]
* Some clients can request a screen and mean it (like MythTV/Kodi/XBMC and
some multi-window DAW) [4]
A client is supposed to go to the focused screen when none of the above are
true [5].
Other constraints:
* The screen need to be set only once, anything will will emit
`property::screen` many time and cause side effects.
* There has to be a single entry point to the algorithm, no multiple
"manage" handler.
* Awesome internals must use the `request::` signal API and not force
their decision outside of request handlers.
* Restarting Awesome must not change the client screen
Commit 2178744 fix use case number [1] and [2]. It actually fix [4] too, but
it is an accident and I am not sure we care about [4] anyway. Use case [1]
and [2], however, are very important.
Fix#1091
Why:
* Two different (but related) concepts had the same name
* Users were confused for years on IRC
* The wibar name was already in use in some doc to avoid confusion
Tags are accessible as s.tags on a screen object. Yup, that's harder to find
than a variable that is defined in the default config, but such is life.
Now that awful.rules supports specifying tags by name, I guess that the number
one reason for needing the tags table is gone.
Signed-off-by: Uli Schlachter <psychon@znc.in>
There was many unfixable race conditions that could only be
solved by better integrating the request:: system and
awful.rules. This has the side effect to make rules mandatory.
Tag names really are strings. Numbers just work accidentally since the C code
uses luaL_checklstring() to access the tag name and this function silently
converts numbers to strings.
This also has a nice documentation effect, making it easier for people to figure
out that they can change the name of a tag. Plus, with this the changes done by
previous commits make more sense (specifying an awful.rules-rule that identifies
a tag by name).
Signed-off-by: Uli Schlachter <psychon@znc.in>
gears modules usually don't depend on Awesome C-API. This code has
been placed there for unclear reasons.
Also, there is ongoing work to unify each "concepts" API into one
single page. Having `gears.screen` go against this effort.
This makes it possible to have the systray only visible on the primary screen,
which is the new default value. This also makes it possible to configure
directly on which screen the systray should be visible.
This breaks the API in the sense that people who use "the old method" to
configure the systray's screen possibly don't have a systray.
Fixes: https://github.com/awesomeWM/awesome/issues/724
Signed-off-by: Uli Schlachter <psychon@znc.in>
This means that titlebars, which are an important feature, get more testing. As
was recently shown, they don't get enough testing currently. Also, new users
will likely expect titlebars these days.
Everyone who doesn't want titlebars can easily disable them.
Signed-off-by: Uli Schlachter <psychon@znc.in>
I've noticed that `Pango.parse_markup` returns "userdata" instead of a
string in case of errors [1], which then causes the `debug::error`
handler to not handle it correctly:
W: awesome: luaA_dofunction:77: error while running function
stack traceback:
[C]: in ?
[C]: in function 'error'
/usr/local/share/awesome/lib/wibox/widget/textbox.lua:63: in function 'set_markup'
[string "require("wibox").widget.textbox():set_markup(..."]:1: in function 'f'
/usr/local/share/awesome/lib/awful/remote.lua:25: in function </usr/local/share/awesome/lib/awful/remote.lua:21>
error: attempt to concatenate a userdata value
This patch makes sure that `err` is a string when passing it to
naughty.notify in the default `debug::error` handler.
Closes#302.
1: https://github.com/pavouk/lgi/issues/115
After using sloppy mouse focus to select a client (which does not raise
it already), maximizing/fullscreening it should then raise it.
This also uses the new shortcut `c.maximized = not c.maximized`.
Closes https://github.com/awesomeWM/awesome/pull/270