No description
Find a file
Andrea Bolognani 5bc8f0105b baraction: Simplify update loop
The current loop is a bit awkward for a number of reasons:

  * iostat exits after a number of iterations, so to keep the script
    going we need to run it in a nested loop;

  * we also run iostat concurrently using the |& syntax, which in
    addition to being non-portable requires us to set up a cleanup
    path so that we don't leave stray processes around when spectrwm
    is restarted;

  * due to the fact that iostat prints its headers again every 20
    records, we have to keep careful track of the number of
    iterations - something which has proven to be error-prone.

Once we do away with the idea of iostat driving the update loop, all
of these issues disappear and the code becomes much simpler.

We still cache battery data for 11 seconds, which is the same amount
as before; tweaking it further, if desired, will be trivial now.

This patch is better viewed with 'git show -w'.
2020-02-16 20:23:54 +08:00
freebsd Add initial pledge(2) support on OpenBSD (#217) 2019-01-07 15:25:43 +00:00
lib Link libswmhack against libX11 2019-11-29 15:55:16 +08:00
linux linux: Add baraction script 2019-12-20 08:31:35 +08:00
netbsd Update to latest pledge(2). 2019-01-08 15:53:12 -06:00
osx Add initial pledge(2) support on OpenBSD (#217) 2019-01-07 15:25:43 +00:00
outdated_man_pages retire man pages that are way outdated and add html target for english man page 2016-05-02 17:14:52 -05:00
.gitattributes Add .gitattributes to exclude some files from release archives. 2016-06-10 12:02:07 +08:00
.gitignore Use version.h on osx and more files in .gitignore. 2012-12-21 14:19:09 -05:00
.travis.yml [travis] Fix build failure. Ubuntu Xenial is missing libxcb-xinput-dev. 2019-04-11 15:46:57 -05:00
baraction.sh baraction: Simplify update loop 2020-02-16 20:23:54 +08:00
buildver.sh give up on printing tag 2016-04-14 09:35:21 -05:00
CHANGELOG.md Fix changelog. 2019-12-19 21:28:40 +08:00
initscreen.sh kill cvs tags 2011-10-25 15:54:39 -05:00
LICENSE.md Fix LICENSE.md formatting issue. 2016-12-09 20:42:35 +08:00
Makefile Keep -g greatness again. 2019-05-22 22:26:05 +08:00
README.md Add reference to wiki Installation guide in README.md. 2018-08-29 11:44:46 +08:00
release.sh rename scrotwm to spectrwm 2012-02-15 14:09:13 -06:00
screenshot.sh kill cvs tags 2011-10-25 15:54:39 -05:00
spectrwm.1 Add note on clearing default bindings to BINDINGS section of man page. 2020-02-03 00:32:30 +08:00
spectrwm.c Fix width calculation of a Xft glyph 2020-02-02 22:37:12 +08:00
spectrwm.conf Add new configurable status bar workspace list indicator. 2018-09-07 22:49:22 +08:00
spectrwm.html add html man page 2016-05-02 17:15:59 -05:00
spectrwm_cz.conf Add missing binds to keymapping files. 2015-02-28 03:59:19 +08:00
spectrwm_es.conf Add missing binds to keymapping files. 2015-02-28 03:59:19 +08:00
spectrwm_fr.conf Add missing binds to keymapping files. 2015-02-28 03:59:19 +08:00
spectrwm_fr_ch.conf Add missing binds to keymapping files. 2015-02-28 03:59:19 +08:00
spectrwm_se.conf Add missing binds to keymapping files. 2015-02-28 03:59:19 +08:00
spectrwm_us.conf Add missing binds to keymapping files. 2015-02-28 03:59:19 +08:00
version.h Prepare for release v3.3.0 2019-12-17 15:47:13 -06:00

spectrwm

spectrwm is a small dynamic tiling and reparenting window manager for X11. It tries to stay out of the way so that valuable screen real estate can be used for much more important stuff. It has sane defaults and does not require one to learn a language to do any configuration. It is written by hackers for hackers and it strives to be small, compact and fast.

It was largely inspired by xmonad and dwm. Both are fine products but suffer from things like: crazy-unportable-language-syndrome, silly defaults, asymmetrical window layout, "how hard can it be?" and good old NIH. Nevertheless dwm was a phenomenal resource and many good ideas and code was borrowed from it. On the other hand xmonad has great defaults, key bindings and xinerama support but is crippled by not being written in C.

spectrwm is a beautiful pearl! For it too, was created by grinding irritation. Nothing is a bigger waste of time than moving windows around until they are the right size-ish or having just about any relevant key combination being eaten for some task one never needs. The path of agony is too long to quote and in classical OpenBSD fashion (put up, or hack up) a brand new window manager was whooped up to serve no other purpose than to obey its masters. It is released under the ISC license. Patches can be accepted provided they are ISC licensed as well.

Building and installation

Click here for current installation guide

Feedback and questions

You can and come chat with us on IRC. We use OFTC channel #spectrwm.

Major features

  • Dynamic RandR support (multi-head)
  • Navigation anywhere on all screens with either the keyboard or mouse
  • Customizable status bar
  • Human readable configuration file
  • Restartable without losing state
  • Quick launch menu
  • Many screen layouts possible with a few simple key strokes
  • Windows can be added or removed from master area
  • Windows can be moved to any workspace or within a region
  • Resizable master area
  • Move/resize floating windows
  • Drag-to-float
  • Extended Window Manager Hints (EWMH) Support
  • Configureable tiling
  • Adjustable tile gap allows for a true one pixel border.
  • Customizable colors and border width.
  • User definable regions
  • User definable modkey & key bindings
  • User definable quirk bindings
  • User definable key bindings to launch applications
  • Multi OS support (*BSD, Linux, OSX, Windows/cygwin)
  • Reparenting window manager

Documentation

Click here for current man page

License

spectrwm is ISC licensed unless otherwise specified in individual files.

Screenshots

Vertical stack

Horizontal stack

Horizontal stack

Vertical stack with floater and extra window in master area

mplayer, resized and moved