Commit Graph

9989 Commits

Author SHA1 Message Date
Emmanuel Lepage Vallee fa6c050be3 depgraph: Allow underscores in module names. 2019-10-05 18:06:50 -04:00
Emmanuel Lepage Vallée 9533d97b9b
Merge pull request #2888 from Elv13/sequence_template
doc: Add a sequence of events template
2019-10-05 17:49:11 -04:00
Emmanuel Lepage Vallee 585e321578 doc: Fix a regression from a recent commit.
There was an off-by-one in the substring for the parameter names.
2019-10-05 17:20:29 -04:00
Aire-One dd69936bed Add a `gen_vertical_space` function to keep spacing from missalignment. 2019-10-05 17:16:22 -04:00
Aire-One 4abb05c590 Align timeline dots and text. 2019-10-05 17:16:22 -04:00
Emmanuel Lepage Vallée ffe7c4d1cc Apply suggestions from code review
Thanks to @Aire-one for those fixes!

Co-Authored-By: Aire-One <Aire-One@users.noreply.github.com>
2019-10-05 17:16:22 -04:00
Emmanuel Lepage Vallee c2a2c789e6 doc: Add example sequences for the tags. 2019-10-05 17:16:22 -04:00
Emmanuel Lepage Vallee fa2433192a doc: Add some screen example sequences. 2019-10-05 17:16:22 -04:00
Emmanuel Lepage Vallee 271e2822a7 build: Allow Awesome to be built with luarock LGI. 2019-10-05 17:16:22 -04:00
Emmanuel Lepage Vallee 9c0e16e623 doc: Add examples for the various maximization. 2019-10-05 17:16:22 -04:00
Emmanuel Lepage Vallee 12f28305a0 tests: Add a sequence template.
This template allows to display a sequence of events for the clients,
tags and screens. Currently, it is hard to display images where the
state of an object is more complex than "here how it was before" and
"here how it is now". With this template, it is possible to have a
timeline of events from the initial states to the final states.

Now, as the line count shows, this isn't small. It is in fact an
enormous template. Worst still, this commit is the first *half* of
it. The second half adds the ability to `print()`, display
inline code and support mouse and keyboard events. The code also isn't
world class. Maintaining this template might be non-trivial in the
long run. I am fully aware of those issues. On the other hand, there
is ~100 places where this will be used once the entire
"new rule library" project is completed. This will bring the ~1.2k
line of code to ~12 lines per consumer. From that point of view,
it makes a lot more sense to merge this given how useful it is
at explaining changes within the "core objects".

