monsterwm
Maintaining my version of monsterwm. Changes:
- remove unused functions
- track my config
- merge window titles into main
- merge rectangles into main
- add ignore to AppRules to allow, e.g., stalonetray without being managed
- print status for lemonbar periodically (and on every update event)
- prevent running commands from writing to stdout (to preserve status)
- add RTILE for tiling with main window on the right (default)
- add pointless gaps
→ tiny and monstrous!
monsterwm is a minimal, lightweight, tiny but monstrous dynamic tiling window manager. It will try to stay as small as possible. Currently under 700 lines with the config file included. It provides a set of different layout modes (see below), including floating mode support. Each virtual desktop has its own properties, unaffected by other desktops' or monitors' settings. For screenshots and ramblings/updates check the topic on ArchLinux forums.
Modes
Monsterwm allows opening the new window as master or opening the window at the bottom of the stack (attach_aside)
Common tiling mode:
--------------
| | W |
| |___|
| Master | |
| |___|
| | |
--------------
Bottom Stack (bstack) tiling mode:
-------------
| |
| Master |
|-----------|
| W | | |
-------------
Grid tiling mode:
-------------
| | | |
|---|---|---|
| | | |
|---|---|---|
| | | |
-------------
one can have as many windows he wants.
GRID layout automatically manages the rows and columns.
Monocle mode (aka fullscreen)
-------------
| |
| no |
| borders! |
| |
-------------
MONOCLE layout presents one window at a time in fullscreen mode.
Windows have no borders on this layout to save space.
See the monocleborders branch to give those windows borders.
floating mode
-------------
| | |
|--' .---. |
| | | |
| | | |
------`---'--
In floating mode one can freely move and resize windows in the screen space.
Changing desktops, adding or removing floating windows, does not affect the
floating status of the windows. Windows will revert to their tiling mode
position once the user selects a tiling mode.
To enter the floating mode, either change the layout to FLOAT, or
enabled it by moving or resizing a window with the mouse, the window
is then marked as being in floating mode.
All shortcuts are accessible via the keyboard and the mouse, and defined in config.h file.
All desktops store their settings independently.
- The window W at the top of the stack can be resized on a per desktop basis.
- Changing a tiling mode or window size on one desktop doesn't affect the other desktops.
- toggling the panel in one desktop does not affect the state of the panel in other desktops.
Panel - Statusbar
The user can define an empty space (by default 18px) on the bottom or top(default) of the screen, to be used by a panel. The panel is toggleable, but will be visible if no windows are on the screen.
This fork generates output intended to be piped to lemonbar.
To change the status output, modify write_status.
Installation
You need Xlib, then,
copy config.def.h as config.h
and edit to suit your needs.
Build and install.
$ cp config.def.h config.h
$ $EDITOR config.h
$ make
# make clean install
Patches
Some extensions to the code are supported in the form of patches.
See other branches for the patch and code.
Easiest way to apply a patch, is to git merge that branch.
Currently:
- centerwindow : center new floating windows on the screen and center any window with a shortcut
- fibonacci : adds fibonacci layout mode
- initlayouts : define initial layouts for every desktop
- monocleborders : adds borders to the monocle layout
- nmaster : adds nmaster layout - multiple master windows for BSTACK and TILE layouts
- showhide : adds a function to show and hide all windows on all desktops
- uselessgaps : adds gaps around every window on screen
- warpcursor : cursors follows and is placed in the center of the current window
There is also another branch, called [core].
core is an even more stripped and minimal version of monsterwm,
on top of which the master branch is built and extended.
The is also xinerama support for multiple monitors.
- xinerama-core : the equivalent of
corebranch with xinerama support - xinerama-master : the equivalent of
masterbranch with xinerama support - xinerama-init : configurable initial values for each desktop on each monitor
Bugs
Only if it's certain to be a bug with upstream and not my modifications: For any bug or request fill an issue on GitHub or report on the ArchLinux topic
License
Licensed under MIT/X Consortium License, see LICENSE file for more copyright and license information.
Thanks
- the suckless team
- moetunes
- pyknite
- richo4
- Cloudef
- jasonwryan
- LemonBoy
- djura-san
- prasinoulhs
- mil
- dnuux
- Matus Telgarsky
