This patch allows dwm to manage other status bars such as
polybar/lemonbar without them needing to set override-redirect. For
all intents and purposes, DWM treats this bar as if it were its own
and as a result helps the status bar and DWM live in harmony.
This has a few advantages
* The bar does not block fullscreen windows
* DWM makes room for the status bar, so windows do not overlap the bar
* The bar can be hidden/killed and DWM will not keep an unsightly gap
where the bar was
* DWM receives EnterNotify events when your cursor enters the bar
To use another status bar, set usealtbar to 1 in your config.h and set
altbarclass to the class name (can be found using xprop) to the class
name of your status bar. Also make sure that if your status bar will
be displayed on top, topbar is set to 1 in your config, and if it will
be displayed on bottom, topbar is set to 0. This patch does not
support bars that are not docked at the top or at the bottom of your
monitor.
This verison of the patch fixes handling of polybar's tray.
The patch is developed at https://github.com/mihirlad55/dwm-anybar
Signed-off-by: Przemek Grondek <przemek@grondek.pl>
This patch currently supports the following requests:
* Run custom commands with arguments (similar to key bind functions)
* Get monitor properties
* Get all available layouts
* Get available tags
* Get client properties
* Subscribe to tag change, client focus change, and layout change,
monitor focus change, focused title change, and client state change
events
This patch includes a dwm-msg cli program that supports all of the
above requests for easy integration into shell scripts.
The messages are sent in a JSON format to promote integration to
increase scriptability in languages like Python/JavaScript.
The patch requires YAJL for JSON parsing and a system with epoll
support. Portability is planned to be increased in the future.
This patch is best applied after all other patches to avoid merge
conflicts.
For more info on the IPC implementation and how to send/receive
messages, documentation can be found at
https://github.com/mihirlad55/dwm-ipc
MOD-CTRL-, and MOD-CTRL-.
cycle backwards and forwards through available layouts.
Probably only useful if you have a lot of additional layouts.
The NULL, NULL layout should always be the last layout in your list,
in order to guarantee consistent behavior.
Reasoning: Since 2011 dmenu has been capable of working out which
monitor currently has focus in a Xinerama setup, making the use
of the -m flag more or less redundant.
This is easily demonstrated by using dmenu in any other window
manager.
There used to be a nodmenu patch that provided these changes:
https://git.suckless.org/sites/commit/ed68e3629de4ef2ca2d3f8893a79fb570b4c0cbc.html
but this was removed on the basis that it was very easy to work
out and apply manually if needed.
The proposal here is to remove this dependency from dwm. The
mechanism of the dmenumon variable could be provided via a patch
if need be.
The edge case scenario that dmenu does not handle on its own, and
the effect of removing this mechanism, is that if the user trigger
focusmon via keybindings to change focus to another monitor that
has no clients, then dmenu will open on the monitor containing the
window with input focus (or the monitor with the mouse cursor if
no windows have input focus).
If this edge case is important to cover then this can be addressed
by setting input focus to selmon->barwin in the focus function if
there is no client to give focus to (rather than giving focus back
to the root window).
- unify multi-line expression alignment style.
- unify multi-line function call alignment style.
- simplify client moving on monitor count decrease.
- clarify comment for focusin().
- remove old confusing comment about input focus fix in focusmon(). The
explanation is already in the old commit message, so no need to keep it in the
code.
- remove old comment describing even older state of the code in focus().
- unify comment style.
- break up some long lines.
- fix some typos and grammar.