• Stars
    star
    331
  • Rank 122,547 (Top 3 %)
  • Language
    C
  • License
    Other
  • Created over 12 years ago
  • Updated over 11 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

tiny but monstrous tiling window manager

monsterwm

→ 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.

Monsterwm does not provide a panel and/or statusbar itself. Instead it adheres to the UNIX philosophy and outputs information about the existent desktop, the number of windows on each, the mode of each desktop, the current desktop and urgent hints whenever needed. The user can use whatever tool or panel suits him best (dzen2, conky, w/e), to process and display that information.

To disable the panel completely set PANEL_HEIGHT to zero 0. The SHOW_PANELL setting controls whether the panel is visible on startup, it does not control whether there is a panel or not.

Here is a list of minimal and lightweight panels:

You can find an examples configurations of panels here. You can actually parse monsterwm's output with any language you want, build anything you want, and display the information however you like. Do not be limited by those examples.

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
  • rectangle : draws only a rectangle when moving/resizing windows to keep resources low (ie through an ssh forwarded session)
  • 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
  • windowtitles : along with the rest desktop info, output the title 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 core branch with xinerama support
  • xinerama-master : the equivalent of master branch with xinerama support
  • xinerama-init : configurable initial values for each desktop on each monitor

Bugs

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

More Repositories

1

ioccc-obfuscated-c-contest

IOCCC International Obfuscated C code contest entries
HTML
131
star
2

Fractal-Image-Compression

A Fractal Image Compression System
Java
41
star
3

dotfiles

/home/cookies configurations
Perl
36
star
4

iii

POSIX sh frontend to iim or ii
Shell
30
star
5

iibot

a bot based on [suckless] ii, auto-managed by bash
Shell
28
star
6

iim

ii improved - minimalist FIFO and filesystem-based IRC client inspired by suckless ii
C
25
star
7

Pancakes

Interactive IRC bot and logger in pure Bash
Shell
16
star
8

Othello

the classic abstract strategy game
Java
13
star
9

scripts

scripts and workarounds
Ruby
12
star
10

wm

ɯm - fully dynamic tag-based window manager built upon XCB
C
10
star
11

bgs

simple background setter
C
10
star
12

mstatusbar

monsterwm output parser and info collector
C
9
star
13

niii

ncurses frontend to ii similar to iii
C
9
star
14

mopag

monsterwm-pager - slim bar to show #desktops and #windows per desktop
C
9
star
15

rtf2latex2e

translate RTF files into LaTeX files
C
8
star
16

c00kiemon5ter.github.com

personal blog
CSS
8
star
17

LuceneEval

A library and application built on top of Lucene, using trec_eval to evaluate querries for the cacm collection
Java
8
star
18

zipf

Zipf's Law in the Greek language
Shell
7
star
19

vim

personal vim configuration and setup
Vim Script
5
star
20

etc.conf

global configuration files mainly from /etc
5
star
21

Graphs

Finding diameter and strong coherent components in directed graphs
Java
5
star
22

cookies_samesite_compat

WSGI Middleware to preserve compatibility regarding cookies with the SameSite attribute
Python
5
star
23

tsoukalas

Σχολή Οδηγών Τσουκαλάς Πάναγιώτης - Driving school webpage
JavaScript
5
star
24

PKGBUILDs

[AUR] ArchLinux User Repository packages I maintain and contribute to
Shell
4
star
25

NumericalAnalysis

Numerical Analysis Class
Scilab
4
star
26

presentation-skeleton

Skeleton for presentations
JavaScript
3
star
27

SentSep

a simple sentence seperator / splitter / segmentation / boundary disambiguation
Java
3
star
28

dotfiles-1

3
star
29

WorldOfWumpus

a basic implementation of World of Wumpus game
Java
3
star
30

MipsAssembly

experimental mips assembly language scripts
3
star
31

LuceneApp

a quick app to run queries on an index of documents
Java
3
star
32

gentoo

some conf files from gentoo
3
star
33

MIPSnbit

A nbit Mips processor implementation
VHDL
3
star
34

presentation-tnc19-identitypython-eduteams

Presentation for TNC19 - IdentityPython and eduTEAMS
JavaScript
3
star
35

md-sign

Script to (re)sign SAML metadata
Python
2
star
36

pysaml2

Python implementation of SAML2 with eIDAS support
Python
2
star
37

JKruskal

[Abandonded] kruskal minimum spanning tree in practice
Java
2
star
38

apple-client-secret

Generate a client_secret for Apple Sign-in
Python
2
star
39

presentation-eosc19-identitypython-satosa

Presentation for the EOSC meeting Oct.2019 at AMS - IdentityPython and SATOSA
JavaScript
1
star
40

presentation-tiime2020-idpy-governance

Presentation for TIIME 2020 - IdPy Governance
HTML
1
star
41

presentation-ntw19-identitypython-satosa-demo

Presentation for NTW19 - IdentityPython and SATOSA
JavaScript
1
star