monsterwm

Personal build of monsterwm
git clone git://git.gormless.xyz/monsterwm.git
Log | Files | Refs | README | LICENSE

README.md (7875B)


      1 monsterwm
      2 =========
      3 
      4 → tiny and monstrous!
      5 ---------------------
      6 
      7 **monsterwm** is a minimal, lightweight, tiny but monstrous dynamic tiling window manager.
      8 It will try to stay as small as possible. Currently under 700 lines with the config file included.
      9 It provides a set of different layout modes (see below), including floating mode support.
     10 Each virtual desktop has its own properties, unaffected by other desktops' or monitors' settings.
     11 For [screenshots][scrot] and ramblings/updates check the [topic on ArchLinux forums][monsterwm].
     12 
     13   [scrot]: https://bbs.archlinux.org/viewtopic.php?id=141853
     14   [monsterwm]: https://bbs.archlinux.org/viewtopic.php?id=132122
     15 
     16 
     17 Modes
     18 -----
     19 
     20 Monsterwm allows opening the new window as master or
     21 opening the window at the bottom of the stack (attach\_aside)
     22 
     23 ---
     24 
     25 *Common tiling mode:*
     26 
     27     --------------
     28     |        | W |
     29     |        |___|
     30     | Master |   |
     31     |        |___|
     32     |        |   |
     33     --------------
     34 
     35 ---
     36 
     37 *Bottom Stack (bstack) tiling mode:*
     38 
     39     -------------
     40     |           |
     41     |  Master   |
     42     |-----------|
     43     | W |   |   |
     44     -------------
     45 
     46 ---
     47 
     48  *Grid tiling mode:*
     49 
     50     -------------
     51     |   |   |   |
     52     |---|---|---|
     53     |   |   |   |
     54     |---|---|---|
     55     |   |   |   |
     56     -------------
     57 
     58 one can have as many windows he wants.
     59 `GRID` layout automatically manages the rows and columns.
     60 
     61 ---
     62 
     63  *Monocle mode* (aka fullscreen)
     64 
     65     -------------
     66     |           |
     67     | no        |
     68     | borders!  |
     69     |           |
     70     -------------
     71 
     72 `MONOCLE` layout presents one window at a time in fullscreen mode.
     73 Windows have no borders on this layout to save space.
     74 See the `monocleborders` branch to give those windows borders.
     75 
     76 ---
     77 
     78  *floating mode*
     79 
     80     -------------
     81     |  |        |
     82     |--'  .---. |
     83     |     |   | |
     84     |     |   | |
     85     ------`---'--
     86 
     87  In floating mode one can freely move and resize windows in the screen space.
     88  Changing desktops, adding or removing floating windows, does not affect the
     89  floating status of the windows. Windows will revert to their tiling mode
     90  position once the user selects a tiling mode.
     91  To enter the floating mode, either change the layout to `FLOAT`, or
     92  enabled it by moving or resizing a window with the mouse, the window
     93  is then marked as being in floating mode.
     94 
     95 ---
     96 
     97 All shortcuts are accessible via the keyboard and the mouse, and defined in `config.h` file.
     98 
     99 All desktops store their settings independently.
    100 
    101  * The window W at the top of the stack can be resized on a per desktop basis.
    102  * Changing a tiling mode or window size on one desktop doesn't affect the other desktops.
    103  * toggling the panel in one desktop does not affect the state of the panel in other desktops.
    104 
    105 
    106 Panel - Statusbar
    107 -----------------
    108 
    109 The user can define an empty space (by default 18px) on the bottom or top(default) of the
    110 screen, to be used by a panel. The panel is toggleable, but will be visible if no windows
    111 are on the screen.
    112 
    113 Monsterwm does not provide a panel and/or statusbar itself. Instead it adheres
    114 to the [UNIX philosophy][unix] and outputs information about the existent
    115 desktop, the number of windows on each, the mode of each desktop, the current
    116 desktop and urgent hints whenever needed. The user can use whatever tool or
    117 panel suits him best (dzen2, conky, w/e), to process and display that information.
    118 
    119 To disable the panel completely set `PANEL_HEIGHT` to zero `0`.
    120 The `SHOW_PANELL` setting controls whether the panel is visible on startup,
    121 it does not control whether there is a panel or not.
    122 
    123   [unix]: http://en.wikipedia.org/wiki/Unix_philosophy
    124 
    125 Here is a list of minimal and lightweight panels:
    126 
    127  * [`bar`](https://github.com/LemonBoy/bar)
    128  * [`some_sorta_bar`](https://github.com/moetunes/Some_sorta_bar)
    129  * [`bipolarbar`](https://github.com/moetunes/bipolarbar)
    130  * [`mopag`](https://github.com/c00kiemon5ter/mopag) (pager)
    131 
    132 You can find an examples configurations of panels [here](https://gist.github.com/1905427).
    133 You can actually parse monsterwm's output with any language you want,
    134 build anything you want, and display the information however you like.
    135 Do not be limited by those examples.
    136 
    137 
    138 Installation
    139 ------------
    140 
    141 You need Xlib, then,
    142 copy `config.def.h` as `config.h`
    143 and edit to suit your needs.
    144 Build and install.
    145 
    146     $ cp config.def.h config.h
    147     $ $EDITOR config.h
    148     $ make
    149     # make clean install
    150 
    151 
    152 Patches
    153 -------
    154 
    155 Some extensions to the code are supported in the form of patches.
    156 See other branches for the patch and code.
    157 Easiest way to apply a patch, is to `git merge` that branch.
    158 
    159 Currently:
    160 
    161  * [centerwindow]   : center new floating windows on the screen and  center any window with a shortcut
    162  * [fibonacci]      : adds fibonacci layout mode
    163  * [initlayouts]    : define initial layouts for every desktop
    164  * [monocleborders] : adds borders to the monocle layout
    165  * [nmaster]        : adds nmaster layout - multiple master windows for BSTACK and TILE layouts
    166  * [rectangle]      : draws only a rectangle when moving/resizing windows to keep resources low (ie through an ssh forwarded session)
    167  * [showhide]       : adds a function to show and hide all windows on all desktops
    168  * [uselessgaps]    : adds gaps around every window on screen
    169  * [warpcursor]     : cursors follows and is placed in the center of the current window
    170  * [windowtitles]   : along with the rest desktop info, output the title of the current window
    171 
    172   [centerwindow]:   https://github.com/c00kiemon5ter/monsterwm/tree/centerwindow
    173   [fibonacci]:      https://github.com/c00kiemon5ter/monsterwm/tree/fibonacci
    174   [initlayouts]:    https://github.com/c00kiemon5ter/monsterwm/tree/initlayouts
    175   [monocleborders]: https://github.com/c00kiemon5ter/monsterwm/tree/monocleborders
    176   [nmaster]:        https://github.com/c00kiemon5ter/monsterwm/tree/nmaster
    177   [rectangle]:      https://github.com/c00kiemon5ter/monsterwm/tree/rectangle
    178   [showhide]:       https://github.com/c00kiemon5ter/monsterwm/tree/showhide
    179   [uselessgaps]:    https://github.com/c00kiemon5ter/monsterwm/tree/uselessgaps
    180   [warpcursor]:     https://github.com/c00kiemon5ter/monsterwm/tree/warpcursor
    181   [windowtitles]:   https://github.com/c00kiemon5ter/monsterwm/tree/windowtitles
    182 
    183 There is also another branch, called [`core`].
    184 `core` is an even more stripped and minimal version of `monsterwm`,
    185 on top of which the `master` branch is built and extended.
    186 
    187   [core]: https://github.com/c00kiemon5ter/monsterwm/tree/core
    188 
    189 The is also **xinerama** support for multiple monitors.
    190 
    191  * [xinerama-core][xc]   : the equivalent of `core` branch with xinerama support
    192  * [xinerama-master][xm] : the equivalent of `master` branch with xinerama support
    193  * [xinerama-init][xi]   : configurable initial values for each desktop on each monitor
    194 
    195  [xc]: https://github.com/c00kiemon5ter/monsterwm/tree/xinerama-core
    196  [xm]: https://github.com/c00kiemon5ter/monsterwm/tree/xinerama-master
    197  [xi]: https://github.com/c00kiemon5ter/monsterwm/tree/xinerama-init
    198 
    199 
    200 Bugs
    201 ----
    202 
    203 For any bug or request [fill an issue][bug] on [GitHub][ghp] or report on the [ArchLinux topic][monsterwm]
    204 
    205   [bug]: https://github.com/c00kiemon5ter/monsterwm/issues
    206   [ghp]: https://github.com/c00kiemon5ter/monsterwm
    207 
    208 
    209 License
    210 -------
    211 
    212 Licensed under MIT/X Consortium License, see [LICENSE][law] file for more copyright and license information.
    213 
    214   [law]: https://raw.github.com/c00kiemon5ter/monsterwm/master/LICENSE
    215 
    216 Thanks
    217 ------
    218 
    219  * [the suckless team](http://suckless.org/)
    220  * [moetunes](https://github.com/moetunes)
    221  * [pyknite](https://github.com/pyknite)
    222  * [richo4](https://github.com/richo4)
    223  * [Cloudef](https://github.com/Cloudef)
    224  * [jasonwryan](https://github.com/jasonwryan)
    225  * [LemonBoy](https://github.com/LemonBoy)
    226  * [djura-san](https://github.com/djura-san)
    227  * [prasinoulhs](https://github.com/prasinoulhs)
    228  * [mil](https://github.com/mil)
    229  * [dnuux](https://github.com/dnuux)
    230  * Matus Telgarsky
    231 
    232