From 17c1dfb9dbf4434eca64512e2bf080671fd6309d Mon Sep 17 00:00:00 2001 From: theonepath Date: Sat, 23 Jul 2022 19:09:38 +0100 Subject: [PATCH] Updated README.md Updated the README to contain addition Issues & Limitations. Added entry about features of AWM - the WM itself and fullscreen mode. Fixed typos and spelling. --- README.md | 35 +++++++++++++++++++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 23f3c4c..1d7ed81 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,7 @@ file. But the short version is as followed: - When `awm` is executed, it will go and find all windows associated with Alacritty (up to 4 at most). -- Once it has found the windows, it organise them based on a set of predefined +- Once it has found the windows, it organises them based on a set of predefined configurations depending on the number of windows found. - This occurs simultaneously to give a smooth organisation transition for any number of Alacritty terminal windows. @@ -48,7 +48,7 @@ placing it somewhere in your local user-space and adding that to your path. You may wish to keep the compiled binary in the repo and have your path point to that location. -Compiling can be performed with any compiler. There's no linking of other libries +Compiling can be performed with any compiler. There's no linking of other libraries or C++ source files, assuming that the appropriate header files are installed to the system, it should just compile. @@ -95,7 +95,21 @@ Alacritty windows accordingly. **Note:** AWM does not listen for when Alacritty windows are created or destroyed. It simply organises windows it's able to collect in a tiled manner when told to. +## AWM Features +AWM comes with a couple different features, notably the WM itself. +- Window Manager – the core functionality of AWM. This goes without say that it's +the biggest and primary feature of AWM (AWM does what it says on the tin). It +supports up to four layouts of Alacritty instances, but does not organise new +Alacritty windows. +- Fullscreen Terminals – AWM supports toggling Alacritty terminals into fullscreen. +This doesn't hide the taskbar, nor consume the entire desktop work area, but it does +take up majority of the desktop. This allows for greater focus and work area within +a selected terminal, hiding other windows behind. Run `awm --fullscreen` to toggle +this behaviour. When exiting fullscreen, the window will be placed back in its +original tiled configuration with other Alacritty instances. + ## Known Issues & Limitations +### With AWM Itself As discussed in the note above, and elsewhere, AWM **does not** add event hooks to the system, or listen to any event hooks that might trigger when an Alacritty window is created or destroyed. For this reason, AWM must be manually told when @@ -109,6 +123,23 @@ Manager is open, AWM will fail to organise the windows due to Task Manager. It's currently unknown why this bug exists without `-O3`, and doesn't with the flag, but it can be easily avoided with the `-O3` flag using `g++`. A future patch may be applied to this in the future. +### Due to Alacritty +It seems that there might be a few issues as a result of Alacritty (or perhaps +within the dependencies it uses). Firstly, after some more in-depth experimentation +of the Win32 API, it seems as though Alacritty does not set the correct flags on a +window defined in the API to indicate that a window is minimised. This makes it +impossible for AWM to correctly filter non-viewable terminals out of organisation. +### Shared & Due to Knowledge +When a new window is created in Alacritty, it simply spawns a new Console Host +program (`conhost.exe`). This is specific to Windows and whose purpose is out of +the scope of this document. However, it means that a single `alacritty.exe` program +exists with multiple conhost applications running PowerShell. From experiments, +you can't simply change the window's context of conhost apps without causing some +mischievious behaviour. A conhost app will refer back to Alacritty in some way, +but it's not possible to refer to Alacritty for changing the context of a window. +Or at least, it's not possible with the current knowledge of the project. Alacritty +might be behaving exactly as intended of Windows' apps, but as it stands, AWM +cannot organise new windows of Alacritty, only new instances. ## Licence This project is licenced until the GNU GPLv3+ licence agreement, which can be