It is also important to keep in mind that there is currently very
little or no documentation (beside the mandatory one-liner summary)
for these concepts. Those are the most important aspects of AwesomeWM
API and they are the least documented. This is just wrong.
2019-10-05 17:16:22 -04:00
mergify[bot] 75c281e3af
Merge pull request #2687 from actionless/version-yes-no
chore(common: version): replace unicode symbols to yes/no
2019-10-04 13:54:50 +00:00
actionless 30eab1124d chore(common: version): replace unicode symbols to yes/no
There are some usecases when terminal font not providing those characters at all or they're provided by fallback font with different dimensions.
Both of the issues above could affect readability/clarity of the version output.
2019-10-03 12:42:24 +02:00
Emmanuel Lepage Vallée 74410e9490
Merge pull request #2890 from Elv13/doc_args
Improve (and fix) the doc.
2019-10-02 13:42:03 -04:00
Emmanuel Lepage Vallée 6dd8daa2ce
doc: Add bacj an accidently removed section. (#2885)
This was probably due to copy pasting from the preprocessed file
back to the raw file.

Fix #2882
2019-10-01 12:49:28 -04:00
Emmanuel Lepage Vallee 6b4b09adc5 doc: Fix the UML template svg generation.
It was mixing the actual HTML relative path with the build directory
path. This doesn't work universally. It didn't work on `awesome-www`
builder.
2019-10-01 02:07:05 -04:00
Emmanuel Lepage Vallee bcceab439a doc: Add a missing `args.` in naughty notifications constructor.
It was rendering `widget_template` as a second parameter while it is
in fact an argument.
2019-10-01 02:03:12 -04:00
Emmanuel Lepage Vallee 5de1e36007 doc: Use braces for names function arguments.
Use {} for all functions with take `args` as sole parameters instead
of (). Also color them differently to highlight this isn't a typo.
2019-10-01 02:03:12 -04:00
Emmanuel Lepage Vallee 8704b8d89a doc: Move the core components to the top of the doc index.
They are the most important, they should be the most visible.
2019-10-01 01:18:15 -04:00
Emmanuel Lepage Vallée 85c8d5e205
Merge pull request #2854 from Elv13/uml_magic
Add some navigation helpers to the doc (in the form of UML tables)
2019-10-01 00:56:20 -04:00
mergify[bot] afe337c468
Merge pull request #2889 from Aire-One/fix_awesome_commandline_screen_parameter
Allow `getopt_long` call to manage the `-m` option (short of `--screen`)
2019-09-30 23:18:31 +00:00
Aire-One 4b66bb935c Allow `getopt_long` call to manage the `-m` option (short of `--screen`). 2019-09-30 15:53:21 +02:00
Emmanuel Lepage Vallée a02ea4450b
Merge pull request #2790 from Elv13/screen_init
Allow the screens to be fully managed by Lua
2019-09-30 01:28:30 -04:00
Emmanuel Lepage Vallée 7ab5019c52 Apply suggestions from code review
Wording and documentation rebase issues.

Co-Authored-By: Aire-One <Aire-One@users.noreply.github.com>
2019-09-30 00:49:40 -04:00
Emmanuel Lepage Vallee 0419de2a60 tests: Test the screen name. 2019-09-30 00:49:40 -04:00
Emmanuel Lepage Vallee 464e103a4e screen: Add a `name` property to the C API.
This will be useful to address the screens by roles/names in the client
and tag rules. Since the sceen rules will make setups where sceens are
attached and removed much easier to work with, using indexes or output
names in the rules becomes a limitation.
2019-09-30 00:49:40 -04:00
Emmanuel Lepage Vallee cb88776980 screen: Add diagonal size (in inches and millimeters).
The use case for this will be to detech which screen is connected to
an output from the screen rules.

It is in millimeters because this is what the output provides and in
inches because the DPI is based on that unit and screens are sold with
the size in inches on the box.
2019-09-30 00:49:40 -04:00
Emmanuel Lepage Vallee 93799e8be3 dpi: Better filter the viewports.
Identical viewports are already handled before getting into Lua,
but sometime xrandr gives another viewport that encompass all
others. It has to be removed.
2019-09-30 00:49:40 -04:00
Emmanuel Lepage Vallee aa76b11b81 screen: Move the "added" signal from CAPI to Lua.
When the screens are created from the viewport in Lua, the signal is
sent too early and the DPI and outputs have not yet been added. This
cause the `connect_for_each_screen` callbacks to be called with a
partially initialized screen object. It also causes the drawables to be
repainted too early.

CAPI now emits "_added" and "awful.screen" takes care of emitting
"added".
2019-09-30 00:49:39 -04:00
Emmanuel Lepage Vallee 3e19251d14 screen: Set the managed flag when creating screens in awful.screen. 2019-09-30 00:49:17 -04:00
Emmanuel Lepage Vallee 875941e9ac screen: Store the lifecycle metadata.
With this commit, the C code stores if the screen was created with
`fake_screen` and also stores if the Lua side "promise" to manage
(aka, track the viewport and remove it) the object. There is now
3 kind of screens:

 * Managed by C (created and deleted by the core code)
 * Managed by Lua (replicate the core code, but with more hooks)
 * Unmanaged (created directly with fake_screen)
2019-09-30 00:48:12 -04:00
Emmanuel Lepage Vallee cd6998b18d screen: Delay the request::wallpaper and desktop_decoration for the DPI.
With this, there is plenty of palces where the DPI can be set before
those signals are sent. This allows wallpaper with the proper DPI to
work with screens created using `fake_add`. In turn, this will allow
screen rules to control the DPI. In "the past", the DPI used for those
handler was the native DPI of the screen with no opportunity to change
it before hand.
2019-09-30 00:48:09 -04:00
Emmanuel Lepage Vallée f63bc97c76
Disable colors in luacheck to make the CI output more readable. (#2865) 2019-09-29 23:01:07 -04:00
Emmanuel Lepage Vallee d4ce5706c7 screen: Update the clients screen from fake_resize and fake_add.
Otherwise the client were still in the old tasklist when `:split()` is
called.
2019-09-29 19:07:24 -04:00
Emmanuel Lepage Vallee 994034934e tests: Test `s:split()`. 2019-09-29 19:07:24 -04:00
Emmanuel Lepage Vallee 1e1cd549c6 screen: Add a `:split()` method.
This is easier than messing with the `fake_resize()` method. This will
eventually have an awful.screen.rules equivalent to auto-split the
screen from the rules.
2019-09-29 19:07:24 -04:00
Emmanuel Lepage Vallee 3a12e6d274 tests: Test Lua side screen management. 2019-09-29 19:07:24 -04:00
Emmanuel Lepage Vallee b0f18bce52 screen: Allow `outputs` to be changed.
This moves the handling of the `outputs` property away from C and into
Lua. It will allow the use of `screen.fake_add` to have outputs.
2019-09-29 19:07:24 -04:00
Emmanuel Lepage Vallee ae99e8d7bb screen: Add an `id` field to the vireport.
This will help to delete screens.
2019-09-29 19:07:24 -04:00
Emmanuel Lepage Vallée 14c78ef19c
Merge pull request #2886 from Elv13/screen_init_merge_part1
(ignore this) Part 1 of the Lua managed screen PR
2019-09-29 18:54:38 -04:00
Emmanuel Lepage Vallee 1304f46c0c screen: Split the `outputs` code away from the screen logic.
It moves the actual place where when screen array is stored into the
area object. This allows to store the outputs when screens are not
automatically created.
2019-09-29 18:56:06 -04:00
Emmanuel Lepage Vallee 68488f6218 tests: Test screen.automatic_factory 2019-09-29 18:56:06 -04:00
Emmanuel Lepage Vallee 553cafccde tests: Test the error notifications when no screens are present.
This happens in early initialization when AwesomeWM is started with
`--screen manual`.
2019-09-29 18:56:06 -04:00
Emmanuel Lepage Vallee 51e3d66110 screen: Fix enough issue when all screens are removed to pass a test.
This doesn't mean removing all screens is supported. It isn't and never
will be. The only reason this commit exist is to allow some
initialization and error handling code to be tested.
2019-09-29 18:56:06 -04:00
Emmanuel Lepage Vallee f6cc35cecc screen: Disable screen creation when --screen manual is used.
Now that the previous commits add a proper fallback and a way to test
this, enable the second half.

As long as the default screen mode (`--screen auto`) *or* the `rc.lua`
doesn't execute too much code in the global context, this wont break
much.
2019-09-29 18:56:06 -04:00
Emmanuel Lepage Vallee 067f8f4ebf tests: Use --screen manual for both code coverage jobs. 2019-09-29 18:56:06 -04:00
Emmanuel Lepage Vallee 852ff9c340 screen: Add a fallback code path when --screen manual is used.
If there is no handler, then the fallback will create the screens.
2019-09-29 18:56:06 -04:00
Emmanuel Lepage Vallee 758ba2537a doc: Update the manpages 2019-09-29 18:56:06 -04:00
Emmanuel Lepage Vallee 433898599d init: Add a command line option to start AwesomeWM without screens.
This commit add an optional `--screen off` command to initialize Lua
without first adding the screens. This is inconvinient for most users
since it restrict the APIs that are usable out of the box.

However, this allows AwesomeWM to work independently from the hardware.
This means that when a screen is unplugged, it is the Lua code that will
remove the screen instead of CAPI pulling the carpet from under. It also
allows to ignore some screen areas before the screen is ever created.
Combined, it makes it possible to work with screens even when they are
physically disconnected. Finally, it will allow for an awful.rules like
API to control how screens are created.

All in all, some people need this for their setup and some people might
want to do it anyway for fine grained and/or dynamaic multi-screen
setups.

This commit also adds 4 new signals to `capi` to be able to
execute code at specific points during the initialization. The commit
improves naughty error notifications to work even if problems occurs
before the screens are added.

Note that AwesomeWM will exit if no screens are created. While it would
be easy to just call `refresh_screen();` after unsetting the magic
variable, doing so would have corner cases. Better be harsher and
prevent the user from shooting themselves in the foot from not reading
the f****** manual. Code introduced in future commits will take care
of automatically calling fake_screen in the event nothing is created.

Fixes #1382
2019-09-29 18:52:00 -04:00
Emmanuel Lepage Vallee 9920fdd3f1 gears.table: Add a new way to merge 2 tables.
This function allows to update the content of a table using the
content of a second table. It helps to keep the original reference
and to know what has been added and removed.
2019-09-29 18:20:15 -04:00