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.
This commit is contained in:
Ethan Smith-Coss 2022-07-23 19:09:38 +01:00
parent 571e595c3b
commit 17c1dfb9db
Signed by: TheOnePath
GPG Key ID: 4E7D436CE1A0BAF1

View File

@ -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